Revisiting Java in 2021 – Part II
A look at how Java 17 stacks up against Kotlin and Scala for development teams in 2021, and an overview of popular JVM technologies.
Annotated explanation of David Beazley's dataklasses
David Beazley on Twitter :
Types versus sets in math and programming languages
For several years I have been designing and implementing a functional teaching language especially for use in the context of a Discrete Mathematics course. The idea is for students to be exposed to…
Monads and Macros
Monads and macros have an almost gnostic mystique about them. Why is that? Why does hardly anyone use both?
PowerShell Inventor Jeffrey Snover Interview
We had a great talk with Jeffrey Snover, Microsoft Technical Fellow and CTO for Modern Workforce Transformation. Snover is the inventor of Windows PowerShell, an object-based distributed automation engine, scripting language, and command line shell. Enjoy full interview on our website.
Latches in C++20
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.
Emacs Lisp Readable Closures (2013)
I’ve stated before that one of the unique features of Emacs Lisp is that its closures are readable . Closures can be serialized by the printer and read back in with the reader. I am unaware of any other programming language that has this feature. In fact it’s essential for Elisp byte-code compilation because…
Rusty Typestates – Starting Out
This post is part of a series, you can see an overview of the whole series in [ rust-typestate-index ].
The Haskell Phrasebook (2019)
The Haskell Phrasebook is a free quick-start Haskell guide comprised of a sequence of small annotated programs.
Standard Ruby 1.0
Say hello to Standard Ruby 1.0! Effortless linting and code formatting for Ruby, built on RuboCop. Zero configuration, total convenience.
Methods for Array Initialization in Rust (2018)
Arrays in Rust are fixed size, and Rust requires that every element in an array is initialized to a valid value when the array is initialized. The result of these requirements is array initialization in Rust is a much deeper topic than it would seem.
Rust is not a company
Last year, as an occasional contributor to the Rust project, I did not think much about the organisational structure of the team behind the project. I saw a hierarchy of teams and groups, team leaders, etc. Just like any other organisation. This year, after getting more involved, becoming a library team member and…
Closer to finding what became of Moses Schönfinkel, inventor of combinators
In a follow-up to his first article about Moses Schönfinkel, Stephen Wolfram looks for the whereabouts of Schönfinkel after 1924 through his family history.
Swift on the Server (2020)
Why choose Swift as a backend language in 2020? What are the available frameworks to build your server? Let me guide you.
Abstraction, intuition, and the “monad tutorial fallacy” (2009)
While working on an article for the Monad.Reader, I’ve had the opportunity to think about how people learn and gain intuition for abstraction, and the implications for pedagogy. The heart of …
James Gosling Interview
We had an opportunity to talk with James Gosling, a Canadian computer scientist, best known as the father of the Java programming language, and get his insight into the languages, features, and solutions that we use every day.
A rough proposal for sum types in Go (2018)
Sum types are pretty cool. Just like how a struct is basically “This contains one of these and one of these”, a sum type is “This contains one of …
Constexpr is a Platform (2020)
Let me share a useful insight with you: constexpr is a platform. Just like you write code that targets Windows or a microcontroller, you write code that targets compile-time execution. In both cases you restrict yourself to the subset of C++ that works on your target platform, use conditional compilation if your code…
Writing Python Extensions in Assembly
A deep-dive technical overview of how you can write CPython extensions in assembly (with a bonus tutorial on assembly programming)
Dynamic Queries in Ecto (Elixir Lang)
The macro Ecto Query dynamic/2 allows you to build query fragments and interpolate them into one large query. We get easy-to-manage query building in an accessible way. It allows you to control the parameters from the user and transparently create filtering of data stored in the database.
Tiny FORTH from scratch in 1 week (bootloader-based Arduino UNO, 2K of RAM)
Building a tiny FORTH for an Arduino UNO in one week