Article
ARTICLE
3 Big Takeaways from BigDataLDN

November 14, 2023
ARTICLE
Strange Loop: Where Picasso Meets Python

November 02, 2023
ARTICLE
Internship Introduces Programming to High School Students
September 29, 2023
ARTICLE
A Recap of dev up 2023

September 26, 2023
ARTICLE
QLearning: Teaching AI to play Snake

August 04, 2023
ARTICLE
Observability In a Crime Scene

June 09, 2023
ARTICLE
What Does An SRE Do?

April 12, 2023
ARTICLE
Making the Most of AWS and Kubernetes Certifications

February 16, 2023
ARTICLE
What Every Developer Should Know About GDPR

February 08, 2023
ARTICLE
Three Tips To Help Software Teammates Ramp Up

January 26, 2023
ARTICLE
What to Know When Becoming a DevOps Engineer

January 19, 2023
ARTICLE
Unlocking Potential: Our Goals For 2023

January 09, 2023
ARTICLE
What Sparked Our Joy In 2022

January 05, 2023
ARTICLE
Minting a Revolutionary Entertainmint Platform

December 02, 2022
ARTICLE
Add Approval Testing to Your Toolbox

November 29, 2022
ARTICLE
Leading 8th Light on the Next Part of Our Journey

November 21, 2022
ARTICLE
Celebrating National Apprenticeship Week

November 18, 2022
ARTICLE
The Next Step for 8th Light

October 27, 2022
ARTICLE
Unboxing the New 8th Light Brand

October 27, 2022
ARTICLE
The Case for Rethinking Everything

September 30, 2022
ARTICLE
Why Everyone Is Talking About Product-Led Growth

September 29, 2022
ARTICLE
Make Developing Easier by Building a Beautiful Makefile

September 20, 2022
ARTICLE
Connect with 8th Light’s co-CEO Jenny Farver at SaaStr 2022

September 01, 2022
ARTICLE
5 Books to Add to Your Summer Reading List
August 11, 2022
ARTICLE
5 Modes of Critique to Improve Design Reviews

August 09, 2022
ARTICLE
How To Set Up GitHub Actions

August 02, 2022
ARTICLE
How to Find the Value in Legacy Code

July 22, 2022
ARTICLE
Why Everyone Should Learn Ethereum

June 02, 2022
ARTICLE
Of Ducks and Go Interface Misuse

May 10, 2022
ARTICLE
Distributing Terraform Resources

February 17, 2022
ARTICLE
How to Solve Wordle (Without Spoiling the Fun)

January 19, 2022
ARTICLE
Looking Forward to 2022

January 11, 2022
ARTICLE
Responding to the Log4Shell Vulnerability

December 15, 2021
ARTICLE
Reflections On Living In Data, by Jer Thorp
September 28, 2021
ARTICLE
Documenting User Flows in FigJam

September 23, 2021
ARTICLE
Our History of Apprenticeship

September 01, 2021
ARTICLE
What Matters When Designing For Safety?

August 24, 2021
ARTICLE
Life After Moment.js

June 16, 2021
ARTICLE
6 Tips For A Successful Job Interview

May 25, 2021
ARTICLE
Minimally Privileged Terraform

May 11, 2021
ARTICLE
Static Site Deploy Previews on AWS

May 04, 2021
ARTICLE
Continuous compliance on AWS

April 27, 2021
ARTICLE
In Slack, no one can hear your scream!

April 20, 2021
ARTICLE
Learning to Learn With Metacognition

April 06, 2021
ARTICLE
SQL, JSON, and Domain Objects

March 16, 2021
ARTICLE
Dependency Injection in React

February 18, 2021
ARTICLE
Simple Ways to Make an Impact

December 15, 2020
ARTICLE
Jenny Farver joins 8th Light as co-CEO

December 08, 2020
ARTICLE
Dare to be Good Enough—You'll be Happier for it

October 06, 2020
ARTICLE
Your Values are the Rules You Break

September 15, 2020
ARTICLE
Improving Agile Process at Scale

September 01, 2020
ARTICLE
A maintainable, scalable front-end

July 28, 2020
ARTICLE
How E. Coli Taught Me To Work Smarter

July 07, 2020
ARTICLE
On Anxiety, Uncertainty, and Flow

June 30, 2020
ARTICLE
From Web Dev to Android

April 07, 2020
ARTICLE
The Iowa Caucus App and the Challenge of 'Going Live'

February 25, 2020
ARTICLE
Introducing 8th Light Austin

February 19, 2020
ARTICLE
Introducing Our New Career Grid

January 21, 2020
ARTICLE
Axes of Quality

January 14, 2020
ARTICLE
Developments in Mobile 2FA and Security Keys

December 17, 2019
ARTICLE
How to Write Flexible and Clear Unit Tests

December 10, 2019
ARTICLE
Tickets for Specialised Teams

December 03, 2019
ARTICLE
Back to Basics: Abstraction

November 26, 2019
ARTICLE
One Sentence a Day

November 12, 2019
ARTICLE
Polyglot Influences in Python

November 05, 2019
ARTICLE
Functional lessons learnt

October 29, 2019
ARTICLE
Tips for Technical Writing

October 22, 2019
ARTICLE
Escape Hatches: Principles vs. Guarantees

October 15, 2019
ARTICLE
"Works on my machine" doesn't work

October 01, 2019
ARTICLE
To Serve or Not to Serve: Amazon Aurora Serverless

September 24, 2019
ARTICLE
What is Software Architecture?

September 17, 2019
ARTICLE
Handling Blocking Threads in Java

August 01, 2019
ARTICLE
8th Light merges with Madriska

July 08, 2019
ARTICLE
We're All Humans

July 02, 2019
ARTICLE
Effective Slack alerts

June 25, 2019
ARTICLE
Unit Testing Code Boundaries

June 04, 2019
ARTICLE
Remote Team Workflows

May 28, 2019
ARTICLE
AWS Security Essentials

May 14, 2019
ARTICLE
Some Common Gotchas in Python

May 07, 2019
ARTICLE
X Marks the Spot (Part 3): A Strong Fit

April 30, 2019
ARTICLE
X Marks the Spot (Part 2): ReasonReact

April 09, 2019
ARTICLE
From 0 to 60 in Brand Design

April 02, 2019
ARTICLE
X Marks the Spot (Part 1): ReasonML

March 19, 2019
ARTICLE
Fundamentals of Design: Colour

March 12, 2019
ARTICLE
Types of Types in Elm

February 26, 2019
ARTICLE
Essential & Relevant: A Unit Test Balancing Act

February 19, 2019
ARTICLE
I'm Only Going To Say This Once - Don't Repeat Yourself!

February 05, 2019
ARTICLE
Functional Exceptions In Java

January 22, 2019
ARTICLE
So, You Want to Be an Agile Functional Manager?

January 03, 2019
ARTICLE
Tech to Watch in 2019

December 27, 2018
ARTICLE
Do You Need a Degree?

December 18, 2018
ARTICLE
The True Cost of Rewrites

November 27, 2018
ARTICLE
4 Hesitations When Asking for Help and How to Overcome Them

November 06, 2018
ARTICLE
Jack of all trades, Master of One

October 30, 2018
ARTICLE
Sharing Secrets with GPG

October 23, 2018
ARTICLE
What’s in a Name?: Domains and Domain Name Servers

October 16, 2018
ARTICLE
An Introduction to Database Indexing

October 09, 2018
ARTICLE
What is VS Live (VS Code) and Why Should You Care?

September 25, 2018
ARTICLE
Microservices Aren’t Magic: Handling Timeouts

September 18, 2018
ARTICLE
Dependency Inversion in React with Render Props

August 30, 2018
ARTICLE
Exploring Error Handling Patterns in Go

August 13, 2018
ARTICLE
The Hypermedia Maturity Model

May 30, 2018
ARTICLE
Diagnosing Problems Quickly

May 21, 2018
ARTICLE
Duration vs. Concurrency in AWS Lambda

April 09, 2018
ARTICLE
Basic Web App Architecture 101

April 04, 2018
ARTICLE
Turning Up The Good On REST APIs

March 21, 2018
ARTICLE
Making a Static Website with Jekyll and S3

February 14, 2018
ARTICLE
Advice for Early-career Developers

October 24, 2017
ARTICLE
Legacy Code: Spying On Global Functions

October 23, 2017
ARTICLE
Framework Seams

September 20, 2017
ARTICLE
Myths About Unit Tests

September 19, 2017
ARTICLE
AWS Do's and Don'ts

September 15, 2017
ARTICLE
How to Grow a User Group, the Remix

September 13, 2017
ARTICLE
New Leadership for ChicagoRuby

September 07, 2017
ARTICLE
How JSON decoding works in Elm—Part 3

August 29, 2017
ARTICLE
Refactoring React

August 21, 2017
ARTICLE
Diversity, Inclusion, and 8th Light

August 14, 2017
ARTICLE
The Principles of Chess and Software

August 09, 2017
ARTICLE
Does the open/closed principle apply to Elm?

August 08, 2017
ARTICLE
Project Build Protocol

August 07, 2017
ARTICLE
How JSON decoding works in Elm—Part 2

July 17, 2017
ARTICLE
How JSON decoding works in Elm—Part 1

June 28, 2017
ARTICLE
API Assumption Tests

June 14, 2017
ARTICLE
Scope And Closures In Javascript

June 13, 2017
ARTICLE
The Core of Erlang

May 02, 2017
ARTICLE
Using an Elixir Umbrella

May 01, 2017
ARTICLE
Working Effectively with Offshore Teams

March 27, 2017
ARTICLE
Build as Much as You Can

March 23, 2017
ARTICLE
Everybody OOMs

March 17, 2017
ARTICLE
Ansible and AWS: Painless Deployment

March 14, 2017
ARTICLE
Pristine Jenkins

March 09, 2017
ARTICLE
To Minimize Downtime, Prepare for Chaos

March 06, 2017
ARTICLE
Ginny Hendry: A Legacy of Learning

February 09, 2017
ARTICLE
A few DTrace gotchas and workarounds on OS X

February 02, 2017
ARTICLE
Keeping Third-Party Swift Dependencies Testable

January 30, 2017
ARTICLE
Managing Cloud Resources with CAPS

January 25, 2017
ARTICLE
Comparing Common LISP and Clojure: Cons Cells

January 24, 2017
ARTICLE
Common Code Smells

January 19, 2017
ARTICLE
Optimizing your Workflow with Vim

January 17, 2017
ARTICLE
The App is Broken

January 16, 2017
ARTICLE
Wolf and Rabbit

January 09, 2017
ARTICLE
Reducing Software Costs and Mitigating Risk

December 21, 2016
ARTICLE
Designing for Pipeline Transformations

December 07, 2016
ARTICLE
Estimation for Fun and Profit (but mostly for sanity)

November 29, 2016
ARTICLE
Code is better when we write it together

November 28, 2016
ARTICLE
The problematic pull request

November 18, 2016
ARTICLE
Don't Make It Perfect, Make It Work And Refine

November 17, 2016
ARTICLE
Perfect code is an illusion

November 11, 2016
ARTICLE
Moving Towards Continuous Delivery

November 10, 2016
ARTICLE
Wear Your Uniform

November 08, 2016
ARTICLE
Getting Rails on Track - Part 3: Controllers

November 02, 2016
ARTICLE
The Why: A Better Git Commit Message

October 31, 2016
ARTICLE
Assimilating with Clojure

October 27, 2016
ARTICLE
Getting Rails on Track - Part 2: Views

October 26, 2016
ARTICLE
Getting Rails on Track - Part 1: Models

October 19, 2016
ARTICLE
Docker Compose: Wait for Dependencies

October 17, 2016
ARTICLE
Make Yourself Dispensable

October 12, 2016
ARTICLE
Clojure is boring

October 06, 2016
ARTICLE
TDD in ClojureScript

October 05, 2016
ARTICLE
Chronic and Acute Problems in Software

October 04, 2016
ARTICLE
The Third Bricklayer

October 03, 2016
ARTICLE
The egoless programmer

September 30, 2016
ARTICLE
Fundamental Tensions in Code Smells

September 29, 2016
ARTICLE
A Good Craftsman Never Blames His Tools

September 28, 2016
ARTICLE
Constructor Injection with the Unity Container

September 27, 2016
ARTICLE
Keeping Laravel Controllers Clean with Form Requests

September 26, 2016
ARTICLE
Are You a Wise Developer?

September 21, 2016
ARTICLE
An intro to progressive web apps

September 14, 2016
ARTICLE
8th Light Acquires WisdomGroup

September 12, 2016
ARTICLE
Better RSpec Stubs

September 08, 2016
ARTICLE
The Onboarding Checklist

September 06, 2016
ARTICLE
What Will Your Legacy [Code] Be?

August 30, 2016
ARTICLE
Refactor and Source-Control Your CI

August 22, 2016
ARTICLE
To Teach is to Learn.

August 16, 2016
ARTICLE
RubyMine Remote Debugging via Vagrant

August 03, 2016
ARTICLE
Docker as a (workstation) service

July 27, 2016
ARTICLE
Staying Clean

July 25, 2016
ARTICLE
That's Not a Decorator!

July 18, 2016
ARTICLE
Three A's of Responding to Bugs

July 06, 2016
ARTICLE
How to Find a Bug in Your Code

June 29, 2016
ARTICLE
How to Hire a Software Developer

June 22, 2016
ARTICLE
So You Live In Spacetime?

June 20, 2016
ARTICLE
The Stress of Communication

June 15, 2016
ARTICLE
Running tests in Vim

June 13, 2016
ARTICLE
Becoming a Professional Learner

June 08, 2016
ARTICLE
Go Build Your Own Tools

April 21, 2016
ARTICLE
Baking a Cake with Rails

April 14, 2016
ARTICLE
How TDD can make your team happier

April 13, 2016
ARTICLE
Using Functions to Make Better Abstractions

February 16, 2016
ARTICLE
Don't Make Me Remember Things

January 28, 2016
ARTICLE
Refactoring as a Feature Tax

January 26, 2016
ARTICLE
The Hidden Costs of Leaving a Monolith

January 20, 2016
ARTICLE
Ask DTrace: Why are my tests so slow?

December 01, 2015
ARTICLE
DTrace: [Even Better Than] Strace for OS X

November 06, 2015
ARTICLE
Caring about coding

October 30, 2015
ARTICLE
Retract with the old, add with the new

September 26, 2015
ARTICLE
Entity Framework & Resolving Team Migration Conflicts

September 18, 2015
ARTICLE
Optimizing the Sustainable Pace

September 15, 2015
ARTICLE
Internationalize Your Way to Cleaner Code

September 11, 2015
ARTICLE
Loosely Coupled Tests

August 26, 2015
ARTICLE
Introducing 8th Light London

July 21, 2015
ARTICLE
Git Disciplined

July 08, 2015
ARTICLE
The Multitasking Misnomer

June 30, 2015
ARTICLE
Los Angeles Mastery Cohort Code Katas

June 12, 2015
ARTICLE
Debug like a doctor

June 04, 2015
ARTICLE
Decorators in Ruby

May 18, 2015
ARTICLE
[Un]Planned Obsolescence in Software

May 14, 2015
ARTICLE
Mr. Miyagi Teaches Coding

May 13, 2015
ARTICLE
To meet or not to meet

May 11, 2015
ARTICLE
Using The Option Type Effectively

April 29, 2015
ARTICLE
Stack Overflow

April 27, 2015
ARTICLE
Refactoring a Regex

April 22, 2015
ARTICLE
Using relationships to build your business

April 20, 2015
ARTICLE
Tail Recursion In Clojure

March 23, 2015
ARTICLE
The Option Type

March 11, 2015
ARTICLE
Learning from porting selecta

March 02, 2015
ARTICLE
The Cumulative Effect of Inefficient Workflows

February 26, 2015
ARTICLE
Identifying and avoiding the cargo cult

February 24, 2015
ARTICLE
When the going gets tough, craftsmen stay tougher

February 16, 2015
ARTICLE
Loose Coupling in Go lang

February 06, 2015
ARTICLE
They Won't Be Interested

January 15, 2015
ARTICLE
Your Test Suite is Useless

January 12, 2015
ARTICLE
A One-day Visit at 8th Light

December 31, 2014
ARTICLE
Don't mix test code with production code

December 19, 2014
ARTICLE
Three Short Sentences

November 05, 2014
ARTICLE
Mistaking Encapsulation for Abstraction

November 04, 2014
ARTICLE
Attending a Conference on Your Own

October 29, 2014
ARTICLE
How To Be a Terrible Pair

October 27, 2014
ARTICLE
Hide Your Queries

October 23, 2014
ARTICLE
Flaky crusts: Good for pies; bad for test suites

October 22, 2014
ARTICLE
Tweaking the Varnish Cache

October 16, 2014
ARTICLE
Test-Driving the Game Loop pt. 2

October 14, 2014
ARTICLE
Professionals Aren't Self-Taught

October 08, 2014
ARTICLE
Apprentice Blog of the Week: Isolate CSS

October 07, 2014
ARTICLE
Clojure Stack Traces for the Uninitiated

September 12, 2014
ARTICLE
How Long Is Too Long?

September 11, 2014
ARTICLE
Apprentice Blog of the Week: Did Java Break My byte?

September 10, 2014
ARTICLE
Apprentice Blog of the Week: Setting Date Ranges in Ruby

September 03, 2014
ARTICLE
Keep Left, Right?

August 25, 2014
ARTICLE
Functional-ish Ruby

August 20, 2014
ARTICLE
Test-Driving the Game Loop pt. 1

August 18, 2014
ARTICLE
Apprentice Blog of the Week: GOOGLEME

August 14, 2014
ARTICLE
An Appeal to CS Teachers

August 13, 2014
ARTICLE
On Designing By Hand

August 08, 2014
ARTICLE
Prideful Programming

August 03, 2014
ARTICLE
BEM Basics

August 01, 2014
ARTICLE
Abstraction To The Rescue

July 25, 2014
ARTICLE
Avoiding the Drift to Low Performance

July 22, 2014
ARTICLE
Apprentice Blog of the Week: FormsJs

July 21, 2014
ARTICLE
Command Objects Are Gerunds

July 15, 2014
ARTICLE
Diving Into Swift With Swiftest

July 14, 2014
ARTICLE
Take Pride in Your Legacy (Code)

July 11, 2014
ARTICLE
Pattern Language of Thieves

July 09, 2014
ARTICLE
Finding Team Dignity

June 30, 2014
ARTICLE
Wearing The Pants

June 24, 2014
ARTICLE
The Pipeline is Full of Acid

June 19, 2014
ARTICLE
Feeling Othered

June 18, 2014
ARTICLE
How Men and Women Think Differently

June 18, 2014
ARTICLE
Individuals, Not Groups

June 13, 2014
ARTICLE
Gender Equality is Not Enough

June 09, 2014
ARTICLE
There's an Exception for That

June 02, 2014
ARTICLE
Yes, you can speak at a conference

May 28, 2014
ARTICLE
How is Pairing Working?

May 27, 2014
ARTICLE
Be Empirical

May 20, 2014
ARTICLE
On Mentoring: Mind the (Knowledge) Gaps

April 10, 2014
ARTICLE
What Good are Strong Parameters?

April 05, 2014
ARTICLE
Buy the Sandwich, Not the Meal

March 17, 2014
ARTICLE
Student Centered Learning in Software

March 10, 2014
ARTICLE
Adding Namespaces To Ruby

March 07, 2014
ARTICLE
Five Years of Raising the Bar

March 06, 2014
ARTICLE
We are Principled: 11th Edition

March 05, 2014
ARTICLE
Store Data Not Types

February 24, 2014
ARTICLE
Courage vs. Cargo Cults

January 21, 2014
ARTICLE
How I Evaluate Open-Source Software

January 03, 2014
ARTICLE
validates_presence_of false

December 29, 2013
ARTICLE
Nested Contexts are Only Kind of Evil

December 17, 2013
ARTICLE
Lispy Elixir

November 26, 2013
ARTICLE
Check Your Work

October 31, 2013
ARTICLE
Ruby DeRailed: Emergent Data Design

October 17, 2013
ARTICLE
Test Extraction and Readability

October 15, 2013
ARTICLE
Ruby DeRailed: Fast Tests

October 10, 2013
ARTICLE
Stuck in the Muck

October 08, 2013
ARTICLE
Synchronization in a Distributed System

October 04, 2013
ARTICLE
Your Apprenticeship Is Not a Checklist

October 03, 2013
ARTICLE
Modular JavaScript

September 27, 2013
ARTICLE
Using Katas To Improve

September 26, 2013
ARTICLE
Coding fast and coding slow

September 23, 2013
ARTICLE
I Am Not An Island

September 20, 2013