Moonsault Blog

Recent Posts:

The Problem with ‘Gathering Requirements’

As I was reading this post by UX Legend, Jared Spool, I found myself nodding in agreement hard enough that neck injury seemed like a real possibility. Seriously, the article is a gem. You should go read it now. The article highlights a problem I see again and again in... keep reading

Using AWS Rekognition to Search Instagram Posts by Photo

Goal: To search my Instagram feed by my (beautiful) face. Technology used: AWS Rekognition, AWS SNS, AWS Lambda, Serverless, Express, Heroku Questions: If you have any, [email protected] You can search your Instagram account by your (beautiful) face at faces.moonsault.co. Check out the code on github The problem is pretty straight... keep reading

Deleting Github History

I recently wanted to take a project from private to public, but I wasn’t real sure what was in the history. I think I committed a few sensitive keys during development. So, I looked up how to nuke your github history and ran across this stackoverflow post that I thought... keep reading

Backing a static webpage with AWS Lambda

I wanted to illustrate how to use AWS Lambda on a single page “app” with no backend server. To illustrate this point I came up with a contrived example that would send instagram photos to a phone number. Demo Code THIS IS OUT OF DATE, DON’T USE The Idea Single... keep reading

UX Work: Navigation Redesign

The image above shows the results of some UX work we recently completed for AscentCRM, a redesign of the navigation of their application. The goals of the project were to simplify the navigation and future proof it a bit. This should lower their support costs and make it easier for... keep reading

Integrating AWS Lambda into a static site

I took some time this last weekend to dig into AWS Lambda. Simply put, Lambda is a way to run code in the AWS cloud without knowing/caring about a server. Lambda is responsive to events in the AWS ecosystem (S3 uploads, SQS messages, ad-hoc execution, etc.). I focused looking at... keep reading

Save time and money building your app

I have a 3 year old son and we play blocks together. We build firehouses that dinosaurs live in. We build the tallest towers we can, just so a flying truck can knock it over. He likes spending time building and seeing his ideas come to life. I know something... keep reading

Lorem Ipsum is the work of the Devil

If you have worked with any kind of designer, chances are you have seen you fair share of “Lorem ipsum.” This bit of latin text is the go to when you need to mock up a design. It is used when the design work is being done before the “content”... keep reading

Testing with Cucumber and PhantomJS

If you do automated testing “right” it’s a game to make the test go from green to red in as few steps as possible. If you do automated testing “wrong”, then you aren’t doing it at all. If you are doing automated testing like me, your doing a little TDD,... keep reading

Masking images with SVG

I went through a bunch of trouble trying to figure out how to create a crossbrowser solution to making images with SVG. Initially I looked into css3 clipping and masking properties which are beautify and modern solutions. The catchall solution is actually embedding the image and a clip path in... keep reading

Leveraging Mongo to distribute socket.io

Clustering socket.io can be a bit of a mess. Each server (and in node’s case each process on the server) has it’s own pool of socket.io connections that are connected to clients. Keeping two processes in sync to keep everything real-time can be a bit of a scaling headache. This... keep reading

Build vs. Buy

TL;DR; If you are really wrestling with a build/buy decision then you should probably buy. If there is a decent option out there, go out and use it until either one of two things will happen. One, you love it and you never have to build that thing and you... keep reading