- Do I raise or return errors in Python?
Raise, return, and how to never fail silently in Python.
- Add search to Hugo static sites with Lunr
Make your static site searchable with a client-side search index.
- How to get hired as a software developer
What to know before applying for a software developer job.
- How to become a software developer
The article I wish I had read when I started coding.
- Responsive pages and color themes with minimal CSS
Building a responsive website with color themes? Start at the root.
- Build your own serverless subscriber list with Go and AWS
How to build your own newsletter list with DynamoDB and SES email sign up confirmations.
- Increase developer confidence with a great Django test suite
How to write tests for your Django applications that boost your team, and are actually useful.
- Django project best practices to keep your developers happy
Using Makefiles, pre-commit, and GitHub Actions to help create a happy development team.
- Manipulating data with Django migrations
How to update Django models and manipulate existing data using migrations.
- How GitHub Codespaces increases productivity and lowers barriers
A look at how GitHub Codespaces can increase productivity and help new teammates and contributors start developing fast.
- How to create a self-documenting Makefile
Accelerate your workflow and DevOps with command-line aliases you can check in
- Writing efficient Django
How to use Django's views, models, and queries to build a better application.
- Look mom, I'm a GitHub Action Hero
The GitHub blog interviews me for their GitHub Action Hero series.
- Technical ergonomics for the efficient developer
If you knew these tools existed, you'd probably be using them by now.
- If you want to build a treehouse, start at the bottom
How threat modeling and pushing left help create a stable foundation for secure software.
- Hugo vs Jekyll: an epic battle of static site generator themes
A comparison of nuances of creating themes for the top two static site generators.
- Breaking bottlenecks 🍾
A talk on the benefits of non-blocking functions for programs, developers, and organizations.
- The past ten years, or, how to get better at anything
Thoughts on learning software development, technical blogging, and what the past ten years have taught me.
- Secure web forms for the front-end developer
How to design secure web forms: validate, sanitize, and control.
- Secure application architecture basics: separation, configuration, and access
A starting point for building secure application architecture, for busy developers.
- Migrating to the cloud but without screwing it up, or how to move house
A practical guide to moving to cloud services with minimal downtime, using AWS examples.
- Git commit practices your future self will thank you for
Learn how to easily create a clean and readable Git commit history with git squash, message templates, git stash, and tags.
- An automatic interactive pre-commit checklist, in the style of infomercials
How to set up an interactive checklist using a Git pre-commit hook script.
- How to set up a short feedback loop as a solo coder
Strategies for continuous improvement when you're a freelance developer.
- How to code a satellite algorithm and cook paella from scratch
A guide to expertly tackling seemingly complicated problems that you'd rather never tackle in the first place.
- Understanding Array.prototype.reduce() and recursion using apple pie
- Iterating over objects and arrays: frequent errors
A quick reference to why your code isn't working, or some errors I frequently make with iteration when the coffee wears off.
- Top free resources for developing coding superpowers
The go-to resources from my bookmarks folder for anyone who wants to learn to code.
- Iteration in Python: for, list, and map
The basics of writing iterations in Python using for loops, list comprehensions, and map.