RSSAmplifier

Blog

The Collected Works of jjmojojjmojo

/RSS feed ↗13 posts

Latest posts

Why Am I Interested In Your Company?

I've recently been looking for work, and I've been getting hung up a lot on application forms. About 3/4 of the time, there's a litany of questions sitting between "apply for this job" and "submit your application". Some are fun to answer, some are fairly routine, but the lack of any meaningful context makes them a stress point for me, and it may be hurting your chances of finding the kind of…

Time-Based NeoPixel Fading In Circuitpython With FancyLED

Fading makes LEDs look really cool. It's a less abrupt way of transitioning from off to on, or from one color to the next. Even with Neopixels built-in drivers it can still be daunting, and a source of slowdowns in your code. In this tutorial, we'll explore the considerations for fading, walk through a few different approaches, and present a final approach that works especially well with…

Branching With Git And Testing With Pytest: A Comprehensive Guide: Part 3

This is part three of a three-part series. This is a comprehensive guide to a basic development workflow. Using a simple, but non-trivial web application, we learn how to write tests, fix bugs, and add features using pytest and git , via feature branches. Along the way we'll touch on application design and discuss best practices. In this installment, we will: Simulate collaborative work by two…

Branching With Git And Testing With Pytest: A Comprehensive Guide: Part 2

This is part two of a three-part series. This is a comprehensive guide to a basic development workflow. Using a simple, but non-trivial web application, we learn how to write tests, fix bugs, and add features using pytest and git , via feature branches. Along the way we'll touch on application design and discuss best practices. In this installment, we will: Identify and fix a bug on a branch.…

Branching With Git And Testing With Pytest: A Comprehensive Guide

This is part one of a three-part series. This is a comprehensive guide to a basic development workflow. Using a simple, but non-trivial web application, we learn how to write tests, fix bugs, and add features using pytest and git , via feature branches. Along the way we'll touch on application design and discuss best practices. In this installment, we will: Talk a bit about the design of the…

Advice For New Programmers

I am a proud autodidact . That means I am entirely self taught. 🤔 🎓 ❤️ People like myself are not uncommon in the tech industry, but we have always been in the minority. Autodidacts represent industry outsiders , because we've diverged from the typical learning path: a degree at a four-year college. With the advent of "let's code" initiatives, coding boot camps, better programming curriculum at…

The Johnson Pyramid Of Programmer Greatness

A few years ago, inspired by the TV sitcom Parks and Recreation , I fired up Adobe Illustrator and put together an infographic that highlights my personal philosophy about what makes a great software engineer, The Johnson Pyramid Of Programmer Greatness . This is the latest version. In this post, I'll talk a bit in depth about how it came about, and what it all means.

State And Events In CircuitPython: Part 3: State And Microcontrollers And Events (Oh My!)

In this part of the series, we'll apply what we've learned about state to our simple testing code from part one . Not only will we debounce some buttons without blocking , we'll use state to more efficiently control some LEDs. We'll also explore what happens when state changes, and how we can take advantage of that to do even more complex things with very little code, using the magic of event…

State And Events In CircuitPython: Part 2: Exploring State And Debouncing The World

In this part of the series, we're going to really dig into what state actually is. We'll use analogies from real life, and then look at how we might model real-life state using Python data structures. But first, we'll discuss a common problem that all budding electronics engineers have to deal with at some point: "noisy" buttons and how to make them "un-noisy", commonly referred to as…

State And Events In CircuitPython: Part 1: Setup

This is the first article in a series that explores concepts of state in CircuitPython. In this installment, we discuss the platform we're using (both CircuitPython and the Adafruit M0/M4 boards that support it), and build a simple circuit for demonstration purposes. We'll also talk a bit about abstraction . This series is intended for people who are new to Python, programming, and/or…

Advanced Boot Scripting

As covered in a previous post , boot is an all-around useful tool for building clojure applications, but one feature in particular has proven a adjuncti finalum [*] : boot lets you do clojure scripting . This elevates clojure to the same high productivity of scripting languages (like my personal favorite, Python), but bakes in dependency management and other goodies. This allows the user to build…

Boot: Getting Started With Clojure In < 10 Minutes

With the power of boot , it's possible to go from "never used java before" to budding Clojure -ist cranking out jars like a pickle factory in record time. This post walks you through the process, and provides some post-'hello world' examples, with pointers to more information.

DevOps Is Bullshit: Why One Programmer Doesn't Do It Anymore

What's the deal with DevOps? In 2015, I asked myself that question and came up with a tounge-in-cheek answer that provided some catharsis and really helped put my career into perspective. It was one of the most popular things I've ever done. I've preserved it here for posterity. The comment section is a riot.