Ideas

This is an incomplete list of ideas that have been roaming around in my head, roughly sorted by stage. It is up to date as of November 3rd, 2024.

Active projects are moved to the Projects page.

See also: About Ideas Now

My web site

Add categories to week­notes entry sections

My week­notes are a collection of thoughts on many different topics, from entertainment and acting to programming language interpreter development and fiction writing.

It could be useful to add categories/tags to each week­notes entry to allow e.g. creating feeds that pertain only to certain categories.

Build a new about page

My personal web site has a homepage which has a little bit about myself, but really not very much. I’d like something that contains just a lot more.

Who am I? What am I interested in? What have I done in the past? What drives me? What do I want to do next?

See About (brainstorming).

Publish my library

Publish a list of books that I own and have read. Maybe also books that I want to read. Perhaps also add reviews of books I have read.

This would be nice because people could then ask “can I borrow this book” and then I could lend them the book. I could even mark books as “to give away.”

This could include not just books, but also movies, TV shows, and games, though that might push the scope a little.

It could be neat to publish this in a computer-readable format too: see Library JSON - A Proposal for a Decentralized Goodreads (Tom Critchlow).

Software projects

Software, whether open-source or not.

Build games

I’ve done some game development before just as a hobby, and I’ve always enjoyed it. I have ideas for bigger games, though I’m not ready to share concrete ideas just yet.

Build a personal database app

Such an app would allow writing down data in a structured format with all the benefits that come from it: custom queries, custom views. It would also allow exporting to different formats, including HTML for inclusion on web sites.

Similar to FileMaker, Bento, TapForms, Steward, AirTable, Notion databases.

The app would ideally be local-first, with cloud sync available, and the data format would need to be open (or good export options would need to be available, but that’s less interesting).

Use cases:

Build presentation software

I like Keynote, but it sometimes feels limiting and awkward, especially in the way it supports builds and animation. I’d like something more advanced.

I don’t know what technology I’d use for that.

Build a color palette designer

I have my own hacked-together set of color palette designers that I use on denisdefreyne.com, but polishing that into an app could be really nice. Does not have to be an app necessarily; could be an online tool too.

Build a feature flag service

There are few open-source feature flag services out there, and the ones that exist are just not good. I could definitely whip up something better, but it’s unlikely to happen because I’d only really feature flag systems in a work context…

Build a production change tracker

Keeping track of changes to production is useful for debugging, auditing and postmortem construction. What is deployed and when? What changes to feature flags have been made, by whom and when? See also: Project idea: Captain’s log.

Build a postmortem tracker

Keeping track of outages is always useful. With structured metadata, it becomes possible to extract analytics, e.g. total outage duration per month, frequency of incidents, and mean time to resolution.

Create a programming language

I have started on this so many times, because it is just plain old fun — at least at the beginning, and then it gets remarkably tedious. Heh.

But still, there is potential in creating a programming language that is different from anything else out there. Maybe a programming language with no globals?

A simple web server that provides short links, like go/finance linking to the finance team page. It would need a simple UI for adding and editing inks.

Non-fiction writing

Articles, books, talks, and the like.

Write a “parsing with the shunting yard algorithm” article

The shunting yard algorithm is a nice way of handling operator precedence and associativity. In my opinion, it’s cleaner and easier than other approaches to parsing (although probably theoretically equivalent to them).

Write a “how to memoize” article

This would be an article reflecting on the learnings I had writing a memoization library (ddmemoize — now abandoned). I already gave a talk in a similar vein, How to memoize, though this article would reflect more on the weird/unusual bits of Ruby knowledge that I gained in the process.

Topics that this would cover: metaprogramming, #freeze, thread safety, weak references and soft references, metrics.

Write a “how to code review” article

It is an established practice to do code reviews, but there is a lack of clarity on how to do it, and why to do it. Some practices are counterintuitive (e.g. the purpose of code review is not to find defects).

This might be part of a larger collection of writing on software engineering principles.

Write down my software engineering principles

This is an extension of the previous idea on writing down my practices on doing code reviews. See also: software engineering principles.

Write a “build a programming language” article

Tree-walking interpreter. Touch on most of the core concepts (lexer/tokenizer, parser, symbol resolver, evaluator). At the end of the article, there would be a functioning programming language, even if only basic.

This could also be a talk: In about 30 minutes, this talk would run through creating a programming language and writing a simple interpreter for it.

This could also become a book. This might be a huge challenge, but opens up the opportunity of writing the programming language in the programming language itself.

Write a “programming language patterns” article

This is similar to a “build a programming language” article, but would focus on specific technical implementation patterns.

There would be some overlap with Crafting Interpreters and with Language Implementation Patterns.

Write a “game development patterns” article

Having written a few (simple) games before, I have noticed specific patterns that are often not explicitly documented or talked about, but which I have often found in source code of real games.

Documenting these, perhaps using examples in LÖVE, could be particularly helpful for people who are new to game development.

There would be some overlap with Game Programming Patterns.

Write a “capability-based security” article

At RUG::B a while ago, I gave a talk about creating a programming language built around the idea of capability-based security. It is a unique idea, and it would be great to document my own findings in the form of an article.

See also:

Write a “old-school MVC” article

MVC (model-view-controller) is an old concept that has been implemented in various ways, including some bad ones. Rails’ implementation of MVC is bizarre, for instance, and it would be interesting to present what MVC genuinely is about.

It could be interesting to write an old-school MVC framework, perhaps with modern JavaScript. Or Lua, with LÖVE perhaps.

This could also be a talk.

Miscellaneous

Stuff that doesn’t fit elsewhere.

Convert my CV to be skill-based

My current CV lists my experience, and “core skills” to the side. It does not properly highlight the skills I have (and want to use); it uses work experience as a mediocre proxy.

A skill-based CV could be much more interesting. This could tie into Skills I have. The work experience would still be there, but perhaps secondary. (Hopefully it does not bring my CV to three pages, but it in all likelihood will.)

Create a new default Nanoc site template

When you run Nanoc’s create-site command, you get a web site that looks like it’s straight from the early 2010s — probably because it is. The HTML is not great, the CSS is quite dated, and the design is not mobile-friendly.1

A new default template could be useful. Or even a set of default templates that you could choose from: a minimal site (sort of what it generates now), or something more advanced like a personal web site with blog posts written in Markdown.


  1. In my defense, maybe that is because Nanoc is older than the iPhone. Nanoc is old. Ancient, even. But still relevant in 2024! ↩︎

Note last edited November 2024.