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
Auto-scaling a Docker Swarm
Things I learned about DevOps in Q1
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
Benchmarking Go programs, part 2
Benchmarking Go programs
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 >>
Testing
Docker: Building images with security in mind
Go: Testing database migrations with Drone CI
Next level Go testing
Error handling and where Go2 gets it wrong
Writing Great Go Code
More >>
PHP
Testing PHP code using Docker
Premature optimization
PHP Comparisons
API development methodology
On PSR-0 standards, namespaces and code (re-)use
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
Tools
LSC - Large scale code changes
Modify after write
Creating a new shortcode with Hugo
Generating a book cover with docker
Using Docker and PhantomJS to generate big Twitter headings
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
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