|=== your display should be exactly this width ===| |====== or at least as long as *this* width ======| Welcome to my website! I'm Liese. It's a bit empty here, isn't it? A little... sans-serif? (*) Dare I say, *monospace*? I'm going to keep the bulk of this site as low-fi as I possibly can. The prettier it looks, the more I feel like my writing has to live up to the prettiness -- like it has to be worth your time. But this? This clearly isn't "worth" your time. If you're still reading this, I hope it's because you *want* to be here, not because you think you'll get something in return for your eyeballs. I have two eyeballs of my own, and they're, well -- not perfectly fine, but perfectly serviceable, and I don't know what I'd do with another pair. If and when I add other pages, I might even make you copy links to them into your address bar! >:) An Atom feed of my "posts", if it please you: https://liese.dev/posts.xml (*) i have been informed that there are in fact serifs # About me - She/they. "Liese" is pronounced [ləˈiːs]: one syllable, two morae. - Grad student in CS. Monotropic nerd who spends way too much time with computers (and books (and computer books)). Likes space. - You can email me at (my name) (at) (this domain). I'd be happy for you to treat that address as a "comment on this post/page/etc" button, or if you just want to say hi! - I have a Mastodon account at https://hachyderm.io/@liese. (If you have an RSS reader, you can subscribe to my Mastodon posts at https://hachyderm.io/@liese.rss.) # Log ## 2024-10-16 05:13:40 PM UTC-7 (I've been doing the UTC offset wrong this whole time! And I'll have to switch back to UTC-8 at the end of the month anyway...) Preparing a talk is hard! I'm going to be presenting some (accepted!) work at a major PL conference next week, and I've spent the last few weeks trying to get my brain into gear to write some actual slides. I even gave a practice talk, but... and this is embarassing... what was meant to take twenty minutes ended up taking *a full hour*. The slot I was filling for this practice talk was *supposed* to be an hour, so it was fine enough on that front, but I *still* went a little over X_x I legitimately don't know how this happened, other than that I have a truly awful sense of time! It probably comes with my particule neurodivergent niche, but still... I really, truly, earnestly believe that 36 slides was sensible for a 20 minute talk. Yes, putting it that way probably makes me look like a fool ^_^ but it still doesn't "feel" like that much! I've still got a couple of practice talks in between now and the real thing, and I need to drastically cut down and tighten up the presentation along the way. It's exhausting! And it's really hard to get my gears turning on this -- I find it so much easier to talk *a real person* through the material. Slides feel kind of artificial. Maybe next time I need to give a talk, I'll experiment with using Manim(!) and just focus on pure visuals to go with the oral component. That might feel a little less contrived to me. ## 2024-10-01 12:59:18 AM UTC-8 I now have a Mastodon account! https://hachyderm.io/@liese If you want to subscribe via RSS, you can do that too: https://hachyderm.io/@liese.rss I'm still working on Arcturus, but it's slow going for a few reasons. First, the fall quarter just began, and I'm fighting red tape to get credit transferred from my master's program so I don't have to take the same classes *again*. Second, I've got an accepted paper that I need to prepare a presentation for, and I haven't even *started* on that. Third, *the fall quarter just began*, and I'm trying to build up a runway on my coursework so that I can do other things without being overwhelmed by anxiety and guilt. On the bright side, this is hopefully the very last time I ever have to enroll in classes. (I like classes! But I hate having to prioritize passing, rather than just taking in what I can of the subject matter.) Soon I'll be able to split my time more effectively between research, personal projects, and whatever normal people do to spend time with other normal people. ## 2024-09-27 04:06:01 AM UTC-7 (Wait, it's already been almost six days since my last post? Yikes...) Just a short note today -- I wanted to highly, highly recommend reading this post by Erik Bern: https://erikbern.com/2024/09/27/its-hard-to-write-code-for-humans.html A lot of it rings true for me, *especially* magic/defaults and the conceptual duck principle. Once upon a time, I worked on a simulation system in Java, and one of our goals was to keep things as *near to regular Java* as possible. We went to some serious lengths in that pursuit, and I think it paid off, but it took CONSTANT VIGILANCE (am i allowed to still be referencing that) to stay on the right path. One of the earliest prototypes, from before I joined the team, followed the philosophy of "builders, builders everywhere"; you could have written such simulation models in a *.ini* file for crying out loud, and with just as much pain and sorrow. It didn't leverage the strengths of the host language, or our customers' familiarity with it, in any way whatsoever! I see this situation as a kind of corollary to the above author's "conceptual duck principle". If you have something that looks like a function, and behaves like a function... *implement it with a function!* You might be *very* surprised how far you can push the humble function -- just look at what React does (did?) with hooks, using exceptions to bail out from a function and then re-invoke it later in a different context. (Try implementing McCarthy's `amb` operator in Java this way -- it's a great mental stretch!) Anyway, this ended up not being so short. Still working on Arcturus! The quarter just kicked off, though, so now I've got +1 things to pay attention to. ## 2024-09-21 05:40:44 PM UTC-7 Recently, I've been introducing a friend to regular expressions ("regex", plural "regexes"). They (regexes, not my friend) have a bit of a bad reputation -- honestly, somewhat deservedly so, since even if they're very effective at what they do, they're rarely particularly maintainable. (Yes, *I* know how to use free-spacing mode, but I've never seen anyone else do it, so that's its own maintenance hazard.) But I don't usually put them in "real" code to begin with -- I mostly use them as a super-powered find in my editor. In a large, even moderately-unstructured codebase, being able to find *precisely* what you need to case down can be a godsend. For example, today I needed to shift a large directory of header files to a different location in the codebase. Specifically, I needed to move the directory `abc/def/` up a level, to just `def/`, and adjust *all* of the places in the codebase that referenced that fragment of path in kind. This, of course, can be done with a simple text-only find (and replace). But there are some uses of just `def/` alone that I also needed to adjust; and searching only for `def/` includes those exceptions *as well as* all of the `abc/def/` instance, because `def/` is a substring of `abc/def/`. With a regex -- and specifically with the PCRE dialect of regular expressions -- it's easy to find all of these exceptional cases. The expression `(? quit Connection closed. ``` Yyyyyep. I went down so many rabbit holes today, and that's all I ended up with. The pace should pick up as I get more comfortable with the tools at my disposal (mio, primarily) and as I figure out what kind of architecture I'm aiming for. But still, for a first day, this is a little lackluster! I did *learn* a lot though, and that's always nice. Spent a lot of time configuring VSCode (actually Codium) -- I usually use Sublime Text for everything except Java, but I finally bit the bullet and am relentlessly reconfiguring anything I don't like. I also learned how to run an integrated debugger in VSCode, which will be super useful as I start building this thing out more. Incidentally, in case anyone was wondering: I *do* want to provide a way to connect to my Telnet server over TLS. The Telnet protocol is infamously conveyed over the network in plain text, leaving it vulnerable to a host of different attacks. That's not really the fault of Telnet, any more than HTTP can be blamed for the same, but it's still important to address properly. The first early deployments of this project will probably be unencrypted though, so keep that in mind if you decide to join in. ## 2024-09-13 12:29:35 AM UTC-7 I've started working on a tiny little personal project, mostly just because I think it could be fun and interesting. Although cohost announced its imminent closure not even two weeks after I signed up, it's already made a big impression on me. It felt a lot more comfortable, a lot easier for me to post without feeling like I was intruding on someone else's space, and a lot easier for me to see interesting ideas and discussions rather than the surface-level bite-sized appeals for *engagement* that every other platform seems to be inundated with. I want to recover something of the kinds of connection that cohost encouraged. There are only a couple of platforms that felt even remotely similar to me, and they're all nearly extinct. The first is the online forum, made famous by the likes of phpBB and vBulletin. I used to spend a *lot* of time on the GameDev.net forums, on the Neopets and RuneScape forums, on the Achaea and MUSHclient and MudBytes forums... forums were the lifeblood of my online social experiences. And they were great! Each one a little self-regulating community -- helped along of course, by site and volunteer moderators who certainly didn't get enough credit for their sacrifice. There's a shadow of this kind of community in things like Twitch chat, but I'm sure I don't need to explain just how different that kind of experience is. The second is the MUD (Multi User Dungeon), a forerunner genre of modern MMOs whose member games are completely plain-text -- very much like this website, in fact! -- though they often heavily leverage VT100 ANSI escape codes to push "text-based" far beyond what you'd naïvely think the term meant. What distinguished most MUDs from MMOs, however, was that they allowed players a *lot* of freedom to express themselves and to influence the game world. In a lot of ways, actually, this makes sense: creating graphical assets is hard, and creating "good" graphical assets is exponentially harder. Writing text, however, is *trivial* in comparison, and even writing "good" text is both easier to do and easier to learn as you go. I think we collectively forget just how incredible even Minecraft was when it was released, and just how incredible it still kind of is. Both of these platforms are, if not dying (forums), at least in late retirement (MUDs). Both of them offered critical virtual "third spaces": places that are neither home nor work, but something different. Early social media still held some of this spirit; even Reddit and Tumblr still have some of that reputation if (heavily, heavily) tarnished. But they've all been taken over by "engagement" and "metrics"; they're not places you go to hang out, they're places where you have to be on guard. Just as bugs can't surive the scrutiny of a thousand eyeballs, neither can humans. And we've gone far beyond mere four-digit numbers. I want something smaller. Small, but open. Like forums, and MUDs. And cohost. Because I'm shy, and I can barely withstand being seen by just one pair of eyeballs that didn't consent to my existence. (I can discuss that with my therapist another time, but I hope my point carries.) So that personal project? For fun and whimsy, I'm toying with a little MUD-style hangout of my own. Something I can attach like a sidecar to this site, that curious folk can connect to through `telnet`, where folks can drop by and say hi. A little collaboratively-constructed world, half wiki and half forum. Somewhere that, maybe, "css crimes" can metamorphose into "VT100 crimes". I dunno. I think we put a lot of emphasis on progress, and moving forward, and doing novel things. And I think we forget about all the cool stuff that already existed. That did well for us, and may still be good for us. Good things don't have to be popular; actually, popularity kind of makes things bad, don't you think? (Mind, things aren't bad *because* they're popular! I made that mistake about enough anime already; I wish I'd watched Toradora five years before I did!) So I guess we'll see how long I keep going with this little project. But I'll mention it again here once it's live enough to kick the tires. I always wanted to make my own MUD anyway :) --- (If you feel like sharing your thoughts, or just want to say hi, please do drop me an email! My address is (my name) (at) (this domain), and it would make my day to hear from you.) ## 2024-09-10 05:49:31 PM UTC-7 Someone on Hacker News mentioned that a *recent* edition of a massive, chonky cellular biology textbook is available on the Internet Archive: https://archive.org/details/alberts-molecular-biology-of-the-cell-7th/ Uh, wow. This is going top of my list of "things I really really really want to read but realistically will never actually end up getting around to". Right next to my physical copy of an early edition of Gray's Anatomy (the textbook, not the TV show). I'm thinking of making another Atom feed consisting just of all the neat things I find out there on the Internet. Kind of like a `browsing-history.xml`, except (extremely) curated. Certainly this chonky boi of a textbook is exactly the kind of thing I'd want to share. ## 2024-09-10 03:06:40 PM UTC-7 This goofy little website is now Mobile-Ready (tm)! Whatever that means for plaintext, anyway. The upshot is that I've added these calibration marks at the top of every page (there's a secret page besides the one you're looking at), so you can easily tell whether you're looking at the page "as intended": |=== your display should be exactly this width ===| |====== or at least as long as *this* width ======| The idea is that you should either see all of that on one line (as on desktop), or see two distinct lines where the pairs of pipes line up vertically, like so: |=== your display should be exactly this width ===| |====== or at least as long as *this* width ======| Now, I could have avoided using hard linebreaks within paragraphs entirely, and allowed mobile devices to automatically reflow text. But that leaves desktop viewers with, typically, extremely long lines unless they resize their browser window to fit. Me personally, my browser is *always* full-screened, and it's a massive pain for me to pull one tab out just to resize it. So this seemed like a reasonable compromise! I could *also* opt for using HTML instead of plaintext, replicate the plaintext vibe with some markup and CSS, and automatically adjust the width of the content based on your display size. But that would be too easy! I want to see how far I can go with no bells or whistles. ## 2024-09-10 02:19:30 AM UTC-7 Oh hey, is that an Atom feed I spy? https://liese.dev/posts.xml And it validates, you say? http://www.feedvalidator.org/check.cgi?url=https%3A//liese.dev/posts.xml (You will forgive me for not embedding an image; this page is text/plain!) ## 2024-09-10 01:27:00 AM UTC-7 Here I am, studying the RFC for the Atom syndication format in the middle of the night. Whee! ;P I was almost tempted to use an emoji there. But I'm typing this in `nano` from an SSH session. I wonder... 👀 oh my god. the marvels of technology. Well, at least I don't need to worry about some Electron-based app autoconverting my :D's into horrifying caricatures. wait what encoding is nginx serving this file with... um. none. k let's fix that real quick brb. (yep, reloaded and that emoji is garbled as hell: "👀". that's not gonna look right either until i fix the encoding, but now it's preserved for posterity) Okay. *Now*, the marvels of technology. Marvel at it! (Why can't I stop typing "marvle"??) 見て、日本語! now back to atom