Think Weeks Approaches

I read somewhere that Bill Gates retreats for a few weeks to read whitepapers and books in order to strategize for the future.  I know there are fewer Bill Gates fans out there these days, but idea has definite merit.  So as I embark on another vacation, I usually spend a couple of weeks trying to decide what readings I’m going to take along with me.  Of course, I never work through every book I take, I just want to have the variety around me just in case I stall on a book or just am in a different mood on a particular day.

So what am I taking this year?  In no particular order:

You’ll note that none of these books is technical in nature — well, you could make a case for Dreaming in Code, but its certainly a different sort of book about technology.  I get a full dose of technology during the other 50 weeks of the year.  I treat these two weeks as an opportunity to read about business strategy, marketing, innovation, or human behavior.

So why this mix of books.  Made to Stick is about the science of memorable ideas and appears to be incredibly well-written.  I am guessing I’ll power through this book and maybe even complete it on the plane.  Who among us does not need to know how to sell their ideas?  You need this skill every day, though admittedly some ideas are bigger and deserve more attention in their craftsmanship.

I have already read over half of Mavericks at Work, so this one will get finished fast as well.  I enjoy reading about creativity in the workplace.  If you’ve been in a culture where you feel somewhat suppressed, reading a book like this gives you hope and inspiration for the future.  I’m particularly enjoying the sections that talk about Southwest Airlines since they are a local company.  Their culture seems to be remarkable.

Wikinomics and The Wisdom of Crowds are two books that center are on group behavior in the online and offline worlds.  Though the perspectives are different, I’m very interested to read about each.  I’m reading these two for insight into the growing popularity for social websites.  And who knows, maybe I have an idea rolling around in my head that needs to be nourished.

And finally, Dreaming in Code.  This looks like an interesting book, though I can see myself stalling out on it as it might remind me too much of the other 50 weeks in my life.  I’m not sure when I’ll start this one, but it will get read at some point.  At any rate, I would really like to see what others’ experiences are.

Not making the trip is Release It which is a book about properly architecting systems for their life in a production environment.  You say that every system eventually goes to production, eh?  This would be true, but you’d be surprised how little thought goes into the post-development landscape.  I have read the first part of this book and many of the anecdotes are ringing very true and familiar.  But of course, as I say that, don’t think that I design crappy systems.  All I can say is that sometimes constraints beyond your control lead you down a sub-optimal path.  The trick is to minimize risks in the face of the constraints you will surely have.  Obviously, this book doesn’t make the trip because this is the life I lead outside of Think Weeks.

Posted in Business Strategy, General | Leave a comment

Your questions about hire.billeisenhauer.com

A few people have asked about my “hire me” site, so I thought I’d answer them here for everyone.
The first question was how did what I put together differ or distinguish me from what anyone could do with a Linkedin profile? Good question. A Linkedin profile probably will get more visits based upon Linkedin’s popularity. However, I would not be able to provide PDF and Word versions of my resume, work samples, and tinker with my SEO. At present, if you enter “Bill Eisenhauer” into Google, you’ll see a Linkedin profile under that name as the 5th choice — unfortunately, that’s not my profile.

The next question is: would you consider productizing it to enable others to have online resumes? The answer is: maybe. If I was convinced that I could find enough paying customers, I would. However, I’m not sure I could do that. I will say that it is nice to be able to point recruiters and potential employers to the site for resumes, samples, and testimonials.

Another question is: what’s up with the odd classes in some of the markup? Well, that’s microformats. I am tinkering with hResume, hReview, and hCard. You can download a Firefox extension which alerts you when microformats are present on a page and on my site you can see microformats on about half the pages. For now, I’m probably about the only one who thinks this is cool, but such is the life of an early-adopter.

Lastly, I’ve had a couple of recruiters ask about the effects found on the site (e.g. samples, about – tag cloud). That’s some Javascript and AJAX just for the heck of it. Its kinda cool to refer a recruiter to my site when they are asking if I’ve ever done any AJAX. So, not hugely useful, but mildly demonstrative of my skills.

I have surmised that my ability to code in Ruby is not of much value to the Java community. There’s just not much crossover between the two. So while I like coding in Ruby and Rails, it would appear that I won’t be paid to do so anytime soon.

Posted in Ruby, Ruby on Rails | Leave a comment

Job Seeking 2.0

As many of you know, I’m looking for employment now while my Nokia days come to an end. I thought I would post some thoughts on how you find a job in the current job market. Nevermind that I don’t have a job, I just started looking in earnest a couple of days ago. So here goes:

The first thing to get straight is that YOU are the product. Prospective employers are your customers. And as a result, you need a marketing plan. Your marketing plan must begin with the usual self-assessments which eventually lead to your main marketing vehicle — the resume. In some ways, you could almost consider your resume as the product.

Next comes the distribution problem. How do you get your resume in front of those who you wish to become your buyers? In today’s world, you get your resume and profile up on all the job boards that are relevant to your profession. However, reentering the same data over and over is such a pain. To ease your pain, use SimplyHired which is a site that will enable you to enter your resume data once and then blast it out to sites of your choosing — a real time saver. Just be sure that you get the information right because after SimplyHired does its thing, you will have to manage individual accounts at all the sites.

As an added touch, I created my own website to promote my efforts. The website serves as a visual reinforcement of my technical skills. Its well-designed, uses semantic standards-based markup, is CSS-based, and uses progressive enhancement in a couple areas to improve the user experience (printing, tag cloud AJAX). Its not an over-the-top tour de force in technology, but is just enough to impress the target audience — prospective employers and recruiters. Because some of you will go there, I readily disclaim that its been soft-launched. Expect to find minor cross-browser issue and some content yet to be provided. You techies are a tougher audience than my target audience!

So when you flip the switch on this machine, you will get assaulted with emails and opportunities. These are your customers banging on the door. To organize yourself, get a Highrise account from 37Signals. Highrise is a mini-CRM application and let’s face it, you will be talking to people, exchanging email with people, and more or less manage the sales process. Highrise is perfect for this and is free for limited use.

Once you actually start interacting with people you’ll have to get pretty savvy at determining who to spend your time with. I have received very generic requests to call recruiters and I don’t get involved further unless I am able to get a compelling story up front. Be prepared, you will also hear from people who will disregard your skills, experience, and relocation preferences entirely. I am deleting most emails on that basis alone.

So far, things are going well. I think that treating this situation like a product campaign has been beneficial. I already have some solid leads and opportunities that I’m following up on. And this is Day 3.

Posted in Business Strategy, Java, Ruby, Ruby on Rails | Leave a comment

Final Word on Media Temple

As we speak, I’m now probably 7 minutes into rebooting my Rails container. Why? Because all my apps went down and won’t restart and that’s the only thing I can think of to do. Why is it taking so long? Your guess is as good as mine.

They do seem to be able to keep my blog up, but even the initial admin page came up without a stylesheet. I’m not sure what’s going on over there, but something is definitely wrong. I’m not sure if I’m alone on this, but I’m definitely going to perform a Technorati search to see if anyone else is having trouble.

I am not running mission-critical apps here. Nor am I running high traffic sites. If I were, I’d be either losing money or losing credibility or both. If you have a site where either of those are concerns, I’m forced to recommend that you don’t host it at Media Temple. At least, not in the Rails containers. They clearly do not have that technology figured out yet.

10+ minutes and still rebooting the container.

I’d also like to add that support seems pretty spotty as well. Its likely that you’ll get a quick initial response, but it may not be well-considered or thorough. After you respond again, there’s a longer wait for the next reply. One of my tickets is on its fourth iteration and they finally directed me to a page full of support links. I don’t really call that “support”.

So it looks like this weekend I’ll be finding a new host for my Rails apps. Here’s hoping this post saves others some money. I have a reservation into Slicehost, but there’s a waiting list there. Looks like I may have to bite the bullet and pay more than I wanted to and use someone like RailsMachine.

Up after 20 minutes, but the container still shows its rebooting. Not acceptable.

Posted in Ruby on Rails | 4 Comments

Why Why?

I have subscribed to Why the Lucky Stiff’s Redhanded blog for quite some time, but lately I’ve been unable to fight through the distractions.  I present to you his latest performance.  Is anyone else wishing he’d kill the noise, so that we can all learn from him?

I’m pretty sure that I sound like a Father telling his kid to turn the music down…and so at least I am self-aware.

Posted in Ruby | 2 Comments

AppConfig Plugin for Rails

Its probably because I come from the Java world that I felt compelled to create an app configuration mechanism which enabled easy externalization of app properties.  This is not an Earth-shattering, whiz-bang plugin, so I’m not going to oversell it.  Quite simply, this plugin just enables you to put properties into an app.yml file and manage it nicely with Capistrano.  So maybe this’ll save you 10 minutes of coding.  Here goes:

FEATURE SUMMARY

This plugin provides for easy externalized configurization in a YML file:

  • Common and environment-specific configuration contained in a single YML file.
  • Capistrano task to preserve configuration file from release to release.

USAGE
Place configuration elements common to all environments in the common area as demonstrated below:

1
2
3
# Configuration for ALL environments.
common: &common
  app_name: your_app_name_here

Place environment-specific elements under appropriate environment as shown below:

1
2
3
4
5
# Configuration for PRODUCTION environment.
production:
  <<: *common
  google_api: some_long_api_key_here

To obtain the values from anywhere in your code, simply access the attributes of the environment like so:

1
2
3
puts AppConfig.app_name
puts AppConfig.google_api

DEPLOYMENT

To preserve the configuration values across releases, call the symlink_app_config task from within the after_update_code task.

1
2
3
task :after_update_code, :roles => :app do
  symlink_app_config
end

To update the app.yml file for the first time or for subsequent times, the task update_app_config can be used as below:

cap update_app_config

This takes the app.yml file from the config directory of the application and uploads it to the release path on the server.

You can get it here:

script/plugin install http://dev.billeisenhauer.com/svn/projects/plugins/appconfig

Hope someone finds this useful.

Posted in Ruby, Ruby on Rails | 1 Comment

Media Temple & Rails: Failed?

Today I woke up to find that every single one of my Rails apps hosted at Media Temple were down and would not restart.  I received no notifications whatsoever and am somewhat baffled as to why this is the case.

I am actively coding on one app, but the other two are pretty much unchanged.  As such, I don’t believe there’s anything that I’ve done to cause this.

I do have the 64MB container, so I know I’d be pushing the limits if they all were popular.  The fact is, I actually have only two of the three up at any given time, so I thought I could squeeze in within that smallish container.  Upgrading to the next bigger size is something that I have not wanted to do because I haven’t felt completely comfortable since Day One.

Anyone else have experiences to share with Media Temple?  I’m about to pack up my toys and go play somewhere else.  I was seduced by the Grid Container concept, but I am about ready to declare that it may not be ready for prime time — and its not like I’m doing much here either!

Posted in Ruby on Rails | 3 Comments

Advanced Rails Studio




advrailsdallas_5

Originally uploaded by pragdave.

This past week I attended the Advanced Rails Studio in Dallas and had a fabulous time. The picture you see is from our lunch outside on Friday — I am in mid-gesture at the near table on the left.

If you have the opportunity to go to one of these studios, I think you’ll both benefit and enjoy it at the same time. The Rails Community is filled with a smart and optimistic bunch of people who are very fun to be around.

The Studio itself was run with amazing attention to detail. I can tell you that I was very well-fed and not just with bottom-feeding food, either. Kudos to Mike and Nicole for making the logistics so automatic.

Unlike my experience at the basic Studio back in January 2006, this one involved much more discussion and debate. Just imagine 40+ knowledgeable developers getting together to share experiences. Of course, there were class notes, but these served mostly as enablements for discussion. Often, the value of the section was not in the notes, but in the discussion.

I do find that I generally am well-versed in most of the content that I see in the course notes. With the number of Rails and Ruby books becoming available and the amount of blog activity its hard not to be informed these days. So for me, the value of the course was in the sharing and reinforcement that I know the latest practices and that I know any applicable heuristics.

Bottom line: highly recommended.

Posted in Uncategorized | Leave a comment

RIFed!

To the uninitiated, RIF means reduction in force.

On February 15th, Nokia announced that they would be reducing staff in their IT organization.  A total of 90 people globally were said to affected.  Finland was to be affected first, then the folks Stateside.  Apparently, there are complicated labor laws in Europe and so it took them a while to get to us in the States.

We had received little information until finally meeting invitations were received by all.  In those meetings you were to be told if you were staying or going.  I was told today that I was going.

I was prepared for this news, but still surprised.  In January, I received my best review yet, though all my reviews have always been better than average.  In addition, I’m on a team that already is short-handed and serves a business with aggressive goals.  I’m involved in two high-priority initiatives targeted for June 30th deployment.  The funny thing is, we just yesterday met to begin to explore who might back me up while I’m gone on my upcoming vacation.  In the end, no one really had the time, but we decided we’d explore it as the time grew closer.  So to me, this decision does not appear to be in harmony with business needs and competencies.  I am sure there will be some interesting fallout once our business partners learn that their goals may be affected by these cuts.

Quite frankly, this is a change for me that has been a long time coming, and though this is not necessarily on my terms, I am looking forward to what’s next.  I will make that the subject of some future blog entry as I figure it out.

Its fair to say that Nokia has some challenges ahead to right their ship.  Many of the points that I made in my Why IT Sucks post were inspired by some of my recent experiences there.  Based upon the feedback inspired by the Reddit readership who visited the entry, my experiences there are not unrepresentative of the industry as a whole.  But anyway, they really need to consider their management approach in both their business and technical areas.  We rarely saw our line or organizational management wandering the aisles or asking questions.  There are opportunities for them to get to know “the factory”, improve it, and be better equipped to manage and sell its services.  Without knowing its people or processes, its inevitable that each may go astray.

On the bright side, while at Nokia, I was able to supplement my Java skills and to be a part of bringing complex systems into being.  We introduced the Spring Framework to the company as well as other frameworks like the Acegi Framework for Security.  Not only did we introduce it, we built a federation of 20+ web apps that are happily deployed on a WebLogic Platform, but none of these apps use session beans or entity beans.  We introduced lightweight J2EE into the company successfully and we did so based upon our own initiative.  This is to say that we found the framework, we learned it without any formal training, and we deployed it successfully.  This is quite a feather in our caps.

I did introduce Ruby and Rails where I could, but quite honestly it just doesn’t appear to be taking hold.  Nokia is really a Java shop and they announced recently a desire to move to LAMP architectures.  I don’t disagree with LAMP architectures, but I think Ruby and Rails would enable cleaner application architectures to evolve.  I don’t think this was even considered because the idea of LAMP architectures came from Finland and there doesn’t appear to be too much awareness of Rails in Finland.  Apparently Jarkko isn’t spreading the word well enough. :)

To be fair to Nokia, they have at least been pretty fair with the termination process.  Some companies put you out on the street with little notice and with little regard to your financial situation.  Nokia has defined a transition period, where I will transition whatever I know and whatever I am involved in, followed by another period where I am not required to be onsite or carry any responsibilities.  The point of this period is to look for employment.  Thereafter, there is a lump sum severance which is reasonable given my 5-year tenure.  Suffice it to say, this is the best I’ve been treated and I am thankful.

So with that, its on to what’s next and I’m looking forward to the ride!

Posted in General | 6 Comments

GeoKit: UK Geocoding

For those of you interested in UK Geocoding, I just saw this post come across the wire.  If you aren’t doing anything of high-volume or with high-availability needs, maybe this is a temporary answer for you.

I’ve received quite a few inquiries on this topic, so apparently there is quite a lot of interest in us doing some of this.  I’m happy to take a shot at this if I can solicit some help from my readership.  I basically need you folks to do some legwork for me.

It would be helpful if I could get the consensus view of the geocoding services that you folks are interested in.  It would also help to know if they have sandbox capabilities so that I don’t have to pay a tremendous amount to work through the development process.  And lastly, I might ask for some suggestions on the GeoLoc data elements front.  Obviously, its quite US-centric, at the moment.

I do reserve the right to use your suggestions selectively based upon time, expense, and convenience, but I think you already knew that.  So let me know your thoughts!

Posted in GeoKit | 4 Comments