I like to think I keep on top of Hacker News, and that I’m in the know that the world is on fire before most of my nontechnical peers. So imagine my surprise when my mother sends me this text message at 8:27am: I immediately checked my usual sources - Boston DevOps, the AWS health portal, the Azure health portal, the GCP health portal - none of the major suspects were reporting…
I have a number of tools in my .bashrc file that make my day-to-day activities fast. The ability to run commands like aws without needing to remember if I’ve SSOed or connected to the VPN, or to quickly change Kubernetes contexts and namespaces on a per-shell basis, are invaluable to me. Some have pointed out that switching to zsh, with addons like powerlevel10k, would probably benefit me…
In late August of 2022, after two years of remaining relatively healthy, COVID-19 finally caught up with me. Cut off from friendly gathering, working out, and even food that wasn’t protein bars, a completely normal thought occurred to me: “How about I install AIX on my old 486?” My 486 is, as I assume most extant 486es are today, a franken-486: a hodgepodge of pieces collected…
I’ve been helping organize DevOpsDays Boston since 2017. In that time, our organizing community has changed considerably, yet been resilient to the many faces of change - from organizer turnover, to vendor relationships changing, to a worldwide pandemic that stopped many similar events in their tracks. Change, however, is not necessarily something that only goes in the forward direction. In…
Several times now, I’ve been presented with provider bugs in Terraform - specifically the AWS provider - that are fixed in PRs that have sat unmerged for months, if not years. While Hashicorp has now codified that community pull requests aren’t being reviewed, I’ve had a dirty trick up my sleeve for about two years now: in some projects, I don’t use the upstream provider…
I have a recurring issue where I’ll walk by my shelf of Raspberry Pi’s and knock the cord out of something. Many times, I won’t know about it for days. So I made them blink when I do this. My original solution deployed TICK Stack, with each individual Pi feeding stats into InfluxDB, and Kapacitor configured to alert on sudden loss of metrics from a host. This worked, until I…
Some time ago, I bought a standalone ATSC tuner so that I could watch TV at my desk, without having to depend on the setup or state of any other “things” on my desk. Watching the news shouldn’t depend on the desk being in any particular configuration - say, if I’ve still got my work computer hooked up at 10pm, or am in the process of an OS reinstall on my laptop.
Like many, I found myself ending 2020 without having taken any time off. After all, travel itself wasn’t exactly advisable, and I’d fruitlessly hoped that by delaying as long as possible, I might better my chances of getting a vacation. Little did I know, delaying until the end of the year actually put me directly in second surge territory – Christmas and New Year’s were straight…
A friend had his bachelor party in the early days of the COVID-19 pandemic. Since destinations all became off-limits, we stayed the weekend in a beautiful farmhouse in St. Johnsbury, Vermont. Dsc09523 Dsc09526 Dsc09530 Dsc09536 Dsc09540 Dsc09554 Dsc09567 Dsc09572 Dsc09602
I hiked Mount Major in Alton, NH in 2019. Though the summit was quite crowded, I managed to get a few shots of Lake Winnipesaukee and the neighboring mountains. Dsc08433 Dsc08434 Dsc08441 Dsc08444 Dsc08462
I met up with some friends in Chicago back in the summer of 2016. By happy coincidence and no planning whatsoever on our part, the Blue Angels were flying over while we were at the top of the Willis (formerly Sears) Tower - they feature prominently here. Pict4057 Pict4059 Pict4099 Pict4103 Pict4105 Pict4115 Pict4117 Pict4137 Pict4223 Pict4249 Pict4255 Pict4267 Pict4268 Pict4293 Pict4301 Pict4304…
The Java classpath allows dependencies to be brought in from various locations at runtime. However, if an environment already defines a classpath, it can override classpath resources specified downstream, as only one version of a particular named class can be loaded by the Java classloader at the same time. This can cause difficulties working in an environment with provided libraries, such as…
Note: this blog post is adapted from a talk give at a meeting of the Boston Jenkins Area Meetup on Thursday, April 21st, 2016. Jenkins and IaC A tool like Jenkins often is the cornerstone of a CI/CD pipeline: it brings together disparate tools like Git, Maven, Packer, and Terraform, providing the “glue” to automate processes and build deployment and testing pipelines. Eventually, the…
Note: this blog post is adapted from a lightning talk given at a meeting of Boston Devops on Thursday, March 24th, 2016, the slides from which are available. Why contracts and constraints? Put simply, it’s possible to deliver software in a rapid, predictable manner by establishing contracts with developers, and constraining what projects should look like to be considered supportable. This…
Let’s Encrypt, the free and automated certificate registrar, by default provides certificates in PEM format. This guide details how to set up an output certificate from the Let’s Encrypt client in the Tomcat application server. It assumes that certificates have already been obtained using the client, independent of what method was used (e.g. --webonlyg or –standalone`) to obtain…
Some types of Amazon EC2 instances come with multiple instance store volumes - for instance, the c3.xlarge instance type comes with two 40GB SSD volumes. This guide shows how to utilize them as one large 80GB volume via LVM, should this be more desirable for any particular application. Note that instance store is ephemeral. When an instance is stopped or rebooted, the contents of both volumes will…
Introduction Elastic Load Balancers (ELBs) make use of multiple concurrent connections to backend applications to improve throughput, and will also attempt to make use of HTTP keepalives to mitigate reconnection overhead. These performance gains introduce multiple points where timeouts must be configured. A misconfigured application / ELB pair can cause an HTTP 504 status code to be returned from…
Introduction Users of Amazon Web Services can elect to terminate SSL using an Elastic Load Balancer (ELB), rather than at the application level. This centeralizes management of certificates, and removes the burden of implementing SSL across multiple technologies in a stack. In general, it is a good idea to force an HTTPS upgrade. This greatly enhances the integrity and privacy of users’ data…
I found myself in Erie, PA back in 2015. The weather was quite hazy and humid, but I’d just recently purchased my first telephoto lens, and decided to try it out at the Erie Zoo. In addition to colorful birds, they had the firefoxes positioned right next to the spidermonkies, and I deeply trust that someone knew exactly what they were doing. Pict2638 Pict2645 Pict2649 Pict2678 Pict2682…
An SCM tool such as Git, Mercurial, Subversion, or even the venerable CVS makes it easy to keep a working history of an application. An added bonus of using such a tool is the ability to see what changed in a particular commit (e.g. git diff), who changed a particular block of code and when (e.g. git blame), and so on. This, of course, makes the assumption that developers are letting the SCM do…
Introduction A well-behaved application should output reasonably verbose logs. Disk is cheap, and hierarchical datastores make it possible to store large volumes of log data at near-negligible cost. Factor in the benefit of the insight acquired (in which developers can leave a metaphorical trail of breadcrumbs for issues down the road), and the cost-benefit of even the first issue will begin to…
Introduction A typical Git branching model will somehow link the contents of the ‘master’ branch with released-to-manufacturing code. For a project deploying builds to a binary repository such as Archiva, Artifactory, or similar, the branch-to-version map for a project using feature branches, Git Flow, or something else entirely might look similar to the following: Branch Name Software…
I took a weekend vacation to Stowe, Vermont in 2014. I’d been there once before in 2006 and was looking to go back. Somehow I managed to do so on the coldest day of the year - a balmy -20 degrees Fahrenheit. Pict1386 Pict1398 Pict1410 Pict1414 Pict1419 Pict1459
I'm a Boston-based DevOps engineer with a passion for automation, teaching, learning, presentation, and community outreach. I'm one of the organizers of DevOpsDays Boston and am also involved with the monthly Boston DevOps meetup. I've presented at a variety of local meetups, like Boston Python, Boston Kubernetes Meetup, Boston Jenkins Area Meetup and the Inclusive Tech Hub, as well as some…
The best way to reach me is by e-mail. To prevent spam, use the next lowest letter in each of the letters in the following name (e.g. e becomes d): epo@hardwarehacks.org. I’m also active on the Boston DevOps Slack group and, can be reached on Signal (reach out by one of the above means first). You can also download my PGP public key to send me encrypted mail, and verify that messages have come…