The blog

Thoughts ontech and business

Things I've learned building, growing, and maintaining a portfolio of websites and apps.

All Posts


How your browser loads, parses, and renders a webpage

Most web developers have a general sense of how their browser works behind the scenes, but when it comes to technical SEO and core web vitals, things get confusing. This post will alleviate some of that confusion for you and explain the sequential steps a browser takes to load a webpage.

React Forms Best Practices

Doing forms right in React is difficult. Whether you're dynamically building forms, adding complex validation, or just dealing with all the different input types, there are lots of pitfalls to building stable forms. This post is an exploration of some "best practices" when using forms in React.

The Secret Life of a React Component

When building with React, when should you useState? useEffect? useMemo? useRef? How do you make your components more performant? What causes them to re-render? What is a re-render? While it doesn't take much to build things in React, understanding how things work and adopting best practices is a bit more challenging. This post will explore many of these questions and walk through a functional component example from start to finish, highlighting it's entire lifecycle.

Vanilla React 18 + TypeScript + Webpack

Tools like create-react-app are great, but abstract away lots of details. Here's how you can set up a "vanilla" React + TypeScript app using Webpack.

CSS Grid Course for Complete Beginners

CSS Grid was released in 2017 and comes with powerful layout-related CSS features. In this post, I'll teach you the basics of CSS Grid and how it can make your layouts more robust and your workflow simpler.

Detailed Flexbox Tutorial for Beginners

In this post, we will learn how Flexbox can help you arrange elements on webpages effortlessly and responsively! This post is long and detailed. It's got everything you'll ever need to know about Flexbox!

CSS Crash Course for Beginners

In this post, we will learn all about CSS (Cascading Style Sheets) and some of its related topics such as the box model, css grid, flexbox, and css frameworks.

Beginners HTML + DOM Crash Course

In this post, we will learn the fundamentals of HTML (hypertext markup language) along with its associated concept of the DOM (document object model). Furthermore, we will see how HTML and JavaScript work together to create a webpage.

What is JavaScript and How is it Used?

In this post, I'll answer some of the most commmon questions about the JavaScript programming language and provide an introduction for how we will be using it.

Your First JavaScript Program

In this post, you will learn how to write your first ever JavaScript program along with a brief introduction to browser developer tools.

Fullstack Developer Series - Learn to Code in 2021 and Beyond

A quick introduction to my series on learning to code. Through this free series, you will go from zero experience to deploying your first fullstack web application. Along the way, I'll teach you the essential web development concepts needed for 2021 and beyond.

Is it too late to learn to code?

Automated websites. NoCode revolution. AI automating developers? These are all questions that might make you wonder whether learning to code is still worth your time. Here's my take as a developer.

What the heck is an API? (with AI text bot example)

Please welcome the most overused term in software sales. Add the word "API" to your sales pitch and you'll sound much smarter to your prospective clients. In this post, we're going to break down what an API actually is and why you hear it so often.

Do you have to be good at math to become a programmer?

When you are trying to decide whether learning to code is an achievable path for you, regardless of your skill in math, you probably will wonder at some point just how much math is involved with programming. In this post, we'll take a look and see.

How to Read an RxJS Marble Diagram

To an experienced RxJS user, marble diagrams are helpful. To someone just starting out with RxJS, they look like a little kid’s drawing in art class. I’m by no means an expert user of RxJS, but I’ve used it enough to make sense of these “marble diagrams”. I can finally use rx marbles with confidence, and I want you to get there too.

3 Things I Wish I Knew When I Started Using Angular 2+

It’s 2020, and Angular is on version 10 with over 1200 contributors and 18,500 commits. I think it’s safe to say that this project has picked up some momentum over the years. But when I started using Angular (it was on version 4 when I started), these things didn’t matter to me. Heck, I probably couldn’t have explained what open source software was and definitely couldn’t have explained what Typescript was...

Imperative vs. Declarative Programming

Maybe you heard it in an Object Oriented Programming book. Maybe you read it on Stack Overflow. Maybe you're reading a textbook for school. Eventually, you get annoyed reading the terms "declarative" and "imperative" because you know they are important but have no clue why. In my mind, knowing the difference between imperative and declarative programming is useful for a single reason, and that is to help you better understand the difference between procedural, functional, and object-oriented programming styles. By understanding these five terms, while reading code libraries, you will begin to see where the authors got their code designs.

Understanding IP Addresses and Subnet Masks

For most home users, trying to understand a home network is not of interest due to the perceived complexity of the issue. In this post, whether you are a seasoned engineer or simply a Dad trying to figure out why the router isn't working again, I will explain the basics of how your home network works.

Guide to Bash Scripts

Bash scripts can be intimidating to learn, but can be great for ad-hoc sysadmin tasks.

6 Intermediate Bash Commands

Aside from basic commands such as `cd`, `ls`, `mkdir`, `touch`, etc., there is a short list of commands that I think every bash user should know about and attempt to use on a regular basis.

Networking Bash Commands

Networking is a huge concept. There are textbooks written on the topic, and therefore, I have no chance of covering everything you need to know relating to networking. That said, this section will get into the most common Bash networking utilities that you can use to diagnose network issues on your computer. If you are completely new to network concepts, that is completely fine as I will be explaining the basics of the internet in this post.

Processes and System Management with Bash

Process and system management sounds like an intimidating concept, but for the average bash user, there are only a few commands and programs that you will need to learn to get a holistic understanding of how your computer runs.

Bash Regular Expressions

Everybody hates regular expressions... Right? In this post, I'll show you why you need to learn them and how they can help you.

SSH and Bash

This post is a brief introduction to using the bash ssh utility.

Users, Groups, and Permissions in Bash (UNIX based Operating Systems)

Many tutorials cover the topic of permissioning within a UNIX based operating system, but often overlooked is the topic of users and groups. For individual users, it is difficult to understand what the usefulness of this architecture is. In this short tutorial, I will be walking through the reason why we have permissions, how to set permissions, and how to manage your users and groups that these permissions apply to.

The Ultimate Guide to Passport JS

In this post, I am going to walk through why the Passport-JWT authentication strategy is a simple, secure solution for small teams and startups implementing a Node/Express + Angular web app.

The Most Confusing Thing in JavaScript - The "this" keyword

You know those concepts that you learn over and over again, yet they seem to vanish from your memory no matter how many notebooks you fill with detailed notes? The `this` keyword in Javascript was one of those concepts for me, until I finally took an afternoon to understand the inner-workings of the code rather than hopelessly trying to memorize the 4 types of "bindings" (default, implicit, explicit, and "new") that influence the value of `this`.

Making Sense of Public Key Cryptography

If you write web applications (and the authentication for them) or work in the space of cryptocurrency, understanding the basics of asymmetric cryptography (also known as "Public Key Cryptography") is a must.