Presenting Journeta At RubyConf 2008

I’m happy to report that my session proposal on the Journeta P2P library has been accepted by the RubyConf 2008 selection committee; I’ll be presenting sometime between November 6th-8th in Orlando, Florida. Awesomely also, fellow hardcore OpenRain‘r Marc Chung has been accepted to speak on Ruby2Ruby.

This ups the pressure for OpenRain and the community to release some mind-warping Journeta applications before the conference. If you’re planning on developing a swanky new application with Journeta, please ping me for possible collaboration and/or inclusion into the session. And I thought yesterday’s live demo was suicidal… 🙂

Slides: Ruby P2P Development With Journeta

Here (PDF , Keynote) are the slides from my Phoenix Ruby Users Group presentation yesterday on Ruby P2P Development with Journeta. Thanks a ton for the great audience. I’m extremely pleased that everyone seemed to “get it”, and even more so that the suicidal audience-interactive demo went well. Chris Matthieu has recorded the session for the Rubyology podcast, which will be available soon for free on iTunes and the web.

While you’re on iTunes, you can also grab #68: Marc‘s Ruby2Ruby presentation, as well as #48 given last year to the Phoenix Rails group on attachement_fu.

Identifying Senior Software Engineers: Six Critical Differences

For HR and legal purposes, most development companies classify Software Engineers into ranks from I to IV (or V). The higher the rank, the higher the responsibilities, expectations, independence and pay grade. To cut it as an interviewer and manager, you’ll need to classify people accurately with a minimum amount of direct personal exposure: a non-ideal but practical requirement of most hiring processes.

While we don’t regularly use titles at OpenRain, we nevertheless have to distinguish senior talent. The core issue is, “How do you objectively identify ‘senior’ engineering qualities?” Today we’ll focus on several key factors always present in quality engineers, independant of language and platform.

Instinct

He/She has developed extraordinary technical relevance filtering to the point of being able to scroll through a never-before-seen 500 line file in a language they don’t know, and tell you..

  • how complicated the code is.
  • where potential bugs are.

Even with no formal knowledge of code smells or design patterns, a senior developer can sense ugly code and architecture from a mile away even if they don’t yet know exactly why.

Foresight

Long-term implications are always on the mind of the Senior Software Engineer. They’ve been through the end-to-end development process (from requirements gathering to product maintenance and end-of-life) numerous times, know what issues are going to arise and will point out a suitable solution long before the symptoms start to appear. (This quality thus becomes most apparent after delivery when work is bombarded with never-before-seen use cases.) The truly elite developer is often hard to identify because they’re solving the important issues before anyone else notices the problem. (Ben is a primary example of this extraordinary perceptiveness.)

Results Focus

Knowledge without application leads to arrogance without insight. Senior developers are always focused on results which stand the test of time and can easily see through posers who fluff their way through status meetings.

Communication

New developers seldom understand the required differences of communication between different types of stakeholders. Newbies tend to treat all stakeholders as authoritative figures, and are quick to lose direction when exposed to people with differing incentives.  The criticality of non-verbal developer communication is also apparent to the senior engineer.  For example, a green engineer may see issue tracking as micro-management, automated testing as an ideological obsession, and project planning as administrative overhead, but these are all monumentally important aspects required to keep all developers and stakeholders in a real-time communications loop, since many do not directly interact. A senior engineer will see these concepts as empowering and often get grouchy when not present, because not having clear priorities and documentation introduces roadblocks to results.

Time & Priority Management

A senior engineer can more-or-less tell you what their schedule looks like a week out, even if it’s not written down, and won’t be hesitant to express any issues with workload ahead of time.

Estimation

New software engineers seem to invariably produce time estimates magnitudes off from reasonable numbers. The issue largely appears to be one of Foresight since accurate estimates are oft best produced by benchmarking current requirements against past similar project experiences: a task more easily accomplished with experience. This issue is an arguing point against the “Customer is Always Available” aspect of eXtreme Programming since a green developer is generally more likely to over-commit to a workload than a senior.

Leopard Server: Bonjour-Based DNS A Performance No-No

Prior to moving into the new OpenRain office (announcement coming in June), we used OS X’s magical .local addressing to find all our servers. This allowed us to keep almost everything on DHCP, which is trivial to set up and administer. Little did we know, however, that this was being the root cause of many internal issues.

  • General network I/O performance (file server access, OpenLDAP-based logins etc.) sucked. Simply using Server Admin or Workgroup Manager across the network would often take 5+ seconds to log in.
  • Portable Home Directory (PHD) syncing, VPN and firewall services never seemed to work right, possibly due to nonequivalences between “server.example.com” and “server.local” in SSL and SSH. I’m not completely sure, but stuff broke in more ways than one.

Case in point: do not use bonjour-based DNS for your core network services. Use a proper DNS server from the start. DNS is a cornerstone dependency of all the other services provided by your Leopard server, so any performance issues you introduce at this level will carry through to your entire infrastructure.

Pictures: Costa Rican Landscapes

I recently returned from a week-long trip from Costa Rica. These are best frames from the trip and are intended for large format viewing. Flickr royally sucks at that (everything is shown low-res by default), but you can nab higher-def shots with a few clicks if you have a 24″+ monitor and would like to fill your screen.

Contact me privately if you’d like copies of the highest resolution RAW sources. (JPEG == Yucky.)

Costa Rica 2008 Flickr Set

 

Cool Daily Links

  • SearchMe.com :: Google search meets Apple’s “Cover Flow” for the web. Smells hot to me.Â
  • iPhone SDK Gets Interface Builder :: Now it’s actually fun to learn about native iPhone application development.
  • Upcoming Free iPhone Development Webcast
  • Monoprice.com :: You need to buy your random cables from these folks. I started using them last year and couldn’t be more pleased with the price and quality of the CAT 6, DVI and FireWire cables. Shipping isn’t free, but it’s reasonable, and if you wait until you have $100 in needs before placing an order, well worth it.

Rails 2.0: selenium-on-rails routes.rb fix

When I updated a few projects to Rails 2.0 last year, selenium-on-rails stopped working … some issue with routing and the lame way selenium-on-rails adds its routes. I didn’t spend the time to figure out exactly what the routing problem was, but did manage to hack a quick fix into routes.rb. This feels like the Wrong Way for an ultimate fix but it at least solves the immediate problem. Shove these rules into your routes.rb and the /selenium path should start resolving again…

Continue reading Rails 2.0: selenium-on-rails routes.rb fix

Welcomed To The RRoD Club, Part 2

The RRoD 360 repair process has been straightforward so far. (After all, Microsoft has certainly had an ample volume of opportunities to improve it.) The online repair form was straightforward, and my empty pre-paid shipping box arrived yesterday._mg_9894.jpg

Everything needed to package the console for return was included: a plastic bag for the console, padded foam, large strip of packaging tape, shipping label, small form (in English and Spanish) and clearly written photographic instructions. Paying for door pickup would have been nice, but that’s not a big deal. I’m off to drop it off at UPS right now.

In The News

OpenRain affiliate img surf‘s Mugr facial recognition services have been receiving some press lately. Here’s the lowdown of what’s been happening..

Mad props to the Mugr team for the thrill ride thus far!