All Posts
-
Teaching a 1-credit CS course at Cornell Tech
In 2021, I joined Cornell Tech as a Visiting Instructor, to trial out a class called CS 5356 Building Startup Systems. It started off as a 1-credit course that met for 1:15 hours a week. The goal of...
read article -
Handling async errors with Axios in React
Have you ever been stuck on what looks like an empty page, and you ask yourself, "Am I supposed to be seeing something yet?", only for it to appear like 30 seconds later? Or maybe you've...
read article -
5 free coding games where you write javascript to play
If you're itching to write some code, but you can't stand the thought of another MEAN, MERN, or PERN stack, here's a few resources to help you explore javascript using a slightly different approach -...
read article -
Passwordless sign-in with Google One Tap for Web
I sign in with my Google account everywhere I can to avoid having yet-another-password on another random website. I've been seeing an upgraded experience on some sites (maybe I'm just noticing now)...
read article -
Talking to people - the hard part of being a tech lead
Today, I stared at a to-do on my Trello board saying "schedule 1-1s with your team." Its been on my list for 2 weeks now, and even though I see it every day, I keep putting it off. I...
read article -
How to handle API errors in your web app using axios
Note: If you want to see how to handle these in React, take a look at my new post on that here - handling async errors with axios in react. Whenever you're making a backend API call with axios, you...
read article -
Creating a simple npm library to use in and out of the browser
Sharing some reusable javascript is hard - even moreso if you're trying to share between node and the browser. I'm just trying to share some 10 lines of code. Why is this taking me more than a day to...
read article -
Avoiding burnout as a new tech lead
Does this sound familiar? The best dev on the team is promoted to being a tech lead, despite not having any management experience. That dev then all of a sudden has to deal with: Angela, the senior...
read article -
Using Angular innerHtml to display user-generated content without sacrificing security
Why do some of your styles no longer work when using [innerHtml] to show some HTML content? Angular comes with a built-in html sanitizer DomSanitizer, as a security feature, thats used whenever you...
read article -
Setting up automatic failover for your static websites hosted on S3
Up until late last year, you couldn't set up automatic failover in CloudFront to look at a different bucket. You could only have one Primary origin at a time, which meant that you needed additional...
read article -
Create your own short link redirects using CloudFront + S3
Get branded short links under your own domain for dirt-cheap by self-hosting it on AWS using CloudFront + S3. It's a no-code server-less solution to get redirects on the cheap and in this guide, I'll...
read article -
That time I needed to create 20k short links, and how I did it on AWS
This problem landed on my lap awhile ago, and I've seen it come up time and time again so I wanted to share how we went about it. Our marketing team was submitting one of our products for a review for...
read article -
Adding Google Sign-in to your webapp - a React example
[embed]https://www.youtube.com/watch?v=iND-Epl8nz0[/embed] *Check out the video to see me follow along with the code. In this next part of the series, I'll be walking you through an implementation of...
read article -
Adding Google Sign-in to your webapp - using the JS library
In the first part of the series, we decided to use the Google Sign-In for websites library to allow you to show some info about the user using javascript. In that part, we use the default Google...
read article -
Adding Google Sign-in to your webapp - Hello World
[embed]https://youtu.be/KwOmVpd1DUA[/embed] *Check out the video to see me follow along with the code. Gotten stuck in a rabbit hole figuring out how to add "Log In with Google" to your web...
read article -
Rerunning test suites with webdriverio and a failed suite reporter
UI browser tests can be flaky, and it can be really frustrating to have to re-run a test suite because 1/50 tests failed and most likely, it'll work on the next run. webdriverio offers retries but...
read article -
Running webdriverio tests using headless chrome in Docker
Using headless chrome for your UI tests works great out of the box on your laptop, but it won’t work out of the box when you're trying to run your tests in Docker. One recent work project was getting...
read article -
Debugging webdriverio tests with VSCode
https://youtu.be/66E7y12GQaE ^ Update - check out my video walkthrough where I follow along with the post and show you how I set it up. https://youtu.be/wvvIz60DNp4 ^ EDIT 10/2019 – I’ve published a...
read article -
Can I use jest to run webdriverio tests?
Can I use jest to run webdriverio tests? You have a web app and you're using jest for unit testing your components. You're checking out webdriverio to run your UI tests in javascript. Webdriverio...
read article -
9 books that helped me navigate my first time being a tech-lead
The tech lead was moving to another team for a long-term assignment, and I took over as the engineering manager/team lead. From the outside, the tech lead's job seemed doable, but I quickly realized I...
read article -
3 things you might see in your logs once your site is public
You've finished deploying your website to its new domain. You start to see your normal user traffic, but then you also notice funny patterns in your access logs. Here's a few examples of things you...
read article -
Writing quick and dirty scripts using bash
You have a few lines you've been typing in your shell, and you'd like to just run it the way you run any other CLI including options. If you're writing a shell script, here's a few tips to help you...
read article -
WebdriverIO tips: element wrapped in div is not clickable
Have you run into an error saying "Element is not clickable at point" when you're trying to click a button? You might be seeing this if you have a spinner that appears on your buttons or its...
read article -
WebdriverIO tips: finding your errors when using waitUntil
If you're loading a page and want to make sure that some elements are showing up before advancing, you'd be inclined to use browser.waitUntil(). While it does do the job, it holds onto the errors...
read article -
WebdriverIO tips: get text from a list of items
There's a few ways to go about getting text from a list of elements, but there's a gotcha with webdriverIO that can make your tests a lot flakier. The easiest way should be to: // get some of the...
read article -
WebdriverIO tips: using browser.debug() to help debug your tests
Ever want to stop your Selenium tests halfway and try to see what your tests are seeing? Using .debug() helps but be aware of your test timeouts & context around your code. EDIT 10/2019 - I've...
read article -
WebdriverIO tips: using $$(selector) vs browser.elements(selector)
Last week, I started working on integrating a test suite previously built using Nightwatch, and making it work with webdriverIO. While I love all of webdriverIO's features like synchronous code when...
read article -
Managing DB users in Postgres & MySQL
A guide for when you have to add/remove/update/and/20/other/things in both mysql & postgres databases, and you wind up getting lost trying to do seemingly simple things. I've been keeping a...
read article -
A few lessons learned using AWS Parameter Store
At my current gig, we've got 50+ services, ~6+ environments, and a rough count of 3.5k parameters across our environments. We used to use Chef::EncryptedDataBags when we used chef-server. A few years...
read article -
Managing passwords and other secrets in a bigger team
A few years ago, I was helping a company get its secrets in order. There were secrets stored in Google Docs, in Chef, in git, in an OSX image stored in git, in email, in a file manually placed in a...
read article -
4 things I look for in a senior engineer
As a follow up from my last post about things I look for when hiring a junior DevOps engineer - these are the things I'm looking for out of a senior engineer. It all boils down to what I consider the...
read article -
Simple automated testing for a static website with Nightwatch.js
If you're following along, in my previous post, i was building a blog with gatsby. Now that I've got some changes made to my blog, I want to make sure that the blog is loading at least and click...
read article -
4 things I'm looking for when hiring a junior DevOps engineer
You've been hearing about DevOps as a career path, and you're looking to to break into the field as a Jr DevOps engineer, but you don't quite know if you're qualified for it yet. You might be a recent...
read article -
Is it worth the money for a beginner to play around with deploying apps on hosts like AWS, DigitalOcean?
Yes! Absolutely. It'll be the only way for you to really know whats going on behind the scenes. When I got started, my first few expenses of my tech career were a domain, a private non-gmail email...
read article -
Building a blog with Gatsby
Create a blog using HTML and JS In this section, we're going to set up our new Gatsby project as a blog, add a few posts, and get a blog working locally. Pre-requisites: node v8 npm git You should...
read article -
Troubleshooting SSL issues
This is a pretty typical nightmare scenario. An engineer suddenly quit and I was part of a new team that was maintaining a brittle system with little documentation. Someone pings me and says, hey this...
read article -
Testing your cookbooks with test-kitchen + chefspec + serverspec, part 2
Cookbooks can also get the same red, green, refactor loop going the same way you would with a simple application. It's not all roses though because the loop itself takes a few minutes at a time. Even...
read article -
Getting started with chef cookbooks as an app dev with test-kitchen + docker, part 1
How do you get started with chef cookbooks as an app dev? My first time approaching Chef was after doing Android for about 2 years. Whether you're working on the front-end or backend or even on...
read article -
Gotcha's with Cloudfront + S3 Architecture
Right now, we have a website hosted in an S3 bucket using CloudFront defined in terraform running with automated tests. There's a few catches with using this setup so we'll go into what these issues...
read article -
Creating your serverless static website in terraform, part 2
Let's review the architecture we put together in Part 1. Check out Part 1 a main website that is hosted at a www. subdomain an html/js/css app that is hosted in an S3 bucket a cloudfront distribution...
read article -
Creating a serverless static website, part 1
Creating a serverless static website What's the problem? I want to deploy a plain HTML/CSS/JS website with the minimal amount of fuss. I'm going to be using it for a simple web-app so I want to make...
read article