Rich Feller Joins 8th Light’s Leadership Team
I am excited to announce that Rich Feller has joined 8th Light’s team as a new Vice President of Product Design & Delivery. We know that as we continue to grow and tackle new complexities, we need...
View ArticleHandling Blocking Threads in Java
Thread Basics Let's start from the beginning—what is a thread? A thread stores the information necessary for your computer to execute some part of your program. A program will always start with at...
View ArticlePlacing a Craft CMS application behind AWS CloudFront
Using CDN to prevent performance issues of content management systems Craft CMS is a content management system that allows a team to organise and edit a website using a simple, non-technical, and...
View ArticleOAuth2 and OpenID Connect Essentials for Web Developers (Part 1)
Isn't it great to be able to sign in to one application (Trello, for example) using your credentials and user profile that are stored somewhere else (say, Google)? OAuth2 and OpenID Connect can give...
View ArticleWhat is Software Architecture?
I'm sure at some point you've had to draw some boxes and arrows to describe the high level view of how a system works. But what are those boxes and arrows called? We often use terms like microservices,...
View ArticleTo Serve or Not to Serve: Amazon Aurora Serverless
Serverless is a borderline buzzword nowadays. Serverless websites! Serverless APIs! Serverless...everything! And now serverless databases. Amazon Web Services has their own serverless database...
View Article"Works on my machine" doesn't work
We’ve all heard it. We’ve all said it. “Works on my machine”: I dread it. Margaret pulls down the latest code and finds an issue. She pops into the team Slack: “hey i’m getting an error starting up the...
View ArticleOAuth2 and OpenID Connect Essentials for Web Developers (Part 2)
This is the second part of a series about OAuth2 and OpenID Connect. Read Part 1 here. In the first part of this series, we covered how a user can use OAuth2 to sign in to an Authorization Server,...
View ArticleEscape Hatches: Principles vs. Guarantees
Often, as well-meaning programming language enthusiasts, we might find ourselves encouraging newcomers with simplified descriptions of language features. There’s sometimes a tricky balance between...
View ArticleTips for Technical Writing
Do you struggle to write blog posts? Developing your craft when it comes to writing can be as intimidating as the buggiest code. Refining your writing will be another fascinating challenge on your path...
View ArticleFunctional lessons learnt
I still remember the time I spiked my first application in a functional language—it was Autumn 2018, I had come to 8th Light to start my journey as a crafter, and I didn't even know what really made a...
View ArticlePolyglot Influences in Python
One of my favorite aspects of working in different languages on various client projects is seeing how concepts learned in one paradigm bleed into others. My latest professional work is written in...
View ArticleOne Sentence a Day
Like many folks, I’ve got a bunch of things I want to improve about myself, and one of them is to write more. So this post will be a bit meta, but don’t worry, it’ll be brief. I’ve had this goal, of...
View ArticleBack to Basics: Abstraction
After almost a decade at 8th Light, I still find myself amazed at how often I can go back to find more wisdom in the fundamentals. Early in our careers—when we're focused so much on getting better at...
View ArticleTickets for Specialised Teams
Agile projects typically use a unit of work known as a ticket, user story, or increasingly a job story. These tickets are written to specify some new feature that provides value to a user of the...
View ArticleHow to Write Flexible and Clear Unit Tests
Unit testing is a great idea. It provides for code coverage, is a resource for documentation, and, paired with TDD, it provides a vehicle for good design. There are a lot of articles and blogs talking...
View ArticleDevelopments in Mobile 2FA and Security Keys
Two-factor authentication, or 2FA, provides extremely effective protection against account takeovers. But as SIM-swapping attacks have become more commonplace, more and more folks are starting to...
View ArticleAxes of Quality
I’ve thought for years in terms of two kinds of software quality: “internal” and “external” quality. The idea is that “internal” is essentially the stuff that helps developers to go fast (or forces us...
View ArticleIntroducing Our New Career Grid
As our organization has grown and evolved, we realized that our job descriptions had lagged behind our progress. They no longer aligned with the reality of what people were doing in their day-to-day...
View ArticleTeaching ReactiveX (and a lot of other things) Like Skiing
I've been intrigued by ReactiveX, in all of its programming-language variations, for a few years now. I'd see code like this:const bricks$ = generate(1, x => x < 8, x => x + 1) .pipe(...
View Article