Go Interfaces, the Tricky Parts
Does this Go snippet compile, and if not, why?
Does this Go snippet compile, and if not, why?
This tutorial will show you how to write assembly language programs on the x86-64 architecture.
As a (late) part of the #rust2020 request, I wanted to talk about one of the paper-cuts that has become decently problematic for new and experienced users of Embedded Rust: The size costs of formatting in Rust today are unreasonably expensive for users of Rust on bare metal embedded systems. In particular there are…
Microservice architecture paradigm fits well within the Unix’s first principle/philosophy: “Make one program do one thing well”. We l...
The introductory post for this book, unexpectedly, received quite a lot of attention, which is nice since it prompted some questions, and on...
Your CPU has a 32-bit addition instruction that computes the sum of two 32-bit integers x and y, producing a 32-bit result. (The 33rd bit of the sum, the "carry bit", is usually thrown away.)
I wanted to give an update on the status of the “async-await foundations” working group. This post aims to cover three things:
You can’t win. You can only control how quickly you lose.
It’s terribly punny/dorky of me, but reading your post it just occurred to me one could start a blog called “Race Condition” about being a person of color and being a computer scientist.
Regarding the example #5, I must be confused about the definition of a sequence point because the resulting assembly output seems to be non-ANSI C:
Knights in chess move in an L-shape: 2 squares in one direction and 1 square perpendicular. But what if it didn't have to be like that?
Dynamicland is a non-profit that resides somewhere between an academic research lab and a Silicon Valley startup, between physical and digital, and between computing’s distant past and its future.
Long ago, I wrote git-subtree to work around some of my annoyances with git submodules. I've learned a lot since then, and the development e...
A common example of recursion is the function to calculate the $n$-th Fibonacci number: def naive_fib(n): if n < 2: return n else: return naive_fib(n-1) + naive_fib(n-2) This follows the mathematical definition very closely but it’s performance is terrible: roughly $\mathcal{O}(2^n)$. This is commonly patched up with…
Communicating Sequential Processes and Python coroutines as a structured approach to concurrency.
Over the years, I picked up a number of tricks to optimize code. Today I’ll talk about one of them.
This is a post about performance. Most of the time when worrying about the performance of a piece of code the overwhelming advice should be (with apologies to Brendan Gregg) don’t worry about it, yet. However there is one area where I counsel developers to think about the performance implications of a design, and that…
"Software is hard," reads the quote from Donald Knuth that opens Scott Rosenberg's Dreaming in Code . The 400 pages that follow examine why: Why is software in a never-ending state of crisis? Why do most projects end up horribly over-budget or cancelled or both? Why can't we ship code without bugs? Why, everyone asks…
Techniques for keeping your app code under control even when requirements shift dramatically.
An entry on some of the cleverest (and clearest) functional designs I've worked on, and how it came to be
Despite the goal of JSON being a subset of JavaScript — which it failed to achieve (update: this was fixed ) — parsing JSON is quite unlike parsing a programming language. For invalid inputs, the specific cause of error is often counter-intuitive. Normally this doesn’t matter, but I recently ran into a case where it…
Synchronizing threads at a lower level.
This is one post in a series about programming models and languages for distributed computing that I’m writing as part of my history of distributed programming techniques.Relevant ReadingTrill: A h...