What are your hobby programming projects? I need some inspiration.
![](https://beehaw.org/pictrs/image/7a17afb3-71f4-4ef1-a5ce-d2975ba46c88.png)
I would like to know what your hoppy coding project are. It doesn’t really have to serve a purpose, but what are you coding on in your free time that just is fun to you and you enjoy working on?
As a background: I am an experienced programmer and do earn my money with it. In my free time I always enjoyed trying out new stuff related to technology, learn new things and improve my skills by doing so. But lately I recognise that I just have no clue what I should do or what a fun toy project I could work on. I really have no ideas. My head just feels completely empty whenever I open my IDE.
So please, tell me what you are coding on for fun.
I read about this hobby project yesterday and thought it was very inspiring. This guy wrote a scraper that compares the prices of groceries and it made a big political splash too. https://mastodon.gamedev.place/@badlogic/111071396799790275
Personally, I also wanted to try some new tech, and created my first android app for my daughter to practice her basic math operations many years ago.
Another option for you would be to find a FOSS project you like and contribute there (fediverse? Hint, hint).
Yea doing some FOSS contributions definitely was something I always was considering. But then as soon as I was looking for the right project things started to get complicated again. And even if you find a cool project you look into the issue list and imposter-syndrome starts kicking in.
Been working in IT since 1997. Imposter syndrome sucks.
That being said, contributing to FOSS can be as little as helping others in a Linux forum, validating bug reports, etc before you file your first pull request 😁
My next project is going to be a terminal tool that takes lat-lon coordinates and a date, and converts both ways between angle of the sun relative to the horizon and time. I wrote a python script a while ago to get times for golden hour, twilight, etc., but I don't like how slow it is, and I want to make more composable terminal tools that people can pipe together.
FOSS accounting app. There's like 2 out there that I can find, and I hate them both.
Currently, I am writing a Fluid Sim in C++ . I am mostly following the repo by Doyub Kim and the book by him called Fluid Engine Development.
Something I've been wanting to work on is a TUI wizard for configuring software.
The thought is most Linux server program use various config files, and in order to configure them correctly it generally takes a few minutes to a few hours to read through their documentation. But a lot of the configuration boils down to passwords/keys, file paths, network locations, a few different booleans, etc.
So the general idea is, for a program, the developer or the community can provide a config file telling the TUI wizard what arguments the config file needs, and this one program can walk the end user through setup and generates the config files. This would reduce the amount of time hunting through documentation and reduce bugs due to typos or invalid choices.
It could go a step further and auto generate keys or passwords if needed, validate entries (ie if the config needs an IP it could make sure it's valid, etc)
I'm working on a project that generates ideas for new coding projects.
"AportGPT, make a list of 10 ideas for new coding projects..." 😜
I have my own music player written with Python, Gtk, and Gstreamer. I use it almost every day to listen to music during work
A python program that plots a voronoi diagram in a circle, but the input is the area sizes of the cells. Pretty math heavy, but weirdly interesting as I’m trying to solve it with a genetic algorithm.
nice. I am working with voronoi grids too in another field. Is there a source where I can read about your work more in detail?
A lot of the actual coding/scripting work that I've done recently has been server stuff. I recently containerized all of my game servers with Docker and bash, and I'm now looking at switching from my current janky Minecraft Docker setup to a fancier setup with autoupdates for Paper and its plugins. I'm far from a professional programmer, so it's been fun to actually hack together useful things for myself.
I'm creating an RPG in GoDot using asprite for resources. I'm about 6 months in and I find it so relaxing making assets and plunking them in. Whatever you do it should be for you is the golden rule. To often people want to inject themselves in or offer input thats sneakily what they want. It should be what your vision is,, your pace and you shouldn't answer to anyone.
That sounds amazing, may we know a little more about your project if you're ready to share something about it?
It's in the vein of dragon. Warrior monster, simple combat but the fun is more seeing all the monsters and exploring. I posted some art assets ill share in a moment. Please keep in mind this is a fun hobby thing.
https://lemmy.ca/post/5372244
https://lemmy.ca/post/5319347
https://lemmy.ca/post/1795635
Right I'm following the Pixel Art community and I saw your 2nd link before. Nice 🙂 Anyway good luck with your project, or rather, have fun with your project 😉
Thank You, when Its done and im old and gray I'll throw it on Itch for free probably xD
For the past year, I've been working on an online scavenger hunt. It features many tech related challenges on various topics (web, protocols, crypto, stegano, ...).
This is the project as a whole, but I had to work on many sub-project to bring it to life, out of which:
What I love about this project is that it touches many different topics. I had to setup reverse proxies, complex firewall rules, VPNs, abuse the TCP/IP stack, ... I could also work on very useless but fun topics, like creating a tool that answers to ICMPv6 traceroute packets to insert fake hops between the requester and the destination. I'm now close to releasing it, and I wonder what I'll do when this is over...
I work on the Jellyfin Roku client, a React Native Lemmy client, and a Next.js Electron Mastodon client.
I have dozens of projects in varying levels of completion and maybe like 2 finished projects. Here's my list, steal to your liking because I come up with ideas I want to see in the world, and clearly I'm not a great medium for that:
d(0, 255) = 1
, and it still worked. Stochastic updates work, even in a distributed context, because it's a kind of "simulated annealing".And finally then there's my magnum opus, Espresso, my favorite project I keep coming back to time and time again and
bikesheddingrefining over many years. If anyone else takes it up I'd be ecstatic.proto[...T] Super Sub(...args) { ... }
, egproto class Animal { ... }
andproto Animal Monkey { ... }
class
,enum
,union
,interface
,struct
, etc. Compare to [P0707];
is an optional operator to explicitly disambiguate their ending.after
operator,x() after y() == (var t = x(); y(); t)
- surprisingly useful for conciseness.[...for(var x in 10) x] == list(range(10))
proto class { +(rhs) { console.log("\{this} + \{rhs}"); } }
delegate()
method which define how to represent the variable on the stack. Untyped variables use an inferred type or an implicitany
, which wraps a dynamic object. This lets you create objects likeint32
while still using the prototype semantics.unsafe
compilation distinction to avoid catastrophic vulnerabilities.try!
semantics, exceptions are actually wrapped in a returnedResult[T, E]
type:try
is an operator which unwraps the result and returns if it's an error. Thus you getvar value = try can_fail();
. Using type object operator overloading, theResult
type doesn't need to be explicitly annotated becauseResult[T, E] == T | Result[T, E] == T | fail E
.fail
keyword instead ofthrow
/raise
.I could go on for hours with all of the stuff I've thought of for this language. If you want to know more, the README.md and ideas.md are usually the most authoritative, and specification.md is a very formal description of a subset of the stuff that is absolutely 100% decided (mostly syntax). I've written turing complete subsets of it before. First usable implementation to arrive by sometime in 2200 lmao. 🫠 I can also unpack the other projects if you want to know more.
Holy moley, you keep yourself busy. :D
Or one for css or Angular. Just implement the basic style for buttons, text, menu's etc and adjust where needed. A bit like Bootstrap but then more basic
there was a fedi shitstorm recently RE: centralized blocklists so I tried my hand at a web service that would facilitate aggregating and sharing these lists in a decentralized and dynamic fashion and so far I like how it's coming along
https://crates.io/crates/felicia
I'm hoping to build a frontend for it soon-ish
I write a lot of spreadsheets for games I play, so adapting them into more sophisticated software is always something I chip away at. Good opportunity to learn how to implement concepts in new languages too. Right now I'm writing a Warframe simulator in Racket.
A short list:
The current one is a Linux system backup tool written in Python that I use for my systems.
Recently worked through Mozillas PWA materials to learn how to make Progessive Web Apps. I need decide on what to do with that next. This HTML, CSS, JavaScript, pretty much. Put up a Python web server for some of it.
I have a security system that is tied together via various Python services. I need to work on that more.
A few years ago I write a big Monte Carlo financial simulation for retirement planning including taxes. Again Python.
A while ago I wrote a bunch of test code too benchmark all of the ways to make Python fast. Also looked a C extension, parallel computing, vectorization, GPUs. Some results not that intuitive.
I have a ton more.
Building automation to play SpaceTraders as well as tools to aid in board game design
Started a couple years ago with a simple home network website using Flask to simply save/organize my notes.
It has slowly grown into an entire eco-system that manages/records my entire life, from work to play and everything in between.
Sometimes I feel a little selfish for keeping all this to myself (my entire household uses it too) but I've been programming and building websites for decades and it's nice to work on something that has no schedules or expectations and the cherry on top for me is zero worry about security or compatibility.
This is why I never became a programmer. I am retired now, but for the last 10 years, I have been a data center support agent. Programming is fun, I would hate to ruin that fun by having to work to someone else's rule.
Actually there’s an idea sparking up on me.
When I was a junior programmer there were some business guys coming up with the requirement to implement their own validation language (similar to regex). I always thought it is totally stupid to invent your own instead of using something that already exists. But it turned out to be great fun implementing it. I had no prior knowledge in implementing parsers and interpreters. But man I was so proud after I came up with my own solution for the problem. It was such fun, that I even was doing over hours. At the end I create my own tokenizer, a parser and an interpreter. Even something similar to what I now know most people would call an AST (abstract syntax tree).
However, I know I have bought the Crafting Interpreters book without having read it. I really should start digging into it.
I make stuff for the Playdate (in Lua), it’s a tiny cheese-slice-shaped gameboy with a reflective 1-bit screen and a crank!
So far I’ve Only done smaller projects like an example project and I worked with a friend to make a little face app for pictures, but I’ve got a few games that I’m going to finish up since I got my preorder last week
how has that been? I thought the idea was neat but wondered about how it would be long term. Are you able to publish what you make and get some income?
It’s a small community, so I wouldn’t expect to be making a living just yet 😅 Squid God was pretty big in the community making tutorials and, he shared his revenue and it looks like a little over $4k for a game he collaborated on that was released on the device’s catalog. A few of his smaller games got a combined $3k, but that’s also with the added YouTube audience helping with popularity.
The community is good though! Very open-source welcome, at least the parts I’ve interacted with.
Im working on a multiplatform gtk graphing calculator app that's pleasant to use and powerful at the same time. Mainly oriented towards mathematics and chemistry because thats what i do but more stuff may be added eventually.
I am, very slowly, building a Wireguard management UI. None of the ones I looked at do what I want, so I am doing my own. The think I just finished is a magnet: and .torrent handler that sends any link to my central torrent client.
Building small games and demos with fantasy consoles: TIC80 and PICO-8
TIC80 is FOSS, PICO-8 is not
Chat client and server for a system that is similar to IRC, but with certificates both for encryption and signing. The idea is that this will provide secure end-to-end communications as well as trusting that the person in the other end isn't just someone with the same nickname.
To maybe give you some ideas, have a look at SimpleX and the Nostr. I haven't looked into it in detail yet, but at first glance these two seem to work similarly.
Isn't that Matrix?
last.fm Tube a combination of last.fm and YouTube
I used a tutorial book to help me create a python text game, then I rewrote it and have been casually adding things. I sort of want to re-write it again in Java to see how it compares, I'm more comfortable with java so I'm hoping I could focus more on system design. I'm noticing that the more I add to the base game the more spread out my solutions become, so addressing that is the main interest I have with it.
A new project I'm working on is a simple web scraper. I liked building a lexer/parser in the text game and I think having my own web scraper would be useful.
I'm still learning so I aim for projects I can 'finish' in 2-4 weeks.
Oh and a windows notepad that looks like the windows notepad except more customizable. I like the idea of building utilities.
I am interested in all things random or mathematical. I have written programs to simulate the decay of radioactive 'stuff', a program that simulates the CA Lottery by flipping a coin (someone said that your chances are about the same as flipping a coin 25 times in a row in a run of either heads or tails).
On the mathematical side, I have written a program to run the 3n+1 (Colatz) series and record process features, like counting evens and odds, the number of steps, and the maximum value found in the series. Perhaps the average of the values in the series would be interesting to calculate...
Combining mathematics with randomness - I have worked on the 100 prisoners idea, How many loops are created in this run, and how long is the longest one? If any loop contains more than 50 members then the prisoners lose and don't get to go home.
I have ideas for a traditional basic interpreter only lines are labeled not numbered.
I have a traditional Star Trek program that I have written many times improving slightly each time.
Writing a CHIP-8 Emulator was really fun. There's a lot of resources out there and it's really fun, small low level project you can "finish" in a week of casual coding. As someone who was mostly coding highlevel in my job, I really learned a lot.
I recently wrote a tool to make my D&D games a little easier. It's a web app that lets you load up an encounter's worth of enemies and keep track of their health (plus extra stuff, like legendary actions). And it does the math for you, which is a huge weight off my mental load.
It would be neat to expand it with an API that lets you load in monsters from a database and calculate the encounter difficulty, but I'm in no hurry. I don't usually have a lot of energy to code on weekends now that it's my full time job.
Current main side project is a web music player, using WASM for the UI, because everything else is no fun.
I also have an own, tiny OS automation framework that I've been meaning to continue dicking around with.
Then I've got a minimalistic note-taking helper program. (My note system is just a bunch of loose text files, and that program helps create those files according to a scheme and allows me to search them.)
Planned projects, requiring larger and larger levels of megalomania:
Automation framework? Industrial automation or something else?
Ah, probably shouldn't have abbreviated there. "OS automation" meaning "operating system automation", as in scripted deployment and configuration of software, similar to Ansible, Puppet, Saltstack etc..
I've mostly been frustrated with how relatively little assistance these tools give you. Your IDE obviously won't tell you what values can be put into a given configuration slot, nor will it auto-complete the right values, if everything is written in goshdarn YAML.
And so, this has mostly been an exercise in creating such a framework in a strongly-typed language, with lots of compile-checks, and which allows you to quickly define own task (in the same language, you use to configure tasks).
Gotcha. I read it as "Open Source". I'm deep in industrial automation and it's rare to find a kindred spirit.
Why do you prefer WASM over JavaScript (which is suppose is your alternative for the UI work)? I build a lot of web stuff but haven't tried WASM yet.
Well, I'm mostly a backend dev, so my favorite part is that I don't have to write JavaScript. 🙃
You might be more adept at navigating it, but that language is just a minefield of unexpected behaviour and has a massive, complex ecosystem.
I'm using Rust to compile to WASM (has the most mature tooling for that, as far as I'm aware) with Leptos as the UI framework.
You write your HTML and CSS like normal, but JS is replaced with Rust code.
And well, one big advantage is that since my backend is in Rust, too, I can use the exact same models, constants etc. in backend and frontend. If they drift apart, that's a compile error.
(You do get this advantage, too, if you use NodeJS for the backend.)
But aside from me not liking JavaScript, there's lots of little things that make Rust a pleasure to use here.
Rust's sum types (Option, Result etc.) match really nicely with the infos you need for crafting a UI. Like, just yesterday I simply wanted to load a list of songs (
Vec
) and thought, I'll do the error handling later, but Rust's paradigms still eventually left me with aResult, Error>
(contains either the song list or an error message).At that point, I could have still just told it explode, if there's an error, but then I realized, oh yeah, if I can't load the list of songs, that
Error
is precisely what I want to show to the user.And then you don't have to deal with horrid ternaries. Instead you get full pattern matching, so my UI code now looks roughly like this:
I did leave out quite a bit of the boilerplate there, so this isn't valid code, but point is, it's a hundred times better than passing data and error in separate variables, separately checking, if they're non-null and never quite knowing what all the legal states are, since both could be intentionally null or uninitialized null or unintentionally null or both non-null. It's so much complexity that you just don't have.
And ultimately, yeah, I chose the word "fun" quite intentionally there. You get the cool parts of frontend, i.e. lots of visual feedback and something to show, while leaving out most of the downsides, i.e. fugly code.
There is, of course, different downsides to the WASM/Rust/Leptos stack, like it simply being a very new ecosystem. You can't yet pull in dozens of component libraries and so may have to build things more often yourself. And it isn't yet as tried-and-tested as some of the bigger frameworks, plus Leptos is still going through breaking changes.
So, yeah, maybe don't yet switch over everything at your dayjob, and of course, if you know Rust already, that's quite the advantage, but overall, I do quite recommend it and feel like it'll become a lot more relevant in the future.
Thanks for the elaborate reply! All my backend stuff is in Python (Django) but I think there is python WASM frontend stuff too so I think quite some of your insights might apply. Python is not quite as secure-by-design (secure as in I know for sure how my code behaves and where to expect exceptions) as rust but still better than JavaScript so I might look into that!