Skip to main content


Showing posts from May, 2012

jPOS and the next generation

Having worked in the POS and payments market for many years I've evaluated, worked with and recommended the jPOS toolset. On it's own it provides a codec-like API for encoding and decoding ISO8583 messages. The API are generic enough and support all of the important variations and it's user extensible when it does not.

The best part, however, is that they also have an EE-ish version that provides an almost complete solution for implementing your merchant gateway, acquiring processor or issuing processor. Don't get me wrong, you still need to be an expert to implement one of these systems but the jPOS stack is going to give you a java-leg up.

In truth however, @apr is probably the best part of the offering. He has a keen eye for where he sees the project going and what features need to be added as it expands. He also knows what features should be left to the user to implement. And he knows how to communicate the system design as well as educate the user in how and where t…

Will the real social network please standup.

My wife and I watched "Social Network"  the other night. I cannot say that I had a new found appreciation for Facebook after watching it. In fact the complete opposite.

If there is any truth at all to the movie then we, the rank -n- file investor, should have known in advance that Facebook stock was going to smell like a cow pie. I did not invest in FB for exactly that reason and I get a sense that my decision was well founded.

The one thing that the movie portrayed was that the Zuck was fast and loose. He had an itch and he scratched it. The IPO was no different when (1) his team hacked the button (2) got married on the same day (3) wore a hoodie to the even showing that he still has not grown up.

I do not know what the future holds for FB. It could end up being the Microsoft of it's generation. But while The Zuck scored 1600 on his SATs I don't think that qualifies him to run one of the newly richest companies on the planet. And I certainly do not trust him or his com…

Python PEP-405 - virtualenv - like

PEP-405 is recommendation to include some virtualenv-like like functionality into the python stdlib. I suppose this idea might actually fly if python were driven from a single PYTHON_HOME or PYTHON_PATH env variable and for the most part it seems that PEP-405 suggests that potential.
It should be noted that this PEP was also endorsed by Ian Bikling the inventor of the proper virtualenv. --PEP-405
There is some discussion about backward compatibility but it is sort of vague and very mystical in a hand waving sort of way. One reason it might actually work well is that one application like the current virtualenv toolkit does not have to carry around all of the version info needed to work in each python version.

But let's be clear. PEP-405 is not virtualenv. It is virtualenv-like. It is also approved for deployment in version python 3.3 and I do not see anything about back porting.

Virtualenv is a killer feature. If they miss the mark and abandon all that came before I hope that someone p…

You're Fired!

There was a time when Donald Trump's tagline really meant something. It meant that you were incompetent or you royally screwed up. It was a phrase that no one ever wanted to hear. And it was a Scarlet Letter that you carried from one job to the next.

However, in today's politically correct and litigious workplace while you might be fired for doing something wrong you'll never know about it and anyone checking your references will never get anything other than "yes, I can confirm that Mr Bucker worked for us from <start date> to <end date>". If they said anything other than that they would be opening themselves up to a defamation lawsuit and those get ugly fast.

In countries like Sweden they have all sorts of laws to protect workers. Firing an employee in Sweden "for cause" is possible but it very hard. First there is the amount of documentation that is required. And even after that there is a period of required severance which can amount to a …

Changes to this website

Just a quick note about some changes I've made to this website.

(1) I decided to change the name and sub-title. This side generally projects my experience and thoughts and while the title was initially acceptable and very web 2.0 it lacked a genuine description of the information I might impart.

(2) I removed the Box control in the sidebar and replaced it with a shared DropBox folder. I liked the Box control, however, it failed me when a colleague tried to download my docs. So that was changed. Hopefully DropBox's site is stronger than the Box tool.

One lost secret of Agile teams

I recently wrote about Agile Anti Patterns and as the sun sets tonight I started thinking specifically about Agile teams. Historically there have been times when individual contributors have excelled and then times when teams functioned better. But the point I want to make to management...
While there are times when teams function better than individuals the current research by Agile researchers who have a need and desire for Agile principles to be proven do not seem to take into consideration
For example:
(10 years exp * 10 members) is not equal to (2 years exp * 10 members)
but more interestingly:
(10 years exp * 20 members) is still not equal to (2 years exp * 10 members)
The one thing that most Agile project managers do not convey is that there is no substitute for individual maturity as a component of working on a team and there is also no substitute for experience when solving problems in the same problem space.

Consider this... 100 of the smartest college grads and maybe even PHDs fro…

Is it possible to be agile and an experienced Perl developer?

In the modern Perl book the author writes:

A Perl novice might multiply a list of numbers by three by writing:
my @tripled;
my $count = @numbers;
for (my $i = 0; $i < $count; $i++)
$tripled[$i] = $numbers[$i] * 3;
A Perl adept might write:
my @tripled;
for my $num (@numbers)

push @tripled, $num * 3;
An experienced Perl hacker might write:
my @tripled = map { $_ * 3 } @numbers;

As I look at these three snippets of code they all make perfect sense to me and while I very infrequently use the map function it's not unknown to me. The reason I do not use it very often is for the maintainer's sake. If I'm going to challenge myself to remember what or how I implemented something then why should I put that burden on the next person.

So the challenge is this. With an Agile team you can expect that the members are going to have varying experience. Will it help or harm the team of the expert programmers write expert level code or if the rank and file try to write expert level code? …

perlbrew and mojolicious

I'm not a fan of the guys over at mojo but it's probably the better of the Perl micro-webframeworks out there. So I was curious if mojolicious was going to work with perlbrew.

The first thing I did was install perlbrew. There are several ways to do it. I decided upon the first option:
curl -Lk | bash
What I do not like about the above command is that the code is assumed to be good and safe. It would have been a little more helpful of the code were downloaded from CPAN.

Once the module was installed. I was directed to add a line to my .bash_profile and then restart my terminal session. Easy enough.

NOTE: I did not recall what the base version was so I edited the .bash_profile file again and commented out the line that I was instructed to include. Then I opened a new terminal session and executed the command:
perl -v
My default/host perl version was 5.12.3. And I wanted to install perl 5.16.0 the latest and current version of perl:
perlbrew install 5.16.0

Another killer app for Perl

I've written about perldoc and CPAN as being Perl's killer apps. I've also written about Ruby's RVM and Python's Virtualenv. Now I get to write about Perl's perlbrew.

I've been tweeting(@rbucker) with a couple of techies today s a result of a comment that one of the made. Something to the effect that virtualenv was going to be made a core python app. Suggesting that it was going to be rolled into the distro.

If you've been around a while and you have a little intuition... it should be going off at this very moment. I'm not going to go into the high level discussion that I had with these guys nor am I going to go into the micro details. What I will say, in summary, is that this is a very bad idea and as a result virtualenv should become very unstable as a result.

Which got me thinking about Ruby and Perl. On the one hand I know that Ruby has RVM but is there something for Perl? Yep! As I write this article I have installed perlbrew and I'm installin…

Killer new feature

I'm trying to locate an eBook called "Effective Perl Programming (2nd ed)". It's a fairly popular book with pretty good recommendations. But what has totally pissed me off is that the one site that I thought was legit, redirected me to one of two commercial sites that either wanted my personal information or wanted me to download their downloader. Can you say malware or privacy?

Boy it would be really nice of the search engines could filter these sites out of my results... and since Chrome is my browser if nefarious links could be removed or highlighted.

And while I'm at it I want some way to reject SMS messages from people who are not in my address book.

Coda2 - comments

Panic recently released Coda2 and Diet-Coda. I really like many or all of the new features and I'm looking forward to getting a complete handle on it as a tool... I've used other versions in the past.

My only complaints are that they (1) do not currently support HG/BitBucket and (2) no split vertically (3) no native support for remote tmux (4) no Perl resource book(s) (5) no markdown preview or mmd support.

One of my biggest complaints of the previous version of Coda was that if the connection to the remote server was iffy then saving a changed file could be a challenge. The last thing I ever want to do is save the file locally, wait for the connection to resume, and then forced to copy the file to the remote server. For this challenge we might be better off with the equivalent of a STASH that is/was replicated to the server and then back to the local computer.

TDD is putting the cart before the horse

Can you imagine the Budweiser Clydesdales trying to push their beer wagon? Personally I do not see it happening any time soon. So as I think about TDD (test driven development) that's exactly what I envision.

When programmers develop code there are a number of things that they should be doing... not the least of which is functional tests and regression testing. Now whether these tests are actually written after the function is written or not can be debated to some extent. What cannot be debated is just how much TDD is implemented before actual implementation of the target application, module or function.

I recently heard a story about a CTO who demanded that the entire suite of TDD test cases be implemented before the first line of code was written for the target application. This was clearly an unrealistic expectation and probably just abuse of power.

PS: consider dependency injection if you can. It makes testing easier without having to backdoor any sort of state or dependency.

Agile Anti Patterns

When you've been around the park as many times as I have you can get a little ambivalent about the direction you take whether it's clockwise or counter-clockwise. And while I reject the formal nature of Agile, Scrum, KanBan, ScrumBan there is some value and there are also some traps.

So today I'm starting my anti-pattern list and I hope you'll contribute.

(*) You never read the Agile Manifesto.

(*) You never read the Principles behind the Agile Manifesto.

I only know two of the names on the list of 17 original signatories. Andrew Hunt and Dave Thomas. These guys are fantastic programmers and now publishers. If you assume that they have 60 years experience between them, 30 each, that might be 510 years experience in just those 17; and so there is some wisdom in the original documentation.
Each of us is on a journey through life, but few, if any of us are on the exact same journey. --Rabbi Norman Lipson
(*) The wisdom of the group or team. The implementation of Agile has becom…

Fork bomb - Ruby

I'm reading a new book titled Working with Unix Processes which is published by, you guessed it, I cannot tell if this book is golden or beta but that nugget aside it's actually an easy book to read. The author is trying to show how connected Ruby is to Unix processes and for the most part he meets the mark.

What troubled me is not the tight coupling of Ruby to Unix but it was the notion of a fork bomb and that Ruby uses about 500MB (half a gig) of main memory before the application actually does anything. This suggests that with just a fews forks and average memory amounts one could bomb the target system.

Which has me asking the same question of Python, C, java and go.

PS: forking is probably not the right thing to do. daemontools and tools like it are a better approach for demonizing your apps.

Malware in the Apple AppStore?

My 2 year old daughter has decided that she is going to handle the DVDs in this family.  She has already figured out how to open and close the DVD player and she knows most of her favorite DVDs on sight. The bad news is that DVDs are designed to self destruct at the hands of toddlers. That's just the way it is.

So it is under the umbrella of fair use I've been trying to rip my DVDs and then upload them to my Tivo for viewing... she had not figured out that remote yet.

I went to the Apple AppStore and started looking for DVD rippers and there are quite a lot to choose from. Unfortunately there appears to be a clause in the developer agreement that does not always get posted on the AppStore description. The AppStore version is probably not going to rip encrypted DVDs.

Many of the vendors have a general workaround for this. They let you buy their software directly through their website. This is a nice option to have except the websites I've been to are the same websites I would …

Lead Generation - the analog enemy

Many years ago I worked for Premier Global. They were in the messaging business. Everything from fax, to voice, to email. That included incoming and outgoing messages. I remember one fine day when a coworker was recognized by executive management for tweaking their robot dialer to wait a few seconds after the remote side picke up the phone. The assumption being that the receiver would say hello and if they were interrupted by the dialer that they would most likely get a hangup. Anyway, they were right. The conversion rate was much higher now.

I've hit this topic several times this year... and now that I'm all the do not call lists I'm still getting calls. The one list that really pissed me off this weekend was the Broward County Police and Benevolent Society. The agent happened to drop the dirty little secret that there is more than one company working for the Police and Fire. This disgusts me on many levels.

Anyway, after reading this morning's jobs wanted lists I saw t…

Apple OSX FileVault - a false sense of security

The guys at Apple have done a pretty poor job describing the inner workings of FileVault and FileVault2. I'm sure that part of that is for security through obscurity. And the rest might be FUD like federal agency back doors. Recently there was a well publicized DEBUG flag that put the user's password in the clear on the disk.

All of that aside. Back in 2011,  when I was working onsite in Sweden, my laptop decided to stop working. The problem was quite serious and at some point in the diagnostic I was whacking it against a coffee table. On the upside; my client had a contract with Dell who provided many hundreds of identical mini laptops running the latest Ubuntu with a totally encrypted hard drive. The user had to enter a password for the encryption and then a userid and password to win access to the OS. What was interesting about this model was that unless someone entered the HDD password there was no way to get to the data. I'm fairly certain that the password contained s…

New Book idea - Startup Accounting

Commenting on articles has been a bit of a hobby for me lately. In this latest installment I take on the startup entrepreneur. In some circles they can and cannot spell. But how are they able to afford things?

For one; they hire cheap labor. They may be programmers themselves. They hire college programmers trading compensation for internships with ping pong tables or stock options. They practice silent HR discrimination trying to determine who has a family and who has kids. Or trying to determine who can work nights and weekends. Many, however, will not outsource because they are actually trying to protect some unrealistic intellectual property, however, some companies have opened development offices in the remote reaches of the world like Dublin Ireland.

And that's about. it.

PS: the bit about the HR department was recently reported on the national news.

Correcting some misconceptions

I just read an article from MickeyMcKay where he espouses proper grammar for entrepreneurs. While I have no idea if he's correct or not I should mention:
In deference to mickeymckay just a few years ago it was reported that bad grammar and spelling [was] a sign of a good executive. -- @rbucker
Another author was writing about not being able to find Ruby on Rails programmers in Atlanta; and that he was forced to troll the local user groups in the hopes of finding candidates.

A few years ago I was having a similar problem recruiting RoR programmers in Birmingham Alabama. The root cause was that there were simply not enough RoR programmers at all. And so if we wanted to hire them away from their projects we had to raise our already high salary expectations.

As for the corrections:

I do not believe that grammar is a key indicator of anything except someone that might be educated or at least remembers their education. On the other hand it might also be the mark of someone with a good spelli…

The business of hiring programmers

As I sit here on the eve of an interview and the programming test which I always dread taking and I find myself reading page after page of java interview questions. One blogger pointed out a number of professional test sites... but it all caused me to come back to the same place.

Isn't it more important to hire someone who is more generally skilled and knowledgeable than someone who is singularly focused on java or some particular language? And how would you interview that person?

Apple OSX mindshare

Apple's mindshare is as much their hardware as it is their software.

Just a few minutes ago I was reconfiguring my in favor of GMail in the browser and Sparrow or MailPlane on the desktop. This was just part of a whim but it's probably a good thing that many application developers are so narrowly divided.

I also spent a little time on my BETA version of Apple's Messages. A replacement for iChat. Some of the preferences were clearly BETA and a lot was leftover from iChat. But after all that I can see that I'm still going to need Skype. Sure iChat and Messages support voice and video chat. I also have FaceTime for my desktop too. But in the end those apps are OSX only.

So long as MicroSoft is putting MS Word on the OSX desktop; Apple should be putting their apps on Windows.

You have the next great disruptive idea; now what?

I have one client who wants to build and host everything in their domain. They do not have the killer disruptive app or anything but they have a good idea for a service business that is going to keep them in twinkles for a good long time.

But if you had the next great idea and you wanted to focus strictly on the components that are considered core to the business and not the periphery. For example; instead of a social component you'd connect to Facebook. Instead of an emailer you'd use mailgun. And for logging maybe something like loggly. Of course there is mongodb, puppet and chef services and so on...

When I look at these services the costs seem on the high side per server. And when you combine the costs; they are in the stratosphere. For example; I have a client where I run 4 asterisk servers and 4 admin consoles. I wanted to try newrelic but when I looked at the pricing it was simply too much. The servers were costing 2K/mo for all 8 of them and newrelic was going to cost mo…

Apple OSX Junk Mail

There is a lot to like about Apple's Mail application that comes with OSX and there are a few things I don't like.

(1) the integration with other tools like iCal is similar to what MicroSoft did years ago with it's mail APIs. It is brutally painful when the Mail application is not configured or when all of the mail accounts have been disabled. What's worse is that the act of emailing an alert from iCal actually launches the Mail application instead of using the APIs behind the scenes.

(2) I would have liked it if the junk mail between my GMail account and the Mail application were synchronized. It really bugs me that I have two folders. I do not know who does junk mail better but I have to imagine that it is Google only because they actually have the entire population of GMail users rating emails for them. While the Apple Mail user base has to wait for the next release or update in order to get the new spam rules.

(3) The one killer feature I like about GMail and MailPlan…

Freelance licensing of 3rd party software

In a related difference of opinion...

As a freelance programmer code comes from 3 places. (1) I write it from scratch, (2) I use some OpenSource code with compatible licensing, (3) I use some of my own libraries that are not strictly licensed one way or the other.

Whatever code I write is usually going to be "work for hire" and so it will become the property of my client. He or she will have to decide what that means to the general public as in OpenSource or if it's considered intellectual property.

On the other hand, if I included 3rd party licensed software then it's pretty simple. Everyone has to adhere to the terms of whatever license(s) are written. Just about everything is going to work here. Even the GPL is manageable to a large extent.

The real challenge is what about my code library? My intended license is generally "non-exclusive use", however, my client wanted to be able to decide whether this code could be used or not. I suppose this sort of positio…

Should Freelance Programmers Offer Warranties?

I'm currently in the contract phase of negotiations with a potential new client. Every time I read the contract I see something new that I did not pick up on the previous time. It's only two pages and yet I find myself skimming instead of reading. (and in case you're interested, he reads my blog)

What is challenging for me right now are the number of vectors of risk against the bottom line. It's generally understood that everyone is going to disagree on the cost of a project, specially when it comes to cost per hour. And even if you cost the job instead of the labor; both parties are going to try to estimate. Of course there is the underlying incentive to work hard, shave time, and so on.

And then I saw the clause referring to Warranties.

Up until this point in my freelance career I had never offered a warranty. When the client took possession of the code they were obliged to test it and release me lock stock and barel... upon payment. But if there is an uncompensated war…

iPad mini? What iPad maxi or Mac-si

I'm never sure where these rumor guys get their info but one thing that I always thought "we" needed was a desktop version of an iOS device. This would make certain knowledge worker environments better and safer for the companies. But then, just yesterday, my wife asked me for a Mac or a hand-me-down Mac for our 2 year old. She seems to have mastered her iPhone3 (another hand-me-down in airplane mode with all personal information stripped)But as I contemplate strapping a Mac Mini to the underside of her ikea play table with a monitor fixed permanently to the same table and the wires strapped down and the childproof power strip. Maybe I really need to get her a refurbished iPad? Maybe what I really need is a iPad maxi?The idea of having to constantly repair my child's computer the way I have to work on my parents computers scares me. It's hard enough doing my day job and responding to my clients, my bosses, and now my 2yr old.

Do Not Call

A weeks or months ago I received a call from a robot dialer and I was proud of myself when I discovered that all I had to do was say "do not call" and the robot quietly went away never to be heard from again.

Well, this week has been hell. At least twice a day I get a call from a robot dialer reporting to be from "cardholder services" offering me protection and after the sales pitch it offers me a "do not call" option.

No matter how many times I've selected the DNC option they continue to call.

One time I opted to speek to a representative. When I started to talk about the DNC he promptly hung up. I was hoping that was going to be the end of it. But no. Clearly he was on a commission and I was taking up his time. Next time I plan to get the card company that they are selling for.

Here's the thing. Unless they are getting my number from public records they have no reason to call me. Maybe once, but certainly not more than that. If they are getting my i…

Java: everything should be public

If not everything then at least all of the methods and classes.

I wish I new the history of this decision and more importantly what is keeping this artifact of the language in place. I suppose from a historical perspective it has not really caused any trouble. The language designers had some ideas that were rooted in commercial software and commercial software libraries. I'm remembering various commercial JDBC drivers, crypto drivers, X.25 drivers, MQ drivers. But in the modern development environment black box development is no longer the norm; so it might be time to change with the times.

Looking at Ruby, Perl, Python, even Groovy. They are all dynamic languages. They are all compiled or processed at runtime and so there is no benefit to private or protected objects. The code is there for the reading if you are so inclined. Java and C++ are compiled languages. Java does have some capability for runtime meta programming. But while historically developers purchased libraries to supp…

Apache OpenOffice 3.4.0 released - Seriously?

There are a number of office suites out there and for just about every platform. The front runner(s) for the PC is MicroSoft Office; for the Mac it's Microsoft Office and iWork; for Linux it's [Apache] OpenOffice.

I have used OO since before it was Sun's OpenOffice. Even when Sun held the property there was a commercial and a community edition. (I paid for the commercial version once) I stopped following OO about the same time as I purchased my first Mac. Support was limited and the UI was consistant with the PC and Linux version but not my newly adopted Mac UI.

One of the things that makes OO possible is it's use of Java and that the JVM is available on so many platforms. But while the JVM has been getting better and faster it is still slower than native applications in the same space. For one thing the office suite functionality is ever increasing and in order to be a meme the developers have to add code and so it gets bigger and clunkier.

And unless you've been liv…

Beware of mobile payments

With the likes of PayAnywhere and Square are making moves in the mobile payment space one should always remain vigilant when handing your credit cards to anyone.

To start. PayAnywhere and Square; while they are a Point of Sale(POS) application implemented on a mobile device they are really a mobile merchant payment device or mPOS. The distinction is going to be important because for the time being these devices are riding the coat tails of the in-app and cardholder facing payment in order to get marketshare.

Cardholder facing payment services and apps require that the cardholder install an app on their mobile device. The vehicle for installing the software is typically a 3rd party like the Apple AppStore which acts as a vetting process for the app vendor.

Merchant facing apps, while it's a good idea that the apps are installed from a 3rd party like the appstore, it's not required.  A merchant can, in fact, develop their own application, download a development version of the appli…

The History of my Payments Experience

During a phone screen this weekend I was asked to describe all of my payments experience in a 2-3 page cover letter. I quickly wrote an outline and started filling in the blanks and submitted my first draft. This morning I printed the first draft which was now 7 pages. I have since cleaned up the spelling and much of the grammar. It's not meant to be a memoir and some descriptions are subjectively technical; and I've left out details that professionals should already know. Anyway here it is.


The following text represents the many payment systems I designed, implemented, supported, updated, managed, and contributed to in some way. It should be needless to say that I have worked on other projects in other vertical markets and other languages. I trust you will see the value that I bring to the business as well as the technology. One final note. These are my personal accomplishments. Sometimes I was part of a team and sometimes I worked alone it just depended on scheduling, res…

monolithic code repo does not mean monolithic executables

The title of this article just about says it all.

(1) There is something to be said for having multiple github repositories. This is mostly beneficial when you are a project owner and really need or want to split the code into usable verticals.

(2) but when you an a company with limited resources or SCCS challenged resources then you might consider a monolithic approach.

(3) The monolithic approach is not to be feared. The notion of namespaces is still maintained. Any lib can include any lib without having to build sub-modules and it gives global visibility to all of the source and not some module off the side.

(4) From time to time, however, devs think that a monolithic code tree means a monolithic application. This could not be farther from the truth. The release process of a monolithic application is much longer than a narrow vertical.

**The monolithic code repo does not mean a single homogenous language or environment either. Just everything in one place.

Domain Specific Languages - Why?

I'm not a fan of Domain Specific Languages (DSL) specially ones that are close enough to the real thing. For example; hibernate for java is a very good ORM layer but at some point you have to decide whether to implement stored procedures or us their DSL. The challenge is the optimizing of HQL requires hibernate in order to execute whereas if you use stored procedures you can use the bare CLI (command line interface) for your database. The later is so much easier!

Recently I've been looking at Chef and Puppet. There was a time when the key differentiator was that Ruby implemented a DSL based on ruby and Chef was all ruby. This makes Chef more attractive to me... specially since Puppet changed their direction even though they might not admit it.

Between DropBox and Google Drive

It's too easy to compare these products features and functions. They are, in fact, fairly similar. It's also easy to find reasons to bash one over the other for things like the terms of service.

I'll admit I jumped on the Google Drive as soon as it arrived. In fact I'm running both. I'm still concerned about the quality of the google sync, the lack of documentation, and iPhone app. and let's not forget google's recent recent fickleness toward it's other properties.

In this stage of the game I have a taste of desktop unification that I really like it. The challenge is getting all those rough edges sanded down in a favorable way.

Google clearly has a bias toward android so will we get a premium iPhone app? Don't know that there is incentive. If not then DropBox needs to acquire some apps.

Chef and Puppet have their place - but not everywhere

I have been following Chef and Puppet for a while and I have yet to get a working installation. Chef is probably a better choice for a number of reasons but puppet seems to have the corporate mindshare.

The target systems I'm deploying are credit card systems and the one thing that is uber important is that the transactions be 100% predictable and reproducible. So the notion of hot-plugging the erlang way is not acceptable.

Therefore one key feature is going to be click-triggered updates so that the (a) the entire system is not brought down at once (b) humans are monitoring when the upgrades are taking place (c) and if there is a problem it can be rolled back.

One very serious drawback of Chef and Puppet is their use of ruby. Ruby is not installed by default on all platforms and as such, even with RVM, is a challenge to manage on it's own.

Finally, while there is at least one dead tree volume out there for puppet, they produce commercial and community editions. This is another set…

Job Search - The Modern Way and the New Way

I hate the job search. Have I ever said that before? I'll say it again, I hate the job search.

Looking at my job search bookmark I have 29 sites that I visit from time to time and of that about 15 I check daily... whether I'm in the market or not I like to know what's going on and what technologies people are hiring for, (in many ways it's a game).

But when it comes to actually applying for a position there are so many things that go wrong.

As a candidate you have three or four things on your person that you use to apply for a job. (a) cover letter template, (b) short resume, (c) long resume, (d) references. Your expectation is that you want to upload these 4 documents, at once, in response to any posting of interest.

But no. That's not the way it works in so many cases that I'll never understand. For example JobVite and Taleo have several pages of personal and demographic information that they capture internally, then they re-prompt you for similar information for…

Linux and *BSD need a lot of polish

Linux and *BSD need a lot of polish if they ever hope to assault the desktop. Chrome OS is supposed to be based on Linux but that's the internals that people never see. The actual desktop is rendered from the Chrome browser and while this is akin to a dumb terminal it is still kludgy because it's all running on top of X. And while X is powerful... it's simply not modern enough to compete. (The same can be said for the various desktop managers). Frankly they all suck. The windows desktop is better than than an of the X/wm derivatives... even though Windows 7 seems to have chunky controls.

Job Search - The Golf Club Way

There was a time when membership seemed to mean something. At least the members thought so. Back in the time of Mad Men member candidates were subjectively excluded rather than objectively included. Strangely, however, there are two groups of people to which this generalization applies. The young and the old; but for very different reasons.

The old do not like change because change means doing something different. What worked yesterday is going to work today and tomorrow. They know that because it worked yesterday and the day before that. In many ways it's hard to argue that, however, I remember when the "new math" came out... and when Canada converted to the metric system. In the end life was better too. (clearly there was risk)

The young have a different view of the world. They look at the future and they see that everything looks like an uphill challenge. Salaries, responsibility, expenses, experience and so on. But when you add competition most younger talent will beha…

In defense of dynamic languages

There are a good many truths and there are a better set of likelihoods. Given the current state of dynamic languages today they are less performance than static and functional languages, however, it is also true that dynamic languages are more productive than static and functional languages. (I am not talking about savants)
Don't optimize your code at the first stage. First make it right, then (if necessary) make it fast (while keeping it right). --erlang programming rules
It is likely that regardless of the size of your project, the size or makeup of your team, or the breakthrough that you think the project represents... that your project is going to have average results at best. The Google's, FaceBooks and Twitters of the world are extreme edge cases. As proof, look at the iPhone app store. There are over 600,000 apps and only a very small fraction of those apps have the following that Angry Birds does.

So before you go off in a corner reinventing the wheel in your favorite lan…