Ansible Is Awesome

Ansible is just the tool I was looking for, for my current level of ops mastery.

vados

14 minute read

tl;dr - There are lots of ways to get smarter about how you deploy. Ansible is one choice, it’s not the fanciest, but it’s amazing. NOTE This is not an introduction to ansible, please check out their official documentation if you want that. For most of my projects, I use a GNU Make Makefile based build process. I do that because it’s cross-platform, pretty well suppported/known (for people who build software), and easy to standardize on no matter what project I’m working on.

Stop Using React

BSD + PATENTS.md != F/OSS. Stop using React.

vados

6 minute read

tl;dr The BSD + PATENTS.md pattern is not F/OSS. Facebook is trying to goad you into entering a mutually assured destruction patent stalemate, but you don’t have nukes. They do. Stop using React, there are other better alternatives. Before you get into my thoughts, maybe you’ll want to look at some other debate from other strangers on the internet: Discussion of Facebook’s explanation on HN Discussion on Apache Foundation banning use of React on Reddit

Revisiting E2E Testing With Tape (on a new project)

Expanding my `tape` E2E testing methodology with some new tooling

vados

11 minute read

tl;dr I extend my UI component unit/integration testing methodology to do E2E tests. Look at the code, I basically add lots of nice context-setter-upper functions (that’s the official term) that makes it work and make it relatively clean. As hinted-to at the end (PS) of my previous post, recently after attempting (and succeeding, mostly) to set up full E2E testing in the backend of a haskell app I’m writing, I decided to switch to writing the tests in JS land (instead of Haskell land) due to some lack of library support for PhantomJS/Selenium.

End To End Testing With Hspec (Almost)

Setting up E2E testing with HSpec and PhantomJS.

vados

10 minute read

tl;dr While the setup works, the most mature haskell library for dealing with webdrivers that I could find wasn’t able to keep up with the changes in Selenium Webdriver :(. Skim through the post to check out the relevant code snippets and tech that made it all (almost) work. If you’re not familiar with Haskell, check it out. This isn’t an introductory type post so it might not be for you, but the language is amazing.

Adding A Merge Patch Content Type To Servant

How to add a content type for HTTP spec compliant merge-patching in Servant

vados

6 minute read

*tl;dr See the code at the end Very often when developing a web application I run into the age-old problem of how to do partial updates. Doing the “U” (Update) in CRUD is actually a little more complicated than just accepting PUTs at some endpoint if you dont’ want to replace the object as a whole. I’ve often worked around this while maintaining somewhere-near spec complicance by just using the catch-all that is POST, and taking whatever object represented the update and doing whatever needed to be done.

Installing Python On CoreOS with Ansible (to enable Ansible)

How to set up Python on CoreOS from an Ansible playbook, for use with Ansible

vados

8 minute read

tl;dr - Undestand & use the short Ansible playbook at the bottom of this post I have a bunch of posts that are backlogged (raw versions written but not pulled together & edited in anyway), but I’m going to skip the queue to get this post I think is highly useful out. If you’re out there messing with Kubernetes (‘k8s’), Ansible, and CoreOS, and trying to make them all work together you might find this post useful.

Quick And Dirty Forward-Only DB Migrations

Quick and dirty forward-only migrations, in just a few lines of make & bash

vados

5 minute read

While working on the The Start’s jobs backend, I found myself at the age-old problem of how to migrate my database (which is surprisingly SQLite). I looked at tools like flyway, migrate, but they all kind of seemed like more than I needed. If anything I was leaning towards migrate, but flyway is a very well-known and often used solution that it was also pretty appealing. In the end, I decided to just write a quick makefile target (basically a bash script) for a few reasons:

An easy fix for the diversity "problem" in tech: A 4-step plan starting with fully anonymized interviews

Is the fix to the diversity "problem" in tech easy? Probably not, but let's give it a shot..

vados

7 minute read

tldr; Re-training people to remove their biases is hard/impossible. Just don’t give people a chance to use their biases and you can sidestep the problem completely. NOTE I use quotes around the word “problem” because the primary problem with diversity in tech is almost certainly different depending on who you ask. This is going to be a relatively short non-technical post, but hopefully a meaningful one, as I’ve been throwing these ideas around in my head for a while but finally want to write them on paper, and get some feedback.

Research Idea: Maintaining A Write Ahead Log For Application Runtime State

Exploring the stepladder of features that lead to well-engineered backends

vados

13 minute read

tl;dr:What if there was a write-ahead-logging layer above/outside the database? Then you could get CQRS+ES capabilities and assurnaces from your database without rewriting, and even abstract out the database as a whole, going as far as to create your own DSL for application-level changes, ADD_USER instead of INSERT … INTO USERS …* I spend a bunch of time thinking about how I can waste less time writing applications. Over time I’ve worked on various protoypes, with varying levels of completeness, but as I move across languages, frameworks, databases, and stacks, I always find myself solving the same problems, and having the same worries.

Case Study: Building A URL Bouncer

Building a URL bouncer for a servant-powered web application

vados

19 minute read

tl;dr - Building a simple URL bouncer with Servant isn’t that hard, and the usual warm fuzzies you get from well-typed functions, interfaces, and code still apply If you’re not familiar with Haskell or Servant, the former is a programming language that focuses on pure functional concepts and the latter is one of the most interesting/popular frameworks for it that specializes in exposing your API as a type itself. A brief taste of both of these things is below: