Automated SMS Via Twilio

26 May 2016

A couple of weeks ago I wrote a simple email reminder program that pulled events from Google Calendar and then notified people about it with an email sent via the Gmail API. You can read more about the why and how in that post.

After getting that up and running, I quickly got a feature request: “it’d be really cool if it could send a text message too!” I’m a strong believer in ask (kindly) and you (may) receive…

Setting up automated text messages was a breeze with Twilio. The API is super simple and just works. And it’s pretty cheap too: $1.00 a month for a number (needed to send text messages) and under one cent ($0.0075) per text message sent.

The updated code can be found on kendo-emailer on Github. TwilioHelper and TwilioConfiguration are the main files to look at if you’re interested in setting up Twilio yourself.

Build, Deploy, Improve

24 May 2016

When building something it’s easy to get hung up on how incomplete something is or how far off it is from the awesome (and complicated) idea in your head. But that shouldn’t stop you from building things and putting those things out there.

The concept of minimal viable product (MVP) gets thrown around a lot when people talk about their hot new idea, but I prefer building a minimally useful product. It’s not radically different; just a change in mindset. Don’t aim for building something “capable of growing or developing;” aim for building something with “a beneficial use” in version 1.0. Then, nurture and grow that beneficial use.

Pick a simple problem, and solve it. Then expand the scope of the problem and solve that. Rinse and repeat. Keep building. Keep deploying. Keep improving. Aiming for perfection in the first release will prevent you from ever releasing or even worse, starting to build.

Just remember, Rome wasn’t built in a day and your awesome idea won’t be either.

We Need More Bathroom Lock Indicators

22 May 2016

When I was a child the future had flying cars. But as I exit my extended stay in childhood, all I want from the future is the proliferation of bathroom indicator locks. Approaching a bathroom unsure if someone is using it is very awkward. Give the knob a firm turn and you’re horrified to find it locked! The person inside the bathroom is equally uncomfortable. You didn’t mean to invade their space, but you did. Why!? There wasn’t an indicator to let you know if the door was locked or unlocked. It’s a terrible experience for everyone involved.

Photo courtesy of Indicator Locks

Fortunately, we already have the technology to solve this problem. You’ve definitely seen it in action on an airplane. And if you’re lucky, you may have seen this magical device on terra firma. Let’s make our bathrooms better. Let’s give them all indicator locks!

Auto-Deploying This Blog

20 May 2016

A long time ago I started generating my site locally and pushing it up to Github manually because Github Pages does not allow you to run custom plugins. This isn’t as painful as it sounds. A friendly internet hero – ixti – crafted a nice Rakefile that automated publishing.

But doing the publishing myself led to some workflow issues. Allowing GitHub Pages to do the work for you is nice because you only have to deal with one branch. Make changes to that branch, push to GitHub, and GitHub Pages would generate the site and deploy it. Everything is always in sync. The new workflow had me writing and crafting content on the source branch and then using the publishing command to generate my site locally and then it would push it to the master branch: the “deploy.” Separating the crafting and deploying steps meant I sometimes published content without pushing it into the source branch or I’d push content and not deploy it.

Continuous deployment via Travis

In keeping with 2016’s automation resolution, I set up my blog to auto-deploy itself. Using and adapting Domenic Denicola’s clear and helpful instructions, the new set-up has Travis run the automated publishing flow when any changes are pushed to the source branch. Turns out Travis is not only a great continuous integration tool, but can be adapted to be continuously deploying as well! No more pushing content to the source branch and running the publishing command locally; I’m back to just needing to push once.

# The blog's gotten big so rake publish pushes 75.05 MiB!
Writing objects: 100% (1052/1052), 75.05 MiB | 1.46 MiB/s, done.
Total 1052 (delta 166), reused 0 (delta 0)
To [email protected]:markcerqueira/markcerqueira.github.com.git
 + f2e99be...3aea10b master -> master (forced update)

And there are a few more benefits including email notifications if something goes wrong during the publishing flow and no need to wait on a 70+ MB push when publishing, which is great when I’m tethered or in a rush.

This minor improvement isn’t mind-blowing, but it does make my interaction with blogging more streamlined and simple. That’s what my automating 2016 resolution is all about. Onwards!

git push origin source
# We're done. Walk away. Go outside. Eat a banana.

Useful Utilities Alfred + Dash

16 May 2016

I’ve been a big fan of the Alfred productivity app for a while now. It’s like Mac’s built-in Spotlight but more feature-rich and more extendable. I’m a big fan of the clipboard history feature: it preserves all the text you copy and lets you paste from a list of all the text you previously copied. The tyranny of losing what you copied after hitting cmd+c is over! Alfred is highly customizable and I’ll readily admit I don’t take advantage of all it has to offer.

Say goodbye to losing the things you previously copied!

The other day I learned about Dash. It puts API documentation a simple keystroke away! If you’re a developer it’s nice to be able to quickly pull up documentation on a method or review all the methods a particular class has to offer. Being able to skip out on going to Google Chrome and searching for the documentation page makes this workflow much faster… And lessens the chance I’ll go to YouTube to watch more cat videos. I forgot to mention it also works offline, supports personal annotations, and storing custom code snippets.

Nothing really simple about SimpleDateFormatter!

It’s great to have amazing tools at one’s disposal. But it’s truly breathtaking when those tools work well together. Alfred and Dash have an awesome integration that brings Dash’s API searching capabilities to Alfred. Now I can get the API of my favorite data structure – LinkedHashMap – even faster!

LinkedHashMaps are awesome!

Both tools have free versions, but getting a license to fully unlock them won’t break the bank: for $50, you’ll get full access to both tools. Take my word for it; you’ll definitely find that to be a steal if you leverage a fraction of these tools' feature sets.

I’m a bit late to the party (given the integration announcement is from August 2015), but if I can pass along this information to at least one person who didn’t know about either of these awesome productivity tools, it’ll be worth it!