Getting Started With Traefik and Docker

There are many ways to expose your containers to the outside world, but I’ve yet to come across something as cool as traefik! Whom am I kidding, there’s a lot of options out there that accomplish similar goals, but I found traefik to be the best at integrating them all into one package, and it’s yet to fail me. Throw any reasonable task at it, and traefik adapts - it supports a variety of integrations, what it calls Providers (see docs for all integrations) right out of the box. The reason I love traefik is that it’s a perfect fit as an ambassador for your other containers. ...

June 26, 2019 · 5 min · 1000 words · Steven Polley

Fallacies of Distributed Systems

False assumptions in distributed computing happen all the time, and they often have high costs. Peter Deutsch asserts that there are at least 7 false assumptions system architects and software developers are likely to make, and James Gosling later added an eighth fallacy. The network is reliable Latency is zero Bandwidth is infinite The network is secure Topology doesn’t change There is one administrator Transport cost is zero The network is homogeneous We’ll look through each one, why it’s relevant when designing and operating any distributed application, and explain what you should genuinely assume (the worst). ...

June 23, 2019 · 15 min · 3162 words · Steven Polley

Go-easyDNS

I needed to create and destroy records for Let’s Encrypt DNS validation, so I created some bindings for easyDNS in Go to allow CRUD operations on records. The bindings aren’t near complete, but it’s enough to manage DNS records. https://code.stevenpolley.net/steven/go-easydns Check it out, and open an issue if there are additional operations you’d like support for.

June 23, 2019 · 1 min · 56 words · Steven Polley

Mandelmap

Many years ago, I fell in love with the idea of computer-generated art. While 3D rendering is fun, geometric art is what I love the most. One of my first programming projects was a computer generated Spirograph, which was a lot of fun to create. Spirograph It’s been a few years since making anything like this, but in the past year, I taught myself Go (which is a great language, Rust BTFO). Go is excellent for parallel processing, since it has concurrency primitives built in, and it has a lot of web technologies built right in, such as a fully functioning web server. Go has gained a lot of attention by folks that are writing distributed and scalable applications. Successful infrastructure projects such as Docker, Kubernetes, Prometheus, and Terraform are all written in Go, and if it’s good enough for these guys, it’s probably good enough for anything I’ll be making in the next few years. ...

June 22, 2019 · 4 min · 695 words · Steven Polley

First

This will go down in history. Not really - I’m just testing my new content management system. Everything on the site with exception of comments will be staticly built files using templating. All content is stored as markdown, and templates as HTML. Whenever the site is modified, the modifications are pushed to version control, the site is then built, along with a simple web server I made in Go which servces the produced static HTML files. The build will occur each time files are pushed to version control using a simple CICD system I made in Go which runs various tests, compiles the site and web server, then packages them in a docker container and deploys to production. ...

June 21, 2019 · 2 min · 233 words · Steven Polley