Embedding EndBASIC into a (Rust) program

One thing that bothers me quite a lot about various language implementations is that the core of their interpreter isn’t clearly separate from their standard library. This makes it hard to embed those interpreters into other programs because it’s not obvious how to limit their side-effects and because the interpreter dependency can be heavy. In this post, we will see how EndBASIC’s design tries hard to keep the core as small as possible, and we will see some examples on how to use EndBASIC from Rust and vice versa.

January 26, 2021 · Tags: endbasic, programming, rust
Continue reading (about 7 minutes)

EndBASIC 0.5 release announcement

A month has passed since the 0.4.0 announcement so it is about time to say hello to yet another EndBASIC release because 0.5.0 is here! So, what’s new? Not much… unless you look under the covers, in which case a ton has changed. About 30% of the codebase has been affected in one way or another to improve general quality, so read on to see how.

January 24, 2021 · Tags: endbasic, programming, release, rust
Continue reading (about 3 minutes)

Why am I wasting time on EndBASIC?

If you have been following this blog or my social profiles for the last year, you are probably aware that I have been working on something called EndBASIC. You also probably know that this is a retro-looking BASIC interpreter written in Rust that happens to run on the web. And if you know those two things, you are probably wondering, like some of my friends do: why am I wasting time developing such a useless project?

January 19, 2021 · Tags: endbasic
Continue reading (about 4 minutes)

Prevent accidental commits with DO NOT SUBMIT

One of the teeny tiny features I miss from the Google development stack is something called DO NOT SUBMIT. Here is what it is and how to replicate it in your projects.

January 11, 2021 · Tags: automation, ci, google
Continue reading (about 5 minutes)

Enforcing code health via GitHub Actions

It is no secret that, in software development, the edit+build+test cycle must be as short as possible. The delay between saving a file and seeing the results has to be minimal and in the order of a few seconds, or else developers lose focus and productivity suffers. It’s equally important to ensure that the code is held to certain quality standards. Compiler warnings, for example, are part of any compilation and catch a set of common problems.

January 8, 2021 · Tags: automation, ci, rust
Continue reading (about 8 minutes)

How does Google avoid clean builds?

During my 11 years at Google, I can confidently count the number of times I had to do a “clean build” with one hand: their build system is so robust that incremental builds always work. Phrases like “clean everything and try building from scratch” are unheard of. So… you can color me skeptical when someone says that incremental build problems are due to bugs in the build files and not due to a suboptimal build system. The answer lies in having a robust build system, and in this post I’ll examine the common causes behind incremental build breakages, what the build system can do to avoid them, and how Bazel accomplishes most of them.

December 31, 2020 · Tags: bazel, featured, google, opinion
Continue reading (about 20 minutes)

EndBASIC 0.4 release announcement

About a month ago and after a long hiatus, I published EndBASIC 0.3 and the adrenaline rush that came with it got my wheels spinning again full-steam ahead. So here I am today, ready to announce the 0.4 release. But… “what could have possibly changed in just a month of someone’s free time”, you wonder? Enough, actually! EndBASIC 0.4 is the release that fulfills my original goal of being able to run a “guess the number” game.

December 25, 2020 · Tags: endbasic, programming, release, rust
Continue reading (about 12 minutes)