Lance Ennen's Blog

Code Reviews

Code reviews are a team effort.

Michael Jordan tried for years to carry a team on his back. It wasn’t until he had a good supporting cast who knew their roles and understood the value they added to the entire organization, that he started to add championship rings to his list of accomplishments.

The same principles that go into running a successful business or a sports team are applied in the software industry. Everyone involved needs to know where the other parties are and how they’re fulfillng their specific role assigned to a project.

Progress and unity are only attained through the direction of team leaders and the participation of everyone involved in the continuity of a project, goal, or aspiration.

In the software industry, code reviews are helpful for many reasons, including:
  • Keeping the channels of communication open and flowing
  • Encouraging growth
  • Inspiring unity ...(continued)

How to Improve Business Communication with Behavior Driven Development

Effective business communication heightens productivity. An important step in increasing communication and decreasing inefficiencies is to eliminate assumptions. A teacher of mine once told the class to never ASSUME. When you assume, you make an ass out of u and me.

Every entity, which has a hierarchy of employees, managers, presidents, etc, etc. is in danger of experiencing this assumption parody if the rules of the game, and more precisely, the rules of detailed tasks are left for interpretation.

This doesn’t mean people misunderstand or deliberately ignore directions. It means we are human beings using various ways to process information. The best way to improve business communication is to actually communicate and to follow-up frequently.

How do you improve business communication?

  1. Have an effective, clear cut plan to communicate
  2. Communicate
  3. Follow-up ...(continued)

Team Velocity: Creating and Accomplishing Milestones

Every business needs a way not just to track progress, but also predict the progress. No one likes deadlines, but they’re a necessary evil. Clients need their work done when they expect it, but we (software engineers) also have to manage those expectations. Because, as we all know, client expectations are not always accurate.


Personally, I am a big proponent of using team velocity.


  1. Team velocity tempers client expectations, because:
  2. it gives the business a tried and true method of when to expect project completions, which:
  3. allows software developers to focus on what they do best.




The whole idea behind team velocity is: not to create the stress of deadlines by setting an arbitrary timeline for a ticket. Its purpose is to use progress, you as the software team either think you can achieve or progress you have ...(continued)

Stand-Ups: Get Your Morning Started Right


In the software business we have stand-ups. These are morning meetings where everyone shares progress and hashes out minor issues.

Every day we have morning stand-ups. I view these as the most important meeting.

I’ve worked in places before where missing the morning stand-up costs you a dollar. The money was thrown into a tip-style jar and at the end of a long iteration we would use all the money from the jar for a party. The whole point is, the stand-up is the most important meeting of the day and missing it should be only considered for emergencies.

Stand-ups are important for several reasons:

  • Communication

  • Accountability

  • Motivation

Objective of the Stand-Up

Stand-ups are the best ways to make sure everyone is up to speed on a project. Each person attending the stand-up is expected to tell everyone on the team what they ...(continued)

Visual Retrospectives - Skills for Team Development


Team development is important in every organization, business or group. The question is: How do you structure your development sessions so they make a positive impact on your employees and teammates?

Depending on how you structure your meetings, they can be productive or just a common annoyance. Information absolutely needs to change hands. The most productive meetings occur when everyone involved leaves feeling like they contributed and learned something.

This might sound like a futile effort where, once given a voice, a team of 10-40 people could turn into an all day invitation to stand on a soapbox and get something off his/her chest. We’ve all been in room where one person takes over and people start faux coughing and sneezing “shut your pie hole”. Visual retrospectives disrupt this leather-couch-venting-effect common in other ...(continued)

Remote Development: To be (there) or not to be

Remote Development, like anything else has its pluses and minuses. Remote working in general came under fire as recently as last week, when Yahoo’s CEO, Marissa Mayer, recently ordered the troops back to the fort. What are the benefits of remote working and more specifically, remote development?

I’ve been remote for over a year and a half. I have enough experience on both sides of the fence to weigh in on the benefits and drawbacks of saddling up with the team at the office and riding solo at my home office or remote location.

Experiences with Remote Development

After Groupon acquired Obtiva, I took a job with LexisNexis working on I was working remote along with two other developers in Denver (Jim Ray and Jeff Powell). Every morning we had our morning stand-up call, which I had programmed into skype. I got up, threw on my headset and called ...(continued)

BuiltInChicago aims to sprout more Groupons

I’m currently helping, which is a Social Networking site for the tech community here in Chicago. I will soon have more to report about the work I’m doing, but for now check out this article in Sun Times. BuiltInChicago aims to sprout more Groupons

Lance Ennen Built In Chicago

Obtiva Geekfest - Real-time view of server traffic and events using OpenGL and SSH - By. Bodaniel Jeanes

Bo, demos a real-time visualization of server traffic to Obtiva’s geekfest using his 2010 rails rumble project:


Obtiva Geekfest Programming for Business Users by Brain Marick

Awesome interactive role-playing explanation of programming for business users by Brain Marick. See it yourself at the upcoming Agile2010 conf! I filmed this with my iPhone 4, and clipped it together using iMovie on my iPhone.

GrouponCon: Groupon Obtiva Open Space format Conference

This past weekend, I went to grouponcon which was an Open Space format conference for groupon and obtiva. At 9:30am, we began our Open Space facilitation and determined the direction for the day.

The first talk was a career retrospective of the man: Ward Cunningham. We discussed hypercard, which was his inspiration for wiki. Signature survey where Ward Cunningham talks about writing throw away scripts, and learning by reading the signature of the script. Fit, and finished with a quote by Ward Cunningham ”work effectively on the right thing in a visible way”.

Next we discussed scaling groupon the issues discussed were traffic spikes, high volume requests, expenses requests on card authorization, and collections. We focused on card authorization issues, and came up with ideas to pre-authorize good standing customers, based on number of purchases on there ...(continued)

CSS Spriter for Ruby on Rails

My first time speaking. A little rough, but you got to start somewhere! Thanks to Colin Harris and Tyler Jennings for making CSS-SPRITER Also, thanks to Colin Harris for images used in my slideshare.

Passenger, VMWare, and Windows for testing sites

I’ve been using Passenger for my Rails projects for the past year. When it comes to testing my Rails apps for browser compatibility I like to use crossover for ie6 (on OSX), and Windows 7 for ie7 and ie8 using Internet Explorers Developer Tools. I run Windows 7 using VMWare.

When I need to test an app that’s using Passenger in VMWare in the past I’ve updated my hosts file (/Windows/system32/drivers/etc/hosts) with my current IP address. This has become a pain, and time consuming.

The solution since we can not use for a hostname. Run this command in your Terminal “ifconfig vmnet8” and grab the ip address next to inet. Take this ip address and update your hosts file on your Windows VM. Don’t forget to copy your hosts file from your Mac to the Windows hosts file.