Blog

What I've learned over my career on how to ask for feedback.

When I left a previous job, I asked to have a meeting with one of the leaders of our engineering organization. In the years I worked there, I had been over looked several times for a position and no... Keep Reading

#leadership#software#self-improvement

Gatsby turned out to be too much. But React makes it easy to create your own static site generator.

A while back I rewrote my website using Gatsby which resulted in having to put the website content in the same GIT repository as the Gatsby code. Thus I had to be on a laptop to both write and publi... Keep Reading

#react#javascript

Using AWS Lambda to trigger long running jobs.

AWS Lambda has proven to be a powerful piece of infrastructure, capable of taking parts of our apps that were tied to a long running app server, and turn them into scalable, event driven, service or... Keep Reading

#javascript#lambda#aws#docker#ecs

Reflections on the role and importance of my grandfathers.

I can still hear the rumble of the tires running over the brick roads. That’s how we knew we were close. It’s hard to gauge time after 10 hours in a car. Once we felt that rumble, no book could hol... Keep Reading

#life#family

DynamoDB is a fully managed NoSQL document database provided by AWS

Two methods in DynamoDB allow us to fetch or write many items at once, `batchGetItem` and `batchWriteItem`. They allow us to fetch or write many items, across multiple tables, in a single call. But ... Keep Reading

#aws#dynamodb#javascript#databases

DynamoDB is a fully managed NoSQL document database provided by AWS

Most of the methods in DynamoDB take an object as their first parameter, which provides the necessary information to perform the requested operation. These options include things like the table name... Keep Reading

#aws#dynamodb#javascript#databases

Most things I've designed looked like I was an engineer. But over time things have improved!

In the last few months, I have spent some time off and on redesigning my website. It originally started as an exercise to practice doing some design work in Figma, and it quickly turned into a full-... Keep Reading

#design#gatsby#figma#engineering

Take some time to be reflective, see what life has taught you.

Today is my last day at Instructure. Over the last week, I have reflected many times on what I have learned through the last 5 years. The company has done a lot to enable me and my family to accompl... Keep Reading

#career#software development#instructure#canvas#learning management#education#learning

CSS in JS is all the rage, but how do you target nested components?

Using a pattern of CSS overrides in Emotion can enable you to target nested components within a React application. const componentStyles = css`...` <div css={componentStyles}> <MyCompone... Keep Reading

#javascript#react#software#css#emotion#web

Automatically generate component unique test IDs for React

An interesting approach to generating unique identifiers that can be used to target elements, during testing, in your React component render tree. <p data-testid={testIDs.paragraph}>It Works!</p... Keep Reading

#react#react native#testing#javascript

Who doesn't want to play Pacman and Galaga?

I've wanted to build an arcade machine for a long time. I used to go to an arcade in my mall where I grew up until it closed. Then as an adult, the only arcades worth going to were the nickel arcade... Keep Reading

#arcade#pacman#diy#maker#raspberry pi#emulators#galaga#electronics

Here are the 5 things from WWDC that impressed me the most

This last week was WWDC. A conference for software developers building on the range of Apple's platforms. I have been watching WWDC for several years now, and this one did not disappoint. Here are m... Keep Reading

#swift#apple#wwdc#swift ui#ios#iphone#mac#arkit

A build time draft state solution for markdown in gatsby.

After completing the rewrite of my personal website using gatsby, I started migrating all my content from my old website to this one. In the process, I remembered that Jekyll had a way of indicatin... Keep Reading

#react#javascript#frontend#gatsby

Doing what an engineer does best, rewriting.

My personal website originally started as a blog built with ghost, the blogging platform. It was simple, easy to use, and had a web-based authoring experience. But I began to feel its limitations in... Keep Reading

#react#gatsby#website

We often lose passion for hobbies and skills we develop. Relighting that passion is important and can be done.

Lately, I’ve struggled with being excited about coding projects and programming in general. I don’t know if I could pinpoint what exactly has made me feel this way. It isn’t burn-out. I’ve rarely be... Keep Reading

#motivation#projects

Working on my basement led to many experiences that have taught me important lessons

This week was my companies internal engineering conference where employees from engineering, product management, design, and program management all attended to hear our peers give talks about topics... Keep Reading

#renovation#construction#home#refactoring#building projects

After a lot of hard work and many long days, it's finally done.

We started this project in June with demolition work on the room. And over 6 months later, it is finally done. There were many long nights and a lot of frustration. But we are very happy with how it... Keep Reading

#renovation#construction#home

Ask yourself why you do things.

As the year draws to a close, the progress made toward goals and the accomplishments they have led to, have been on my mind. While setting my end of year goals several months back, I asked myself w... Keep Reading

#motivation#projects

Sorting multidimensional works with a few caveats

Recently at work, I've been doing some work on a project written in Ruby to enable an endpoint to paginate. Something we need for our mobile apps so we can make a list more performant. In the proces... Keep Reading

#ruby#array#sorting
Built in desk2017-11-29

A built-in desk for our basement living room

We needed to tear out the old closet in our basement living room because it was built improperly and was also aesthetically unpleasing. There were some exposed nails and screws on the inside as well... Keep Reading

#renovation#construction#home

Some tips for developing a Blender addon

Lately, I've gotten into the world of working on python scripts and addons in the open-source 3d software Blender. I've been learning 3d animation for a while now but this has been my first attempt ... Keep Reading

#blender#addon#python

Tablets before they were cool

While home on break from college, I decided that I was going to do another electronics project. I started looking around to see what others had done recently and noticed that everyone was making por... Keep Reading

#sega dreamcast#portable#electronics

What is CodePush and is it worth integrating into your React Native App

Last week at work was hack week, so I took the time to look into getting CodePush into our React Native app. It was pretty simple to get set up but after some discussion with the team, we started to... Keep Reading

#react native#react#codepush#git workflow#app release

Get a local module working with a React Native app for quick development

After building an app using React Native and using modules from NPM, you may decide that a component in your app could be used by others and you want to share it to NPM. While the typical "How to de... Keep Reading

#react#react native#npm#module

Next in the basement was the family room

The next room we wanted to tackle was the family room. Along with the usual poor texture, there was also a closet that was built very poorly, with 2x4s exposed on the outside of the drywall, as well... Keep Reading

#renovation#construction#home

How to get the dimensions of a view in React Native

A common pattern in React Native is changing the layout/sizes of views based on the size of its parent view. We can use React Native's implementation of flexbox to get us 90% of the way there. But t... Keep Reading

#react#react native#module

What's better than taking your Dreamcast on the go?

In high school, I found a website that really piqued my interest, benheck.com. Ben Heck is a hardware hacker who has done many projects involving video game consoles. I had been interested in moddin... Keep Reading

#sega dreamcast#portable#electronics
DOOM Review2017-05-22

My thoughts on the latest game in the long running DOOM universe

I must admit, besides this installment, the only other DOOM game I have played was the one released for the original XBOX. Despite that, I found this latest DOOM to far exceed my expectations. I ha... Keep Reading

#video games#pc gaming

Rendering large lists can quickly become very slow. Insert FlatList.

Coming from a primarily web front end and backend developer, I have learned to take some things for granted. On today’s modern hardware, I don't spend a ton of time thinking about how something migh... Keep Reading

#react#react native#scrollview#flatlist#performance#optimization

The second bedroom in our basement I renovated

Of all of the basement, this room had the worst texture on the walls. It looked like someone rolled mud onto the wall using a paint roller and then just left it. It was spiky in places and looked li... Keep Reading

#renovation#construction#home

Setting up a custom variable on your posts that makes it really easy to aggregate posts on a page

Jekyll makes it super easy to create pages and posts and then loop over them to render lists of them. There are a few commands that you can utilize in Liquid to narrow down that list for only render... Keep Reading

#jekyll#ruby

Need to assign a new variable with a subset of an array. Insert slicing.

While liquid has a way to ensure that a for loop will exit once it hits a certain iteration. You may need to slice an array of items outside of a for loop. After some time on Google, I couldn't find... Keep Reading

#liquid#ruby#jekyll

The first bedroom in our basement I renovated

This actually took place last year but I'm just now getting around to writing about it. When we bought our home, we recognized that the basement would need some work done on it to fix some mistakes ... Keep Reading

#renovation#construction#home
when.js2014-11-05

Ensure async script dependencies are available before use

I've been thinking about javascript library dependencies (I'm going to use library in place of library/framework so that I don't have to write it a bunch) in the browser lately and the async attribu... Keep Reading

#javascript#frontend#asynchronous

An explanation of a memoization implementation in swift

I've been learning swift lately in my IOS class and was introduced to closures. After working on the [memoize]blog/memoize) code in javascript a few days ago I realized that I could implement a simi... Keep Reading

#swift#ios#apple
Memoize2014-10-12

How memoizing works and an explanation of a javascript implementation

Being a dad there isn't much to make me prouder than to see my daughter trying to type on my computer so that she can be just like her daddy. So I decided to let her co-author this post with me (ev... Keep Reading

#javascript#frontend