Installing Postgresql 9.3 Beta using Homebrew

05/17/2013

Recently, I've been working on a project that relies heavily on Postgresql and I've come to appreciate its flexibility. New features like hstore, json and plv8js allow for rapid application development. Index-only scans and native streaming replication make Postgresql even more appealing in a traditional context. After reading about the forthcoming features of 9.3, I went in search of a way to install 9.3 beta 1 along side my existing 9.2 installation.

Installing Postgresql 9.3 Beta using Homebrew »

and && or

08/20/2011

Here are two resourses that explain the operators "and" and "or" in Ruby. The first is by Avdi Grimm, Using “and” and “or” in Ruby. The second details the origins of the operators, Ruby: On The Perl Origins Of “&&” And “||” Versus “and” And “or”.

Github Pages & Jekyll

09/15/2010

I finally finished migrating this site from mephisto to github pages & jekyll. I lost the comments feature but gained the ability to manage content in a git repository. I experimented with disqus and intense debate but both services annoyed me with too many features and complex markup.

Handlebars.js & Mustache.js Benchmarks

09/12/2010

Yehuda Katz just released Handlebars.js, a compiled javascript Mustache implementation, similar to Mustache.js with some useful additional features. The README mentions,
"In a rough performance test, precompiled Handlebars.js templates rendered in about half the time of Mustache templates. It would be a shame if it were any other way, since they were precompiled, but the difference in architecture does have some big performance advantages."
Interested in the specifics, I did some benchmarking based on Brian Landau's Benchmarking Javascript Templating Libraries and came up with the following results. I made some tweaks to the overall benchmarking approach, isolating the actual template rendering from any DOM manipulation and removing the setTimeout mentioned in PPK’s benchmarking methodology as it was no longer necessary. The time it took to render the template 5k times was recorded and averaged out over 10 tries. Not terribly scientific, but hopefully good enough to show that in both simple and iterative cases Handlebars.js is about 2x as fast. The code I used to achieve these results is in my js-templates-benchmark repo.

Bypass Featured on TV

07/27/2010

I'm currently the lead developer on a mobile web application that was just featured on KVUE in Austin, Texas. The app has been amazing to work on as it's provided a host of challenges I've never faced before. The service the app provides is even more exciting as I'm a die-hard Redskins fan and have spent my fair share of time standing in line at FedEx Field. You can check out the details on the official Bypass Lane Website or you can check out the Bypass TV clip on the KVUE website.

Distributing Your Data

07/13/2010

This weekend I gave a presentation at Devnation Portland on some of the concepts behind distributed data stores. You can checkout the slides on my talks page or you can download the PDF. Thanks to all the speakers and to everyone who came out! I had a great time and I'll definitely be attending, and hopefully speaking, at another Devnation event in the near future.

Language.rdoc

04/15/2010

While programing I usually have a few different rdocs open for the various libraries I am working with. I also have a dictionary and a thesaurus on hand and have often noticed I reference them more than the rdocs. I've always felt that there is a literary art form to abstraction naming but I have never been able to succinctly state why I felt this was so important. It existed as a strong intuition, something I knew was worth focusing on.

Ruby Hacknight to the Rescue

In order to prepare for the next Ruby Hacknight I have been reading Refactoring, Ruby Ed. and recently came across this quote which states precisely why proper naming is important.

So much of object-oriented design depends on the effectiveness of the abstractions that you create. Let’s say you have object A that delegates to object B, which in turn delegates to object C. It is much easier to understand the algorithm if each object can be synthesized in isolation by the reader. To provide for this, the clarity of the public interface of the object being delegated to is important. If object B’s public interface represents a cohesive piece of behavior with a well-named class, well- named methods, and parameter lists that make sense given the name of the method, a reader is less likely to have to delve into the details of object B to understand object A. Without this clear abstraction around the behavior of object B, the reader will have to move back and forth between object A and object B (and perhaps object C as well), and understanding of the algorithm will be much more difficult.
Fields, Jay, Shane Harvie, Martin Fowler and Kent Beck. Refactoring. Ruby ed. Upper Saddle River: Addison-Wesley, 2010.

Rails 3 Generators: Hooks

03/29/2010

After a cold and dismal winter which has left this blog as barren as the icy tundra, I have emerged from a state of deep hibernation with an informative blog post on Rails 3 generator hooks. Watch out because a follow up post that details how you can use Rails 3 generator hooks in your own custom generators is hot on the heels of this post. In addition, let it be known that I have officially broken the vow of winter silence I took 3 months ago.

Hackday: Intro to Ruby Meta-Programming

12/22/2009

Me and my esteemed colleague, Matt Swasey, just wrapped up the third Hackday at Viget Labs. For this Hackday we led a discussion surrounding the mind-altering world of meta-programming. You can read a detailed summary of the event on the Viget Extend blog. You can also take a look at the code and notes we put together on GitHub.

Pygrack, Pygments Highlighting Middleware

11/07/2009

Rack, the ruby web server interface, has a powerful feature called rack middleware that allows you to filter requests and responses in your application. In an effort to explore the possible uses of middleware Lunar Logic Polska created CodeRack, a rack middleware coding contest. When Matt Swasey, a fellow Viget Labs developer, saw that Trevor Turk had created a pygments API he suggested that we create a CodeRack entry that uses the API to provide syntax highlighting to your rack application.

Pygrack, Pygments Highlighting Middleware »

simple_importer, a csv processing gem

10/26/2009

I just released a tiny gem that helps in creating CSV import tasks. Check out the introductory blog post on the Viget Labs developer blog.

Getting XML Into Your Processing Sketch

10/08/2009

During one of the recent Learning Processing sessions, Keith asked how one would go about getting data from a web service, such as YQL, into a Processing sketch. After poking around the Processing library reference we were able to create an example of how to pull in data from a web service and use it to control the parameters of a sketch.

Getting XML Into Your Processing Sketch »

Learning Processing, Lesson 1

09/03/2009

Over the next few weeks months I will be teaching a small introduction to programming course at Viget Labs. I'll be using Processing as a means to explore some basic programming concepts and I'll be following the excellent book Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction by Daniel Shiffman. Each lesson will have an accompanying blog post that outlines the topics we'll try to cover and links to any resources we may need. Here are some notes on Lesson 1.

Learning Processing, Lesson 1 »

Learning Processing, Introduction

08/25/2009

Over the next few weeks months I will be teaching a small introduction to programming course at Viget Labs. I'll be using Processing as a means to explore some basic programming concepts and I'll be following the excellent book Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction by Daniel Shiffman. Each lesson will have an accompanying blog post that outlines the topics we'll try to cover and links to any resources we may need. Here is the first installment!

Learning Processing, Introduction »

Excess Poultry Waste Contamination

08/20/2009

While this post may not fit the strictly technical nature of my blog, the impact of unregulated poultry waste is an issue that directly affects me, and most likely you as well (especially if you live in or near Northern Virginia). There is a very important bit of legislation coming up regarding poultry waste regulation that you have an opportunity to voice your opinion about! Here is an explanation of why you should care and information on how you can help.

Excess Poultry Waste Contamination »

Monome & Lily

06/02/2009

I recently gave a presentation at Developer Day on the Monome and Lily. Here is a brief synopsis of the talk as well as some resources to help you get started making patches in Lily.

Monome & Lily »