Printing the physical zines in exapunks as a reference was very cool, and a good throwback to when games shipped with boxes and detailed manuals.
Spacechem was my intro to Zachtronics, and it consumed me when it came out. The concept of instructions inside the actual work area is amazing and still makes my head spin. I consider beating Ω-Pseudoethyne one of my top coding/steam achievements.
I fell off for a bit because the leaderboard grind against friends felt draining, but rekindled my joy by mostly ignoring them (Unless I'm way out of distribution). I'm so glad Zach and the team are back.
I have the Kinesis Advantage 360 which is split but has all the non-numpad buttons.
I do spend lots of time in Emacs, but also use it for plenty of gaming. Just remap in-game to ESDF and only use the left hand. (Or set up layers, but I'm generally too lazy for that).
I think the thumb clusters are great, but may not be to your taste. I'm very happy with it, but have used various iterations of kinesis keyboards for a long time now.
I'm making a game finally! Merge-three + village sim.
Hoping to actually take this one to something polished as opposed to the many half-finished prototypes littering my git repo over the years. I've discovered (always knew?) that heavily cutting scope is the best way, and been successful thus far.
It gets pretty boring/unbalanced by ~150 turns, but I have some ideas on how to fix. I'm still playing with ways to help de-clutter the board and make use of the economy aspects.
After some false starts with ai-gen art, I had fun learning to color the pixels myself. The process wasn't as scary as I'd thought and the results are better than I hoped.
Semi-related; One of the Zelda DS games required you to close the DS (so the top and bottom screen met), which moved a mark from the top to bottom screen. Was infuriating for me, only figured it out after closing the DS in frustration. Not really something you can do with modern portables, but clever in retrospect.
I wonder how much this is causing the worldwide swing toward authoritarianism. Lead exposure can cause lower conscientiousness, lower agreeableness, and higher neuroticism.[1]
Especially considering the age of people who actually vote and who the politicians in power are (at least in the U.S.)
Yeah, having all the defaults for system keybinds be on super is really nice.
It feels like macosx lucked into this with their historical use of command as the modifier, but I also wish I could easily replicate. Instead I just go and remap a few line ctrl-a in KDE settings and otherwise try to live in emacs.
It's harder to learn the impact of your design decisions -- Seeing how software evolves to meet changing business goals and how the design choices made play out in the long run helped teach me a lot.
Coming up with a neat API that turns out to be difficult to modify in the future, or limiting in ways you didn't imagine would when writing it is a good learning experience.
Or seeing how long a system can survive growing usage -- Maybe a simple hack works better than anyone expected because you can just pay more for RAM/CPU each year rather than rebuild into a distributed fashion. Or the opposite, maybe there's some scaling factor or threshold you didn't know existed and system performance craters earlier than predicted.
I've thought about this a lot in relation to typescript over the years and had various opinions -- For some time I thought it'd be better if there was an implicit `await` on every line and require `void` or some other keyword to break execution like `go` in Golang.
But, eventually I realized the difference in pre-emption between languages -- Go can (now) preempt your code in many places, so locks and thread-safety are very important.
The javascript runtime only preempts at certain places, `await` being one. This means I can know no other code can be running without explicit locks around all critical sections.
Finally understanding the trade-offs, I no longer am as frustrated when recoloring a bunch of functions. Instead, I can appreciate the areas where I'm not required to lock certain operations that I would in other languages.
I'm pretty happy with our setup, though we use flags mostly for feature releases and only have a few long-lived ones.
State kept in a database table indexed on customer. One row per customer/flag name, only there when the flag is set.
We keep active flags names as constants and put into an array for easy looping in our admin ux. This makes it easy to find usage and clean them up after launch.
These are passed to the browser so the frontend can check flags, and via grpc context to any downstream services.
There was one in London I used to walk past all the time. It was a neat experience to shop there once, but the selection was very slim and ocado was even more convenient.
I'd always peek through the windows and it never had any shoppers.