Richard Clayton

Web Proxy Using Nginx and Docker

Need SSL or Basic Auth? Standup a proxy in less than 5 minutes using Nginx and Docker.

I needed to secure (basic auth) a mongo-express instance last night and this little trick with Docker and Nginx blew me away (with how simple it was).

This tutorial assumes you have Docker installed (on Amazon Linux it's as simple as sudo yum install -y docker).

1. Generate a password file:

You will need to have the htpasswd command . . .

Read More

October 06, 2015

Do you really need a UUID/GUID?

The architectural consequences of using UUID/GUID's may outweigh their benefits.

For the purpose of this post, I will use UUID (Universally Unique Identifier) to mean both UUID and GUID (Globally Unique Identifier, Microsoft's implementation of UUID).

I've been thinking a lot about UUID's lately. The system I've inherited at work is plagued by their usage. To many developers, the UUID seems like a . . .

Read More

January 11, 2015

"Third-Time Principle" of Defining Abstractions

In general, only on the third time of encountering a common behavior should you refactor components to share a common abstraction of that behavior.

Clarification: The abstraction could be an abstract class or interface depending on the use case and language.

I've generally used this principle when I'm programming, but have never . . .

Read More

October 16, 2014

MEAN's great, but then you grow up.

Develop a prototype, then reflect on your choice.

The MEAN stack (MongoDB, Express.js, Angular.js, Node.js) is now being heralded as the new LAMP (Linux, Apache, MySQL, PHP), the preferred technology stack for startups.

MEAN is certainly a great technology choice for organizations (particularly startups) seeking to rapidly prototype a capability. However, like all technology choices, the . . .

Read More

August 22, 2014

Software Estimation is a Losing Game

Should we even bother?

This is an argument, and like all arguments, it's supports a specific position. I don't try to defend software estimation; I leave it to my colleagues to present that case. I write about this issue because I believe the software community needs to have an internal debate about whether software estimation in its current form is . . .

Read More

August 19, 2014

Software Engineering is not a Job.

It's a Profession.

Warning - this is a rant about those 10-20% of software professionals that give the rest of our community a bad name.

One of my biggest annoyances in technical management is the 9-to-5 Software Engineer. A 9-to-5 Software Engineer (or developer) is someone who views their position simply as a way to pay bills. For them, there's little to . . .

Read More

July 28, 2014

Revel, GORP, and MySQL

Building a classic 3-tier web application controller in Golang.

This is a compilation of things I've had to piece together from blog posts, example projects, and experimentation. I hope it saves you a bunch of time.


Build a simple Revel controller that performs CRUD operations against a MySQL database.


  • Use RESTful Paths.
  • Use JSON request bodies and responses.
  • Use Revel Validation.

. . .

Read More

July 18, 2014