Working on a single-user photo gallery for my wife and I. It uses full stack Gleam, Lustre for the frontend SPA, and SQLite for storage (against better judgment I'm also storing files in SQLite, even though that has already required a couple of workarounds). It also calls Exiftool and ImageMagick on the command line for getting photo metadata and creating thumbnails.
Right now it has simple authentication, file uploads, and thumbnail generation. I need to work on the frontend next to integrate some kind of masonry layout and make the upload experience better. Eventually I'll want to also add support for albums, but that'll be the end of the features.
To run command line tools (exiftool and magick right now) on the files, I read them from the database, pass them to the program as stdin and read back the answer over stdout. This runs into a limitation in the Erlang VM: it cannot close the stdin of the started child program. Basically you can't signal EOF, meaning the program will wait for more input until you hit a timeout and your process calling the program crashes. There's an issue for this, but it has been closed as "completed" even though it's not: https://github.com/erlang/otp/issues/4326
This takes the amount of bytes to read as the first argument and uses the rest of the arguments as arguments for the program to call. So basically from Erlang I call
The script reads 1234 bytes from stdin and passes that to the called program, closing its stdin properly. Erlang gets the output and everyone is happy, except for me because I had to write this wrapper in the first place. :P
That's a nice workaround, kind of reminiscent of a Content-Length header in http. I had a similar problem once in an Elixir system, and ended up using erlexec.
Hanging out with my new puppy and trying to get her to trust me / my partner. She's a Mini American Shepherd (an anxious breed) and came home from the breeder via a 10 hour car ride and since then has been stressed out, so I've been doing daily trust building exercises and spending a lot of time with her.
Also fiddling with translating the Marginalia index to C++. Mostly a fun exercise for now, unsure if I'll end up completing it. Almost finished with the buffer pool, which is a small component, but also a supremely fiddly one since it's lock free.
Homeserver maintenance. I've been low on space for a while, checked and found out that I never finished my migration to my 4TB SSD which I'm a bit ashamed of.
Related: cleaning up my collections of photos which is taking a lot of space; I have RAW files and sometimes I'll try to salvage pictures with darktable and it's new AgX module which can do wonders so that takes extra time.
And probably some more stuff around the worst soldering hotplate ever that I recently built: a stainless steel plate and a heatgun below it. It works and it means I don't have to buy and store more hardware.
We've agreed to move, committed to it, and know where-ish we want to go... and every time we need to make an actual decision about it it's like we're starting from scratch again.
I'm not sure what I will be doing. Maybe meeting the parents-in-law for lunch. Maybe seeing one or more of the nephews and SIL. Probably cleaning the fish tank for our 17 year old goldfish. Cleaning is good, and never ends, not really.
But I can tell a short story about what I was doing.
I had decided to replace my secondary desktop (for $WORK) with something smaller and less power-consuming. I have a few different choices laying around the IT storage area.
My first choice was an old Acer mini-desktop with 8G of RAM, 4th gen Intel i5. Plenty for the secondary desktop, which is really just to act as a jump host and for note-taking. Along with being too old to run Windows 11, it was showing a little instability, in that it would not always recognize a boot drive. But it booted most of the time, so that was probably fine for my needs.
I transplant the SSD from the other system to this one, and no matter what I try, it won't recognize the drive. I do the usual stuff, resetting the BIOS, disabling secure boot, etc.. I had previously installed Debian on another SSD, that that worked most of the time, so I don't think it was something to do with secure boot. (*) Eventually I give up on it and it goes into the electronics recycling pile. (The pile is probably big enough to make another run.)
My next choice is a Acer mini-desktop (i3-8100) that is just barely new enough to run Windows 11... poorly. Since no one else is going to need it, I put my SSD in there, and have the same kind of problems as the previous one. But after disabling secure boot, it seems to be fine. I scavenge 8GB of PC4 memory for it (slower than what it originally had) but it seems to run OK.
I just have this fascination / desire to make use of slightly broken things, and putting them to good use. Given no constraints on time / space / money, you would probably find me surrounded with all manner of devices that have some quirks, and probably been repaired at least once, but can still be put to good use. I'm not quite sure why I am like that.
Edit:
(*) Though, maybe it does have something to do with secure boot after all. If the CMOS battery was flaky... It may have been reverting to secure boot, even after that was disabled. Meh. It is in the junk pile now, there's really no need to rescue it. What you have now runs and is stable, don't mess around further in search of answers you don't really need! (This is me talking to myself.)
There is something very satisfying about caring for healthy senior animals. My pet lizard is 18, and it sort of weirds me out that he'd be old enough to vote or take a driver's license - and it simultaneously feels like he's always been there and that I got him yesterday.
He's as active and outgoing as he ever was, keeps getting an excellent bill of health at his annual vet checkups, and has no signs of the geriatric diseases that sometimes affects his species (they're prone to arthritis and cataracts).
Was going to say that keeping a goldfish for 17 years is an impressive feat. I keep tropical fish, and it's not a walk in the park, so I'll be cleaning the tanks this weekend, like every other weekend ;)
I have put off adopting a new text editor since I largely abandoned VS Code after its bloat got in the way one time too many. I've made do with a combination of Kate and Jetbrain IDEs. I like Kate, but I would want something just a little bit more programmable (don't say Emacs, Emacs is the antithesis of what I want, I want a simple and usable GUI editor with a smidgen of customability). So I thought I'd take some time this weekend and look at what is out there.
You might enjoy Sublime Text. The reasons you stated were why I took a look at it, and I found the configuration very straightforward compared to a lot of the fully-programmable editors (with solid defaults), while still allowing for additional functionality via a (Python-based) plugin system.
It's in poor taste to advertise my own article, but I wrote a whole post going "Helix just works out of the box and is very easy to learn."
It's similar to vim, but all of the difficult keys have pop-ups that explain you how to use them, so you don't need to leave the editor to look them up, see the video.
Maybe Zed? It can easily get bloated with LSPs and AI, but it’s also easy to strip down and it’s not a webview. It feels quite similar to Sublime Text in my opinion.
I had trouble running previously installed extensions with gram. A fresh config, whole toolchain is available, but they just don't load and there's no visible error bubbled up to investigate. I've just went back to zed with disabled AI integrations.
Makes sense. Sounds like the maintainer doesn't really use extensions, and is still building their plan to support them. I don't think I've ever used a zed extension.
Bevy kinda beat me when I tried learning it; as in I had a really nice well typed program, but it took a lot of mental energy to get a circle on the screen.
So I'm going to repeat it with the idea that it's a skill issue.
Getting ready to "ship" something I described here: https://lobste.rs/c/inx28h (TL;DR: a service to store disk encryption keys with auto-locking features to protect against physical theft). I finally have everything in place, so it's "just" a matter of cleaning up the copy on the web site and writing an article about it.
We passed our food safety course with 98/100 points and in barely ten minutes! So celebratin' that. Excited to visit a new board game bar nearby, too.
Making chili and doing so more safely than ever. Haha!
Lucky for us, it'll be cold enough tomorrow that we can attend a friend's birthday party in VRChat. (The breaker on our bedroom trips if we play anything too GPU-intensive with the AC also on.)
I am making a terminal based replacement for open code in go instead of typescript. I've had enough of the 1.2gb of ram and CPU flat out. Silly stuff. Currently doing the multi thread pooling which is fairly interesting.
Have you tried Codex? It's Rust and open source and can connect to non-OpenAI models.
At one point I was playing with both OpenCode (or Claude, can't remember) and Codex at once, had both running different tasks, and saw how the former was pegging a CPU at 100% and the other was cruising at 4% or so... and I had enough of the TS CLI madness. Big fan of Codex now.
One thing that kept me in OpenCode for longer, though, was the ability to pop the current prompt open in Vim. But recently I discovered that you can do the same in Codex via Ctrl+G (though it's not as discoverable), and that really settled it.
I'm tired and wanna catch up on sleep lol (which means staying in bed till 7 instead of getting up at 5:45... if the kid lets me), but I've also been thinking a lot about merging some of my trusted old web techniques with some of the new concepts all the kids are playing with. Though one of the things I wanted was basically XSLT and sigh, the in-browser api is now deprecated, kinda sad, but maybe for the better. I have a simplified version in mind anyway now, gotta play to see how much I hate it in practice.
I have been having a ton of fun building exploits for old windows vulnerabilities lately. Latest was CVE-2005-0416 an RCe with animated cursor files. I’ll probably look for another one.
Also, planning on bouldering and making a sourdough bread
I love this! How are you getting the vulnerable executables, and how are you testing them? Seems like a great way to learn about memory bugs in a simpler environment
Going to keep writing some programs I had long put off now that I’m between jobs and learning Rust finally. Also reloading a novel to Kindle Direct now that they changed their formatting requirements. May rewrite the blurb and stuff at the same time.
I kicked one project out the door as 1.0, so of course now my brain decides to come up with a bunch of new ideas for it. I’m going to ignore them though and figure out how to finish the game I’m working on. I converted it mostly to my home grown ECS since, uhh, there isn’t one in Ada, now it’s moving on from “game concept works” to “scope, execute and polish.”
Hopefully find some time to continue working through Pikuma's Compilers & Interpreters course! All the while thinking about my own language idea which would adapt WISP with a first class "splice" form.
Hopefully finishing up two circuit board layouts that have been lingering since… January or so. One is for Christmas lights and Christmas is coming faster than I’d like.
Other big thing is to start getting ready for winter. One last mow and yard cleanup. Put gas in the snowblower and see if the carb needs to get cleaned or not. Put up markers again to indicate where the baby trees are so I don’t take them in January.
After two non-stop days of rain, I'll be enjoying walking through the city with my wife. Trying to hit a few dives, a bookshop or two, and get some food somewhere.
DustyFuzzy | 11 hours ago
Cleaning đź«©
mordae | 8 hours ago
I should as well. It's horrible how quickly entropy grows over the workweek.
SamRW | 16 minutes ago
It's OK, you can clean next weekend.
yiyu | 12 hours ago
I’m working on Folune, a small, local-first desktop text editor for plain text and Markdown.
SamRW | 16 minutes ago
Looks very nice!
Nicd | 12 hours ago
Working on a single-user photo gallery for my wife and I. It uses full stack Gleam, Lustre for the frontend SPA, and SQLite for storage (against better judgment I'm also storing files in SQLite, even though that has already required a couple of workarounds). It also calls Exiftool and ImageMagick on the command line for getting photo metadata and creating thumbnails.
Right now it has simple authentication, file uploads, and thumbnail generation. I need to work on the frontend next to integrate some kind of masonry layout and make the upload experience better. Eventually I'll want to also add support for albums, but that'll be the end of the features.
https://git.ahlcode.fi/nicd/kuvatus
motet-a | 10 hours ago
Which workarounds? If it’s single-user, it should work fine.
Nicd | 10 hours ago
To run command line tools (exiftool and magick right now) on the files, I read them from the database, pass them to the program as stdin and read back the answer over stdout. This runs into a limitation in the Erlang VM: it cannot close the stdin of the started child program. Basically you can't signal EOF, meaning the program will wait for more input until you hit a timeout and your process calling the program crashes. There's an issue for this, but it has been closed as "completed" even though it's not: https://github.com/erlang/otp/issues/4326
The workaround I use is a wrapper script:
This takes the amount of bytes to read as the first argument and uses the rest of the arguments as arguments for the program to call. So basically from Erlang I call
The script reads 1234 bytes from stdin and passes that to the called program, closing its stdin properly. Erlang gets the output and everyone is happy, except for me because I had to write this wrapper in the first place. :P
tomjakubowski | 2 hours ago
That's a nice workaround, kind of reminiscent of a Content-Length header in http. I had a similar problem once in an Elixir system, and ended up using erlexec.
https://github.com/saleyn/erlexec#communicating-with-an-os-process-via-stdin-and-sending-end-of-file
motet-a | 9 hours ago
Oh okay. I thought you had issues with SQLite. I didn’t know Erlang had this issue.
k749gtnc9l3w | 5 hours ago
At least you had enough control not to be forced to pass length a 32-bit integer in the first 4 bytes of the stdin!
(WebExtensions Native Messaging Host needs to communicate to the browser using packets like that, with JSON payload)
regulator | 9 hours ago
Hanging out with my new puppy and trying to get her to trust me / my partner. She's a Mini American Shepherd (an anxious breed) and came home from the breeder via a 10 hour car ride and since then has been stressed out, so I've been doing daily trust building exercises and spending a lot of time with her.
marginalia | 7 hours ago
Been a stressful period, so enhancing my calm.
Also fiddling with translating the Marginalia index to C++. Mostly a fun exercise for now, unsure if I'll end up completing it. Almost finished with the buffer pool, which is a small component, but also a supremely fiddly one since it's lock free.
tel | 6 hours ago
Exploring Barcelona
regulator | 5 hours ago
One of my favorite cities. Have fun!
sevki | 4 hours ago
landon | 5 hours ago
Preparing the house for the cats i'm adopting next week
adrien | 7 hours ago
Homeserver maintenance. I've been low on space for a while, checked and found out that I never finished my migration to my 4TB SSD which I'm a bit ashamed of.
Related: cleaning up my collections of photos which is taking a lot of space; I have RAW files and sometimes I'll try to salvage pictures with darktable and it's new AgX module which can do wonders so that takes extra time.
And probably some more stuff around the worst soldering hotplate ever that I recently built: a stainless steel plate and a heatgun below it. It works and it means I don't have to buy and store more hardware.
icefox | 6 hours ago
Fighting with my partner about moving.
ansible-rs | 6 hours ago
You've already committed to moving, but don't agree on the process?
You haven't come to a consensus on moving? Or where to move?
icefox | 6 hours ago
We've agreed to move, committed to it, and know where-ish we want to go... and every time we need to make an actual decision about it it's like we're starting from scratch again.
ansible-rs | 4 hours ago
Ugh. So there's committing to the move on an intellectual level, and committing to the move on an emotional level.
It sounds like you'll need to do some digging to find out what's really bothering your partner about all this.
From what I've seen in the past, one frequent issue is moving away from family. (Or moving closer to family, sometimes that's not great.)
If you want to talk to an Internet stranger who knows absolutely nothing about you beyond Garnet, feel free to send me a PM.
ansible-rs | 6 hours ago
I'm not sure what I will be doing. Maybe meeting the parents-in-law for lunch. Maybe seeing one or more of the nephews and SIL. Probably cleaning the fish tank for our 17 year old goldfish. Cleaning is good, and never ends, not really.
But I can tell a short story about what I was doing.
I had decided to replace my secondary desktop (for $WORK) with something smaller and less power-consuming. I have a few different choices laying around the IT storage area.
My first choice was an old Acer mini-desktop with 8G of RAM, 4th gen Intel i5. Plenty for the secondary desktop, which is really just to act as a jump host and for note-taking. Along with being too old to run Windows 11, it was showing a little instability, in that it would not always recognize a boot drive. But it booted most of the time, so that was probably fine for my needs.
I transplant the SSD from the other system to this one, and no matter what I try, it won't recognize the drive. I do the usual stuff, resetting the BIOS, disabling secure boot, etc.. I had previously installed Debian on another SSD, that that worked most of the time, so I don't think it was something to do with secure boot. (*) Eventually I give up on it and it goes into the electronics recycling pile. (The pile is probably big enough to make another run.)
My next choice is a Acer mini-desktop (i3-8100) that is just barely new enough to run Windows 11... poorly. Since no one else is going to need it, I put my SSD in there, and have the same kind of problems as the previous one. But after disabling secure boot, it seems to be fine. I scavenge 8GB of PC4 memory for it (slower than what it originally had) but it seems to run OK.
I just have this fascination / desire to make use of slightly broken things, and putting them to good use. Given no constraints on time / space / money, you would probably find me surrounded with all manner of devices that have some quirks, and probably been repaired at least once, but can still be put to good use. I'm not quite sure why I am like that.
Edit:
(*) Though, maybe it does have something to do with secure boot after all. If the CMOS battery was flaky... It may have been reverting to secure boot, even after that was disabled. Meh. It is in the junk pile now, there's really no need to rescue it. What you have now runs and is stable, don't mess around further in search of answers you don't really need! (This is me talking to myself.)
datarama | 4 hours ago
There is something very satisfying about caring for healthy senior animals. My pet lizard is 18, and it sort of weirds me out that he'd be old enough to vote or take a driver's license - and it simultaneously feels like he's always been there and that I got him yesterday.
He's as active and outgoing as he ever was, keeps getting an excellent bill of health at his annual vet checkups, and has no signs of the geriatric diseases that sometimes affects his species (they're prone to arthritis and cataracts).
sebastien | 4 hours ago
Was going to say that keeping a goldfish for 17 years is an impressive feat. I keep tropical fish, and it's not a walk in the park, so I'll be cleaning the tanks this weekend, like every other weekend ;)
kryptiskt | 11 hours ago
I have put off adopting a new text editor since I largely abandoned VS Code after its bloat got in the way one time too many. I've made do with a combination of Kate and Jetbrain IDEs. I like Kate, but I would want something just a little bit more programmable (don't say Emacs, Emacs is the antithesis of what I want, I want a simple and usable GUI editor with a smidgen of customability). So I thought I'd take some time this weekend and look at what is out there.
jbauer | 10 hours ago
You might enjoy Sublime Text. The reasons you stated were why I took a look at it, and I found the configuration very straightforward compared to a lot of the fully-programmable editors (with solid defaults), while still allowing for additional functionality via a (Python-based) plugin system.
mond | 6 hours ago
It's in poor taste to advertise my own article, but I wrote a whole post going "Helix just works out of the box and is very easy to learn."
It's similar to vim, but all of the difficult keys have pop-ups that explain you how to use them, so you don't need to leave the editor to look them up, see the video.
https://herecomesthemoon.net/2025/06/i-like-helix/
motet-a | 10 hours ago
Maybe Zed? It can easily get bloated with LSPs and AI, but it’s also easy to strip down and it’s not a webview. It feels quite similar to Sublime Text in my opinion.
hoistbypetard | 10 hours ago
If you'd like a calmer zed by default, gram looks like a very promising fork.
kwas | 7 hours ago
I had trouble running previously installed extensions with gram. A fresh config, whole toolchain is available, but they just don't load and there's no visible error bubbled up to investigate. I've just went back to zed with disabled AI integrations.
hoistbypetard | 6 hours ago
Makes sense. Sounds like the maintainer doesn't really use extensions, and is still building their plan to support them. I don't think I've ever used a zed extension.
regulator | 9 hours ago
I switched to Zed due to VSCode's bloat and love it. Customizable but by default minimal, and super fast. It is great.
zetashift | 8 hours ago
Bevy kinda beat me when I tried learning it; as in I had a really nice well typed program, but it took a lot of mental energy to get a circle on the screen.
So I'm going to repeat it with the idea that it's a skill issue.
thirdtruck | 6 hours ago
Good luck! We've been meaning to revisit bevy once we've recovered from more of our professional burnout.
jmmv | 6 hours ago
Getting ready to "ship" something I described here: https://lobste.rs/c/inx28h (TL;DR: a service to store disk encryption keys with auto-locking features to protect against physical theft). I finally have everything in place, so it's "just" a matter of cleaning up the copy on the web site and writing an article about it.
thirdtruck | 6 hours ago
We passed our food safety course with 98/100 points and in barely ten minutes! So celebratin' that. Excited to visit a new board game bar nearby, too.
Making chili and doing so more safely than ever. Haha!
Lucky for us, it'll be cold enough tomorrow that we can attend a friend's birthday party in VRChat. (The breaker on our bedroom trips if we play anything too GPU-intensive with the AC also on.)
olex | 5 hours ago
sleeping and maybe learning haskell
citbl | 10 hours ago
I am making a terminal based replacement for open code in go instead of typescript. I've had enough of the 1.2gb of ram and CPU flat out. Silly stuff. Currently doing the multi thread pooling which is fairly interesting.
jmmv | 5 hours ago
Have you tried Codex? It's Rust and open source and can connect to non-OpenAI models.
At one point I was playing with both OpenCode (or Claude, can't remember) and Codex at once, had both running different tasks, and saw how the former was pegging a CPU at 100% and the other was cruising at 4% or so... and I had enough of the TS CLI madness. Big fan of Codex now.
One thing that kept me in OpenCode for longer, though, was the ability to pop the current prompt open in Vim. But recently I discovered that you can do the same in Codex via Ctrl+G (though it's not as discoverable), and that really settled it.
adam_d_ruppe | 8 hours ago
I'm tired and wanna catch up on sleep lol (which means staying in bed till 7 instead of getting up at 5:45... if the kid lets me), but I've also been thinking a lot about merging some of my trusted old web techniques with some of the new concepts all the kids are playing with. Though one of the things I wanted was basically XSLT and sigh, the in-browser api is now deprecated, kinda sad, but maybe for the better. I have a simplified version in mind anyway now, gotta play to see how much I hate it in practice.
owl | 7 hours ago
Reading Barad's Meeting the Universe Halfway in the hope that I will be able to use it in my thesis this autumn. Right now I feel out of my depth.
aaronmallen | 6 hours ago
I'll likely be working on my Eve Online Companion pod
loldot | 4 hours ago
I have been having a ton of fun building exploits for old windows vulnerabilities lately. Latest was CVE-2005-0416 an RCe with animated cursor files. I’ll probably look for another one.
Also, planning on bouldering and making a sourdough bread
SamRW | 13 minutes ago
I love this! How are you getting the vulnerable executables, and how are you testing them? Seems like a great way to learn about memory bugs in a simpler environment
knirirr | 4 hours ago
I'm at the Smallsword Symposium in Edinburgh, having been attending since it was founded.
https://smallswordsymposium.com/
madhadron | 4 hours ago
Going to keep writing some programs I had long put off now that I’m between jobs and learning Rust finally. Also reloading a novel to Kindle Direct now that they changed their formatting requirements. May rewrite the blurb and stuff at the same time.
pyj | 4 hours ago
I kicked one project out the door as 1.0, so of course now my brain decides to come up with a bunch of new ideas for it. I’m going to ignore them though and figure out how to finish the game I’m working on. I converted it mostly to my home grown ECS since, uhh, there isn’t one in Ada, now it’s moving on from “game concept works” to “scope, execute and polish.”
icefox | 2 hours ago
Ah, the "rest of the owl" phase. Good luck!
pyj | 42 minutes ago
I have my own level editor and 11 levels done, so the big problem right now is "how do I theme this and make it look nice?"
alect | 3 hours ago
Hopefully find some time to continue working through Pikuma's Compilers & Interpreters course! All the while thinking about my own language idea which would adapt WISP with a first class "splice" form.
tonyarkles | 3 hours ago
Hopefully finishing up two circuit board layouts that have been lingering since… January or so. One is for Christmas lights and Christmas is coming faster than I’d like.
Other big thing is to start getting ready for winter. One last mow and yard cleanup. Put gas in the snowblower and see if the carb needs to get cleaned or not. Put up markers again to indicate where the baby trees are so I don’t take them in January.
Hodei | 2 hours ago
Taking my OSAI exam. I'm stressing the hell out, but I think it'll be fine (?).
blitz | 2 hours ago
After two non-stop days of rain, I'll be enjoying walking through the city with my wife. Trying to hit a few dives, a bookshop or two, and get some food somewhere.
Also cleaning and practicing system design