A blog about setting this up and random nonsense.
Inspired by the botany program on tilde.club, I wanted to build my own version, hence plant.ides.club a collective desktop plant that we have to keep watered. The code is here its a simple go server running, with nginx doing the hosting. The data is stored just in json, and it uses SSE to do live updates across different clients.
Let's see if we can keep this thing alive.
Published: 2025-12-30
Tagged: fun
It seems like our gitea server was compromised. Well, not sure it was so much compromised as that I left login registration open and never set a robots.txt. So, people found the server, created hundres of thousands of accounts and started uploading repositories, mostly, it seems for spam. I blew away the repos, and started with a fresh install of gitea at the latest version and locked down registration. Now if you want an account you have to ask me or another admin.
Published: 2025-12-30
Tagged: git
I haven't blogged in a while but wanted to point out that I've been working on a nostr server, at nostr.ides.club, it has a simple chat interface and support for long form content (like blog posts), an RSS feed, web links and stickers.
I increasingly don't like the idea of being tied to large programs like Telegram or WhatsApp and would like to build a personal alternative, but haven't yet convinced my friends to join.
Nostr seems like a simple protocol you could use to build out a whole slew of interesting tools.
Published: 2025-12-30
Tagged: nostr
A few weeks ago I worked through the Ray Tracing in One Weekend book, this time in Odin. [git]
The book takes you through the development of a simple raytracer in C. It was simple enough to convert to Odin. I really like Odin, I think it will be my goto compiled language for now. It was simple in a way that I like.
The final project of the course is to construct the books cover.
From here I made a few fun images.
And what has become my new desktop background:
Published: 2025-07-05
Tagged: fun
I've disabled the akkoma instance as no one was interested, including me. Thinking isntead of looking into nostr
Published: 2024-02-26
Tagged: admin
Google Domains was recently bought by Squarespace, and this means that all of the google domain accounts are going to be shifting over there. Unfortunately, Squarespace doesn't support dynamic DNS which is used to ensure this site is always viewable at the IP given to the VM. So, I've moved the domain over to being administered by Cloudflare, in that I'm currently using Cloudflare name servers but I'm not sure if I'll be able to set Cloudflare as the registar for the domain.
Published: 2024-02-25
Tagged: admin
I've decided I want to try out janet which seems to be a nice little language. I've been looking for a simple language to use, where I'd like to have a decent amount of speed and a decent story for distribution, with a strong focus on functional programming. The last few years I've been doing Advent of Code in Clojure and have been loving it. One thing I don't love however about clojure is its dependence on the JVM and its speed. It isn't all that easy to distribute clojure programs, though honestly babashka and the upcoming jank alleviate these concerns a bunch.
I've also started trying to teach my son some textual programming. He's been using Arcade MakeCode and Scratch3 but hasn't done much textual programming yet. He's expressed interest in doing Advent of Code, and we've been trying a few of the challenges, but this means he will tell me in words what he wants to do or how he would break up the next step and then I write that in Python. Unfortunately, Python is a rather complicated language and I find myself not wanting to get into the details with him as I think it just confuses him and gets in the way of his path in programming. I wish there was a smaller subset of python that he could use to start.
Thankfully, this exists, there is the Hedy project that presents a stepped collection of python subsets to try to ease kids into textual programming, but its also got me thinking more about scheme or other simple languages. In college, my programming class used SICP and mit-scheme. At the time, I remember being annoyed with all the parentheses, and the fact we weren't learning a real programming language. However, reflecting with a couple decades of hindsight, and there is a lot of like about using scheme as a teaching language, or lisps more generally. For instance, syntax simply isn't an issue, there is a uniform and simple syntax for everything. Beyond that, the language itself is quite small, consisting of only a handful of special forms. The language is so simple that you can famously implement scheme in scheme in only a dozen or so lines. Not only can you implement it consisely, but you can understand the implementation, including if you start from zero knowledge as demonstrated in this short Scheme
Primer from the spritely institute. By the bottom of that page in a half hour or so, you'll not only learn scheme you'll understand the scheme interpreter written in scheme at the end.
So, scheme would obviously be a strong candidate. There are version of scheme that are quite fast (like chez) or with extensive libraries (like racket) or compile down to C (like gambit) or are hip and embeddable (like s7). In fact, one of the biggest issues with scheme it seems is just how diverse and fractured the community is, where there are several guides to choosing an implementation. Though amongst the implementation it does seem like there are some pretty fast ones.
Another consideration would be to use Common Lisp. If what I want is distributable software that I'm sure will run in 20 years, it would probably be hard to beat a language that has been around forever with a standards committee. However I don't know, I've always been kind of scared of Common Lisp and the fact that it is a Lisp2, meaning it has separate spaces for values and functions. But honestly, I'm probably just being too picky.
And then there is Janet. I've been aware of janet for a while now but was recently reminded of it when Janet for
Mortals came out, as well as the blog post Why
Janet? in which janet is described as a simple language that is functional and distributable. Sounds exactly like what I want, unfortunately it seems like it doesn't really have a whole lot ot say on the speed front, with speed comparable to not jitted lua, or potentially slower than even python.
Anyway, I've implemented the first three days of advent of code in Janet and really enjoyed it, especially the focus on PEG for text parsing rather than regular expressions. It's functional without being too annoying about it, which cleans up some of the awkwardness that shows up in Clojure sometimes due to its more emphatically functional and immutable nature.
One thing I wanted to document for my future self was the configuration. You can download janet as a simple binary as well as jpm its package management system, which I generally put in ~/.local/bin, if you then set:
export JANET_TREE=$HOME/.local
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JANET_TREE/lib
In your ~/.bashrc and move janet.h and janetconf.h to ~/.local/include/janet you'll be all set to install jpm packages locally in ~/.local/.
Published: 2023-12-05
Tagged: janet
I just setup a very simple webservice that allows me and my wife to log some values from 0 to 4 along with their timestamps. We are trying to monitor the odor we can detect in our backyard from the nearby lift station and retention pond and wanted to collect some data to see if it occurs under certain conditions.
Code for the site is available here, it consists of a simple flask website that logs the data into a sqlite3 database every time a button is clicked. It also allows for downloading the data as a csv file if requested.
The only other fun little things is that I made it so that it has a nice favicon and set the site up to have a detect touch icon if you install it on your phone home screen.
Anyway, just a simple exercise of setting up a very simple website with flask, as for the deployment, I'm using gunicorn, setup to run as a systemd service which communicates with nginx through a socket.
Included in the repo are the service file and the nginx site configuration.
Here is a simple screencap of the site:

Published: 2023-11-20
Tagged: flask
Previously I had written a simple spelling corrector application for my son. I ran that on his Raspberry Pi 4 computer that he used without too much issue. Now that my son is getting older and interested in more computer games, we've given him an old Windows machine, and I'm not very well verses in windows these days so I've had difficulty getting my python program to run on his windows machine reliably and easily.
I took this as an opportunity to try out nim again, as its a relatively simple compiled language that has a simple cross compilation story.
So, I ported the program over to nim. A copy of the resulting binary is available for x64 linux here and x64 windows here.
Addendum: My son didn't like that when compiled the app by default also opened a terminal window in addition to the gui, after a bit of searching I discovered that if you compile with --app:gui this will ensure that there is not an additional terminal window that opens.
Published: 2023-11-01
Tagged: misc
Locally, we are running an IRC server at irc.ides.club which runs with ngircd, and it has an SSL certificate, but I don't have a good way to automatically replace that certificate, so every few months there is a manual process I need to run. I'd like to automatic the process but not sure I have a great way to do that.
I probably ought to setup a simple cron job that does it now that I think of it.
Published: 2023-10-31
Tagged: irc