Blog Posts

Paginating batchWriteItem and batchGetItem in DynamoDBDecember 01, 2020

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, and . They allow us to fetch or write many items, across multiple tables, in a single call. But there are a few caveats we must take into consideration for each method, to ensure we operate on all items. batchGetItem and batchWriteItem There are two things to keep in mind when using and . They both have a max number of items…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 to operate against, the record you want to write to the database, or the index name that you want to query against. I often have to look up the names of the key names used for each of the parameters…Keep Reading

#aws#dynamodb#javascript#databases
Redesigning my WebsiteNovember 12, 2020

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-blown re-imagining of my website. As any great engineer knows, you haven’t built it right until you have rewritten it 3 or 4 times. And while I did not replace the underlying engine of my website this…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 accomplish many goals. We were able to move back to Vermont to be near my wife’s family, we were able to get debt free besides our mortgage, I gained invaluable experience working on many different projects…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?

TL;DR Using a pattern of CSS overrides in Emotion can enable you to target nested components within a React application. Problem It is a common pattern to use CSS to target elements nested within another element, in order to only change the appearance of the element within a certain context. Using a CSS in JS solution such as Emotion makes this difficult because you end up with generated class…Keep Reading

#javascript#react#software#css#emotion#web
Generating test IDsNovember 19, 2019

Automatically generate component unique test IDs for React

TL;DR An interesting approach to generating unique identifiers that can be used to target elements, during testing, in your React component render tree. Preface Because React Native does not have any concept of class names or ids, you use to find components in your render tree while testing. When I was working more in React Native, we would heavily use the prop in our tests to accurately target…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 arcades in order to save your wallet. So I decided to build my own arcade machine using a Raspberry Pi. I did this project back in 2017 when my wife and kids were out of town. I don’t have many pictures, but…Keep Reading

#arcade#pacman#diy#maker#raspberry-pi#emulators#galaga#electronics
WWDC 2019 favoritesJune 05, 2019

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 my 5 favorite announcements from WWDC 2019 SwiftUI Sign In With Apple ARKit People Occlusion ARKit Motion Capture Catalyst SwiftUI The first has to be SwiftUI. Coming from a web background, doing React…Keep Reading

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

A build time draft state solution for markdown in gatsby.

The problem 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 indicating that a post was a draft, and thus should not be included in the final built version of the website, but would still show up while developing locally. I went searching for a similar way to…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 terms of customizing my themes as well as adding other sections, such as projects, or books I’ve read. I switched to using jekyll and did a fresh rewrite. I chose a theme and customized it to work the…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 been doing any programming outside of work. So far the only identifiable reason I’ve landed on is that I’ve not managed to complete my most recent programming projects because their scope is fairly large…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 ranging from programming paradigms to soft skills such as how to manage all that is required of you during the day. As part of this conference, there was a time period where anyone attending could…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 turned out. I need to give a big thanks to my dad for helping me with the wainscoting and demolition as well as my brother in law (<- check out his work it’s awesome) for helping me figure out how to…Keep Reading

#renovation#construction#home
Doing things for the whyDecember 08, 2017

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 what I wanted to accomplish, and how to go about doing it. Most of the goals revolved around the skills and habits I’ve needed to work on for a long time but haven’t. By setting definite goals around…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 process of making this work, I ran into a problem with trying to sort a multi-dimensional array. Ruby will look at each index in the nested arrays and compare their indexes to determine which array should…Keep Reading

#ruby#array#sorting
Built in deskNovember 29, 2017

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 as 2x4s on the outside of the drywall for the baseboard and trim to attach to. After the issues we had with the closet on the second bedroom, I knew this closet was also going to be a problem and…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 at writing any code that worked with Blender. In doing so I came across a few things that cause a little bit of pain at first but figured out ways to relieve the pain. So here are a few tips that I came…Keep Reading

#blender#addon#python
Dreamcast TabletNovember 10, 2017

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 portable versions, but no one was making tablets. Now at this point tablets as we know them weren’t a thing. The only tablets that were around were ones that were really laptops that their screens could…Keep Reading

#sega-dreamcast#portable#electronics
CodePush, is it worth it?November 03, 2017

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 question whether or not CodePush was worth the added complexity. So what is CodePush? CodePush is a service provided by Microsoft for Cordova and React Native apps, that allows you to push out new…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 deploy a JS module to NPM” will get you most of the way there, React Native has a few caveats that need to be addressed. Let’s start by finding a component in our app that can be pulled out into it’s own…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 as several areas where the ceiling was dropped to accommodate ductwork, lights, and pipes. We wanted to try and get rid of these weird dropped ceiling areas and find a way to cover whatever was…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 there are just some layouts that flexbox just has a hard time with. In the app I am building at work, there are two common instances where this is the case. When an absolutely positioned view needs to…Keep Reading

#react#react-native#module
Dreamcast PortableJune 08, 2017

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 modding my Xbox and had previously thought about how cool it would be to take apart a game console mount all the parts on a wall. So when I found Ben Heck I was hooked immediately. I never had the money or…Keep Reading

#sega-dreamcast#portable#electronics
DOOM ReviewMay 22, 2017

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 have primarily been gaming on my PC lately, and when the game first started, I was already impressed. My PC has an i7-6700k with a GTX-1080 GPU. I run a DELL 1440p 144hz monitor. As I do with most games…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 might result in slow render performance, since that usually isn’t an issue. But now that I’ve been doing a lot of mobile development with React Native, some patterns have come around to bite me primarily…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 like choppy seas in others. I had to jump on this bedroom sooner than I had anticipated because we had some water damage happen in this room. You can also see in that picture just how intense the texture…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 rendering a subset of posts or pages. Those are and statements. The statement lets you create new variables that can be referenced on that page as well as any include that happens on that page. And the…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 any straight forward way of getting a subset of an array in liquid. I came across a site with some unofficial documentation about strings in liquid. It said it was possible to slice strings. Knowing…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 as well as poorly done work. The biggest problem was the walls. The texture on the walls varied from bad to, “did they just roll mud on the wall here?” To give you an idea of what that looked like take…Keep Reading

#renovation#construction#home
when.jsNovember 05, 2014

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 attribute on script tags. Script tags are render-blocking so if you required a library for your web app, all you needed to do was ensure that the library include was before your script include that uses the…Keep Reading

#javascript#frontend#asynchronous
Memoize in SwiftOctober 13, 2014

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 memoizeblog/memoize) code in javascript a few days ago I realized that I could implement a similar solution in swift. There are a few caveats though because of differences in the language and flexibility. So here is the memoize function in swift: So here is an explanation of the code. If you are…Keep Reading

#swift#ios#apple
MemoizeOctober 12, 2014

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 (even though she can’t even speak). This last week was the career fair at BYU-Idaho where many companies, mostly from the surrounding area and Utah, came to recruit the best we have to offer. I interviewed…Keep Reading

#javascript#frontend

© Matthew Sessions 2020