Improving Report Performance

Originally posted to http://techtime.getharvest.com/blog/improving-report-performance.


A hypothesis about the number of assertions in a test

We have been discussing testing styles at work. My team's preference is split on one-assertion-per-test. This describes a hypothesis I have about developers in both camps.

Why I enjoy writing software at Harvest

Originally posted to http://techtime.getharvest.com/blog/why-i-enjoy-writing-software-at-harvest.

Code Reviews at Harvest

Originally posted to http://techtime.getharvest.com/blog/code-reviews-at-harvest.

Simple Memoization in Scala

An example of memoizing an expensive operation in Scala, similar to Ruby.


Detecting Scala Extension Classes at Runtime

An example of how to detect classes at runtime to implement a convention-over-configuration extension strategy in Scala (or Java).

Scala parser performance with v2.10.x

A quick fix to a performance issue with Scala v2.10.x and JDK 7+

Why csscss doesn't remove duplication for you

Reasons behind csscss's design.


a CSS redundancy analyzer that analyzes redundancy.

Your Identity ≠ Your Code

We are more than our code.

ActiveResource XML bug fix for Rails 3.0.19

Originally posted to http://techtime.getharvest.com/blog/activeresource-xml-bug-fix-for-rails-3-dot-0-19.


My Thoughts on Refinements

Ruby 2.0 refinements have been a hot topic lately. Here are my thoughts on the debate.


Big Changes Again. Joining Collective Idea.

Hanging my freelancer hat and joining the awesome crew at CollectiveIdea.

Sharing a desk and internet

After two months in the new office, I realized we’re going to need to a lot more stuff to fill up the space: couch, big screen, etc. You know, the...


New iPad App Deployed: Spatik

For the past few months I’ve been helping Nicholas Patten take his vision and translate it into an iPad App. I’m proud to announce Spatik was accepted today and is...

Tweetstream is now Web Scale

Over the past few months, I have been working with Downstream on one of their products Tweetstream. In addition to building features, we have experienced a significant issue with the...

December Northern Michigan Web and Mobile Meetup

Last night we had our December Michigan Web and Mobile Meetup. We only had a couple guys due to family commitments, but that’s understandable since we’re only a week away...

November Northern Michigan Web and Mobile Meetup

Last night we had our second Northern Michigan Web and Mobile Meetup and I think this went better than our first. This week I grabbed a couple pizzas from Chef...

First Northern Michigan Web and Mobile Meetup

Last Thursday we had our first Northern Michigan Web and Mobile Meetup meeting. While eating pizza, we watched an interview with Jason Fried and discussed it afterwards.

HarvestApp.com Impresses Me Again

I’ve been using Harvest for a few years now, and as a customer have been a big fan of their product. A couple months ago they made a change to...

The Pain of Launching Your Own Projects

Ask anyone who has redesigned their own website or released an open source project, pushing something live can be painful. I think there are two primary reasons for this:

New Traverse City User Group: Northern Michigan Web and Mobile Meetup

After we moved back home in Elk Rapids Michigan, one thing that I acutely missed was the number of user groups we had in West Michigan. Don’t get me wrong,...

New Company, New Look

I’ve blogged at Simple Chatter for a few years, but now it feels like a good time to retire that domain and roll it into a newer fresher look. Oh...

I think Twitter's OAuth-only Access is a Waste of Time

I don’t normally write sensationalist articles, but today I’m going depart from the norm and make a bold claim: I think Twitter’s change to OAuth-only authentication is a waste of...

A Public Comment To Those Enabling Abuse

Michelle Greer recently wrote about viscous online comments on TechCrunch. Unfortunately, over the years I’ve seen a few ugly incidents where a female was singled out online and verbally attacked....

You're running a marathon

I’ll be the first to admit it: I can work myself to death. Paul Boag recently wrote a great article about the false “badge of honor” regarding long hours in...

Client Satisfaction and Resources

After freelancing for a while, I reflected on a one man shop providing excellent service.

Clients that Care

Touched by my clients concern for me.

Why should I do business with you?

All things being equal, people want to do business with their friends. All things being not quite equal, people STILL want to do business with their friends.

Nginx is extremely performant

A couple days ago I wrote an article about perceptions I’ve encountered as a freelancer. The article took off on Hacker News, which a great feeling.

I am far from unemployed

Monday was the beginning of my third week working independent. And these three weeks have been a lot of fun. Very busy, but fun. However one thing that surprised me...

Big Changes. Going Independent.

Embarking on the life of a freelancer

Great perspective on incentive and value

“Finally, I don’t think there’s much value in arguing over who has the most incentive to create good products. The point is you’ll be better off in the long-term if...

Review: Crucial Conversations

Months ago I shared my difficulties with leading others and sharing opinions effectively with Josh Little from Bloomfire. He recommended I pick up the book Crucial Conversations and even mentioned...

My Vacation Reading

Every time I go on an extended vacation I end up ripping through a half dozen books. It’s probably because of a need to catch up on long overdue reading....

Muscle Memory

I gave the Dvorak keyboard layout an honest attempt. For years.

Harvested: A New Ruby API Wrapper

I’ve used Harvest Time Tracking for well over 3 years, and they have a quality product. They have also had a published API for quite some time. The past couple...

Reflections of an Adjunct Professor

This past semester I had the opportunity to teach the Advanced Java course at GRCC. Teaching at the college level has been something I’ve wanted to experience for a while...

Introduction to Rails Talk: GVSU Mobile Developers Group

Here is the Prezi talk I gave to the GVSU Mobile Developer User Group.


My First Introduction to Haskell Extensions: FlexibleInstances

I’ve been tinkering with Haskell lately, and I came across an odd issue. Let’s say I want to create a class that takes Integers, Characters, and Strings and returns an...

Not Enough Hours

Yesterday I was in a bad mood. In my disgruntlement, I decided to do some simple math on the number of hours in a day.

Changed My Handle

I’ve used the handle “zedder02” for many many years and for many different applications. It has it’s own history, but I think it’s time to retire it.

Contributing to RailsBridge

Voluntering my time to help RailsBridge

Comments are back

Well I finally got off my ass to port over the comments from Mephisto. Let me know if you find anything amiss.

New feed URL

Looks like FeedBurner/Google ended up shuffling some things around. You may need to update your readers to using either http://simplechatter.com/feed/atom/ or http://feeds2.feedburner.com/simplechatter/.

Migrating to Wordpress

I’m in the process of migrating from Mephisto to Wordpress. Everything should be up and running other than comments. Hopefully I’ll get those wrapped up by the weekend.


Tools for Remote Collaboration

For those of you who don’t know, Janson works in Seattle while Aaron and I work in Holland MI. Even though he’s in Seattle, we’re still able to work as...

RubyConf 2008

I was lucky enough to attend RubyConf 2008. I really enjoyed last year’s conference, and I felt this year was better.

Using Cucumber to test Generators

I’ve been developing in Ruby (and Rails) for the past 2.5 years. Over time, I’ve molded my own flavor of CRUD controllers and resulting specs. Unfortunately, it’s so different than...

Public Stream of Consciousness

I’ve heard a few people on Twitter not sure about the etiquette on following others. Particularly:

Custom Textmate Commands

Textmate is a pretty decent editor for OSX. I’m not in love with it, but I use it frequently.

Using Capistrano 1.4 with 2.x

I typically use Capistrano for deploying our applications. Though I do have a bookmark to investigate Vlad when I get some time.

One of the best HTML / CSS theme songs

I don’t normally repost from other sites, but this was too good.

Testing content_for

After we started writing view specs we came across views similar to this:

Education vs Justification

Aaron, Janson and I were at Applebees a month ago discussing an estimate for a client. We started talking about a particular part of the estimate that would require us...

Watch Star Wars via Telnet

I love stuff like this. You can watch Star Wars via telnet.

ALIVE and Treetop

Excited to use Treetop on a project

Combined PGP Keys Into One

After finding out today that pgp keys can have multiple email addresses, I revoked all but public key and combined all emails into one key.

Git Stash is Sweet

Earlier I mentioned a method of storing away changes in a patch, rebasing and then applying the patch so you don’t have to commit beforehand.

Ascribe - A Case Study on View Specs

Reflections on using using view specs for a project

Using Git

Janson and I have been using Git for a few months now at work. We’re still keeping an open mind with regards to Mercurial and Bazaar however its clear that...


Me and a few buddies play Command and Conquer Generals. It’s a decent RTS, but has problematic networking issues. Before giving up, I came across Hamachi which is an awesome...

Hacking Nite Recap

I’ve been so busy with work that I didn’t get to post how the Hacking session went. 2 weeks ago we met at the Elevator Up office and worked on...

Ascribe goes live

We have been busting ass for over 2 solid months and last night we launched a new application. Check out Ascribe, a great portfolio management system specifically designed for contractors....

Brandon Keepers leading another Rails Session

If you’re going to be in San Fransisco around Jan 29th, I’d recommend checking Brandon Keepers Rails Training Session. He’s an extremely talented developer, and an active contributer with a...

Hacking Nite

So I’ve been itching for a Ruby Hacking Nite for a while. Elevator Up’s going to host a night at our offices on Tues the 22nd starting around 6ish, where...


Another bonehead revelation

Yep, I'm an idiot sometimes

A couple perspectives on testing common scenarios

Testing the behavior of ActiveRecord models

Testing and Tautologies

A question that I’m asked frequently, especially in regards to mock testing is: “I know it seems worth it to test, but isn’t it just a tautology? I mean when...

Hiring Again

It seems like it was just yesterday that we brought on Janson. We’re swamped with work, and luckily it’s the kind we don’t want to turn away. However we really...

First night at RubyConf

Ok so not really. RubyConf officially starts tomorrow, but I still had a blast. The highlight of the night, other than meeting some rockstars in the Ruby community like Chad...

RubyConf 2007

I’m really geeked to go to RubyConf this year. A very needed get-away from the hubbub around the office. As a typical dork, I went ahead and threw RubyConf’s schedule...

Cloning Debian Parallels VMs

We’re in the process of migrating our servers onto a new infrastructure. Namely beefy servers running Virtuozzo. I’ve been a fan of Parallels for a while, and recently fired up...

The Daily Commute

On average, I drive 150 miles roundtrip each day for work. Obviously there a helluva lot of negatives with that commute. However this was a great “opportunity” to turn a...

How playing with a Rubik's Cube has made me a better developer

Sometimes you make strange correlations with software.

Holland Geeks Group

Last night’s Geeks Group was pretty awesome. It’s definitely a night I look forward to every month. The biggest problem is heading home and starting work the next day. Janson...

field_error_proc and Rails Configurations

I came across something in Rails that’s fixed an issue that has seriously irked me.

Liquid Forms

A few weeks back I wrote about using liquid. In the article I mentioned that soon I would write about how we integrated forms.

Liquids leaking from a Developer

After eyeing Liquid for quite some time, we decided to use it on a project to allow a customer template his app from the admin side. After seeing a lot...

Mocha and Forcing Verification

I switched to Mocha about 5 months ago, and after getting over my preference for strict ordering, really enjoyed the library.

Problems with Pound infront of Mongrel

Working on a custom CMS, I was tasked to add a feature that allowed users to mark pages as secure. This allowed them to take sensitive data, and then turn...


I have some weird logic in determining what I compile and what I install via ports

New House

I’ve been rather quiet the past few weeks due to Brittany and I buying our first house. After 3 years of renting, we felt we were finally stable enough to...

Our Newest Hire

Aaron and I have been talking a lot the past couple weeks about the overwhelming about of work we have at Elevator Up. It really is a good thing, and...

Elevator Up's New Office

We’ve moved to our awesome new office in the Zeeland Clock Tower building.

Cool Dates

I love discovering neat tricks with Ruby and Rails, even though most times I feel like the slow kid getting the joke 15 minutes after it was told.

Config Files and Source Control

Environment specific configuration files can be a pain in version control. Especially when multiple developers keeps clobbering each other on updates.

Paranoid Testing

I had the opportunity to attend the XP West Michigan meeting tonight, and listen to the energetic speaker Elisabeth Hendrickson from Quality Tree Software.

Older Rails and Mongrel

One of the useful features of Rails servers (Webrick, Lighttpd, and Mongrel) is to see the development log going to standard out. However when using Rails before version 1.2 and...


At Elevator Up I spend roughly 90% of my time buried in TextMate coding in Ruby. Initially I used grep when searching for text out of command line habit. I...

Working at Panera

At Elevator Up, Aaron and I frequently work at Cafes like JPs Coffee. But Panera Bread is quickly becoming my favorite place to work.


Recently I got Brit hooked on Flickr and it only took her 3 days to hit her monthly bandwidth quota. However, what’s more interesting is that I needed to find...

Validates Presence Of Foreign Key

When reading the Rails documentation for validates_presence_of I eyed the warning pertaining to foreign keys.


So we bought a 2nd Great Dane, as if Brutus wasn’t enough of a handful.


Yesterday we brought home our newest addition to the Moazeni household. Meet our new Great Dane. Brutus:


Most ruby developers who use mock libraries are familiar with either Mocha or Flex Mock. However not many are familiar with the mock library that I use, Hardmock.

Dumb Moments

As a developer you face many situations where things will just not work, then you have a revelation that points to something so simple that you want to slap yourself....


Previously I spoke about Hardmock, a mocking library. Most of the time I try to develop using Dependency Injection or at least keep instantiation of objects together. However, sometimes the...

Depth Merge Update

There was a small bug with Depth Merge when merging nils without deleting them. Behavior should now be the same as the regular merge.

Annotate Models Modification

annotate_models has been really useful for me. However when using fixture_groups fixtures in subfolders are ignored. I modified the plugin slightly to include them. With luck these changes can be...

Fixture Groups

One of the things I like about working with Rails is test fixtures. However when the data model becomes more complex, the fixtures can become rather large. Worse yet, tests...

Duplicate Test Names

One of my biggest pet peeves of writing tests in ruby is based on something that makes ruby great. The openness of code.

Depth Merge

Merge is rather useful, but it has the limitation of staying shallow. Here is a simple extension of an implemented depth merge, with one caveat. Passing in true to delete_nils...

Subdomain Assertions

Working with subdomains with rails can be easy, especially with url_for_domain. However testing can be a pain.