Important Bits

Adam Sullovey

Written by Adam Sullovey, powered by Gatsby.
Find me on codepen, github, or at Toronto meetups.

Ramda: propOr vs prop + defaultTo are not the same

November 18, 2018

I thought these two lines would be equivalent, but they aren’t The goal of these lines to look up a property on an object, and provide a…

My dynamodb-admin fork (GUI for DynamoDB local)

July 02, 2018

I found a browser-based GUI to work with my local DynamoDB instance during development: dynamodb-admin by Aaron Shafovaloff . It’s the…

Proverb Permutations

May 20, 2018

Let’s use rxjs just for fun. Maybe there’s a better operator for this than . Rmember to use instead of . will not split in the array…

Using AWS CLI tools with MFA enabled on your account

May 18, 2018

Say your all-powerful and have lost their AWS CLI powers because your Amazon Web Services account is now secured with multi-factor…

Catch This Javascript Error if You Can

April 08, 2018

A human I know came across code equivalent to this: and asked Can we catch this rejected promise without changing ? My first thought was…

Node.js, "too many open files", and ulimit

March 06, 2018

Let’s find out what this error really means and how to fix it. Your WebSocket-enabled Node.js backend suddenly logged out this error: Here’s…

Stabilizing GoPro Video with FFmpeg and vid.stab

February 17, 2018

Here are commands to run vid.stab to stabilize shakey GoPro videos. vid.stab is free software that is integrated into ffmpeg , an open…

Error Boundaries, Squashing HOCs, and Realm @ React Toronto Meetup

September 28, 2017

Pivotal Labs hosted the React Toronto Meetup this month. Rohan Nair talked about error boundaries in React 16 which can stop an…

Testing in Different Contexts @ Dev West Meetup

September 28, 2017

Flipp hosted and sponsored this Dev West Meetup . Gabriel Loo talked about his approaches to testing for the 3 different modes he sees…

From WordPress to Hugo

September 04, 2017

Why? So I can move from shared hosting to static file hosting with Netlify or Firebase and not have to maintain a WordPress site. How…

E2E testing, Infrastructure Testing @ ExploreTech Meetup

August 28, 2017

Freshbooks hosted us. Andrew Kirkpatrick from Unata talked about behaviour driven development & testing. brief history of testing year…

Wealthsimple, navigation options, Sketch @ React Native Toronto Meetup

July 20, 2017

WealthSimple hosted us. I didn ’ t write down much. Peter Kruzlics @ WealthSimple showed React Native is working well in their mobile apps…

Layered Approach to Security, Serverless backends @ Toronto AWS Meetup

July 03, 2017

Serverless Backends w/AWS Lambda & API Gateway Frank and Jay from Anomaly Innovations talked about their experiences with serverless…

Getting Hired & Salary Negotiations @ ExploreTechTO Meetup

March 03, 2017

TribalScale hosted us for Let ’ s Make A Deal: Insiders’ perspectives on Salary Negotiations in Tech Getting hired & negotiating a salary…

Accessibility, Physical Installations @ CreateInTO Meetup

February 28, 2017

Accessibility with Alison Walden slides blind and low vision internet users in US are almost as numerous as regular Canadian internet users…

Unity3D, VS Code, OS X and ‘The reference assemblies for framework “.NETFramework,Version=v3.5” were not found’ error

February 11, 2017

Here’s how I fixed this error. It happened to me in this environment: OS X 10.10.5 Unity 5.6.0b7 VSCode 1.9.1 with C# extension 1.7.0 I had…

Ember.js night @ Full Stack Toronto

February 10, 2017

I think the location is a secret. Jasna gave a live-coded demo of using Ember to make requests to a RESTful API to do CRUD operations and…

Scrolling performance, Angular 2 Optimizations @ Toronto Web Performance Group Meetup

February 08, 2017

We met at Shopify ‘ s office. David Bokan from the Google Chrome team in Waterloo talked about scrolling performance in Google Chrome…

Host your own Git LFS with node-lfs-s3

February 08, 2017

Want to use Git LFS without a Git-as-a-Service provider like GitHub or BitBucket? Stuff you will need AWS S3 to store files at a low cost…

Using Nodejs to record microphone input to mp3 files on Ubuntu

October 30, 2016

https://ubuntuforums.org/archive/index.php/t-224748.html was very helpful. Install lame mp3 encoder if you don ’ t have it. You should…

ffmpeg: concatenating with image sequences and audio

October 30, 2016

Goal Assemble multiple image sequences and audio files into 1 video file Assumptions all my images in image sequences are the same…

CSS & Spritesheet generators

May 13, 2016

I like tools that let me drag and drop a bunch of images into my browser, and generate CSS & a single image for me to integrate into my…

Deploying apps from circleci 1.0 to Firebase hosting

February 28, 2016

September 2017 update : CircleCI 2.0’s config file format is different than what I describe here which is CircleCI’s 1.0 config format. The…

Firebase Presentation Outline

Invalid date

Who? Firebase is the name of a company, a platform, and a database the company makes a platform which helps developers build realtime apps…

When Bower install doesn’t work

October 30, 2015

If you have a bower.json file, and running from the same directory appears to download packages, but not actually put them in your project…

Reusing an ES6 iterator? Not quite

October 02, 2015

One you ’ ve called on an array iterator enough times to make it return the last item with the property set to true, you can ’ t make it…

Recording & compressing short screencasts on Windows

September 28, 2015

Tools I use CamStudio with the lossless codec for screen recording ffmpeg a scripting environment with shell access (I chose node.js ) for…

Making shopify.com fast @ TO Web Performance Group Meetup

September 26, 2015

Bryson Gilbert presented techniques his team uses on Shopify ’ s main marketing site, shopify.com Techniques 10ms goal for generating…

Fixing SSL errors on Android Chrome with RapidSSL

September 10, 2015

Your ‘ Order: xxxxxxx Complete ’ email from RapidSSL includes links to a bunch of intermediate SSL certificates . Will you install the…

Generating directory structure ASCII art on Windows

August 04, 2015

Don ’ t feel left out Windows users, you have a command too! Tree documentation is here . I found I couldn ’ t use it from Git bash, but…

Migrating imakewebsites.ca to Hexo

August 04, 2015

Today I migrated http://imakewebsites.ca from a home-made PHP and MySQL CMS to the Hexo static blogging engine. Moving content over was…

Compile nginx with RTMP support on Raspbian

August 02, 2015

Here ’ s a bash script. Put this into a new file, ~/install-nginx-rtmp.sh: execute it like this: Notice it installs nginx from the package…

Remotely viewing Raspberry Pi Cams

July 28, 2015

If you ’ ve mounted where your Raspberry Pi and camera in a place where you can ’ t plug in a screen and keyboard, you ’ ll want an easy way…

Fixing incorrect Raspberry Pi Cam auto exposure

July 28, 2015

Are your pictures coming out too bright or dark under reasonable lighting conditions? Check your timeout value (the parameters in . I…

Fuzzing compilers @ JS Tech Talk Night

May 22, 2015

ever try fuzzing a compiler? ever try generating random programs? transpilers are fun coffeescript lets write JS that you usually can…

May 2015 JS Hack Night

May 17, 2015

People talked about and hacked Task Runners. Grunt isn ’ t dead even though no releases since 0.4.5 a year ago . Current work is slow and…

307 HTTP status code?

May 05, 2015

Are you seeing 307 status codes in your network traffic inspector while debugging your site lately and feeling confused? Ask yourself: Have…

using Compass during `grunt build` on Heroku with Strider CD

April 21, 2015

Long story short: my process requires the ruby gem Compass StriderCD runs my build process on a Heroku dyno with a multi-stack…

rsync files from vagrant box to AWS server

April 16, 2015

I just transferred a directory full of audio files that I didn ’ t want to check into a project ’ s Git repository with this command: notes…

WordPress to Hexo?

March 27, 2015

Matias presented a static blog generator called Hexo with some Angular addons to the AngularJS Meetup . I liked what I saw, so I set up…

Bookmarklets & ImageMagick @ Toronto Web Performance Meetup

March 19, 2015

EventMobi hosted us . A Performance Bookmarklet by @micmro slides and code Check these out: DOM Monster does DOM analysis Perfmap…

NodeJS for Distributed Systems, Webpack, Angular 2 @ JS Meetup

March 16, 2015

Shopify hosted us Why use nodejs to build distributed systems? by Gord Tanner slides video js was event based from the start…

The Building Things Edition @ CreateInTO

February 28, 2015

Headless.io by Patrick Schroen ever stream music from your home NAS to speakers in bar via a cellphone-tethered laptop? Patrick Schroen…

WB Lift Monitor with Kibana and ElasticSearch

February 24, 2015

View source code on GitHub I decided to try loading data from https://secure.whistlerblackcomb.com/ls/lifts.aspx into ElasticSearch , and…

ngToronto Angular Meetup notes – January 2015

February 04, 2015

Promise-based architecture by Yuri slides think of promises as wrappers around uncertain results promises separate defining a request and…

Javascript in 2015 video

January 31, 2015

This demo introduces lots of ES6 features while actually building something. I like it! Thoughts ES6 Modules , jspm , and System.js will…

Building APIs with StrongLoop @ NodeJS Meetup

January 28, 2015

StrongLoop presented their tools for working with REST APIs. Slides are here , and my notes will soon be outdated because the platform is…

Standing desk in a bookcase

January 23, 2015

Got a bookcase with adjustable shelves? Want to see what using a standing desk feels like? Here ’ s an inexpensive way to try it out. You…

History of timesheets & hourly billing

January 21, 2015

In the 1800s, Engineer & Manager Frederick Taylor started making detailed records of how long it took employees to manufacture steel in…

Adobe AIR desktop apps, expiring signing certificates, and the developer

January 06, 2015

Is the app timestamped? Here is the important bit about timestamping from Adobe ’ s ‘ Digitally signing an AIR file ’ documentation When…

10 minutes with Ghost blogging platform: looks promising!

December 16, 2014

WordPress ’ performance frustrates me sometimes, and Ghost received some good attention a while back. Time to take a look at Ghost! First…

WordPress on Heroku with HHVM

December 16, 2014

How to Follow https://github.com/xyu/heroku-wp , these instructions work well When generating keys, I substituted with something else…

Docker for Metrics, Sails.js @ NodeJS Meetup

December 16, 2014

60+ of us met at One Eleven Richmond for 3 presentations and chatting Using Docker for Metrics Dashboards during development Mario from…

Javascript bind vs call

December 12, 2014

and take same arguments, but do different things. simply allows you to execute a function in a specific scope and returns the result of…

Why to version your composer.lock file

December 10, 2014

Composer.json often lists dependencies with version numbers that can point to a bunch of potential packages. Lines like this: When is run…

Interview Cake Problem #11

December 10, 2014

I was on the right track with breaking down the problem. I was ready to start looking for sequences of matching cards across the deck and…

FSTOCO – November 2014 Conference thoughts

December 03, 2014

The Full Stack Toronto conference had a great vibe and useful talks. 2 weeks later, here are some themes that stick out in my mind: Agile…

How not to die moving from Angular 1.x to 2 + ES6 @ ngToronto Meetup

November 29, 2014

Shopify hosted ngToronto How not to die moving from Angular 1.x to 2 with Nick and Yuri from Rangle.io J2EE, Rails, Python…

Challenge: Build a HTML/CSS/JS slideshow without libraries/frameworks/docs? OK!

November 27, 2014

I got most of the way. I needed MDN for checking the usage of: and css transition syntax The hard parts were off-by-1 errors and order of…

Interview Cake Problem #9

November 25, 2014

I was stuck until the hint suggested swapping values was a legit way to solve the problem. I used JS and Mocha again, and my solution…

Cobi & Taplytics @ BitMaker Labs Group Meetup

November 18, 2014

Cobi Druxerman from Taplytics presented his company ’ s software and answered questions about startups, products, and A/B testing at…

Shrinking Images @ Toronto Web Performance Meetup

November 18, 2014

@HenriHelvetica from Forge Media + Design presented “ The Biggest Loser: (Web) Images Edition ” , thoughts and techniques for shrinking…

Interview Cake Problem #8

November 18, 2014

I signed up for Interview Cake and got my first problem as promised. I first tried to solve it using some function chaining with lodash…

Scripting languages on my mind

November 09, 2014

It ’ s late 2014. Here ’ s all the scripting languages I ’ ve tried/thought of trying out this year for backend web development. PHP I…

New tool: banner-ad-delivery-cleanup

November 09, 2014

I got tired of manually copying and pasting banner ad .swf files and backup images from my working directories into a deliverable .zip file…

Evolving a Machine Learning & Analytics Platform in Python @ Full Stack Toronto Meetup

October 21, 2014

Our stack is a Python back-end with AngularJS for the front-end. We started with a pretty simple Django app using MySQL with scikit-learn…

Building Unbreakable Software @ Toronto AWS Meetup

September 12, 2014

We met at The Score ‘ s office, and Nate Smith talked about ways to structure AWS-hosted applications for availability and consistency…

Acronyms

September 11, 2014

I see these over and over again in debates on Hacker News. Time to write ’ m down! ACID Principle 4 letters describing transactions in a…

Upgraded to WordPress 4 and Independent Publisher 1.6

September 08, 2014

everything still works!

4K monitor thoughts

September 08, 2014

I stared into a Samsung U28D590D (who names these products?). It was nice, but not mind blowing. Is it for me? Well, none of my current…

Sometimes project maintainers do boring stuff

September 08, 2014

Taylor Otwell started Laravel , an influential PHP project with a fast growing community. It has its own forum , job bulletin board , and…

Buying fancy ergonomic chairs – new vs used

September 08, 2014

You ’ ve decided you want that SAYL, Embody, or Zody. Now how much do you want to spend? Lots of people blog about picking up Aerons for…

Continuous Delivery @ Full Stack Toronto Meetup

July 29, 2014

Nick and Xiyang will discuss continuous delivery on a full-stack JavaScript stack and how today ’ s DevOps and Test-Driven-Development…

Counter balanced sit/stand desks

July 29, 2014

There are 3 ways of moving height adjustable desks up and down: Hand cranks Electric power Counter balances Hand cranks aren ’ t for lazy…

Google Page Speed, clean front end code @ Toronto Web Performance Meetup

July 09, 2014

Organized by Barbara Bermes . Hosted at EventMobi . Blake Crosby talked about Google Page Speed. The Insights web application is good…

HumanScale M2 and Ergotron LX Monitor arms

July 07, 2014

Let’s compare monitor arms! I ’ ve been using a HumanScale M2 for 2 months now, and just purchased an Ergotron LX desk mount arm with a…

Social Product Design Tips from Facebook @ Achievers Tech Talks

June 03, 2014

Achievers ‘ Social Product Design Tips from Facebook ’ @ achievers.com These are my long lost notes from the presentation. They are…

The Bowling Game Kata in nodejs

April 27, 2014

I had to ride a train with sketchy internet connection this week, which meant it was finally time to try Bob Martin ’ s Bowling Game Kata…

Chairs for programmers

April 27, 2014

I need a new chair. My current no-name mesh back chair has these problems: worn out seat no longer provides cushioning reclining lifts my…

Converting a static site from Middleman to Yeoman

April 15, 2014

This one time I inherited a static website built with Middleman . Middleman has the best of intentions, but I couldn ’ t get it running…

Where to find Global Browser usage statistics

April 11, 2014

This one time I had to provide guidance on which web browsers to support on a future website. That means I need graphs and things…

Mongo Stuff @ MongoDB meetup

February 14, 2014

candy.IO Entuit Kevin Cearns talks about what do when things go wrong Diagnostics Each process has its own log, check each log Tools Know…

January 2014 - Toronto MongoDB Meetup

February 10, 2014

Hosted by Kevin Cearns and Nick Boccone at Bento Miso . Paul Oude-Reimerink and Chad Tindel from MongoDB Inc . Walked through resources…

Unboxing the Wagon – peeking at code

January 26, 2014

A media buy on the Weather Channel website caught my eye. I want to see what makes http://www.thewagonunboxed.com/ tick. Meta Tags Nice to…

Things I wish I knew about Node + Express before making my first website with it

January 04, 2014

Develop with nodemon , deploy with forever nodemon vs forever? More like nodemon AND forever! nodemon is live reload for Node apps. When…

Jan 1, 2014 WordPress Attack

January 03, 2014

Summary I site I monitor saw 1185 requests from 94.138.x.x between Jan 01 05:32:41 & 06:21:09 UTC looking for non existent pages. This site…

NodeJS setup tips for DevOps

January 03, 2014

These are steps I took to help secure a NodeJS web application and keep socket.io running reliably on Ubuntu 12.04 on an Amazon EC2 server…

How to run composer.phar on Dreamhost

October 06, 2013

Dreamhost ’ s shared hosting offers up some challenges to get Composer ’ s composer.phar running. Even if your websites are setup to use…

Make localizing apps easier

September 15, 2013

Here ’ s the steps: Take inventory of text Do an inventory of all your files, and see where text lives. Is it baked into images? Is it…

Things I wish I knew about Android before starting my first Android app

August 29, 2013

Activities lose state when the screen rotates, but Views don ’ t All those member variables/fields you set while a user interacts with an…

NPM, Vagrant, Linux on Windows, shared directories and –no-bin-links

August 27, 2013

This is a permissions issue. Linux, running in virtual machine, has tried to make a directory in the Windows file system and been denied…

W3 Total Cache makes blank pages after WordPress upgrade fix

August 03, 2013

Here ’ s the first fix I always try after W3 Total Cache starts serving blank white pages when I browse my site after updating WordPress…

Installing reddit on a Vagrant Ubuntu 12.04 box

June 17, 2013

These instructions assume you have some experience with Vagrant and using Ubuntu from the command line. It should take less than 20 minutes…

Policy file for WordPress W3TC and S3-based CDNs

June 06, 2013

If you are using S3 as a CDN, you will need to give WordPress ’ W3TC plugin access to your AWS account so it can upload files to S3 on…

Fast way to get Android App Screenshots (4.0 and up) off your device's storage

June 04, 2013

Start AirDroid On your device, press the volume down and power button at the same time to take a screenshot Open and occasionally refresh…

Safari, 3rd party cookies, and Facebook apps

April 30, 2013

The default settings for the Safari web browser block 3rd party cookies. This means that web apps hosted on https://mysite.com will not…

Laravel 3 Admin Area bundles

March 12, 2013

Opinions based on spending less than an hour with each bundle: Orchestra Orchestra gives you more framework to build on top of. It has its…

Command line cURL request with JSON

January 28, 2013

This is useful for testing out REST services that use JSON, like ones made with Restify and MongoDB. This command runs in Linux, OS X, or…

Installing OptiPNG 0.7.3 (or newer) on Ubuntu 12.04

October 16, 2012

Unfortunately installs an outdated version of OptiPNG (0.6.x). To get the newest version, you ’ ll have to compile from source code. And…

Installing S3FS on Ubuntu 12.04

October 11, 2012

Check out the source code from SVN Get into the folder created by checking out the code Get these packages (list by Xentek + a few of my…

Basic load testing with Apache Benchmark

October 04, 2012

Command line:

EC2 + Ubuntu 12.04 + LAMP 2 Server Setup checklist

October 03, 2012

My steps: Install stuff Add to somewhere in your Apache Config files to enable it Use http://strongpasswordgenerator.com/ to generate…

Laravel Asset Compressor Bundle and filemtime() stat error

September 30, 2012

This appears to only be a problem with Windows. If you see an error like this while using the asset compressor : know that the code…

US States for Select element in PHP

September 21, 2012

Need a list like this? Eddie has you covered. Check his US State related PHP snippets . I was able drop that array into Laravel ’ s…

fix FB.getLoginStatus() called before calling FB.init()

September 19, 2012

To fix this error, I had to take a second look at my code. I had just moved a site to a new server, and started seeing the error in Chrome…

error while loading shared libraries

September 01, 2012

Just installed ffmpeg on Ubuntu 12 and tried running it only to see this error? ffmpeg is looking in the wrong spot for the library you…

Installing ffmpeg in Ubuntu 12

September 01, 2012

This is the most straight forward guide I know of: http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide They can be copied and pasted…

Find old bash commands in Linux

August 29, 2012

Use a wicked one-liner last week, but forget what it was? Search your bash history with grep! If you remember part of the command, you may…

Splitting PHP class files for PSR-0 compliance

August 29, 2012

Have a ton of classes in one file that need to be split up? Check out Matthew Turland ’ s   class splitter script . Put it in a folder…

List modified files with SVN in Linux

August 29, 2012

When the command returns too much information, filter the output with . This line finds only modified files and leaves out deleted…

ERROR: Directory ‘/some/path’ exists but failed copying to ‘/some/other/path’

August 29, 2012

An error like this prevented my Jenkins build from completing. It was not a permissions issue. Jenkins was not configured with a master and…

PEAR connection problems

August 29, 2012

Having trouble connecting to PEAR channels like , , or ? I frequently see this error: Your ISP may be the problem. Mine (Rogers Cable in…

Recursively deleting .gitignore files in Linux

August 29, 2012

Download something off GitHub and don ’ t need the included .gitignore files?

400 Bad Request error with C# Google Analytics Helper and Unity

August 29, 2012

If you find “ 400 Bad Request ” errors in the Unity console while testing out the C# Google Analytics Helper within the Unity IDE, try…

Free Google Analytics for Unity Games

August 29, 2012

Check out C# Google Analytics Helper at   http://www.persistentrealities.com/code/ Forum thread:   http://forum.unity3d.com/threads/5640…