Jason ain’t about the jazz, man!

Javascript and the interchange format it begat, JSON, have subtle complexities that aren’t necessarily obvious. They are both very quick to learn, and powerful, which makes them seem deceptively simple.

Testing in 3D

Automated testing is a facet of software engineering that most people agree holds value, but usually the engineer will wander off before offering any further clarification. There is somewhat of a blind faith that given full coverage, an engineer’s work is complete and they can continue solving the rest of the business’ problems.

Code Review for Great Goodness

Code review is a common practice for professional software teams. As an author, there are several things you could hope to gain from having your code reviewed:

Running WireMock with Gitlab CI Services

In a healthy project there will be a lot of tests. One of the tools that makes for convenient testing is WireMock. If you are not already familiar, WireMock is a service that listens for HTTP requests matching certain conditions and replies with canned responses.

React & Typescript & Storybook

About once a year or so I create a fresh React project and realize that over the course of the year, everything has changed.

Hello, my name is Ridiculous

One day you find yourself setting up a new greenfield project. Your team needs a service that connects to an upstream account management system to get the active subscription status of a user. Since it only changes daily, to reduce load, the subscription status will be cached in this service. You now are faced with your first decision. Do you name this customer-subscription-cache? Or do you name it yard-lobster?

Developing Cross Browser Extensions

One of the first features requested for Shadowmute was a browser extension to simplify the workflow of generating mailboxes. It was also clear very early on that the usage between Chrome and Firefox users was split fairly equally. The documentation for Firefox and Chrome extension development is extremely well written and detailed, so I’m not going to delve too deep into that. What I would like to write about is how to develop for both at the same time.

There be dragons

If you have a kitchen, and that kitchen has drawers, there is a roughly 100% chance you have a junk drawer. You know the one, where you store old phone cables, ribbons, safety pins, expired coupons, and a broken red crayon. The software equivalents of these junk drawers take many forms, commonly named Helper, Utils or the worst offender of all.. the TestBase. Join me as we take our new found love of dependency injection, and actually put it to good use.

On returning from outer space

Over the years of my illustrious career, I’ve left several codebases a tattered wreckage. Not intentionally, mind you. Exuberance, eagerness, and a desire to learn new techniques on a slow day all contributed. Half finished implementations of different development techniques littered the landscape. The road to production is paved with good intentions, and a deadline. The code itself worked, shipped, improved but weird vestigial bits floated around. As someone who has fixed as many problems as they have created, you too can larn from my mistaks.

Dependency Injection & the code of tomorrow!

This goes out to all the professional software developers out there working with time constraints just trying to get their job done. Dependency injection (DI) is one of those kinds of concepts that fall through the cracks and becomes assumed knowledge at some point. At a high level it means anything your classes depend on are passed in (usually via a constructor) and it helps make more testable code. Does that make sense? No. not even a little bit. That explanation is terrible.