Programming

The Art of Turning Thought Into Function

I'm passionate about crafting code that solves the problem in a way that's easily extensible and easy to understand. Here, you can learn a little more about my philosophy toward writing code and the technologies I'm familiar with.

My Experience

Since beginning my programming career in 2020, I've had the pleasure of working with a variety of technologies.

Front End

I have worked extensively with Typescript, sometimes using React, sometimes using Angular (including an in depth refactor and update from AngularJS into Angular 12).

Back End

I have worked with Kotlin, using Spring Boot and building with Gradle, to run a suite of back end microservices.

DevOps

I used Tekton CI/CD to deploy to both PCF and GCP, managing both front end and back end deployments on these platforms. I also have some experience with Jenkins.

General

I worked with C++ for several months while at MousePaw Media (see my December 2021 Update), and got my start in the field in Python.

Certifications

Stripe Certified Developer.Stripe Certification Badge

The variety of technologies employed gives me a broad base to adapt to any new technology, and a sense of what is or should be possible, even when faced with a new technology where I haven't yet used those features.

My coding philosophy centers around the art of refactoring. I firmly believe that well-structured code is a key element of any successful project. I'm constantly seeking ways to make code cleaner, more efficient, and easier to maintain. I love to dive into content that explores best practices, and share my insights in my articles.

This site is an example of my work. It's built with the latest version of NextJS (using the new App Router design), React, and MDX, in TypeScript. The basic setup is available for use by anyone as a template on GitHub.

Clean Code

According to Robert C. Martin (creator of the Agile Manifesto and author of Clean Code), developers spend about 10x as much time reading code as we do writing it. This suggests that the more clear the code is, the easier it is to understand. And of course, the better we can understand the code, the less time it takes to make requested changes. Code that is deeply nested, or full of branching logic paths, requires the programmer to hold more information in their mind at once in order to understand the line they are looking at. By using the appropriate abstractions, clear naming, and the tools the language has available to separate concerns, code can be written in a way that minimizes needing to keep a lot of information in mind at once.

Test Driven Development

The level of code confidence obtained by Test Driven Development (TDD) is invaluable. Strict TDD, which follows the flow of first writing a test, then making the test past, then refactoring the code (commonly referred to as red, green, refactor), ensures that the programmer's assumptions the function of the code have been validated. Every line of code, every feature or function or piece of logic, are backed by tests that ensure they function as expected. This not only guarantees that software works correctly but also provides a safety net that allows for fearless refactoring. A programmer can work in the codebase without being concerned about unknowingly breaking existing functionality. TDD fosters a sense of security, knowing that your code is robust, maintainable, and adaptable to evolving requirements. This level of confidence is key to delivering software that stands the test of time and is readily adaptable to the changing needs of your business.

Posts Tagged Programming:

Found: 18 posts
thumbnail

Implementing Eiserloh's Noise-Based RNG in Rust

A discussion of a talk by Squirrel Eiserloh on the benefits of using noise functions, rather than traditional random number generators, to generate randomness in game development, followed by an implementation walkthrough in Rust.
Tags: tutorial, game-dev, procedural-generation, Rust, RNG
thumbnail

Building a Blog with Next.js App Router and MDX - Part 2: Tags

Setting up a tagging system in a dynamically generated, server-side rendered blog engine using Next.js's App Router (13/14+) and the MDX library.
Tags: Javascript, tutorial, Typescript, Node.js, npm, Next.js, markdown, MDX
thumbnail

Building a Blog with Next.js App Router and MDX

Walkthrough and code for a dynamically generated, server-side rendered blog engine using Next.js's App Router (13/14+) and the MDX library.
Tags: Javascript, tutorial, Typescript, Node.js, npm, Next.js, markdown, MDX, testing, Jest
thumbnail

Writing Idiomatic Code (starring Vue)

Some musings on refactoring with a nearly end-of-life UI library.
Tags: Javascript, refactoring, Vue2
thumbnail

Transferring Your Domain Hosting To A New Provider

What does it take to move your website and email domain hosting to a new provider?
Tags: tutorial, devops, VPS, hosting, DNS, email
thumbnail

Deploying a Next.js Website to a Virtual Private Server

Join me for a step by step walkthrough of deploying a Next.js website app to a Virtual Private Server.
Tags: Javascript, tutorial, Typescript, Node.js, npm, Next.js, devops, VPS, React, ssh, NGINX
thumbnail

Adding Cypress to an existing Angular project

Let's go through getting Cypress installed and set up with Angular, and mocking an environment for testing.
Tags: Javascript, Typescript, testing, Angular, Centricity, Cypress, end-to-end-testing
thumbnail

Building a Dungeon Generator, Part 1. Introduction

Exploring some options for randomly generating dungeon layouts for a top down game.
Tags: game-dev, procedural-generation, ProjectDungeon, CSharp, roguelike, Zeldalike, Unity
thumbnail

Maintaining Custom Forms for a Clinic

The story of my work building and maintaining custom forms for an EMR for a clinic.
Tags: Javascript, Typescript, refactoring, Angular, Centricity, career, AngularJS, MEL
thumbnail

Consequences (The Game)

Tags: Python, learning, game-dev
thumbnail

Abstract Factory Method

Tags: research, WBA, design-patterns
thumbnail

Importing Data

Tags: Python, learning, Sphinx, Pelican
thumbnail

Setting Up Pelican

Tags: Python, learning, Sphinx, Pelican
thumbnail

Switching to Sphinx / ReST

Tags: Python, learning, Sphinx
thumbnail

Learning pointers in C++

Tags: learning, CPP
thumbnail

Designing a Data Schema

Tags: research, WBA, DBMS, PostgreSQL, database
thumbnail

The Best Way To Store Images in PostgreSQL?

Tags: Python, research, WBA, DBMS, PostgreSQL
thumbnail

Selecting the Database For My New Project

Tags: research, WBA, DBMS, PostgreSQL, AgensGraph, MongoDB, Neo4j