Aspects: the fan-fic of build rules

Aspects are a feature of Bazel that are basically like fan-fic, if build rules were stories: aspects let you add features that require intimate knowledge of the build graph, but that that the rule maintainer would never want to add. For example, let’s say we want to be able to generate Makefiles from a BazelContinue reading “Aspects: the fan-fic of build rules”

That’s senior programmer to you, buddy

After about a decade of professional programming, I have finally gotten promoted. For the first time. This is a weird industry. Regardless, I am now a “Senior Software Engineer.” Woo! Thinking about it, this has been a goal of mine for a long time. Now that I’ve achieved it, I’m not sure what’s next. “…andContinue reading “That’s senior programmer to you, buddy”

Four alternative debugging techniques

I’ve recently been working on a side project that uses WebGL and a physics engine that was transpiled from C++ into JavaScript so… printing variable to the console and using the debugger just weren’t cutting it. I started thinking about the other ways I debug things: Ship of Theseus debugging: the ship of Theseus isContinue reading “Four alternative debugging techniques”

Compilation à la mode

Bazel lets you set up various “modes” of compilation. There are several built-in (fast, optimized, debug) and you can define your own. The built in ones are: Fast: build your program as quickly as possible. This is generally best for development (when you want a tight compile/edit loop) and is the default, when you don’tContinue reading “Compilation à la mode”

The Mixed-Up Directories of Mrs. Bazel E. Frankweiler

Bazel has several directory trees that it uses during a build. Sources The most obvious directory is the source tree where your code lives and where you run your builds. This is, by default, what Bazel uses for source files. However, you can combine several source trees by using the –package_path option. This basically overlaysContinue reading “The Mixed-Up Directories of Mrs. Bazel E. Frankweiler”