RSSAmplifier

Blog

Aaron Bos

Aaron Bos

aaronbos.devRSS feed ↗90 posts

Latest posts

Find Me on Bluesky

I have mixed feelings about social media and the value it provides, but I've recently joined Bluesky in hopes of regaining the value that I used to get out of Twitter/X from a developer's perspective.

Staying Productive with a Work Log

Life as a software engineer can sometimes feel hectic, so it's important to have processes that keep us grounded and focused on the things that matter. Recently I've adopted a habit of keeping a work log to do just that. My goal for this post is to share the benefits I've noticed since keeping a daily work log and what I hope to gain from the habit in the long term.

Trimming Video with FFmpeg

If you're a developer and work with video, there's a chance that you may need to trim or cut parts of the video for your users. In this post, I'll be going through the commands needed to do this in FFmpeg along with some details to consider when trimming video. Let's dive in!

Find and Replace in Neovim

While Neovim may not be my daily editor, I still prefer it to modify files quickly. Often I find myself in Neovim when I need to make small changes to JSON or YAML files. A common action that I perform is a simple "find and replace" which is supported by most editors. As with most things, the method to do this in Vim is powerful, but not necessarily straightforward unless you know the right…

A Reminder of Why I Started This Blog

In the rush of everyday life, it's easy to lose sight of your "North Star". For me and this blog, my North Star is learning. If I'm not learning, then chances are I'm not feeling energized. It's time to get back to what I have enjoyed so much with this blog over the last three years. Sharing what I'm learning through interesting and valuable blog posts.

npm and Semantic Versioning

If you've been a developer for any amount of time you've undoubtedly reached for external dependencies to solve specific problems. Whether the problem is as small as padding the left side of a string or as large as a component library, external packages are inevitable. In this post, I'll be going into the nuances of how npm leverages semantic versioning and some information that will be useful as…

Reviewing 2023 and Previewing 2024

This time of year (holidays and New Year's) means something different for everyone, but for me, they are always a time to reflect on what has been and look ahead at what could be. As I've done in previous years I'm going to review the previous year in terms of this blog and my career as well as look ahead to the next year in the context of what to expect. Let's dive in!

Introduction to HTTP Live Streaming

Video has become an integral part of our digital lives. We rely on video streaming services like YouTube, Netflix, and Hulu to consume all kinds of content from sports to Movies and TV. If you've ever wondered what kind of technology might be powering these streaming services, you've landed in the right place. In this post, I'm going to share some info about HTTP Live Streaming and how it is used…

Using Git's Reflog to Recover Data

Git is a nearly ubiquitous tool for version control these days and it serves its purpose dutifully. As great as Git is, there are still sharp edges and chances for mistakes to happen. In this post, I'll be sharing information about a lesser-known feature in Git that can fix those mistakes and help with data recovery. Let's dive in!

Looking for Solutions Instead of Problems

Working in a field that is constantly changing can be challenging for a multitude of reasons. Our mindset for approaching the constant barrage of challenges can make a world of difference in both outcome and attitude. In this quick post, I'm going to share my thoughts on approaching problems with a solution-oriented mindset. Let's dive in!

Battling Burnout

I’ve heard of others experiencing feelings of burnout in relation to free time or side projects, but I had never experienced it for myself. While I’m sure it’s different for everyone, I recently started to feel burned out with the time I spent outside of work on things that felt like work. In this post, I’ll share how I’ve dealt with and moved on from those feelings. Let’s dive in!

Book Review: Engineering Management for the Rest of Us

In this post, I'll share a short review of "Engineering Management for the Rest of Us" by Sarah Drasner. I heard about this book in a podcast a while back and I was excited to give it a read since I've recently transitioned into an engineering management role. Let's dive in!

Leading with Trust

Trust is a foundational piece of most relationships and it's no different with technical leadership. In this post, I'll share my thoughts on the benefits of building trust with teammates to become an effective leader.

Q3 Roadmap Feature: Search Improvements

At the beginning of the year, I created a roadmap to plan the development of my blog itself. In this post, I'll talk through the improvements for this quarter that involved the blog post search experience. Let's dive in!

Understanding Thread-Safety in .NET

Writing code that always behaves as expected when run in parallel is HARD. I'll be the first to admit that I'm NOT an expert in this field, but I do my best to generally understand the principles that make parallel programming possible. This post attempts to unpack the "thread-safe" term for writing .NET code and explain some of the techniques that allow for thread safety to be possible.

Engineer to Manager: Initial Thoughts

I recently made the switch from Senior Engineering to Engineering Manager 😱. In this post, I'll share some general thoughts on the experience so far. While everyone's experience and situation is different, I think it's helpful to share my initial thoughts about making the transition a successful one for everyone.

Developing A Growth Mindset

Life can be challenging. We are put into situations that challenge us mentally and physically all of the time. The mindset that we have going into these situations can significantly affect the outcome positively or negatively. In this post, I'll share my takeaways from the book Mindset by Carol Dweck which focuses on using a growth mindset to navigate difficult situations.

A Closer Look at C# Extension Methods

Extension methods have been around in .NET for a long time and most developers use them daily without even realizing it. In this post, we're going to take a closer look at extension methods and how they work. Let's dive in!

Managing "Dark Matter Time"

As I've grown in my software engineering career I've learned that time isn't always easy to manage. Learning to deal with writing code, context shifting, collaborating, and all of the other aspects that go into being an effective engineer can be challenging. In this post, I'm going to try to flesh out the idea of "dark matter time" and how we can learn to use it effectively. Let's dive in!

Podcast Lineup 2023

For the past several years podcasts have been an integral part of my personal development process. Each year I like to share the podcasts that I'm subscribed to with the goal of spreading the word and explaining why I find them worth listening to. Here's my list for 2023!

How to Use SemaphoreSlim in C#

Historically I've held an opinion that reaching for more uncommon parts of a programming language to solve a problem meant that there was likely a better, less complicated solution. I'd put the use of semaphores in this category, but I recently had to reach for SemaphoreSlim to solve a problem. In this post, I'll discuss the concept of semaphores in general, their implementation in C#, and an…

Monocode: A font for code

Over the past ten months I've been working on a custom font for me to use in programming environments. The font is called Monocode and in this post I'm going to talk about how I created it, why I created it, and what makes it unique. Let's dive in!

Using Binaural Beats to Improve Focus

Over the years I've found it helpful to listen to music while doing work that requires some amount of focus or concentration. Recently I've started to listen to binaural beats during these periods of work and have found them to be very helpful. In this post, I'm going to share some of the benefits I've found from listening to binaural beats and also how I listen to them. Let's dive in!

Is it Time to Lean into AI?

As developers, we are constantly exposed to new tools and technologies, but the most recent wave of AI advancements feels different. In this post, I'm going to share my thoughts on whether or not the hype around generative AI is real.

Connecting to CockroachDB with Postgres.js

I've been using CockroachDB on this blog for some time and I've recently transitioned to using the Postgres.js library for interacting with the database. In this post, I'm going to share how to connect to CockroachDB from a Node app using Postgres.js.

Exploring CommonJS and ES Modules

I was recently working on a project involving quite a bit of JavaScript. I always knew about ES Modules and CommonJS, but I never knew much about their differences. This post is a result of my exploration of CommonJS and ES Modules to learn more about their history and use cases.

The Anatomy of an FFmpeg Command

FFmpeg can do just about anything with video and audio processing as long as you know what to ask. In this post, I will break down the different aspects of an FFmpeg command to better understand how FFmpeg processes them.

Running FFmpeg in the Browser with Wasm

The introduction of WebAssembly (Wasm) has enabled developers to create experiences on the web that rival native performance. In this post, I'll provide an introduction to WebAssembly and also share an example of how it is leveraged to run FFmpeg directly in the browser.

My Case for Conventional Comments

In this post, I'll present my case for using conventional comments in code reviews. I've been an advocate of conventional comments for about a year and have enjoyed using them. I'm hoping to share the benefits so others can adopt their own standards for code review. Let's dive in!

Collections in .NET Through the Lens of Big O Notation

We use collections in our code daily, but do we ever step back and consider how they perform in the context of Big O Notation benchmarks? In this post, we'll examine the different collection types in .NET to see how their behaviors relate to well-known Big O notation functions. Let's dive in!

Looking Back at 2022 and Ahead to 2023

As the calendar year comes to a close, I'll take a moment to reflect on the posts and site improvements this year and also provide a sneak peek at what will be coming in 2023. Let's dive in!

Why I Decided to Give Up Social Media

In this post, I'll share why I recently decided to step away from a handful of social media platforms. I'll also touch on how I plan to replace the value that social media provided me with other alternatives. Let's dive in!

Defining and Using Enums as Bit Flags in C#

I've been using enums in C# since the beginning of my development career. In this post, we are going to dive into how the Flags attribute can be applied to enums and also the different kinds of operations that come into play when an enum is defined as a bit flag. Let's dive in!

Rest is Best When Done Intentionally

Rest is great, but it's not always easy. In this post, I'm going to share some of my thoughts on the benefits of being intentional with taking a break. Let's dive in!

Introducing Search to my Blog

My blog's two year anniversary is coming up in January 2023 and in that time I've written 56 posts on a variety of topics. In order to provide some more visibility into posts without having to scroll through them all I've added the ability to search posts. In this post, we're going to talk a bit about the feature, its implementation, and how it might evolve in the future. Let's dive in!

Some Thoughts on Specialization

These days software developers are categorized into two common buckets, generalists and specialists. Neither category has an inherent advantage over the other and often times the pros and cons of a categories are contextual. In this post, I'm going to share my current thoughts on these categories and how floating between them has impacted my career.

Debugging C# in Neovim with nvim-dap

As a software developer debugging skills are invaluable. Over the years debugging tools have evolved to become an integral part of the development toolbox. In this post, we are going to look at how we can configure a debugging experience for .NET code in Neovim. Let's dive in!

GitHub Has Our Back With Token Security

I recently stumbled across some behavior by GitHub that was surprising at first, then reassuring once I understood the root cause. In this post, we are going to discuss a particular aspect of GitHub's security around keeping GitHub API tokens out of public repositories. Let's dive in!

Get Comfortable Being Uncomfortable

In my opinion, the ability to learn and to continue to learn is one of the most important skills for software engineers to have. In this post, we're going to talk about the value of living outside of our comfort zone to positively impact growth and learning. Let's dive in!

Learning Vim Keycode Concepts

Since diving into the world of Vim and Neovim, I've felt myself become more comfortable with the tool and its idiosyncrasies. One of the hurdles I faced early on was understanding the documentation for different keycodes. In this post, we're going to cover the common keycodes and the concepts around them. Let's dive in!

Enabling Roslyn EditorConfig Support in Neovim

In many editors and languages code analysis is a feature that is nearly expected to be available out of the box. With C# and .NET, the Roslyn API and Omnisharp language server are tools that make code analysis possible. In this post, we're going to look at how we can put these tools to use in Neovim resulting in a better development experience. Let's dive in!

Generating Random Quotes via CLI

Ever needed a bit of inspiration to get your day started? In this post we'll be looking at how we can generate a random quote and easily format and print it in our terminal. While this may seem silly, I think some of this post will be relevant and applicable to other CLI based needs. Let's dive in!

Debugging .NET in VS Code

Debugging is a vital aspect of most developer workflows. An easy-to-use debugger within an editor can speed up development by providing immediate feedback on a running application. In this post, we will be covering the debugging functionality in VS Code in the context of .NET applications. Let's dive in!

VS Code Setup for .NET Development

Visual Studio is and probably always will be the defacto IDE for .NET development, but that doesn't mean there aren't other options out there. In this post, we're going to learn about several extensions available for VS Code that make writing .NET a productive and enjoyable experience. Let's dive in!

Introduction to Cancellation in .NET

As software development evolves and adopts asynchronous paradigms, the need for cancellation support in applications has become more prevalent. In this post, we will learn about the core concepts in regards to cancellation in .NET code. This post will provide a solid foundation for continued learning on the concept of cancellation. Let's dive in!

Announcing the Ability to Like Posts

Up to this point, there has been no way to interact with the posts that I publish on this blog. The most recent release changes that. Readers can now like posts after reading them. In this post, we'll be discussing the feature, the high-level implementation, and how it could evolve in the future. Let's dive in!

My Software Development Podcast Lineup (2022)

Over the years podcasts have become integral to my daily routine. In this post, I'll provide an update on my current (2022) podcast lineup along with some details about why I find each podcast interesting or useful. Let's dive in!

Effective Data Fetching with React and SWR

Retrieving data is typically a straightforward task. Retrieving data in the most efficient manner can be more complex. This post will dive into how SWR can simplify the process of fetching data while also solving potentially complex problems like performance, caching, data store mutation, and more. Let's dive in!

Reflections on Time Management

The ability to effectively manage our time as software engineers can feel like a superpower. In this post, I am going to share my current time management strategy and go into a bit of depth on how I think it has benefited me throughout my career. My hope is to provide some insight into ideas you can try to improve your time management or to reinforce strategies that you are already implementing.…

Representing Logic Gates as Boolean Functions

Boolean functions and logic gates are at the heart of everything we do as software engineers. While it may not always be obvious or apparent, boolean expressions or the result of combining them form the building blocks for much of what we see and use today in technology. In this post, we'll be looking at how we can go from elementary logic gate definitions to boolean functions based on a few…