New
The latest blog posts to take off on Hacker News. 399 posts.
Haskell for Beginners
This is the first article of a series on the functional language Haskell for beginners
I wrote a 231-byte Brainfuck compiler by abusing everything
We wrote a Brainfuck compiler back in April . That one developed a simple architecture to support multiple backends. Today, I want to write a new Brainfuck compiler. One that can only run on a single system, OpenBSD /amd64. And one that is as small as I can possibly make it. I broke into the sub-256 bytes club with my…
Julia and the Reincarnation of Lisp (2020)
Background
GraalVM at Facebook
Facebook is using GraalVM to accelerate its Spark workloads and reduce memory & CPU usage. Keep reading to learn about their migration…
Compiling Rust is NP-hard
...though it's not the flagship borrow checking that's at fault. What I noticed, and would like to share with you today, is that the exhaustiveness checking performed by the Rust compiler on match patterns is a superset of the SAT problem.…
Functools – The Power of Higher-Order Functions in Python
<p> Python standard library includes many great modules that can help you make your code cleaner and simpler and <code class="inline">functools</code> is d...
Debugging in Clojure
A guide to debugging in Clojure, using the REPL
Programming Language Memory Models
Programming language memory models answer the question of what behaviors parallel programs can rely on to share memory between their threads. For example, consider this program in a C-like language, where both x and done start out zeroed.
Let's build a simple interpreter for APL, part 2 (2020)
Today is the day! Today is the day we take our APL programs and interpret them, so that something like ÷ 1 2 3 -⍨ 1.1 2.2 3.3 can output 10 5 3.33333333.
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
The Haskell Phrasebook (2019)
The Haskell Phrasebook is a free quick-start Haskell guide comprised of a sequence of small annotated programs.
REPL vs CLI: IDE wars
An unfair heavily biased apples-to-oranges comparison… unless?
Data notation in Clojure
Homoiconicity (code as a data structure) is one of the pillars of the Clojure language. It gives the extensibility and flexibility to the language.
Learn by reading code: Python standard library design decisions explained
On your Python learning journey, you may have heard that a great way to get better is to read code written by other people. That's true, but finding good code to study is not easy, mostly because the design philosophy and the reasoning behind the code are rarely documented. The Python standard library is special in…
Functors and Monads for People Who Have Read Too Many “Tutorials”
Title is literally true. This may not be the best place to learn about these concepts for the first time, because I'm going to focus on knocking down the misconceptions about them.
Goodbye C++, Hello C
Part 1 of this series about my toy renderer covers the most fundamental design decisions. Over the years, I have written many renderers and for a long time their complexity kept growing. This time, I took the opposite route. I wanted to maximize the fraction of code that implements crucial functionality rather than…
Go 1.17 is deprecating the traditional use of 'go get'
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…
New Elixir 1.12 – The developer’s point of view
The Elixir 1.12 version introduced some significant changes. The main one is the ability to create scripts and import dependencies via Mix.install. The interactive console can be more helpful in the software development, prototyping and debugging processes.
Subclassing in Python Redux
The conflict between subclassing and composition is as old as object-oriented programming. The latest crop of languages like Go or Rust prove that you don’t need subclassing to successfully write code. But what’s a pragmatic approach to subclassing in Python, specifically?
Going Beyond Ada 2022
AdaCore is the leading provider of commercial software solutions for Ada, C and C++ — helping developers build safe and secure software that matters.
Julia: Faster than Fortran, cleaner than Numpy
I'm super enthusiastic about Julia after running this comparison of Julia vs Numpy vs Fortran, for performance and code simplicity.
A Tour of Safe Tracing GC Designs in Rust
I’ve been thinking about garbage collection in Rust for a long time, ever since I started working on Servo’s JS layer. I’ve designed a GC library, …
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…
Six ways to make async Rust easier
Asynchronous Rust is powerful but has a reputation for being hard to learn. There have been various ideas on how to fix the trickiest aspects, though with my focus being on Tokio 1.0, I had not been able to dedicate much focus to those topics. However, Niko’s async vision effort has recently started the discussion…