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 weeknotes entry sections
My weeknotes 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 weeknotes 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?
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:
-
Personal library: What books do I have? What have I borrowed from people? What have I lent to people?)
-
Job search: What jobs have I applied to? What is the status? Is there anything I need to do to progress particular applications?
-
Reading list: What books do I want to read? What have people recommended me? What am I reading right now? What have I read and what did I think about it?
-
Recipe list: What are the recipes that I like to make and want to share with others?
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?
Create a link shortener
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:
- RUG::B topic “A language built with third-party code reuse in mind”
- Weeknotes 2022 W22: Resignation
- Weeknotes 2022 W24: Near-infinite
- Weeknotes 2022 W26: Funemployed
- Weeknotes 2023 W13: Dentist
- Weeknotes 2023 W14: Talk
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.
-
In my defense, maybe that is because Nanoc is older than the iPhone. Nanoc is old. Ancient, even. But still relevant in 2024! ↩︎