A great small post python’s pre-declared constants are kinda weird examining Python’s constants. The interesting thing here is that the constants are not treated the same way and hence have slightly different behaviour. It’s a little hard to see how this came about. It’s relatively clear that there is no good reason for the constants to behave differently in this way and…
The Google developers blog has published a post Why Go is an Ideal Language for AI-Assisted Software Engineering . How to say this nicely, I don’t think much of this post. First of all, I think this is a great area of active research. Just as we aren’t terribly sure about what makes a good programming language for humans, we also do not know exactly what makes a good programming…
In a somewhat non-specific titled blog post: What’s the best programming language for coding agents? , Dan Luu takes the time to actually investigate the question of which programming languages are more efficient in their token usage. Well technically the token usage of LLM models when writing in those programming languages. Primarily he’s interested in the claims that dynamic…
Video Link: Reliability lessons from SQLite at Software Should Work Richard Hipp the creator of SQLite, clearly one of the best pieces of software in the world, gives a talk on reliability lessons from SQLite. This is very good talk that is well worth watching. There is a certain kind of time-warped feel to this talk, Richard discusses several testing strategies that I think have been at least in…
Link: Twenty years of Pandoc An interesting look back at the first twenty years of Pandoc by its creator and maintainer John MacFarlane. If you’re not interested in the history of improvements and evolution of Pandoc, you may still find the discussion on the choice of Haskell interesting. You can read the Prehistory section for why Haskell was chosen and the Retrospective: the choice of…
The following post 23 languages, one I can check showed up on my feed. The author talks about using gettext for internationalisation (i18n) and how they used an LLM to translate into 23 languages other than English, with only one of those 23 (German) being one the author could personally check. If you look into translation engines, such as gettext which the author is using, and ICU message format,…
Video Link: Dependency Cultures: Software Should Work An interesting talk by Richard Feldman well-known to most Elm developers and now working on his own Roc programming language . He starts with a very interesting observation, looking at the web pages for various programming languages and their dependencies. He makes the point that these websites are all doing a very similar job, although some…
Link: Functional Programming from First Principles: Part 1 motivation An interesting start to what looks like a series of articles on functional programming. I’ve often found that once people give functional programming a real and proper try they get it quite quickly, but that many programmers resist it. Perhaps they give it a half-hearted try but it’s almost as if they want to dislike…
Last summer I got interested in fantasy football again. I was interested in creating a game with three properties: A casual to play game, didn’t necessarily involve a lot of time or effort Based around simply goals scored, so no complicated scoring system for stats and no rating system for performances Players were unlikely to converge on the same team, or even one or two “must…
I haven’t ever spoken about the scoring system we use on pole prediction to grade Formula One predictions. There are two systems and I’m particularly fond of the one we use for the season predictions. But first let me explain the session (qualifying, race, etc.) scoring which is a relic of an old game we played before I developed pole prediction. This was first played on reddit.…
I was asked to watch an episode of Steven Bartlett’s Diary of a CEO featuring Mo Gawdat introduced as an Ex-Google officer available here . My main takeaway is that Mo Gawdat is largely operating out of his lane in this podcast episode. Though they are only briefly touched on, he does seem to have a grounding in economics / sociology. However, the episode is mostly focused on A.I. and…
Link: A testing conundrum A thoughtful blog post by Ned Batchelder regarding a difficulty in testing a class that on the face of it should be straightforward to test. The class seems straightforward to test because: This is a pure function: inputs map to outputs with no side-effects or other interactions. It should be very testable. The code is basically a hashing function, for which he wants…
I’m working on a project for which I’m using Go, as well as LLMs, mostly Sonnet 4.5 via Claude Code. I’ve noticed that it is frequently passing up on opportunities to factor out common code. But I’m not at all sure this is a bad thing. Here is an example, which I’ve chosen as relatively short but it illustrates a pattern which is relatively common: if config .…
Link: I Tried Gleam for Advent of Code, and I Get the Hype Nice, short and thoughtful blog post regarding trying out Gleam for the advent of code this year, and liking it. I think this is quite a good advert for generally using the advent of code as a way to try out new programming languages and tools. This makes me want to try out Gleam as well, something that’s been on my to do list for a…
Self-recommending absolutely bangning post from Simon Willison regarding combining HTML, Javascript, and CSS into a single file, which can then be served on static hosting. The post itself is obviously worth reading, but additionally you can browse his extensive collection of HTML tools: You can explore my collection on tools.simonwillison.net —the by month view is useful for browsing the entire…
A good blog post on avoiding space leaks in Haskell showed up on my feed today. First of all I think it provides some useful and important advice for Haskell programmers. I think it touches on some of the same issues that I wrote about recently in a post regarding stacks and laziness. The author starts off stating (correctly) that lazy languages are not the norm, nor particularly popular: Haskell…
A few weeks ago I wrote about an issue in the book ‘Empire of A.I.’ by Karen Hao. There is now a much more in-depth look into this issue by Andy Masley . It includes a response from the author and Andy’s response to that response is well worth reading even if you don’t read the main (very detailed) post. I think both are writing in good faith here, it must be terrible to…
Cindy Sridharan writes an interesting post which questions the wisdom of keeping functions small. Although the author uses the provactive title “Small functions considered harmful” that is actually not their point, which is better stated in the conclusion: This post’s intention was neither to argue that DRY nor small functions are inherently bad (even if the title disingenuously…
I regularly (more than once a week) receive obvious spam direct into my Gmail inbox. It looks like: Hello, handsome man, I would be very happy to meet a man like you and have a coffee with you to make each other happy. The ‘from’ address usually contains ’love’, ‘sweet’ or even ‘sexy’, such as ’ lovesakina33@gmail.com ’. I generally think…
Lovely blog post from Herman who operates the bear blog blogging service . He details a little project of his to mess with the badly behaving bots, but I think it also works well as a read of simply spending some time going down a rabbit hole, mostly enjoying oneself, and also reflecting a little. He is concerned mostly with the real bad-folk of the Internet, the ones that are looking for…
I sometimes find that developers do not really have a good grasp on the point of laziness in a programming language, believing that it is mostly an optimisation. It’s not really an optimisation, it’s a way of writing generic code which doesn’t need to be specialised for a particular use case. I’ve made an attempt before to explain why laziness can result in cleaner or less…
Previously I reported on long Elm compilation times and that being related to large .elmi files. In an Elm discourse thread Warry links to their new package elm-stuff for decoding .elmi and .elmo files. So if you are having Elm compilation time woes, you could potentially use this, to inspect the large .elmi files and see exactly what may be causing them to be so large. This may guide you to the…
This post details a problem with the Elm compiler that results in long compilation times or large memory usage (and possibly OOM issues) and a possible way to fix it, as in change your application so that your compilation times are shorter. I have a large (~150k lines) Elm application and it can take over 2 minutes to compile. One reason for this is the stored state that the Elm compiler stores in…
Update: 2025-11-24 Andy Masley has a much more in-depth look at this is issue, including a response from the author, and his response to that response is well worth reading. I’ve been following some of the debate on the water usage of LLMs. A lot of people seem concerned that this is a large issue. I’m not sure either way, but I’m coming round to the view that water usage is not…
Using Claude code I noticed something a little strange, which I at first thought might give some insight into how LLMs are manipulating code, but turns out is probably nothing to do with that an merely how it displays those changes to the user. Here is a diff proposed by Claude, the task involves removing a link from the navbar of application. ● Update(src/View.elm) ⎿ Updated src/View.elm with 6…
Syntax highlighting is having something of a moment. Three posts have popped up on my feed: Niki is sorry, but everyone is getting syntax highlighting wrong Words and Buttons speak about Lexical differential highlighting Hillel Wayne complains that Syntax highlighting is a waste of an information channel . Sorry, but everyone is getting syntax highlighting wrong In the first post Niki allows…
An interesting post on the Unplanned Obsolescence blog .I’ve asked before what dynamically typed languages are good for and one answer I’ve come up with is meta-programming . In the linked post the answer is essentially ‘glue’ code. It is very much worth reading the entire thing, but the author is firstly making the claim that you should mostly stick to using the web DSLs,…
The Entropic Thoughts blog has a new post: “Non-Obvious Haskell Idiom: ViewPattern Argument Transform” regarding something I didn’t know existed in Haskell, and it touches upon something I’ve written about before so I’d like to say how they are related, and wonder whether this is the correct solution, I don’t have a better one. So first the new feature in…
Martin Janickek has a great post “Elm Queues Shootout” which is well worth reading. He uses property based testing to test several Elm queue libraries. He then benchmarks those libraries as well, though he is cautious to note that for the most part queuing libraries are fast enough and you don’t really need to worry about performance unless you have queues of many items in a hot…
Dillon Kearns of elm-pages and elm-radio fame has a really good analogy for feature requests, whether they be feature requests for an end-user application or API changes to a software library, or even say changes to a programming language. His analogy is legal standing. Legal standing, in the US, is the requirement that a person bringing a case to court must have a sufficient connection to the…
Cracking post on the Elm discourse by john_s in response to rupert’s question regarding “intensely monadic code”. In his response john_s details some findings from a review of 300k lines of Purescript/Haskell code: In surveying over 300K lines of PureScript / Haskell code in 4 large applications I believe the most genuinely needed monadic binds I ever saw in any properly sized…
I’m interested in programming languages and often look at the websites for new/isoteric programming languages. Today, after reading Moonbit developers are lying to you I was interested in the moonbit language and so I visited the website . I noticed a few things on the website that I find relatively common when looking at programming language websites and thought I would detail them here.…
The success of Ladybird (C++) overtaking Servo (Rust) challenges some assumptions I have about the programming language productivity, particularly with respect to strong, static typing, and the lack of a satisfying explanation allows me to update my priors a little. This post was triggered by watching the latest update video from the Ladybird team , in this we learn that according to the…
A couple of weeks back after the GPT-5 release, I wrote a skeptical post that the fact that the GPT-5 model picker release was botched was something of a bearish sign for llm-assisted programming: Okay, but if OpenAI cannot utilise their own models in coding/dev-ops to avoid a high-profile failure on a very high importance launch, what chance do other companies have? Why hasn’t the A.I. enabled…
I use SQL in many projects, and that is often in the form of SQLite. Something of a limitation I find is that only a single table can be returned from a single query. Whilst using SQLite, that’s often not so much of an issue since making several queries is less of a performance issue when it does not involve multiple round trips to a server. Nonetheless it can sometimes either mean extra…
I order groceries online, more or less each week. Every week, as I checkout I use my password manager to fill in the credit card details. Every week, the store asks if I wish to save these card details “to make checkout faster in the future”. I do not really need that since I have the card details stored in my password manager so it’s very fast for me anyway. Additionally, when…
Graic has a nice post up discussing left-to-right programming , the main tagline is that “Programs should be valid as they are typed”. I agree with this idea, the main thing that the post points out, is that if definitions come after use, it is difficult for the IDE to help with auto-completion and/or hints (such as undefined variables). The first example is Python’s list…
A good summation post perfect web app from Matyáš Racek’s blog yoyo-code. I think this neatly sums up how difficult it is to write a good, well working web application. It’s good to have all this in one place. In particular I think this nicely shows some of the trade-offs between traditional server-side rendered multi-page applications and client-side rendered single-page applications.…
GPT-5 was released and the general vibe I’m hearing is that it’s a significant upgrade in many areas, but not so much in general intelligence. This has caused many to update priors on A.I. progress in the bearish direction. In this post I wish to make a simple observation regarding a particularly bearish sign of A.I.-based productivity improvements in the near term, rather than A.I.…
I was listening to the Risky Business podcast , in which Maria Konnikova and Nate Silver discuss why you should put your probabilities in numbers rather than words. I wanted to add that I think it’s even worse than they suggest, because of variable consequences of the event under discussion. The segment is introduced via an anecdote the general gist of which is that an American analyst in…
For a long time I’ve been sceptical that using the file system to denote modules in a programming language is necessary. There are many good reasons to do this as things currently stand, but most of these reasons can, and arguably should, be solved with better tooling. For example from the post linked to above: why would we equate a file to a form of encapsulation? Why, would we wish to…
I have previously described using sed to hack together a “poor-person’s functor” to overcome an awkwardness encountered when using elm-program-test to simulate HTTP events in the program being tested. To recap briefly the issue is that using elm-program-test, means that the update function returns an Effect rather than a Cmd Msg . When we apply this update function to…
The following was written for a colleague who suggested I post it more publically, so here we are. We’re going to compare dynamically and statically typed languages in the context of writing admin panels for a variety of data stores. We assume that the data is actually stored within a relational SQL database, but that’s not important because we further assume that we need to…
As many did, I participated in pre-tournament prediction competitions for the Euros. As I didn’t know much about most of the teams, I largely based my predictions on the Elo rankings. Elo ratings are essentially Chess ranking applied to international football teams. Each team has a numerical score which is increased or decreased based on the results of their matches, with the new ranking…
There have been a few proposals for extensible custom types in Elm, the idea is that they are somewhat analogous to extensible record types. In this post I wish to give a proposal for how to make custom types ’extensible’ that could play well with opaque types. The key point is that we need not focus on extensibility so much as the distinction between structural and nominal types. The…
In this post I’m going to describe an awkwardness encountered when using elm-program-test to simulate HTTP events in the program being tested. I will then describe ML functors, a feature of the SML/Ocaml module system and show how these would solve the awkwardness. I’ll then show how it’s pretty simple to hack together a “poor-person’s-functor” and use that to…
A throw-away comment on the elm-radio episode debugging in elm led me to re-evaluate one of my Elm practices. The comment concerned writing a type signature for values/names defined in a let-in scope. I’ve always done this in what seemed to be a traditional accepted practice. That is omitting pretty much any and all signatures on names defined within a let-in scope. If you look at most Elm…