Unmanned Pair Programming: Mr. Purple

Pair programming can a huge benefit to any development shop. It can reduce bugs, and reduce the overall cost of software development. We here are huge believers in this practice. However, there aren’t always developers available to pair with. So we’ve developed: Mr. Purple. He works great. Stuck on a bug? Discuss it with Mr. Purple. Unsure about your test coverage? Talk with Mr. Purple. Need reassurance? Just look at his knowing grin.

In all seriousness, Mr. Purple could work. As my coworker Randy (pictured) pointed out, pairing sometimes nets only “rubber ducking” and the act of verbalizing the problem often leads you to think of a solution. If you ask Mr. Purple any of the questions listed earlier, its likely you already know the answer

My Development Environment on OS X

I have had development environments on all the major platforms (Windows, varying flavors of Linux, and OS X) and I have to say, OS X wins by a mile. You can cobble together a relatively similar environment on Windows and Linux, but it never quite feels like it works right. On OS X, everything fits together nicely.

I had taken a few screenshots to help demonstrate, but they don’t do it justice. So I took a video with my new Kodak Playsport. You can’t really *read* what’s on the screen, but you can get the idea. Choose 720p for more clarity.

Software Featured

I use Spaces to organize.
Space 1

  • Browsers (Safari and Firefox with Firebug and Firecookie)
  • AdiumX (IM)
  • Colloquy (IRC)
  • RubyMine

Space 2

  • Terminals – I keep the project open in NERDtree so I can continue to work even if I’m watching a process (i.e. migrations, tests, or DB Import) I can still work. In this video I’m running a test db import and cloning a svn repository in git.

Space 3

  • Sequel Pro – I highly recommend this piece of software. I can get around the MySQL command prompt as quick as the next guy, but most of the time, I can get the job done in a nice UI, with plenty of convenience features.

Space 4

  • Mail
  • Calendar

I think this system works very well and is pretty efficient, once you get used to switching back and forth between RubyMine and VIM anyways. Switch to 720p for more clarity.

New Toy #1: Lightscoop

I got a couple of new toys in the mail today! Blog post on the other coming soon. I’ve heard a couple people recommend Lightscoop and they’re cheap enough that it became just an impulse buy. I still really suck at photography, but from what I can tell, it works quite well for the money. The most noticeable flaw with them, however, is that they’re pretty big and awkward shaped so I can’t imagine they’d fit well in any bag. Here’s the scoops and the bags they came with.

IMG_2390

Here are some pics of it on my camera (taken with my iPhone)

Lightscoop on Camera

Lightscoop on Camera

Lightscoop on Camera

Here is proof positive that I’m single:

Proof Positive I'm Single

It also came with a pretty useful “getting started” guide. The shots following were taken with the recommended manual settings.

And photos taken with (and without) the lightscoop:

Regular lightscoop (I have them backwards on Flickr)
Warm Light Scoop

Warm lightscoop

Regular Lightscoop

Camera Flash

Regular Flash

Regular lightscoop

Regular Lightscoop

Warm lightscoop

Warm Light Scoop

Camera Flash (as you can see I used my jacket as a backdrop)

Regular Flash

Oregon Trail Rally

I went to the Oregon Trail Rally this weekend. It was a ton of fun, although I didn’t get to see 2 out of the 3 I wanted to see run :( Travis Pastrana was in Austrailia, and Dave Mirra rolled his STi before he got to the spectator area. It was overall a lot of fun, even with the tons of annoyingly drunk people there. Getting belligerently drunk can be fun, but at this kind of event it’s just lame. This isn’t NASCAR. I digress, here are the pics.

This is my favorite picture from the event!

STI with Wheel in Air

Ken Block

Dave Mirra did manage to get his car to the fan area later though.

IMG_2008

Dave Mirra

IMG_2071

IMG_2082

New Camera!

I picked up a Canon XS and a EF 50-250 IS lens. I suck but here some pictures I took!

IMG_0279

Orange Flower

Seagull

Ever wanted to call me on my BS? Now’s your chance! Interview Me

As many of you know, I quit my fantastic, stable, Engineering Manager job in the healthcare industry to hop on board the startup gravy train. Unfortunately, the startup was unable to receive funding in time, and I am back on the hunt! </sobstory>

Now, I anticipate many grueling, multi-hour technical interviews heading my way.  I want to be absolutely prepared. Over the course of the next few weeks, I will be doing my best to refresh my knowledge of the fundamentals of computer science (algorithms, data structures, basically the stuff that gets hazy as you grow your reliance on Google and Stack Overflow over the years), and get my head back into brain teaser mode. As of late I’ve been in “Produce as much software as possible” mode, so I need a bit of a push.

What do I want from you?

I want you to interview me. I want you to ask me every stereotypical, gut-checking, thought stumping, “uh uh uh ” interview question you know. Beat me up. I want to be as best prepared as possible.

I’ve interviewed tons of Software Devs, so in exchange I can interview you as well, and give you the best feedback I can.  I’ll also give you my feedback from interviews out there in the wild, and help you along the process when needed.

Rules:

  • Avoid framework specific questions (ex: In Spring, what would the XML Configuration look like for declarative transactions [yes, I know this one though]. Exceptions: Rails specific questions. Hopefully my focus will be here, and I need to make sure I’m solid.
  • You can ask any brainteaser you want. However, in the likely event that I get it wrong you need to be able to explain the solution to me, or in the case of an open ended question, the flaw(s) in my logic.
  • Non-technical questions are allowed, but I feel pretty strong there, so ask away if you feel they’re unique enough/could produce dealbreaking answers.

That’s it! If you’re local to Seattle, we can meet at a coffee shop. If not, I’m totally open to Skype/Cell phone interviews! I also welcome tips, suggestions, and wishes of godspeed!

Nifty Git “Trick”

Git’s branching facilities are awesome. We all know that. However, if you’re like me, I don’t always have the foresight (or discipline I guess) to always create a branch before I dive head first into a refactor.  Then I learned about Git’s “stash” command’s ability to create a branch from what you’ve stashed, leaving  your current branch untouched. How awesome is that? Check it out:

  1. Make some changes. Stage them (stash stashes staged changes)
  2. run “git stash”
  3. run “git stash branch branchname” where ‘branchname’ is the name of the branch you want to create

And Viola! You know have a branch created from the changes you stashed. You can then use the standard merge facilities to merge that branch back into the one you were working on (or any other branch for that matter).

Isn’t that f’ing cool?

98 Red Balloons

I had quite a surprise when I walked into my office this morning.  Let me start from the beginning.

Monday, one of my devs was singing “99 Red Balloons”. It, like any other earworm, was stuck in my head, well past  Tuesday morning.

Tuesday afternoon, after humming it for two days, I banned anything involving 99 Red Balloons. I didn’t want to hear it. I didn’t want to see it. Nothing that matched the pattern /99(.+)balloons/i

This morning, I walked into my office filled with 98 Red Balloons.  Oye.

IMG_0568

IMG_0569

IMG_0570

Google Wave: UX Mistake #1

So I got a Google Wave invite this morning. My first reaction, in all seriousness, is “uhhh”.  I know this is just “preview” level software, but let me start by providing some quick feedback:

UX Mistake number 1:

WTFWave

Putting text that seems like it should be actionable under the navigation, and having it be unnavigable is terrible, terrible design. What am I supposed to do with this information?  I’m off to do real work now.

Early Book Review: Metaprogramming Ruby

This book is so good that I had to write a review on it before I even finish reading.

The book’s description on the Pragmatic Programmer’s website:

As a Ruby programmer, you already know how much fun it is. Now see how to unleash its power, digging under the surface and exploring the language’s most advanced features: a collection of techniques and tricks known as metaprogramming. Once the domain of expert Rubyists, metaprogramming is now accessible to programmers of all levels—from beginner to expert. Metaprogramming Ruby explains metaprogramming concepts in a down-to-earth style and arms you with a practical toolbox that will help you write great Ruby code.

http://pragprog.com/titles/ppmetr/metaprogramming-ruby

I originally bought this book on a prag prog binge. I bought about $300 worth books after I decided I was going to catch up on my “trendy” frameworks. This was inspired by my work on a couple projects (Grails and Rails) , during which I discovered that my antiquated Java/.NET opinions were completely unfounded.  I felt incredibly stupid, and I wanted to make up for the lost time and knowledge.

I’ll start off by saying I think the title is pretty misleading, at least initially. Those of us coming from Java and the like immediately roll our eyes at the title. Yes, this is because we don’t understand it, but we’re Java programmers. We are obligated to roll our eyes at anything that isn’t Struts, Spring, or Hibernate. The first few pages quickly changed my eye rolling to “how did I ever code without this?”.

After getting a few pages into the section that describes exactly how objects, instance variables, classes, and modules are related, I had a HUGE “A hah!” moment.  My buddy, Larry Meadors, put it perfectly: “dude, that book is the one i was looking for…and didn’t know it yet”.  I’ve decided that the title should have been “Read this if you don’t want to flail about in Ruby”.

In any case, I’m only a  few chapters into the book, and I can already say I’m very pleased with it. It’s an engaging informative read, and I cannot wait to read more on my Kindle.

If you want to start, or are already writing Ruby applications, this book is a must read. Trust me.  Buy it.

Next Page »


Twitter


Follow

Get every new post delivered to your Inbox.