For about as long as I’ve worked in tech, ‘local development’ has mostly meant one of two things: The Developer Laptop: install a bunch of stuff until everything works. Lots of freedom, very little ‘developer friction’. Also, bespoke setups to manage the myriad of different tools/versions/configs, and days wasted because “local dev was broken”. Corporate…
A long time I ago I found myself in a fighter jet in Dutch airspace. I wasn’t a fighter pilot, but I was granted control of the jet anyway. It was awesome. Now there’s quite an interesting story as to how I got myself in that position, but that’s not what this blog is about. Today, I want to talk about AI for a bit. But before we do that, you may be wondering what idiot allowed…
I’m not big on New Year’s Resolutions. Never have been. In part it’s because I dislike the thought of these kinds of ‘fixed date events’. Like, why wait until February 14th to buy flowers for your partner just like literally everybody else? Wow, so original. The other part is because people tend to not follow through anyway. “Dry January” followed by a…
Debt — most people are familiar with it; most people also don’t like talking about it. But today, we’re talking about debt. The most well-known kind of debt of course is financial debt. Loans, mortgages, leases, etcetera. They’re all built around some form of deferred payment, with conditions formalized in some form of contract. You get something now, someone else paid for it,…
The past few years, whenever my birthday would be coming up, I would inevitably end up reflecting on things a little. This year isn’t much different; it might be a little worse. Whether it’s my age being closer to 60 than it is to 20, increasing tensions and uncertainty in the world, or having to deal with a pretty significant case of burnout – I had more things to reflect on than…
Automatic updates. Are they a blessing, or are they a curse disguised as a blessing? In a world of rapid development, relentless innovation, and ongoing security threats (and a bunch of social media induced FOMO on top), one would be inclined to believe that automatic updates to software are not only good – they are necessary. I think it’s a little bit more nuanced than that, and in…
Today I found myself in a bit of a discussion. An online debate on the topic of leadership styles – what could possibly go wrong? Why would I even join? Maybe it’s because I enjoy the topic of leadership styles, maybe I was bored. But nonetheless, it turned out to be quite an interesting 30 minutes. Servant Leaders are cowards Or so this particular online person claimed – let’s call…
Don’t use the same password twice. Don’t write down your passwords on sticky notes. Use passwords that are difficult to guess. Yes, yes, and yes. And also: please give me a means to make all this secure behaviour easy for me. The solution: a password manager. And nowadays most people have some sort of password manager, whether it be integrated in their operating system or browser, or a…
If you own a recent GoPro camera (Hero 7/8/9+) you can use it as a webcam on your computer without any additional hardware. You can find the instructions on the GoPro website. I’ve been using that for a while now, with the GoPro adhesive mount stuck to the back of one of my monitors. It’s a nice alternative (COVID has made webcams stupidly expensive) if you already own a GoPro.…
Over the past few years, Kubernetes has grown from something that ‘seemed very interesting, but also very complex’ to something that you can get as a service from pretty much everyone. Cloud vendors like Amazon, Google, Microsoft, Oracle and DigitalOcean are offering their own flavor of Kubernetes-as-a-Service. Big players in infrastructure like RedHat, Mirantis, Rancher, and Vmware…
This is the second post in this series. Make sure to check out Part 1 if you haven’t already Why –> What –> How Previously I discussed the different meanings of the word ‘platform’, and how it depends on your organization; the abstraction level and its importance, and how to leverage a DevRel Chapter to make sure you end up building the best platform possible and are…
Anyone who works on code and is part of a team is probably familiar with Pair Programming. Even if you don’t take one of the more organized approaches as described in this article by Birgitta Böckeler and Nina Siessegger, at some point you’ll sit down together with someone else behind a single screen and work on a code problem. Whether it’s a user story, or debugging an issue, or…
I’ve spent the better part of the past decade designing, building, and running platforms. Those platforms have differed in many ways, but what all of them had in common was that they were built so that software could be deployed and run. In recent years, more and more companies have begun to realize they need to ‘be good at shipping software’ and have subsequently increased their…
For well over a month now, many companies have been transitioning to a mandatory fully-remote organization. Some companies are doing great, while other companies are still struggling to make ‘Business Unusual’ become ‘Business As Usual’. For me personally, this new reality isn’t all that bad. The home office is doing its job, with separate desks for work and play.…
I vividly recall Steve Jobs sitting down on a leather arm chair, on stage, and introducing what was the very first iPad. Meant to fill a void between the iPhone and MacBook he insisted existed. The iPad was meant to be your second or even third Apple device, next to your Mac (for Real Work) and iPhone (for mobile use). If your computing needs are very, very limited, the iPad could be your only…
Over the past weeks, a large part of the world was affected by COVID-19, also known as ‘the Coronavirus’. In many of the affected countries containment measures have been taken, often requiring people to work from home. In some countries there is now a state of emergency and people are confined to their homes. In the Netherlands there’s no state of emergency (yet), but people are…
In a previous blog I explained how to have different Git identities (e.g. work and private) with different settings, and making that work automatically. I’ve used that setup ever since, and it works very well. Until you run into that edge case, where you need to have multiple Git accounts.. The problem I have private Github and Bitbucket accounts, and until recently whenever a client or…
Benny helps companies navigate cloud complexity and ship better software, faster. He wrestles pre-1.0 stuff from time to time. Spends time on tech issues, people issues, and leadership issues. The non-computer-part of his life involves a lot of cycling, some guitar playing, and other random things. Will ramble about all of the above.
Last week Terraform 0.12 finally came out, and it’s huge. It’s a pretty big release disguised as a point release, that may very well break your codebase here and there. Therefore I wanted to dive into how you can easily run multiple versions of Terraform on your system, so you can gradually change from 0.11.x to 0.12. Or perhaps you just want to test-drive new versions or test your…
About a year ago, I (finally) started learning Go. I started working on a small CLI tool for creating Terraform plans from templates. Nothing too fancy, just a small tool to automate manual and error-prone work. It meant getting to know some of the basics, like CLI arguments and flags, structs, interaction, handling files, rendering templates and working with YAML. Everyone on our team was new to…
A while back I shared some of my favorite Git tricks. Aside from useful short aliases, prettier logs, and fancy pull commands, I mentioned Hub. Hub is a tools that wraps Git, and adds a bunch of extra goodies for working with Github. In this blog I want to focus on how I work with Github, and especially Github issues, from the command line. Git and Github - a refresher If you don’t already…
Pretty much everything I do is code. I build cloud platforms; everything is code. I build tools; more code. This blog; again, code. All this code lives in Git. Either on Github, on Bitbucket, or on private-hosted company VCS servers. And Git is nice. But from time to time, Git is also extremely confusing, or requires terrifyingly long commands. So here are some of my favorite Git tricks that make…
How many people have you helped today? How many of them had you already planned to help? How many just walked in and asked for your help? Because you’re nice like that. You’re that person everyone knows, and everyone loves. You’re good at what you do. Good at a lot of things. And you like to help people. So you help loads of people, every day. Let’s get one thing out of the…
Today I came across a (new?) marketing campaign video from Strava. You can watch the video below this post. Now, I didn’t write this blog to tell you about Strava’s marketing, but because it made me stop and think for a little bit. I have just gone for a ride, and as a matter of fact I’m writing this still wearing my cycling bibs and enjoying my post-ride electrolytes. So if you…
As you may know, I store my shell configuration in git, so I can easily share the same shell config across multiple machines. One of the downsides to having a single shared set of configuration, however, is that you don’t want to store sensitive data in there. Another downside is that you are very likely to have small differences in configuration between different systems. You might have a…
Git is everywhere nowadays, and I use Git pretty much daily. I use it privately, for side projects or things like my dotfiles. I also use it at work, or at clients. That’s where things sometimes get a little complicated. The problem For private use, I use both Github and Bitbucket. Fortunately I use the same email address for both services. However, at work or clients I might encounter…
I’m lucky enough to own a top-of-the-line 15" MacBook Pro which has more than enough horsepower for whatever I need to do, and even my ‘old’ machine, a 2014 15" MacBook Pro, would still be perfectly good for whatever I need to do. Yet, in the past few weeks I’ve started to explore options for having a cloud-based workstation. Why do I need this? Maybe you don’t. And…
A bit over a decade ago, I went from Amateur Infrastructure Tinkerer to Professional Infrastructure Engineer. I turned my hobby into my job. Cool right? Some people think it’s a dream come true. Utopia even. Turning your hobby into your job must mean every day at work is a pleasure. Everything is awesome. You must be extraordinarily happy. Right? Well, it’s not bad. But I certainly…
I have been using Terraform in production since version 0.4.0, and most of that experience has been pretty awesome. Especially considering Terraform is still pre-1.0 software. However, Terraform does have some shortcomings here and there. This series of ‘Terraform Tricks’ blogs will be about working around some of the shortcomings of Terraform, as well as exploring some of the…
Old-school purists will tell you to just follow Rule #5 (Harden the f**k up), and that the all-time greats like Merckx and De Vlaeminck didn’t need ‘a computer on their stems’ to ride fast. Other people will tell you that buying ‘pro gear’ doesn’t make you a Pro cyclist. Then there will be the people who are merely interested in how many Watts you can push, and…
Recently, Docker announced a new and exciting product: Docker for Mac. Obviously, I immediately applied for the closed beta, and after weeks of waiting, I finally got access. In this blog I will share my experiences with the Docker for Mac Beta, and my view on Docker for Mac as a product. What is Docker for Mac? As the people at Docker describe it, Docker for Mac is a faster, easier and more…
I love cycling. There’s nothing like going out in nice weather on a really nice bike on really nice roads, and enjoy the sun, the slight breeze, and the zippy feel of effortless pedal-strokes making your bike glide over those perfect roads. Really, there’s nothing like it. And that’s exactly the problem. There’s nothing like that. While I do have a really nice bike (or…
Perhaps slightly inspired by this blog by Jessica Frazelle I started putting some of the apps that I like to run on my Mac inside a container. At first I only ‘containerized’ text-based apps, like Weechat, Mutt, fleetctl and Terraform, but more recently I decided to have a go at containerizing some GUI apps. “Why?!”, you might ask. Well, the only true answer is:…
I have been using Terraform in production since version 0.4.0, and most of that experience has been pretty awesome. Especially considering Terraform is still pre-1.0 software. However, Terraform does have some shortcomings here and there. This series of ‘Terraform Tricks’ blogs will be about working around some of the shortcomings of Terraform, as well as exploring some of the…
If you are a bit like me, you happen to run a few things in a terminal. Or more accurately: a lot of things, in a lot of terminals. On multiple hosts. All the time. In this case, you probably already resolved the obvious issues with running command line tools on remote hosts, where you want your tool/job to keep running when your connection dies, or where you don’t want to wait at the office…
So far, most of my blogposts have been about technology or my work as a consultant. But since my life isn’t all about the job, my blog doesn’t have to be, either. For instance, I love cycling, inline-speedskating, playing the guitar, and thanks to my inner boy-scout, I enjoy the subject of ‘EDC’, or Every Day Carry, whether it be knives, multitools, flashlights, backpacks,…
What is Otto? According to HashiCorp, Otto is the successor to Vagrant. A lot has changed since Vagrant was first introduced, and while Vagrant has seen massive improvements, it’s still essentially doing the very same thing it did when it was first released. With Otto, the entire workflow from local development to deployment has been reimagined. Does Otto really replace Vagrant? At the…
Over a decade ago, I traded my bag-of-hurt dualboot setup with Windows XP and Linux for something ‘better’. I got a nice 12" milk-white iBook G4 with Mac OSX 10.3. It offered me considerably lower performance than my old laptop, but that would be offset by the giant leap in productivity I expected to see from not having to deal with my previous annoyances. Annoyances like all kinds of…
Many development and ops teams rely on chat for communications. This isn’t in any way a new concept, since IRC has been with us since 1988. Nowadays, however, IRC is losing marketshare to somewhat more modern alternatives like HipChat and Slack. They offer native mobile and desktop apps, centralized logging (so no need for BNC software), drag and drop filesharing, etcetera.…
If you’re a frequent reader of my blog, or if you happen to know me personally, you know I work as a consultant on fully automated IT infrastructure. In this capacity I spend most of my time at various clients, located in all parts of the Netherlands. This means I’m usually spending well over 10 hours a week in my car, commuting. It’s part of the job. Perks of a…
(or at least, part of it…) In a previous blogpost I mentioned that I use Git to manage my ‘dotfiles’. In this blog I will try to give a little more insight in how it works, why it’s useful and what I learned from it. What are these ‘dotfiles’ anyway? If you are reading this blogpost I expect you know what dotfiles are. But to those who don’t know: when we…
I’d like you to meet vm123.shared.dc1.bc.int. Or, depending on who you ask, deploy.shared.dc1.bc.int, puppet.dc1.bc.int or F781139C-568B-459A-BADF-B971752291E6. All these identifiers point to the very same collection of virtual hardware running the very same software. All these identifiers, however, are here for a reason. The UUID is used within the virtualization platform to identify the…
I work as a consultant for a company called Xebia, and have worked as a consultant for most of my career so far. Working as a consultant means getting hired by a company that needs certain expertise in order to (hopefully) solve a business- or technical problem. On paper, this looks like a valid approach: your company has a technical problem, hires an expert, problem gets solved. Everybody wins.…
A couple of weeks ago, I wrote a little about switching editors and my plan to use Vim for all my editing tasks for (at least) a few weeks. Well, a few weeks have passed, and it’s time to report back. Am I still using Vim? Yes, I am. It took a little getting used to, and especially the first few days I even resorted to using SublimeText for a few chores because Vim was too frustrating at…
Have you ever tried writing using your ‘weak’ hand? Or typing on a keyboard with a totally different layout? If you haven’t, try it before reading further. Me and my editor If you are somewhat like me, or you just happen to be a developer, sysadmin or Linux user, you are probably a very frequent user of the command line and text editor. In fact, I probably spend more time with my…
In the previous parts of this series I have discussed various aspects of complex Puppet setups, how to make sense of the huge amounts of code, and how to set up the basics for your development environment. If you haven’t done so already, check out part 1 and part 2 first. This part will be all about Vagrant and using it run your own Puppet dev/test setup. What is Vagrant and why should I…
In the previous part of this series of blogs I showed how, and why, complex Puppet setups come into existence, and some general guidelines to keep yourself from getting lost. In this part I will give you a pratical example of how module classification works, show you how you can manage your upstream code, and show you how to set up the basics for a local development environment. Module…
A few days ago vulnerability CVE-2014-9390 was announced. In short, if you are using a non-case-sensitive filesystem (which is the default on Windows and OSX), an attacker can overwrite the .git/config tree, which may lead to arbitrary command execution. You can find out more in this blog from the folks at Github. TL;DR - how do I patch my Mac? Download the appropriate package from SourceForge and…
Usually, installing games on your work computer is frowned upon. In some cases, it’s reason for an unplanned (and unpleasant) performance review, or it may even get you fired. Your work computer is for work, and work only. Or is it..? My job is solving complex problems. In other words: I get paid to think. To ponder. To chew on an idea. The finished product or working solution is just a tiny…
The downside to ‘Puppetizing’ everything is that you usually end up with huge amounts of code. In this series of blogs I will explain how to not get lost in complex Puppet setups. (Looking for part 2? You can find it here ) How to get a complex Puppet setup Introduction About a year ago one of my clients, a software development company called Avisi, asked me to help them design and…