Skip to main content


Showing posts from October, 2011

The Perfect Sandbox

I've been writing software for over 20 years... and while I'm no longer allowed to call myself a programmer, as a marketing ploy, that what I do. Recently I started having troubles with my primary OSX machine. This straight on the heals of some problems with my backup OSX machine.

The backup works fine standalone but when I plug it into my monitor the sync seems off and it bothers me and my productivity. The primary machine is starting to show lowres icons on the dock and the task switcher. I followed the first set of repair steps and it has not improved.

I have a third system I can use but what I hate most about this is that the 6-Sigma curve is blown and my development environment is ground zero.

So I've started thinking about what's next. Clearly I could put my desktop in the cloud. While google has accomplished part of this it is incomplete and does not address the "programmer" use-case. It also does not take into consideration the local developer only the r…

Cut the Cord!

Depending on who you talk to or read they pretty much say the same thing. "One big reason that OSX succeeded where other failed is because they cut the cord and started fresh". And if you talk to the insiders at Microsoft they'll say pretty much the same thing about Windows. "It's [Windows] missed shipping dates and quality goals because of the deep seeded need to be completely backward compatible.

Well, Linux is about to or has already branched to version 3. And with vendors like Ubuntu, Red Hat, and others contributing to the kernel and other subsystems... everything has been in "add more code" mode. Much the way that Microsoft has been running it's ship for the last 20+ years.

With Virtual technology like VMWare, Parallels, and others. it's time to move on. The need for backward compatibility is over. The desktop needs to be more reliable and stable.

Mojolicious and MojoX::Redis

I've been looking at the code for MojoX::Redis for a couple of days now and I'm impressed and depressed at the same time.

First the good news. Like many projects it's open source. The better news is that it looks cool. The code is nicely formatted and if anyone was following the PEP equivalent for perl then you'd say it was adhered to.

On the sad news side of things. While there is some POD doc at the end of the main project file that's it. The code is not documented at all. And the worst of it is that the code is the exact reason why people hate this crap. This person clearly knows the ins and outs or perl and he demonstrated that aptitude well. But if you asked me to reverse engineer it... it's going to take a while and a few cases of wine or beer.

The best feature is that it implements non-blocking in a way that complements Mojolicious, however, the first side effect is that the main thread continues to run while the first request is processing. When really the…

where are all the programmers

[updated 2011.10.26] grammar and a few notes.

This is just a  short note:
It seems that the number of qualified Java programmers is starting to dwindle in South Florida. There was a time when Java was interesting and exciting. The promise of write-one run-anywhere has been delivered, however, in the meantime there are so many other languages that are more productive with few dependencies. Python and perl for example.

Now the question... if you are working in a small development department and you are having trouble staffing the team what do you do? I think it's a no brainer. Get some strong and qualified manager(s) and then hire as many freshman programmers as the budget will allow.  The cream will float to the top as you develop you project and the standards. The manager(s) will mentor the freshman programmers in the way of the journeyman programmer.

Additionally, you will need to implement some sort of programmer-bill-of-rights and company-bill-of-rights.  This looks a lot like the …

Is the Facebook App really an iPhone App?

Some months ago I remember reading that Apple was denying iPhoneApps that were simple wrappers for Safari. As we have come to accept Apple keeps many of these decisions close to the vest.

This evening I was logging into Facebook when I saw the Facebook App partially render itself and then a number of Safari controls were displayed. In order to test my theory out I brought up Facebook with the actual Safari App on on the phone. And the results were identical except for the toolbar the bottom of the screen.

So now what's the difference between creating a desktop link to Facebook and actually using their app?

More importantly, what's the point? How much more information does Facebook receive because I downloaded the app versus using it natively in Safari?

Beanstalkd client/worker sample code

The following code is not tested and there is no defensive coding at all. Those are activities for the reader for now. In the next few days I'll implement the same code in perl and C.  The advantage of this strategy is that some A/B testing and monitoring will let you know which modules need to be rewritten for performance etc... The other side effect is that you can be language agnostic. (I might just try Lua too)

One of the other great side effects of this design is that since there are multiple small applications that are distributed they are easier to debug and extend. (think of all of the advantages of microkernels.)

The Client:
# load the required libraries
import beanstalkc

# make a connection to the beanstalk broker
beanstalk = beanstalkc.Connection(host='localhost', port=14711)

# select the tube that is going to forward the message to your "worker"
# you can have multiple workers listening on the same tube or different tubes
# or a combination.

Scaling REST design

The diagram to the left should give you starting point when designing a scalable system using Mojolicious or just about any kpoll/eventd single threaded/process framework. The same or similar can be said of other daemon type applications that are trying to get a lot of work done without having to deal with all of the complexities of threading. (someone recently posted that threads are the domain of a special few as they are difficult and very heard to get right) and while I agree completely I stay away from threads because the problem is more fundamental/theoretical than that. I just hate the idea of giving up all those spare cycles. (the test is effected by monitoring the thing being tested) I forgot who and what they said exactly, however, threading has overhead that I want to avoid. Of course I should also mention that threading is not cross platform. So, to recap, everything is brute force and locally optimized. And we are leaving the process scheduling to the operating system. We…

Business Class Communication With Remote Employees

At the moment I'm sitting at my desk in my home office and I have several programs open in order to communicate with me and I hate the fact that I need so many applications and so many duplicates. And it's not that they are bad applications but they are all bloated, have difference security models, and then there is the elitism of some of them.

Here's the rundown:

Mailplane is my regular eMail client for all of the gmail accounts. I currently have nearly 20 accounts.
I use iChat connected to 3 IM accounts
I use Adium for IRC
Skype and Skype Chat
Google Voice (it's connected to my MailPlane interface and my Chrome browser by extension)
A client of mine was using Mio so I installed it once too
And then there is FaceTime on my desktop and on my iPad
go to my pc

When you look at my desktop most of the apps that are running are actually idle and not running at all. Just think about all that screen real-estate, memory, CPU and network resources that they are consuming. How can this ge…

iCloud is featureless and juvenile

And in conclusion I'm canceling, disabling, and deleting all of my iCloud accounts because for the price it not only does live up to a single expectation but that which it might do is more about vendor lock-in than service, form or function. It's time for the makes of DropBox,, crashplan and SugarSync to step up to the plate with everything they can. iCloud is going to fall like a house of cards if they do not update ASAP.

Cue in the flashback ringtone like in the movie/TV "Wayne's World"

I've been a DropBox user for about a year. I really like the Sync properties. I've managed to use it cross platform between my Windows box running inside a VMWare Fusion session, my Linux instances running on Rackspace hardware and my several Macs. I like their public folders, media folders and their iPhone application. Sure it's missing a few things but "this" is a sync function I really like. (I have a 50GB account and I'm considering a 100GB an…

Website name?

I need help deciding what the name of my project website is.  a) it's going to use the mongoDB b) and Mojolicious... to store, manage and print mailing labels. This is just a sample project to demonstrate (a) and (b).

[polldaddy poll=5582814]

The Agile Manifesto

If you are really hell bent on going down the Agile footpath then I urge you to read the Agile Manifesto.  Then throw everything else in the trash.  The manifesto makes common sense and frankly if you need the other books, references, and cheatsheets. The you probably don't get it and you should look into another career.

I know this is a harsh thing to say and commit to a blog but it you think about it for just a moment and you clear your head of all of the hubris that you hold for Agile ... you'll come to the same happy place and realize your glass is half full and you'll still be able to do your work but you won't be generating heat doing agile to the agile process.

There is a whole world out there and while your dedication to a "thing" is admirable. I might just be a waste of time.

Connecting to MongoLab - perl and python

[update 2011.10.13] I thought I would add the following quote from the MongoLab support pages: "If you connect to your database from outside EC2 or Rackspace your data is less secure. While your database does require username / passord authentication, you are potentially vulnerable to others "sniffing" your traffic. We are currently exploring ways to provide for more secure methods of connecting to MongoLab databases from outside the cloud."

I'm working on a mojolicious project as currently mentioned on this site. The next logical step for the application is a connection to the DB. I was originally going to deploy a mongoDB instance on my own server... and that would be great. But I've decided to use MongoLabs instead.  I suppose I could also use MongoHQ and try them independently and for comparison. That's a story for another day.

Connecting to MondoLab was pretty simple:

create an account
create a database
create a collection
create a user for interacting w…

Software development in the cloud

Software development is about to change forever. Certainly the people at Cloud9 have recognized that and so have a dozen-ish web and desktop collaborative IDE projects (see wikipedia).

I recently purchased a MacBook Air. The small 11" version with 64GB of SSD. It's not a lot of memory or disk but it is enough if all I want to be is a "user".  But as soon as I put on my programmer hat, it's not enough.

Partly because of the screen size but more importantly the tools. Sure my mac is a general purpose computer but my clients and applications are not. From one project to the next I can end up with completely different tools requirements. For any set of projects I can be required to use widely different versions of Java, python, perl, ruby or even erlang. And then it gets crazy as I try to handle the different versions of and dependencies of libraries.

Additionally, as I get ready to package and deploy the application(s) it wickedly hard to deploy without picking up unw…

10 hours of spotify is not enough

[update 2011.10.08] One more thing about Pandora. If you're using your cellphone to play music, make sure that you turn off the player when not in use. You could do some serious damage to your wallet if you forget... unlike iTunes.

[update 2011.10.08] Pandora is awesome.  a) it's free. b) you do not need to provide ANY user id or password. c) and the upgrade for $3/month adds real value like no advertising and a real desktop app (although I do not like adobe air being installed on my computer)

I'm trying to make a case for uploading all of my music in the cloud. So I downloaded the cloud-beta version of iTunes and I allowed iTunes to take several hours and plenty of bandwidth to upload portions of my library that they did not identify or sell to me. I'm not sure whether it's a good or bad thing that 25% of my lib was not already available.

So let's do the rundown:


Several months ago I was in Stockholm Sweden working onsite for a client. Back in the day Spot…

Steve Jobs - not a me too

I never wanted to be a me too but I thought I had to say something.

Gates, Balmer, Elison, Allen, Buffet... are all rich and influential people and I'm certain I'd get some value from a meeting, however, Jobs was a person I really wanted meet. In fact I have applied for open positions, at Apple, every few years on the odd chance they were looking for me. Alas that's over.


Google Doc - resume templates has a career advice column and recently they pointed me to Google Doc for their excellent resume templates. With anticipation I clicked on "public templates", then searched for "resume". I quickly scrolled to the bottom to see the number of matches... "1-20 of thousands".  So I was getting the idea that I was going to see some cool templates.

I was very premature. Before I had a chance to click on "next" to advance to the next page of templates I started to notice that the templates had personal information in them. As I continued to the bottom of the page and on to the second page there were more and more resumes of real people.

I cannot decide whether these are real or fake. Did these people save "as template" on purpose or accident? And depending on what their answer is, are they people I would hire. Clearly the first personal resume that was posted should be rewarded for individual creativity... but what about #2 and beyond…

Eventually Consistent Storage Will Save Mankind

I recently read a tweet from @justinsheehy, the very public face of Riak @ He wrote:
Paraphrasing @GeorgeReese: to be protected from failure, put as much of your data in an eventually-consistent system as possible.
In response, and without thinking too deeply, I asked the question:
@justinsheehy @georgereese good point so why not a flat file and import later? Why all the extra cycles/rotations to write to any type DB?
And then @georgereese and I started to converse at 140-byte intervals until he sent me a link to this article: Eventual consistency - Wikipedia, the free encyclopedia.  At that moment I realized that my original question was really more of a statement; in it's absolute simplest form; the wiki definition for eventual consistency can be applied to a flatfile on a DOS-based computer so long as you take backups and restore them on another computer... at some point in time.

That said, I think; and I could be wrong, Sheehy and Reese were probably talking about Riak w…