Office Hours
Posts
Categories
About
Office Hours
Cancel
Posts
Categories
About
All Categories
Go
Modern (Go) application design
LSC - Large scale code changes
Modify after write
Real world optimisation
How we use logging
More >>
DevOps
Service-Oriented Architecture with Docker and Caddy
Extending pflag with environment variables
Docker: Building images with security in mind
Make: Dynamic Makefile targets
A love song for Bash
More >>
Docker
Service-Oriented Architecture with Docker and Caddy
Docker: Building images with security in mind
A love song for Bash
Things I learned about DevOps in Q1
Store config in the environment
More >>
Engineering
Writing Great Go Code
Elegant code and Go
When to kill your startup?
CSS Resets are broken
One programmer is not like the other
More >>
Database
Improving our database handling
Go: implementing a microservice
Go: Dependency injection with Wire
Go: Generating database schema documentation
Go: Database first struct generation
More >>
Performance
Real world optimisation
Optimizing requests with a queue
Go: Stress testing our service
Optimization strategy
In process performance statistics with Redis
More >>
Testing
Docker: Building images with security in mind
Go: Testing database migrations with Drone CI
Error handling and where Go2 gets it wrong
Writing Great Go Code
Listing interfaces with Go AST for gomock/moq
More >>
APIs
Go: Introduction to Protobuf: gRPC
Go: Introduction to Protobuf: Services
Go: Introduction to Protobuf: Messages
Protecting API access with JWT
Handling HTTP requests with go-chi
More >>
Observability
Real world optimisation
Instrumenting the Database client with Elastic APM
Go: Instrumenting the HTTP service with Elastic APM
Basic monitoring of Go apps with the runtime package
So far there is a distinct lack of snakes
More >>
Code Generation
Go: Dependency injection with Wire
Go: Database first struct generation
Bash: Embedding files into Go
Bash: Poor mans code generation
Embedding data in Go executables
BitRot
Connecting to a Cisco VPN with OpenConnect on a Chromebook without Crouton
Flickr API
Mysteries of system administration ...
The Billion Dollar Session Cookie
Microservices
Microservice background jobs
Issuing requests against our microservice
Go: implementing a microservice
The 12 Factors of Go
Networking
Service-Oriented Architecture with Docker and Caddy
Bypassing docker network isolation (hack)
Debugging Docker network connectivity
Networking basics with Docker
PHP
Testing PHP code using Docker
Premature optimization
PHP Comparisons
Maintaining broken code
Tools
LSC - Large scale code changes
Modify after write
Generating a book cover with docker
Using Docker and PhantomJS to generate big Twitter headings
GRPC
Go: Introduction to Protobuf: gRPC
Go: Introduction to Protobuf: Services
Go: Introduction to Protobuf: Messages
LUA
Calling Go functions from LUA
Improving NGINX LUA cache purges
Purging cached items from NGINX with LUA
SQL
Outperforming MySQL by hand
MySQL optimization and diagnostics tactics
MySQL & replication "oh, right" moments
NoSQL
In process performance statistics with Redis
I like Google's error messages. That's about it.
Best Practices
Modern (Go) application design
Redis
Store config in the environment