Ask HN: What are your “scratch own itch” projects?

83 points by jventura ↗ HN
Hi HN, since my kid was born (almost 16 months ago) I haven't had much time to learn new things, which is something I have always enjoyed. Similarly to many people, I learn a lot by doing some kind of project (big or small). But since my time is rather constrained, it would like to do some "scratch my itch" kind of project, something that may be useful enough to keep using it.

I though of asking you, people at HN, what kind of "scratch your own itch" projects have you done or are doing?

I'd like to do something computer related (to learn some Golang), but I'm curious about non-computer projects as well.

174 comments

[ 0.26 ms ] story [ 217 ms ] thread
Not a computer related, but I write a blog (in lithuanian language), because writing articles helps me to remember stuff I learned :) Somehow putting down thoughts to small articles does magic to my brain :)

(There's an extra bonus as that same blog helped me to find few clients for work too, haha.)

1) Semantic search for legal documents. Found it annoying that, as a lawyer, I have to use search engines that require me to guess the keywords that might be used in the documents I'm looking for... as well as to skim through the entire documents the system found in order to judge whether or not they are relevant to my case.

2) Discovering audiobooks I'll enjoy. Someone here on HN mentioned "random sampling" as a great technique to get a feel for a domain without getting biased by one's pre-conceived notions. I thought that would be awesome for books, to literally "not judge them by their cover".

3) Search engine for pre-owned Teslas. Quickly see what's good value based on age/mileage per price, as well as being able to see how long I'll have to wait, on average, to get a particular set of features for a particular price (based on historical market data).

Plus several others.

Have you seen https://www.parrothq.com? (I’m not affiliated.)

Or you can build something using a combination of LLM models (OpenAI, Cohere, Hugging Face) and Pinecone (offers keyword-aware semantic search which is what you probably want for domain-specific content like legal… I am affiliated).

I trained my own models, actually. Also tried many of the vector search engines out there. But ended up with a custom solution using hnswlib and SQLite to get subsecond speed with millions of documents.
About (1): May I request you to throw some light? Is your reference that the keywords are not synonymized to find equivalents within documents? Help?
It’s not just about synonyms. It’s about context. A passage can talk about exactly the topic I’m researching, even though none of the words match. On the other hand, a passage may have ask the right words in it, but in a completely different context.
I have several projects that I develop just for myself.

One is a command line based database browser/editor. PhpMyAdmin for the terminal, so to say. I do all my database work inside of this editor. The terminal is just so much faster. And has many benefits like that I can use it over ssh and in containers.

Another one I started recently and already use is a terminal based project planner that is completely file based. Each task is a text file.

One that I am currently planning is an ActivityPub client. Like Mastodon but way way leaner. For now, I am basically playing with ActivityPub requests on the command line. Later, I will add a Python web interface on top of it.

> One is a command line based database browser/editor. PhpMyAdmin for the terminal so to say. I do all my database work inside of this editor.

Isnt this just a shell? Like psql, for example?

It's not just a shell.

It is a terminal UI in which you can browse tables, go into tables, browse and edit rows in a spreadsheet like interface etc.

If there is any database out there that is commonly used to demonstrate DB software, I could record a little screencast.

So far, it supports SQLite, MariaDB and MySql.

ah, so a bit like visidata?
Yes a bit. With a focus on browsing/editing databases.
Sounds great. Did you release it?
No, it's just for my own usage.
this year I learned astrophotography and then I learned deck building/carpentry as I needed a deck to raise the telescoped above the fence line. https://www.astrobin.com/users/bhouston/ if you automate you astrophotography rigs via things like ASIAIR or Nina you can control it all remotely from inside.

Also wrote a behavior graph library like Unreal Engines blueprints, intended to be used by say no code Threejs projects, and it works well: https://github.com/bhouston/behave-graph

I've been working on a platform to help teams deal with their deadletter queues. It's very much a scratch my own itch project as it's solving a problem that I've faced while at my day job.
For me it was getting into microcontrollers and (microcontroller based) electronics.

Tinkering with IOT projects using an ESP32 is engaging because they offer both, a variety of high level connectivity features ( wifi, ble) and direct integration with sensors or other Hardware.

Modern ones can even be developed in Rust and are not as constrained hadrwarewise as earlier generations.

I recently got back into developing some small "just for me" games with Godot and also got a surprising amount of enjoyment out of trying out Blenders procedural geometry and material node systems.

In my day job I am doing resty cloudy things so my free time gets used die something else.

We're building Double (https://doubleapp.xyz) as something that fixes a need of our own.

We observed that doing activities in the presence of others overcomes HUGE hurdles in motivation (called body doubling in ADHD communities, but also known as social facilitation: https://en.m.wikipedia.org/wiki/Social_facilitation). It's an incredibly interesting effect and something we are excited to share with others as we build it out and discover new ways to tap into the phenomenon.

Yes sir, I’ve observed this effect first hand -> it’s monumental how focused and dedicated I can be simply because another person is close by either watching, or helping with whatever I’m working on.

I hate the fact that I can’t really achieve that baseline when I’m doing something by myself though, which is my preference usually when I’m working.

https://github.com/piku, for sure. I was getting tired of deploying stuff manually or juggling containers for the simplest of apps, so I sat down and wrote most of it in a couple of weekends.

I now deploy the vast majority of my personal projects with it (including container-based ones, actually).

This is super cool - definitely something that hits a need of my own too. Thanks for sharing this!
My next project! Thanks for this!
why would i need this ? not meaning to sound rude, haven't used containers so much and this is curiousity. Can't you just shh into the server and do git pull & restart what ever your app is?
Love it! It replicates exactly what I setup on my VPS for all my projects.
My custom keyboard layout Conkey [0] is surely my most prominent one — I use it constantly (including for typing this very comment). I hate the way the base US layout tends to get distorted in other keyboard layouts with good support for non-ASCII characters, so Conkey had the explicit goal of retaining that basic unshifted layout. I’ve also ended up porting Conkey to Mac and Linux — and given that I’m slowly switching from Windows to Linux, at least the Linux ports have ‘scratched my own itch’ too, which is nice.

Also, I made a utility to archive the full text of every website I view and store it in a SQLite database for searching. It’s proven pretty useful when I want to find something I saw a while ago and then forgot. (I haven’t attempted to open-source it, though — it consists of three entirely separate components, two of which were a pain to set up. I must try to get it into a more usable state one of these days.)

What else… my sound change applier [1], perhaps? Not that I use it very much, because I only need it on those occasions when I want to do some conlanging, which I haven’t had much time for recently. Actually, sound change appliers strike me as being very much a ‘scratch own itch’ type of project in general… sometimes it feels like every conlanger has written their own, and no two can agree on a nice design. Everyone just has their own unique preferred way of doing things.

[0] https://github.com/bradrn/Conkey

[1] https://github.com/bradrn/brassica

"Also, I made a utility to archive the full text of every website I view and store it in a SQLite database for searching. It’s proven pretty useful when I want to find something I saw a while ago and then forgot."

This sounds wild. Is it an extension that just works automatically? Or?

Well, it has several parts. There’s a little Firefox extension which collects the text from each page as it’s opened; that sends it off to a webserver running on localhost, which stores the text in an SQLite database. I then made a minimal graphical frontend with Qt to let me search the database easily. Nothing especially fancy, but very useful nevertheless.
I had tens then hundreds of open source software instances to manage for customers (setup, security, backups, updates, migrations, ...) When I had only few tens it was easy but after the first hundred it was total hell and very time consuming.

To fix that my team and myself have created https://elest.io

We are providing fully managed open source service for a catalog of 185 open source software

I submitted a game to the N64 homebrew jam this year, along with some team members I met on the discord server. It was cool dusting off some skills I had learned in an intro to graphics course from my undergrad. The game isn't complete, but we got some core elements working, animated characters, decently intuitive controls, basic collisions, extremely primitive 'AI'. There could be better docs/materials for onboarding new people to developing on the console, but we were able to piece together stuff over a couple of weeks.

https://youtu.be/6xzvZ9X-DYU

https://github.com/MrGlitchByte/TinyNightmare64

my own usb powered back scratcher inspired by Kramer from Seinfeld, my back-scratcher does the "8" in various patterns until it covers the whole back area.
I'm building https://cubetrek.com It's intended to be running/hiking/skiing/mountaineering analytics app focused on mountaineous terrain (think Strava but for activities in the mountains).

Just got finished on the 3D visualization of GPS tracks, now working on the user accounts to store/compare/visualize/share past activities.

It's definitely "scratch your own itch", as I'm building it to suit my exact needs.

I recently wrote a multithreaded web server and MVC framework in C from scratch using clang blocks and a request-based memory arena [0] and now I’d like to expand the endeavor into a custom compiled-to-bytecode DSL with web server and SQLite runtime.

The goal is to limit the environmental impact of serving web applications. Ideally memory usage should be less than a couple of MB for an idling server, a Docker container less than 100MB in size, and CPUs efficiently converting request paths into SQLite opcode and JSON responses.

[0] https://github.com/williamcotton/express-c

We built an alternative Web UI for GCP because the default one is insufferable at times, especially when you have thousands of resources scattered across workspaces/projects, again due GCP’s problems of lacking more granular details on service costs such that you have to isolate resources to the project level.
I wrote a music synth library called Scott's MusicBox. The source is on github:

https://github.com/OhioVR/MusicBox

I tried to emulate orchestral sounds using an abandoned sample collection using it with some success but no one really liked it.

I also had problems with our point of sale at work which I tried to improve with a picture book with bar codes over the items. That helped me scan items without upc labels. Hit and miss but I'm going to have to sell my printer so that project is also dead.

My SO got 4 thermoses for Christmas one year, so I decided to build a simple wishlist service[0] to prevent it happening again. Launched it 6 years ago, and since then it's been used by friends, family and myself for all Christmas and birthdays - so I consider it a huge success. In addition to already being a success for me personally, it's growing organically, and last year really picked up the pace when I reached 1k users. Now it's at just over 7k, which is surreal.

[0] https://wishy.gift/

I love doing these. Some recent projects (before I started recording video):

Minimalist CSS “Framework” https://neat.joeldare.com

Personal Digital Brain https://github.com/codazoda/nolific

The Raspberry Pi in my Bedroom https://joeldare.com/private-analtyics-and-my-raspberry-pi-4...

In January I’ll start to publish “live coding” style videos of some of the projects I work on. I guess it’s the cumulation of my toy projects. I’m recording them as a way to encourage myself to create even more. Most are very simple. Many are “reinventing the wheel”. But, I love the work.

In the first two video’s I write a simple binary in Go (a language I’m not very familiar with) then run it as a command over ssh.

In the third I write a command line tool to generate random character strings.

Each video will have a companion GitHub repo.

The channel is completely empty at the moment. I’ll publish my introduction the first week of November and then publish videos weekly starting on January 1st. I’ve already created the first couple video’s and I’m editing the third now.

It will start out really rocky as I learn techniques for recording video and audio and improve my process.

My (blank) YouTube Channel https://youtube.com/codazoda

I wanted to learn how databases work internally, like how they store and retrieve data, build indexes, etc.

I built an educational KV store to teach someone to write a database from scratch. I have set up this project in TDD fashion with the tests. So, you start with simple functions, pass the tests, and the difficulty level goes up. There are hints if you get stuck. When all the tests pass, you would have written a persistent key-value store in the end.

link: https://github.com/avinassh/py-caskdb

It's worth doing! A few projects I've done:

I once needed a database of EV charging locations, but at the time(2011) there were no open databases, so I built https://openchargemap.org, that now serves millions of API queries per month for other apps and services

For another project, I recently wanted to control my guitar amp (a Positive Grid Spark) from my computer instead of using a mobile app, so I built https://soundshed.com which is both a bluetooth web app and an electron app you can install. It now has a few thousand users :)

And finally, another time I had some SSL certificates I needed to manage for another project (for the above mentioned https://openchargemap.org), so I built a GUI to manage and renew certificates on Windows. It's now a commercial app with hundreds of thousands of users and it's my full time job: https://certifytheweb.com

So yeah, worth doing!

Currently re-implementing the Focus Sessions feature of the built in Windows clock app. I had been using the Windows version as a quick way to track time spent on a learning goal but found it buggy and lacking some features I wanted (like a pause button!) so I'm rewriting it as an Electron app. It's giving me a chance to write some plain JS for once and I've set a challenge of importing as few front-end libraries as possible (so far only react and immer). I'm excited that I have it at the point where I can dogfood it for tracking the time I spend on developing it.