Securely Signing PHP Phar Files With OpenSSL

By · Published · php, security, phar, openssl, howto

PHP's PHAR archives (PHp ARchives, get it?) are a neat development. They're a way to distribute an entire PHP application as a single archived file that can be executed directly by the PHP intepreter without unarchving them before execution. They're broadly equivalent to Java's JAR files and they're super useful for writing small utilities in PHP.

Read More...



Scheduled Throttling with pfSense

By · Published · pfsense, networking, apple, howto

Apple has launched a new Photos App for OS X, along with the ability to upload your entire library to iCloud. And with prices that are so cheap, there's almost no reason not to. $3.99 a month is cheap insurance to know that every photo I've ever taken of my family won't be wiped out in a tornado.

But with this comes a problem - namely, how do you upload a 150 gigabytes of photos over a 5 megabit network connection? Well, you wait a really long time for it to upload. Which is fine, really, because I'm not in any particular hurry to finish. But, once I started the upload, I noticed that surfing the web became pretty much impossible because the upload to iCloud was saturating my upstream bandwidth.

Read More...

NSHTMLTextDocumentType is Slow

By · Published · apple, cocoa, ios

So I was confronted with an interesting bug this week, and I wanted to share it with everyone so maybe it will save you some time. Put simply, NSAttributedString with NSHTMLTextDocumentType is slow. Dog slow. So obscenely slow that it should probably never, ever be used.

Read More...

Responsive CSS3 Columns with Sass and Bootstrap

By · Published · howto, css, css3, html

Impatient? Scroll to the bottom to download.

So I recently was working on a site and wanted to use CSS3 columns. But I really like how the grid system works in Bootstrap, and wanted to be able to define columns in a similar way (i.e. have different number of columns depending on the screen size). Not finding any pre-cooked versions, I decided to write my own.

Strictly speaking, you don't need Bootstrap for this to work. But I did re-use Bootstrap's grid variables so that it breaks along the same lines that Bootstrap's grid does. It's also worth noting that, natively, the columns will collapse on their own if you specify a width. This method just gives you a bit more control.

Read More...

Installing the Ubiquiti UniFi Controller Software on pfSense 2.2

By · Published · howto, networking, pfsense

Note: I am leaving this here for the reference and posterity, but for a variety of reasons, I no longer recommend doing this. It is a neat hack, but tends to be a bit of a pain to live with as you end up having to troubleshoot or reinstall it every time you update pfSense or Unifi. When you can install it on a Raspberry Pi for less than $50, there's really no need to do this.

I personally have switched to running this on a stock Ubuntu system that runs a few other network services in my house.

This is a short tutorial on how to install the Ubiquiti Networks' UniFi Enterprise Wifi controller software on pfSense 2.2. These directions are derived from these directions for 2.1-RC, but have been updated to work on 2.2.

Note that this is a somewhat advanced tutorial. If you are not comfortable working in a Unix command line or editing system files, this is probably not the best thing you could do. But I'm putting it out here in case it will help others.

Read More...

Design Tweaks and New Content!

By · Published · news, ramblings

So I've tweaked the design of the blog a bit.

  • There's now a header, and all the links that were in the sidebar are now in the header. There were simply too many things being added and it was getting unwieldy having them all in the sidebar.
  • It's now fully responsive on all levels of mobile, tablet included!
  • I've added a new page with a bunch of content I've been collecting on the subject of Interstellar Travel.

UILocalNotifications and time zones

By · Published · apple, cocoa, ios

Here's a tip when dealing with UILocalNotifications.

If you want to schedule a notification for a specific time using fireDate, you need to apply a timeZone to the UILocalNotification object. Otherwise, iOS will intepret this as an absolute, countdown-based date based on GMT.

Read More...