AWS Form Processing

Serverless form processing for (static) websites

Easy and cheap (and privacy aware?) Your team is building a static website for another super frugal client, Nofrills Coffee. You’ve already figured out how to host it in the easiest and cheapest way possible, but the client also needs to be able to receive feedback from users through a web form. You wish the front end developers could just submit the form to one of those “free” services like Formspree and Simple Form, but you’re too wary of security and privacy to hand things over like that. [Read More]

Ansible Ad Hoc

Not playing by the book

Smells like a hack One of the first things we learn at the Ansible Best Practices University is that roles are a godsend, playbooks are great and ad hoc commands are meh. And that’s absolutely true… Except when it isn’t. I take configuration as code as an achievement comparable to subsidized anti-Polio injections—once we accomplish such a feat as a society, we don’t let it be taken from us too easily. [Read More]

CaaC: ImageMagick

Dockerize ImageMagick

Don’t litter my path I’m not a germophobe, but I can’t stand a dirty $PATH. I like mine neat and clean, so that my tab completions are fast, sweet and within the realms of sanity. If you have no idea what I’m talking about, go to the previous installment of this series and read the full thing. ImageMagick is an image manipulation tool that can “create, edit, compose, or convert bitmap images” and is typically used from the command line. [Read More]

Jenkins Webhook with Parameters

Send parameters through a Git webhook to Jenkins

Background Someone asked me over the weekend how to trigger a build in Jenkins through a Git webhook and send parameters to the build at the same time. I don’t know why anyone would pass parameters like that (from SCM as opposed to a script), but since I’ve already spent the time figuring out how to do it, here it is. In this article, I’ll go over the steps taken by the person who asked for help and then talk about where their assumptions went wrong and how to actually achieve what they wanted. [Read More]
api  ci-cd  git  gogs  jenkins 

DNS in the House with DNSMasq

Get rid of that 192.168.0.x

Overview “I want the devices in my house to communicate with each other, but remembering their IP addresses is almost as bad as going through a gum surgery.” Yeah, man, I hear you. You’d love to refer to that as tv.home, as games.home, and of course as sherlock.home, wouldn’t you? And, while it’d be awesome if you could achieve that directly through your ISP’s router, when you open its web GUI, there’s no option for that… WTF? [Read More]
diy  dns  dnsmasq  hardware  home  rpi  sbc  soho 

Backing up EBS Volumes

Create and delete EBS snapshots with Lambda and CloudWatch

EBS volumes If you’ve been on the clouds lately, especially AWS, you certainly know that attaching EBS (Elastic Block Store) volumes to EC2 instances is part of almost any AWS set up. In fact, EBS volumes are so foundational that some AWS services, such as RDS (Relational Database Service), rely on them for storage.1 Creating and attaching those volumes is just half of the story, though; to guarantee a peaceful, undisturbed night of sleep, you should also back them up periodically. [Read More]

Nginx with PCRE

How to enable Perl compatible regular expressions in Nginx

A CGI use case Imagine you’re working on a legacy website that’s being converted to purely static HTML pages. The project was originally built using CGI scripts (oh, the good old days) and now your boss wants all the old URLs ending in .cgi to redirect to their equivalent .html counterparts. Because your team has decided to use Nginx to serve the new website, you come up with the following nginx. [Read More]
docker  nginx  regex  web 

The Real Reason Cache Invalidation is so Hard

Did you cache that?

I could use some clarity here “There are only two hard things in Computer Science: cache invalidation and naming things.” Phil Karlton Yes, cache invalidation is hard, but do you know what’s harder? Figuring out what people mean when they say the word cache. And that, accidentally or not, can itself go under the naming things part of Phil Karlton’s famous quote. IT people have this tendency of slapping words together and expecting others to unscramble whatever they had in their minds when pronouncing them. [Read More]

CaaC: Container as a Condom

Protect your operating system from unintended consequences

All those dirty prerequisites We all know containers are great and can minimize a bunch of issues that used to bedevil us just a few years ago. One thing containers are great at is sparing us the need of installing software directly on our operating systems. Want to benchmark your code against all of the n+ types of Ruby implementations? Need to install (yet) another NodeJS tool that the self-proclaimed “cool” kids at your company are switching to? [Read More]

Paranoid's Guide to Bookmarking

Bookmark stuff and keep it private with Buku

Paranoid’s guide Welcome to Paranoid’s Guide, a series of articles where I’ll show you how to live your life in this hyper tech-centric world without letting the nosy types out there peek into your sacred privacy. Maybe you have a good reason not to let powerful, abusive corporations get ahold of you personal information and keep you on an emotional leash that makes you feel like a slave of crushing, invisible hands. [Read More]