What are you doing this week? Feel free to share!
Keep in mind it’s OK to do nothing at all, too.
I am at 2 days work per week for the rest of the year to get rid of overhours.
Gardening is over now, so I order stuff for the workshop, for the winter I have two and a half projects:
Along the way, I discovered that our UART might support automatic flow control, but digilent didn’t bother to wire the control flow connections up to anything in the serial to USB bridge (thanks), so software has to just keep up. Was it doing malloc / free / memcpy on the load path (pushing loaded data into a std::vector) that broke it? Seemed dubious, since we should have around 1,200 cycles per character on average (averaged over the 16 entries in the FIFO), so that should be fine.
$HOME: I need to get back on my exercise routine and diet. I’ve gained back like a third of the weight I spent the last two years losing.
$PLAY: Getting a new study routine going for French and Mandarin.
$WORK: Research research research protocol implementation research
Weight is so hard to take off and so easy to gain back. It’s definitely harder than any “boss level” in the game of life. Best of luck on that. Best advice I can give (which isn’t great since I still struggle with losing weight) is to remove as much sugar (outside of fruits and veggies) from your diet as is humanly possible, then only re-incorporate by conscious and careful choice, e.g. a bite of dessert every now and then.
The key is to get into a caloric deficit that you can sustain for indefinite periods. Avoiding sugar is probably the best way, and good for overall health too because too much sugar decreases insulin sensitivity.
Reducing fat intake will help a lot as well, because it is very calorically dense. Instead of (too much) fat and “empty carbs” (like sugar), eat plenty of fiber and protein so will stay satiated for longer. Substituting whole grain products for whites is an easy win, as is substituting the low-fat versions of dairy. Those mean you don’t need to completely overhaul your eating habits.
Working on the Fire Chicken Webring and writing some Rust.
I started my first webring a few days ago (actually I may have had one in the very early days of the web, but that’s so long ago I can’t be sure). https://xeny.net/webring
Getting my personal site up and running.
Continue working on my featherweight logic programming language.
Get a project page and a repository for that language up for public consumption.
Last night I started migrating from Arch Linux to Void Linux on my desktop. I wasn’t expecting to see any difference but playing The Binding of Isaac seems snappier than when I played on Arch. Plans are to finish migrating everything over. I also want to update a project I have that gets my energy usage information from my energy provider since they’ve started providing more data in the past month. I’m also in the middle of making a blog post so maybe I’ll get that done too.
I experimented with switching my Clojure linter (Splint) from reading clojure files as clojure data to some sort of AST, so I can have location data on simple/literal types (numbers, nil, strings, etc). However, it’s a lot of work for little benefit and some mild slowdowns, which is disappointing.
Should I have built it this way to begin with? Hard to say. It’s nice to just write (map? form) instead of (special-map? form) or (map? (:value form)) or whatever API I’d use. Relying on the built-ins makes writing new rules extremely easy, while having to import a whole new API (that might not conform exactly to Clojure’s predicates) is cumbersome and error-prone.
(map? (:value form))
I’m working on a cargo-sandbox solution again. Last time I hacked something together using the docker API, this time I’m doing it differently - specifically, I’m leveraging a privileged daemon.
The idea is straightforward enough,
cargo-sandbox build instructs the daemon to launch an unprivileged job in a given directory ($PWD as default). I’ll likely use landlock as the sandboxing primitive, with something like “default read the entire fs, minus some sensitive paths, and rwx on a few paths”. I might make a Sandbox.toml or something to change things up, idk.
I still haven’t figured out how to run as the right user. Since the client is talking to the local daemon over a TCP socket there’s no way that I’m aware of for the server to determine the uid of the client process. Instead, I think I’ll likely have the unprivileged process assume whichever user owns the Cargo.toml file. Anyone who has a better solution, let me know.
Use a unix domain socket instead of TCP, then you can use SCM_CREDS to get the client UID.
There is nailing-cargo which might be close to what you want
Ah, I was considering a Unix Domain Socket, so that’s convenient. Thanks.
domain sockets even work on windows now (if you intend to support windows)
I’m trying not to box myself out of Windows, at the least, so that’s good.
For the first time in a pretty long time, I have both the time and the motivation to pursue some “extracurricular” (that is, non-work-related and non-family-related) projects, and I’m trying to pick a good mix between learning new technical skills, language skills, and hobbies including TTRPGs and music.
If anyone has recommendations for content for intermediate level Vim users, I’d love to hear them!
Finishing a project at work to simplify command line tooling for Ecstasy, and to better support Gradle builds. Then I hope to get some cycles dedicated to reviewing / reworking / polishing the binary AST that we added recently (to replace the XVM byte code). There are a few minor backlog items as well that I’m hoping to get done, including some BNF review & simplification, allowing imports to precede module declarations, a review of where we can replace exceptions with return values, etc.
It’s below freezing here, so I also need to winterize our camper, take down our enclosed garden, put the motorcycles away for a winter nap, get the rest of the summer furniture and toys stowed, get the snowblower out of storage, and so on.
Working on a woodworking / PiCade project: building an all-in-one arcade controller with HDMI-out to connect to a TV or monitor. It’s the kind of project I’ve daydreamed about for years but now that I have the equipment to actually shape the materials to my specifications, I’ve finally started it.
That. Sounds. Awesome!
I’ve put off doing any arcade building / buying because I fear how many thousand hours (and space and money) I will pour into it. But I’d love to be able to play some classic arcade games some day … there was a 4-player game in the mid-80s that was like four seats around a table, cooperative multiplayer, and I always wanted to play it (but never had any money). My memory tells me that it was the most awesome game ever, even though (or perhaps because) I never got a chance to play it. I’d watch people play it for long stretches, and it must have been pretty addicting to play, based on the quarters that machine was eating!
Next Generation Shell
Thinking and designing generic Process type with nested sub-processes. Generic in the sense that processes are not necessarily running on local machine. A process can be CodePipeline execution for example. The aim is to visually represent such process in the UI in a clear manner, especially displaying errors in sub-processes such as failed CodeBuild step or failed CloudFormation deploy. That would avoid repetitive navigaion in a UI to find the problem.
Hoping for a hardware test where old problems get solved, instead of only new problems appearing.
Some pretty big tech changes:
Why are you leaving all those previous tech choices on your laptop? Conforming to the crowd a bit more?
My plan is to virtualize all of my development environments. So my work will be primarily over SSH, SSH tunnels, and perhaps tramp (in Emacs). I’m setting that up with bhyve, using the vm-bhyve scripts for convenient management.
This all runs on a server in my hallway cabinet - along with a brace of RPis offering utility stuff like OpenVPN, Pihole, and Home Assistant. Plus one Pi running FreeBSD to serve my Web and Gemini stuff.
My laptop will then only be for media, mail, and chat - at which point there’s no significant advantage to FreeBSD, I can just set up whatever cheap laptop with Mint and use it as a thin client. At the moment that’s a ThinkPad T470s with a docking station on my desk.
Is your server headless or do you run a desktop environment with it as well?
Headless, at least at the moment.
Wasting my time for this joke 🤣
I finished my Tree-Walk Interpreter for “Crafting Interpreters” and started on the second part – the Bytecode Virtual Machine. I need to clean up the interpreter since I did it in C# (vice Java for the book) and I’m doing the VM in C++ (vice C in the book).
Second week in HK. Pretty much over jet lag—and recovered from the cold! We’ve been close to our hotel in Mong Kok most of the time so far, but hoping to make excursions further afield this week. Have found two great guitar shops nearby 😅
I’m trying to tweak some prompts to more fully generate static sites from Figma designs exported as images.
Going to LPC, so I probably won’t get any “work” done :)