The Ember Cup

Posted on Wed 30 December 2020 in Reviews

Stephanie and I got matching Ember cups for Christmas. I’m generally happy with mine, but there are some things that folks should know to avoid frustration.

First, here’s what this cup is not:

  1. It’s not a way to warm up a chilled drink. It can warm Chemex …

Continue reading

I'm writing this on an iPad

Posted on Mon 27 April 2020 in Writing • Tagged with web, iPad

Well, my last post was about how I have my whole deployment pipeline setup in Github, let's see if I can use it from an iPad to publish a post. I wonder if this will work?

Continue reading

Setting up Github Actions for Deploying Pelican

Posted on Wed 18 December 2019 in development • Tagged with web, Pelican

Github actions allow me to implement continuous delivery for this blog. Each time I merge to master, is built and deployed.

First, this action should run anytime the master branch is updated.

name: Build and Deploy

    branches: [master]

Now we need to create our deploy steps …

Continue reading

Setting up Let's Encrypt with Nginx

Posted on Fri 13 December 2019 in development • Tagged with web, ssl, server

This blog is a static site generated with Pelican. It's now almost 2020, which means that using https isn't just a good idea, it's pretty-much mandatory. The good news is that setting up Ubuntu, Nginx and Let's Encrypt is incredibly straightforward. Start to finish it only took me a bit …

Continue reading

Creating a Swift Collection

Posted on Mon 16 February 2015 in development • Tagged with swift

Let's say you'd like to create your own collection class. In this example, it's going to be a collection of books that only allow the addition of a new book if it's written by a select list of your favorite authors.

typealias Book = (title: String, author: String)

struct MyCollection {

    private …

Continue reading

Creating a Homebrew formula for a Python project

Posted on Sat 14 February 2015 in development

I just finished writing a homebrew formula for a python script I wrote, I'm going to walk through how I did it. Hopefully this helps anyone else who is thinking about distributing their code.

Why did I use Homebrew and not Pip? Two reasons: first, my code requires some Java …

Continue reading

I'm learning Android Dev

Posted on Sat 02 November 2013 in misc

It's about time I took a look and saw how the other half lived. I'm learning Android development. I bought the BNR Android book and have started working my way through the chapters. Keeping in mind I've only been doing this for two or three days, here are my thoughts …

Continue reading

Waterfield Designs Staad Backback

Posted on Thu 17 October 2013 in reviews

Just a few weeks ago Waterfield Designs released their first pack, the Staad Backback. Strangely enough, every review I've seen is just a regurgitation of the press release and the product page, so I thought I'd give a little write-up after actually handling the pack.

First, my current backpack is …

Continue reading

Amend Files to Previous Commit

Posted on Thu 08 August 2013 in development

I run into this frequently when doing big a big refactor. I'm carefully committing my changes in nice bisectable units, but then Woah! there's a change that should be included in a previous commit. Here's how you fix this up in Git.

Disclaimer: We are modifying Git history. Do not …

Continue reading

Debugging Smashed Memory in Obj-C

Posted on Tue 23 April 2013 in development • Tagged with debugging

We were getting a crash inside a button. Calling po self wasn't helpful.

(lldb) po self
$1 = 0x0ce854d0 [no Objective-C description available]

Well.. That's weird. I wonder what's at that memory location?

(lldb) memory read 0x0ce854d0
0x0ce854d0: 00 00 00 b0 93 6a ce a0 0e 00 00 00 00 …

Continue reading

List Rake Tasks by Default

Posted on Sun 27 January 2013 in development

I add this to all my Rakefiles.

task :default do
  system "rake --tasks"

It prints a list of Rake tasks when you run Rake without a command. Not only does it help you remember what options are available in the current project, but it keeps you from accidentally performing …

Continue reading

Unit Testing Parse Cloud Code

Posted on Sat 26 January 2013 in misc

Like many people, I was thrilled when Parse announced their cloud code product. I've just started a little iOS project that required both persistent cloud storage and pulling data from a 3rd party API. Since the API had a great JavaScript library, but no built-in Obj-C support, moving the code …

Continue reading

JSLint: Expected 'return' at column X, not column Y

Posted on Thu 17 January 2013 in development

I've been writing some Javascript using the default settings in Chocolat, tabs instead of spaces and each tab is equivalent to 2 spaces. Running most of my javascript files through JSLint is fine, but there were a few lines that were generating warnings, even though the spacing looked just fine …

Continue reading

When isKindOfClass is not kind of class?

Posted on Tue 16 October 2012 in development

I've been running into an issue over the past few days where [objA isKindOfClass:[ClassA class]] is returning false when clearly objA is a kind of ClassA. I'm running these tests using SenTesting kit and I'm not compiling the .m files in my test target, which is the only issue …

Continue reading

Abusing UIView

Posted on Thu 11 October 2012 in development

Sometimes I long for the day when I get to create an iOS app that just uses Apple's default interface element. Of course, this doesn't last long, because using and abusing UIView is fun. Over the years I've picked up a few tips and tricks for making the most out …

Continue reading

Posted on Tue 02 October 2012 in ideas

This is my million dollar idea. The idea is called "". Install an extension in your browser. Whenever you read a news article that is full of sensationalist nonsense, trigger the extension. If enough people have labeled an article as sensationalist, all new visiters will see a warning page …

Continue reading

Sort Obj-C Methods with Automator

Posted on Thu 20 September 2012 in development • Tagged with obj-c

Big view controllers in big projects tend to accumulate a lot of private methods and properties. In a perfect world, these methods and properties should be carefully organized into functional groups and carefully documented. In the world we actually live in, that shit doesn't happen, which is why I've resigned …

Continue reading

Open sourcing? Eliminate all warnings

Posted on Thu 06 September 2012 in development

A few months ago Matt Gemmell created a fantastic writeup on creating open-source components. One salient point he missed, though, is that you must compile and test your code with the strictest warnings available. You never know who's going to be using your code and what warnings they have enabled …

Continue reading

Having trouble with Adium and iMessage?

Posted on Tue 28 August 2012 in misc

I exclusively use Apple's iMessage for chat. Most of my coworkers use Adium. Ever since I started this job there have been weird issues were coworkers can't see me online and don't respond when I message them. I've confirmed that they are not actually getting the messages (and they aren't …

Continue reading

Configure git to only push current branch

Posted on Thu 16 August 2012 in development

I've always used plain git push to update my remote repos and I'm finally getting tired of seeing this error every time:

(master)> git push
   21b430d..dd378ca  master -> master
 ! [rejected]        release -> release (non-fast-forward)
error: failed to push some refs to …

Continue reading

Don't Lazily Load Your Views

Posted on Thu 09 August 2012 in development

I seem to run accross a lot of developers lazily loading their properties. As an example:

- (UILabel *)myTextLabel {
     if (_myTextLabel == nil) {
         _myTextLabel = [[UILabel alloc] init];
         [self addSubview:_myTextLabel];

At least in iOS developement, I suspect this is caused by Apple's sample code, particularly Apple's default setup for Core Data projects …

Continue reading

OK. For serious this time

Posted on Wed 18 July 2012 in personal

OK. This is a fresh start. I think I've got this blogging thing figured out for once. I'm using Octopress to create the site. I attempted to install Octopress a few months ago, but ran into a whole host issues trying to get ruby 1.9.2 to build. Luckily …

Continue reading