Waste of time, you wont impress anyone because there are no more software jobs left. Go to gym.
Writing toy software is a joy
61–70 of 318 posts
Re: Writing toy software is a joy
#62Waste of time, you wont impress anyone because there are no more software jobs left. Go to gym.
Who am I impressing at the gym? The weights have already been lifted
Re: Writing toy software is a joy
#63I work on Dart professionally. I've also been tinkering on a toy programming language that may never see the light of day. My toy language has gone through several incarnations but a while back I was working on adding algebraic datatypes, pattern matching, and exhaustiveness checking to it.
The canonical algorithm for exhaustiveness checking is this paper by Luc Maranget: http://moscova.inria.fr/~maranget/papers/warn/warn.pdf
When I first started dabbling in programming languages over a decade ago, I tried to understand that paper for weeks and just could not wrap my head around it. I don't have much of a formal CS background and that paper was impenetrable to me.
So here I am tinkering on my toy programming language and I run into again. I give it another try and laboriously implement it in my interpreter, basically doing a straight translation. I don't understand the code, but it seems to sort of work. So then I start refactoring it a tiny bit at a time into a style that fits the way I think about code. Eventually the algorithm sort of folds into itself and before I know it, I finally understand how it works. The end result was only a page or so of code, but my toy language had real exhaustiveness checking work.
Meanwhile, at work, I am working on adding pattern matching and exhaustiveness checking to Dart [1]. Exhaustiveness checking here is a much harder proposition because Dart has subtyping, unlike my toy language and the ML languages that Maranget's paper works on.
I'd been hacking away at an exhaustiveness algorithm for Dart based on a couple of papers about Scala's approach but they were sort of approximative and inelegant (in my opinion, maybe they are a great fit for Scala).
But once I understood Maranget's algorithm from implementing it in my toy project, it finally clicked for me how it could be adapted to work with subtyping in a sound, coherent way. I wrote it up as quickly as I could and (with a lot of additional help from a teammate to handle generics), that became the algorithm we shipped:
https://github.com/dart-lang/language/blob/main/accepted/3.0...
It wouldn't have happened if I hadn't coincidentally been working on a toy pattern matching implementation at home.
Re: Writing toy software is a joy
#64Re: Writing toy software is a joy
#65Re: Writing toy software is a joy
#66Re: Writing toy software is a joy
#67> Perhaps you’re a user of LLMs. I get it, they’re neat tools. They’re useful for certain kinds of learning. But I might suggest resisting the temptation to use them for projects like this. Knowledge is not supposed to be fed to you on a plate. I get where this is coming from, and I even agree with it today, but I also want to tag it as "don't cache this opinion too hard". It's interesting to notice when and how our…
It feels like Claude and ChatGPT have both become more sycophantic over the past months.
Re: Writing toy software is a joy
#68I agree. However: Your best bet is likely to build it by hand and then see if you can get an LLM to build it.
It is looking like we are living in a world where an important tool to have in your toolbox is going to be the skills and experience of working with the LLM/AI tooling. There are skills, knowledge, tools, tips and techniques that you need to develop to effectively use these tools, just like the honing you get from writing the code.
Over just the last half hour I did a brain dump of "hot tips" to a friend of mine who is just starting to use Claude Code to kick-start him.
The LLMs are REALLY good at writing small toy programs, and at the end of the day it's great to have little tools that you'll use every day.
Re: Writing toy software is a joy
#69Reinventing existing software has 0 merit. If you cannot be creative enough to invent new things, you shouldn't bother working.
How are you supposed to learn to invent new things if you don't know how existing things work?
Wanna do some creative thinking? Read some books, learn how normal people think. Explore latest datasets. That's where the meat is. 98% of what you read online has been written by super uncreative(boring) people. They have no imagination whatsoever, IQ is well statistically speaking not too flattering.
Internet is ran by the bottom. It's slop by the bottom, for the bottom. So you need to hang out with creative people.
Tech people write the most boring blog posts because it's aimed at getting hired. Nothing of substance is shared. That's why gwern stands out like a sore thumb. The majority of human beings are incapable of creative thought.