Mocks Aren't Stubs (2007)
Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.
The latest blog posts to take off on Hacker News. 1,517 posts.
Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.
This post explains the project's motivation from several perspectives. Unix shell is an old and successful technology, so there are many ways of looking at it.
Why does it take so long to build software? We hear variations of this question frequently: Why is building software so expensive? Why is my team delivering software so slowly? Why am I perpetually behind schedule with my software? There is a good reason we hear these questions over and over. Businesses need more and…
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…
I've told this story at conferences - but due to the general situation I thought I'd retell it here. A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic…
We’ve scaled Kubernetes clusters to 7,500 nodes, producing a scalable infrastructure for large models like GPT-3, CLIP, and DALL·E, but also for rapid small-scale iterative research such as Scaling Laws for Neural Language Models.
As GitHub doubled it’s developer head count, tooling that worked for us no longer functioned in the same capacity. We aimed to improve the deployment process for all developers at GitHub and mitigate risk associated with deploying one of the largest developer platforms in the world.
posted by Matthew Flatt With the upcoming version 8.0 release, Racket on Chez Scheme (Racket CS) will become the default implementation of Racket. This report discusses the implications of that change, continuing a series that was originally about Racket...
At some point, I realized I would've argued the exact opposite position on a lot of topics just a few years ago.
Parenthetically Speaking: Articles by Shriram Krishnamurthi
How to decide if your programs are vulnerable to PATH problems, and what to do about it.
Introduction Win32 APIs provide powerful functionality that let you get the most out of Windows in your applications. While these APIs are readily accessible to C and C++ developers, other languages like C# and Rust require wrappers or bindi
Posted to HN. Comments and discussion highly encouraged. Introduction This will be a short example-based guide to (a) awk (b) gnuplot and (c) using them in a script. I needed to graph some data based on the output of a command run a couple times. So what better way to solve that five minute task than to spend an hour…
Escrow is a payment setup where the payer sends funds to a third party rather than directly to the payee. If certain conditions are met, the third party routes the funds to the recipient; if not, the funds get returned to the sender. Escrow is particularly useful for high value payments because the payer can rely on…
Long term readers of this blog will know our devotion to using container-based technology, especially Docker, to significantly improve software quality through repeatable builds. In the Autumn/fall of 2020, Microsoft introduced a Visual Studio Code (VSCode) extension Remote – Containers. With one quick stroke, this…
All things come to an end, even HTTP APIs. However great your API may be today, one day you'll want to release a completely new version, an improved but...
You see, there are two memory accesses per one character of the input string (at average). Hence, the total number of all memory accesses can be len*2 at worst.
Hi'ya I'm Bryan, and this is my collection of projects, ideas, thoughts, feelings, opinions, ramblings, concepts, concerns, notions, conclusions, blurbs, and schemes, to name a few.
The release of Apple Silicon based Macs at the end of last year generated a flurry of news and some surprises at the machine’s performance.
Official website for flow-based programming
Up until now, GraalVM has offered two ways to run Java programs: using the Java HotSpot VM with the GraalVM JIT (just-in-time) compiler…
Python f-strings give you a readable, concise way to interpolate and format strings, and they beat .format() and the % operator on speed.
André Garzia made a nice blog post called “Lua, a misunderstood language” recently, and unfortunately (but perhaps unsurprisingly) a bulk of HN comments on it was about the age-old 0-based vs. 1-based indexing debate. You see, Lua uses 1-based indexing, and lots of programmers claimed this is unnatural because “every…
This short story is not really about htop, or about the feature request that I’ll use as an illustration, but about what are the core principles that drive the development of a bit of software, down to every last detail. And by “core principles” I really mean it.
Batching work is more efficient … until cost rises nonlinearly with batch size. Then smaller batches are the most efficient. So don’t delay maintenance!
I have come to the conclusion that Software Engineering is primarily a learning endeavour, the working code is rather a side effect. This quote is actually not mine but I am paraphrasing Alberto Brandolini who is making this very point in Event Storming (he was actually talking about Software Development, but I do not…
It's now roughly seven or eight years that I'm building dynamic front ends for the web. From digital art wallets to games (1, 2) and synthesizers, I've seen it all. And since my process
Effort estimation is an important component of any project, software or otherwise. While effort estimation is something that everybody in industry is involved with on a regular basis, it is a niche topic in software engineering research. The problem is researcher attitude (e.g., they are unwilling to venture into the…