Bazel is a build system from Google which uses a strong change detection model to solve a number of build correctness problems make -like systems struggle with. While it handles most cases of rebuilds correctly out of the box, one recurrent gap is that if glibc changes bazel doesn’t notice and may produce broken results. I’d like to talk about how we hacked around this problem at work, since there…
About a year ago, I decided to get into 3d printing. I had a specific project in mind (which of course I still haven’t done) for building a fairly large interior structure for a pelican case, and so at the advice of a friend I decided to pick up a Creality CR-10v3 for its large build volume. Fast forward many months of building custom firmware, cursing furiously at slicer settings and hand-tuning…
In 2009 when Alex ran the first StrangeLoop, I was a sophomore in High School. When I started hanging out in Clojure circles around 2013, StrangeLoop was the place to be. Rich had spoken there, Zach had spoken there, as would Joe, SPJ and many many more industry leaders. I finally managed to join the fun in 2016, and to say I got to meet my entire Twitter feed in one place would be an…
This post serves as cross-proof that I’m @arrdem@macaw.social in the fediverse. macaw.social is a small instance run by me and some other ex-Twitter SREs. The instance is named ironically for a family of services you hopefully never heard of named Macaw. It’s entirely possible that as the fediverse stabilizes I deploy my own instance (I did just pick up paren.town and paren.space to go along with…
Originally on cohost It sucks that Twitter’s leadership never figured out how to monetize what they had to such a degree that the company and by extension the product, network and relationships captured on it have remained an acquisition target. And now have been enclosed by someone with nothing better to do. It’s not surprising. Twitter’s always been a hot mess internally and externally. But it…
Ah dotfiles. Love ‘em or hate ‘em we’ve got to live with ‘em. While Rob Pike has words about Unix hidden files, we (almost all) work on computers and with software whose behavior is determined in large part by hidden files in our home directories. There’s probably a .bashrc or .zshrc and a whole .ssh/ and .config/ directories kicking around on your workstation full of stuff that matters a fair bit…
For the last decade I’ve chased and wrestled with the ideal of “simple” software, but I’ve come to see it as a false summit and want to spend some ink on why in the hope that it can lead to a better understanding of simplicity and more intelligent conversations about complexity. Those of you who’ve orbited around Clojure will recognize the scare quoted word from Hickey’s “Simple Made Easy” (…
A buddy happened to have an extra ticket to FanExpo Denver, so I got to swing through and check it out. Despite being squarely in the target audience for events like this, somehow I’d never been to a ComiCon or such before, and FanExpo was definitely a cultural experience a couple of things stuck out from. Vendors and booths Weird mix of brands advertising something (gaming stuff mostly), smaller…
If you’ve spent any time around a traditional workshop or machine shop, you’ve probably seen signs about how safety is everyone’s responsibility and about keeping the shared space clean. In an environment with sparks, unrated flammables left around are a risk. In an environment with rotating tools like lathes loose clothing that can wrap or snag and pull can lead to injury. Less extreme examples…
Techdebt tornado, adj.; pejorative One who successfully delivers changes with limited or counterproductive regard for architecture. One who produces work, especially feature work, at the cost of existing architecture and without developing a successor architecture.
This blog post is a review and musing on a talk of the same title “The Thirty Million Line Problem” (2015) (~1h lecture + 40m q&a). To summarize the talk which badly needs it, Casey Muratori argues the following: That software used to be simple not general purpose. The example of interest is game operating systems as for the Amiga and such. It was possible for developers to be in total command of…
Previously , I talked about some limitations of building RPi clusters generally. This time, I’m gonna cut to the chase and present my currently partially complete build. First layer of foam seated and everything powers. Fan has been effectively removed from the design entirely. pic.twitter.com/SofIg2cZQD — r"Re(e+|i?)d" (@arrdem) March 27, 2020 My basic design unit for the build was a W6.5”…
A while ago I got it into my head to put a Raspberry Pi cluster together. So I uh got a pelican case. And a ton of new pis. And am gonna try to build a portable unit. pic.twitter.com/2mxuYC1aLl — r"Re(e+|i?)d" (@arrdem) February 19, 2020 As with the other builds floating around the internet, the intent of mine was produce a low-cost and in my case portable platform for developing and…
I’ve been doing a lot of reflecting lately on the last project I shipped - what went well, and what didn’t. A while back I tweeted out some halfbaked thoughts. One of which was a reflection that while the entire engineering organization beyond my team was using a tremendously powerful toolset, we still got bogged down. My group (> 30 engineers) just delivered a fairly major set of systems, and…
Version numbers are hard. We as programmers are awful about tracking what constitutes a breaking change compared to what constitutes an invisible bugfix. From a formal semantics perspective, there is no such thing as a bug and every “bugfix” is strictly speaking a breaking change. And yet this notion of “fixing” behavior “broken” by shoddy implementations is central to modern notions of libraries,…
This post is somewhat meta - as it concerns a whole bunch of the automation by which I go about writing on this blog. Alright nerds. You asked for natural numbers and zookeeper but you're gonna get trash world ruby first. Strap in. — Reid; Yak Hunter (@arrdem) September 17, 2019 I’d like to be able to write more. At present, I’m running a CI/CD setup on one of my servers which - when I push…
Previously , I talked at some length about the slightly heinous yet industrial grade monitoring and PDU automation solution I deployed to keep my three so called modes - ethos, logos and pathos - from locking up for good by simply hard resetting them when remote monitoring detected an incident. That post (somewhat deliberately I admit) had some pretty gaping holes around configuration management…
In my first homelab post , I mentioned that I chose the AMD Ryzen 5 1600 processor to run my compute nodes. Unfortunately, the Ryzen series is vulnerable to random soft locks which doesn’t seem to have a workaround other than “don’t let them idle”, and I neglected to do my do-diligence when I purchase this hardware platform because I trusted @cemerick who owns a whole stack of nearly identical…
Previously , I looked at using Ansible and Ansible’s inventory capabilities to begin managing services and configuration on my homelab. A core defect in the setup I presented was that I hand-coded the mapping of hostnames to IP addresses in my Ansible inventory because well I didn’t have DNS set up yet. But hang on a second. What is DNS and why do I care? When you type in http://foo.com/bar to…