New
The latest blog posts to take off on Hacker News. 3,709 posts.
Giving Ada a Chance
ajxs personal site
Why Learn Haskell? (2018)
Asking a "why?" question means we want to be told a reason. But would we accept any reason? It seems not, for if any answer suffices, then the answer is irrelevant, so why bother asking?
Get a Life
When I was a kid, I wrote a BASIC program to explore Conway’s Game of Life on my 8088. It was painfully slow, so I began an assembly rewrite. But I failed at Life: I abandoned the project in frustration because I kept freezing up my system.
PureScript and Haskell
Two years ago, I starting learning PureScript. I had been intrigued by purely functional programming for some time but had failed to learn Haskell once or twice. PureScript seemed to be a kinder, gentler introduction to this world while retaining the fundamental properties of pureness that made Haskell intriguing to…
My tutorial and take on C++20 coroutines
Over the last 25 years, I’ve written a lot of event-driven code in C++. A typical example of event-driven code is registering a callback that gets invoked every time a socket has data to be read. Once you have read an entire message, possibly after many invocations, you parse the message and invoke another callback…
Go is not an easy language
Go is not an easy programming language. It is simple in many ways: the syntax is simple, most of the semantics are simple. But a language is more than just syntax; it’s about doing useful stuff . And doing useful stuff is not always easy in Go.
Where Everything Went Wrong: Error Handling and Error Messages in Rust (2020)
Today you are frustrated.
Reflections on Using Haskell for My Startup
Almost exactly one year ago I quit my job to create a Haskell startup as a solo developer. I had about 20 ideas, but eventually settled on the idea of dependency project health tracking with Deadpendency.
Distribution of JVM Desktop Applications
This is the 6th post in the The state of JVM desktop frameworks focus series.
Julia 1.6: what has changed since Julia 1.0?
Julia 1.0 came out well over 2 years ago. Since then a lot has changed and a lot hasn’t. Julia 1.0 was a commitment to no breaking changes, but that is not to say no new features have been added to the language.
Fuzz me wrong – How QuickCheck destroyed my favourite theory
Quite a while back I wrote a larger article on the algebraic foundation of software patterns which also covered the MapReduce algorithm .
Idioms for the D Programming Language
Effective D Programming Language.
From First Principles: Why Scala?
Scala, first appearing in 2004, is neither an old stalwart nor a new player in the programming language market. This post will discuss the unique combination of features that Scala provides and how it compares to other languages on the market, diving beneath the superficial experience to explore the fundamentals of…
Stack Overflow Users Rejoice as Pattern Matching Is Added to Python
Our on-the-ground reporter gauges developer reactions to the Python Steering Council's latest decision regarding pattern matching.
Haskell: The Bad Parts, part 2 (2020)
The second part of a blog post series on the parts of Haskell we should avoid using.
State of the Common Lisp ecosystem, 2020
This is a description of the Common Lisp ecosystem, as of January, 2021, from the perspective of a user and contributor.The purpose of this article is both to give an overview of the ecosystem, and to help drive consolidation in each domain.Each application domain has recommendations for consolidating that part of the…
Python’s tug of war between beginner-friendly and advanced features
Python is my favourite programming language. Since I discovered it in 2004, programming in Python became my favourite hobby. I've tried to l...
The visitor pattern is essentially the same thing as Church encoding
The functional programming analog of an object-oriented design pattern
Go 1.16 will make system calls through Libc on OpenBSD
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
F# is gaining independence from .NET
F# is a language that will make you sleep better
Cyclic dependencies are evil (2013)
Cyclic dependencies: Part 1
What's New in PHP 8.1
PHP 8.1 adds support for PHP enums, as well as readonly properties, Fibers, performance improvements, new in initializers, and more.
Turbo Pascal: A Great Choice for Programming Under CP/M (2013)
CP/M was blessed with many programming languages, each with their own strengths and weaknesses. I think that Turbo Pascal stands out from these and I'm not alon
OO in Python is mostly pointless
Note from 2025 me - I largely still agree with myself - and I still see the same crappy OO code getting pumped out. The final point in "Exceptions" is worth emphasising more.
Python's Type Checking Renaissance
You may have heard that TypeScript has been taking the web development space by storm in the last few years , bringing to it static types. I believe the same thing is starting to happen in the world of Python, where type checkers like mypy , Pyre , and Pyright are increasingly used, at least where Python is used by…