Launching Ads Reporting at Facebook
For many months I and a few other engineers at Facebook have been building a new reporting tool for advertisers. This involved both a huge amount of work to build a fast, flexible backend that lets you...
View ArticleTesla Forum Search
Tesla Forum Search I like to read the forums on the teslamotors.com site, but a big problem they have is that there is no search feature. To solve this problem, I wrote a Chrome plugin to do the...
View ArticleURL & JSON Decoder in ReactJS
I was debugging some network traffic, and needed to decode a URL that contained JSON values. It looked like there was no good example readily discoverable on Google, so I threw together one using...
View ArticleMobile Tesla Motors forum
I like to keep up with discussions about the Tesla Model S in their online forum, but this is very difficult to do on a mobile device, since it it not optimized for that, and still focuses on a desktop...
View ArticleDark Legacy Comics, my first React Native app
I’ve been a fan of the React Native framework for a while, even ignoring the fact it’s built by my colleagues at Facebook. However since I spend my work days talking to engineers rather than coding...
View ArticleTroubleshooting setting up a React Native Android dev environment
React Native is awesome, but the docs leave something to be desired, particularly for Android (the RN team is working on it!). I recently wanted to get started on building an Android version of the...
View ArticleDark Legacy Comics for Android launched!
Over the past few months I have been building an app for a friend called Dark Legacy Comics in my spare time. I previously wrote about the iOS version I released, and now I’m very happy to say that...
View Articlefolder-backup-service: Consolidate your files
A common problem I’m come across is that of similar files being scattered around my computer by various services, that I wished were all located in the same place. For example, my iPad syncing photos...
View ArticleConsolidated everything on Chofter.com
Many years ago I wrote a search engine site called Chofter.com, that I thought was pretty cool. It pulled together search results from Google, Bing, Flickr and many other search services all into one...
View ArticleLooking back at WebOS
I recently found my old Palm Pre 3 (the unreleased on I received as a gift), and was amazed at how good it still felt. Here’s a quick video I made of some of it’s features, and one of my favourite apps...
View ArticleReactDependentScript – Load 3rd party scripts first
I’ve come up against a common problem when writing React components that depend on a 3rd party JS and CSS files. Do I load these 3rd party files every time, and pay the performance cost, or manually...
View ArticleBuilding a browser extension for iOS with React Native
For a side project I’m building an extension for Safari on iOS using React Native. This actually involves writing more Objective-C than I’m used to (I suck at Objective-C), so I wrote a tutorial to...
View ArticleUsing React types with Flow
A little tip for using React types, such as React.Node or React.Element with Flow. If you import React into a component like import React from ‘react’; then Flow will give you the error Cannot get...
View ArticleUseful git shortcuts
Over the years I’ve found myself following a near identical workflow with Git, and I finally got around to making shortcuts for these common tasks. You can find these all in a Github repo at...
View ArticleLightweight authentication and upload to Google Cloud
Github – https://github.com/shaneosullivan/gcloud-storage-json-upload NPM – https://www.npmjs.com/package/gcloud-storage-json-upload Authentication to the Google Cloud, as well as uploading to it, is...
View Articlesms-splitter – Intelligently split SMS messages
At Promise Engineering, we’ve open sourced our code that does intelligent SMS message splitting. It can do useful things like ensuring messages are split on a space character, and that template tokens...
View ArticleBlazing fast tests with Firebase
At Promise, we’ve built some good infrastructure to let us move fast, and I’ve written a post about one of the most effective: getting a 15X speedup in our testing framework. Read more at...
View ArticleFirebase strips all request cookies
A painfully wasteful discovery today was that, when you are using Firebase Functions to serve your code, it strips all cookies from the request object. The only hack around this is to use a specially...
View ArticleGitme.me brings joy to your code reviews
I recently shipped a fun Chrome extension called Gitmeme. It brings joy to your code reviews on Github by making is easy and fun to add Gifs and memes to your comments. Get it from https://gitme.me...
View ArticleSpecifying a default form submit button that works with Safari
When you have a HTML form with multiple submit buttons, if the user hits their Enter button, it’ll submit the form and pretend that the first submit button in the form was clicked. Given that the...
View Article