2024-10-28 - Rex's journal
Wow, almost November already. I've been having a lot of political anxiety. I started making Youtube videos to distract myself and learn some new skills. It's fun.
Just an ordinary looking virtual kiosk. There are journals and blogs in it!
Journals | Blogs
Wow, almost November already. I've been having a lot of political anxiety. I started making Youtube videos to distract myself and learn some new skills. It's fun.
Carousel Cards (LÖVE app, really just a zip file containing source code, 169KB)
Nowhere near done yet. But it has 50 little "levels", each taking between a few seconds and a minute. A full game/curriculum might need 2000 levels or something.
Inspirations:
I always wanted my name in lights,
Or maybe just a perfect hole somewhere,
Carved out especially for me.
I would slip into it seamlessly as if it were a silk dress,
Sewn with utmost precision,
Every inch of my skin, perfectly corresponding
To each dot outlined in its silhouette.
Instead I cut off my breasts,
The hollowed twin concaves on my chest
Now carefully scraped off of all its tissue
So that I could crawl into that space,
A place for me,
And me alone.
I can hear my heart beat a little louder,
I can sit and stand up a little taller.
In my holeness,
I know what I am.
Do you?
This month two separate conversations reminded me of some stories I wrote. One is Behind Gray Blocks, my cyberpunk novelette from last autumn, that takes place in the weeks right before Halloween because that's when I started to write it. Doesn't get more seasonal than that. (Speaking of which: I'd like to see more Halloween movies, the same way we have Christmas movies: i.e. not (only) horror, or at least not gratuitous horror.) The other is Parole Planet, a short story I wrote more than eleven years ago and it's still one of my all-time favorites. Haven't touched that setting in a long while though, and generally don't feel like writing any fiction these days, but it's fun to think about it.
This month I also learned to program in Scheme for real, in other words not just fool around with the basics. Turns out it's much more usable in practice than its reputation as an academic language suggests. Active, welcoming communities are a bonus. Another tool that will come in handy sometime, by the looks of it. Just not right now.
Being bored, my next step was relearning Prolog, a language that used to interest me a lot, but only knew from old books, and that showed. Still extremely clunky for any kind of practical task, but one of those languages that change how you think about programming. Also far from dead and being actively developed, though it can take a little research to start getting a clear image of the current landscape. But that, too, is part of the fun. One more thing to put in my notes.
Three weeks! I think that was the longest I went on without writing a single line of code for the past many years, for even during long transits at sea, I find time to sneak some in to answer these questions one ponders while gazing at the horizon. I had other things on my mind this month, slides to finish, dailies to draw, and settling back in our winter life in Victoria. As of yesterday, that streak ended.
For the upcoming Handmade event, I wanted to be able to show anyone who might ask a few simple examples of rewriting computation in a way that would not be intrusive during a conversation, so I printed a zine that covers the basics of it, basics that I could foresee myself repeat over again and having a challenging time doing so without visual aids, rewriting being inherently a visual coding paradigm.
The beginning and end of cycles occur regardless of our preferences. Today was difficult; We had to lay off several people, and I feel terrible about it.
I regret not updating this blog regularly, but it feels minor compared to everything else going on. This situation prompted me to declutter my life. I sold my desktop computer and decided to keep only my laptops, with one as my daily driver. Simplification is key.
That gets me thinking on how other stuff in my life doesn't make sense anymore. so what does make sense now? That's the big question. gotta think, get my thoughts in order, try to figure out wtf is happening. Because there's definitely signs that there's shit's going down that i can't control.
Sometimes it feels like i'm not taking enough initiative. i'm being way too passive because i'm just so damn tired. Even with the changes i've made, there's still things that need to happen, and they are mine to solve.
Life's full of cycles starting and ending that we can't always control. companies restructure, relationships change, shit happens around us. sometimes all you can do is think, reorient yourself, and find that energy from inside to do something about the things you can control.
Change is hardly ever easy, but it's also a chance to level up. by admitting what's not working anymore and growing the balls to leave it behind, we make room for new things to come into our lives. the important part is to not get stuck doing nothing or freezing up. gotta find what matters to you and what motivates you to keep going.
So, while i'm in the middle of this tough ass transition, both with my company and my own life, i'm trying to get back to what i'm about at my core. i'm looking for the next positive moves i can make, even if they're tiny. At the end of the day, life goes on. and it's on us to decide what the fuck we do with it. so here's to new beginnings, even when they suck.
The final complexity cost was 200 lines but it was a non-linear path getting there. I started out with the notion of pivots from my doodle app. There, pivots live inside the data structure for a single line of text. Since ranges now need two pivots that could be on different lines, I had to move them out. I started tracking pivots in a separate data structure, maintaining bidirectional mappings between pivots and their locations, and then tracking ranges as combinations of pivots. This quickly blew up the implementation to 500 lines, and I was juggling 27 manual tests of which half were failing.
The next day I started from scratch and threw out the notion of pivots entirely. Now I just maintain 2 locations directly inside each range, and linearly scan through them all for any book-keeping. The implementation dropped to 200 lines and the tests passed fairly quickly.
Earlier this year I threw out an implementation after suffering with it for 2+ years. It feels like I'm getting the hang of this programming thing that I threw out an implementation now after just 2 days. I'm setting a higher bar for elegance. At the same time, it's interesting that my instinct remains as poor as ever for the right approach in even a slightly new problem. Here I spent a lot of time trying to squeeze my ranges into lines so that deleting a line would transparently delete ranges within it. But I blindly assumed a fully normalized design with a first-class notion of a pivot must be a good idea.
As I linked to in the previous post, this app was inspired by this comment by Alex Kladov about how Emacs maps ranges of text to attributes.
performed a small, screen-based update to jarotsim, for it to run better in smaller and bigger screens
My notebook app does simple variants of 2 and 3, and replaces 1 with explicit in-document markup.
Now I'm playing with another approach to 1. I already have the idea of pivots from my doodle app. Putting two of those pivots together should yield a range that adjusts in intuitive ways in the presence of edits. An example may be a WYSIWYG UI for adding a hyperlink to some text:
From the corner of my eye I saw lightning strike. The first time I felt the ground shake underneath me, tectonic plates shifted back and forth. Will the earth open up and swallow me whole?
Close your eyes and jump.
Close your eyes and jump.
I had to climb higher to fall harder. I’m at the edge, tipping the scale, gracefully teetering like a see-saw. I lost something strange and beautiful. Everything amounts to the reasons why.
Close your eyes and jump.
Close your eyes and jump.
Let me become stardust. Perhaps the only thing I leave behind will be a feeling. Memories are overrated. Only fools fight against all odds to live.
Close your eyes and jump.
Close your eyes and jump.
I hold the sun in the palm of my hand.
And then there is nothing.
It's so fucking funny, I just can't. Awkwardly swaying for 40 minutes, enthusiastically dancing to YMCA, one of the gayest songs of all time. God, irony is so lost on republicans. lol
Metaphor ReFantazio is the best JRPG ever and you should play it. I will definitely be writing a post about it once I finish. Atlus cooked with this one, it's so so good. I put like...30 hours into it over 3 days.
I also watched The Substance last night and that was incredible. Top tier body horror and an incredible story to boot. Horror fans are eating good these past couple years.
The fine print: to switch directions I have to fill in the right blank, clear the old blank, and then type in something outside the old blank (to indicate I'm not going to type further into the old blank).
Works better if I clear the old query first, but who can remember that?
I've decided to just recompute on every keypress and mouse click. It seemed unnecessary, but now I see that there's some benefit from the inefficiency.
I think we are going to discover long term cognitive impacts from repeat Covid infections. This country did not have the IQ points to spare. It would be so fuckin' easy to be a right wing grifter. I'm not a piece of shit so I'm not trying to exploit people for profit, but god would it be SO easy.
This is what I should have done last year when between the research for Strange Loop, daily maintenance of active projects, and implementation of new ones, code was what I only ever read or wrote about for weeks on end. By the time winter came, I was fed up with all of it. If everything works according to plan, I'm well on my way to not writing a single line of code this month.
It can all wait 'til November.
So, Elon musk is definitely gonna use Twitter to fuck with the election somehow. This is just 1 of many reasons why billionaires should not exist. Musk is fully embracing the villain arc and when the billionaire who owns an information platform is teaming with the wannabe fascist dictator...y'all should be more concerned about this it is not a joke
Ways I've previously seen text coexist with a canvas:
I'm instead using the game engine idea of a pivot. Any time I toggle into doodle mode I have to first pick a pivot from one of the characters on screen. All my drawings are relative to that pivot, and edits to text maintain pivots alongside.
Displacements to the pivot are preserved in font-derived units, so it looks "reasonable" as you resize the font.
Deleting a character deletes all drawings pivoted on it. (But there's undo.)
This took 200 lines, so not too much though it was more than I'd initially expected.
Inspired by this thread.