Sunday 25 May 2014

And in the Orange Corner

I'm slightly obsessed by keeping systems up to date. Latest browsers, latest JDK, patches etc. Generally - its good practice.

OS X makes life easy when you download things from the App Store, everything is in one place and you don't have to hunt around.

This isn't the case for Chrome and FireFox though and you still have to do the update dance once a month, across all your computers and virtual machines. It's about 15 times in my household.

And what have I discovered? FireFox absolutely kicks Chromes butt. Its quick and oh so slick.

The problem starts with Chrome wanting to launch the Google Updater from within the browser; this rarely works and I end up downloading the Chrome install again. By the time I have done this - Firefox installed itself about 2 minutes ago.

In addition to this it wants to put some stupid notification bar (that I don't want) on the OS X menu bar.

Net result - at home I am slowly but surely migrating my way back to Firefox - I have already done it at work. FireFox feels much much quicker. I also like the way it prompts me for a master password before I auto fill passwords.

So.. is there anything wrong with Chrome itself? Not really. It does a fantastic job of switching users, saving bookmarks etc. Its quick enough (but not as fast as FireFox).

It's the install experience, its the toolbar install (yuk) and the general nagging that gets to me.


Thursday 20 March 2014

I'll do anything for you but I won't estimate that.

There's a proposal that we rewrite a big part of the system I work on. We'd take advantage of a new risk engine that scales up much better than the old one we use. We'd use a better source of trade notifications. Everything really would be better.

So what's my problem?

They want estimates. 

Oh boy.

Now, I've been doing this software writing thingie for 30 years. I've got better every year at every aspect of my job, learning new languages, new techniques, improving domain knowledge, recruiting, training and retaining staff, keeping customers very happy, reducing delivery times (2 week schedule at the moment). In short, doing everything I can do to stay top of my game.

So what's the problem?

I can't estimate. 

I see Dead Projects (apologies to Bruce Willis and the Sixth Sense)

I know exactly how many people it will take and for how long, I have my own sixth sense about that. But I also know how many people it will take to go to the meetings, to update JIRA, to write User Stories, to build a Confluence site.

I know how many people we will need to add inprocess monitoring, testing, metrics collection. To create the batch jobs, to create and maintain the SQL, to convert that old Ant build to Maven/Gradle. 

I know how much of my time it will take to train new people, to pass on my domain knowledge, to put the new guys in touch with the right people.

I mean, writing software can be the easiest thing in the world: think, code, test, deploy. How hard can it be?

Well, building something that will run for 10 years with barely any change ( like the last rewrite) is really hard. It's like Brain Surgery on roller skates.

I know how many people it will take to do this, I guess I am not so good at telling people the bad news. 

I can't estimate reliably how long all the above will take if priorities change. Or people move around.  Or we suddenly have to do some regression testing.. Or upgrade Apis.  

So I suppose.. I should say; I can estimate, but I won't. Not unless the world stops moving and changing. 

(Apologies to Meatloaf and Jim Steinman for the title.)

Saturday 8 March 2014

Of Mice and Men. Curley's Wife

My eldest son wrote this as a set of notes for my youngest son. He wrote it off the top of his head 5 years after he did it at GCSE. I don't like to trumpet my kids achievements - they're just normal kids.. but I was blown away by this.


Curley's Wife

Firstly, she doesn't have a name. She is identified by her relationship to Curley, her husband. This restricts how much the reading can relate to the character, the lack of name signifies an incomplete character. It means that the character can be read as representing various themes. Themes like the role of women, the role of tragedy and the role of the American Dream. Her name is also possessional, in that she as a wife belongs to Curley. 

She is the only woman on the farm, and this is important because it reinforces the divide between Curley & his wife and the rest of the characters. She is a symbol of temptation within the novel, because she flirts with the workmen. This may reflect the time period and social setting of the novel, where typically male itinerant farmers moved from farm to farm seeking employment. In this way of life, women were not judged to have a place because it was hard to hold down a relationship whilst always moving. This culminates in the scene where Lennie strokes her hair and crushes her skull, the frailness of the female body gives way to the strength of the male body. So there is a male/female oppositional there as well.

Her story about her acting (?) career is a commentary on the American Dream and how it doesn't always seem to be realistic. Steinbeck blows apart the idea of the American Dream throughout the novel, and Curley's wife is no exception. The fact that her story is so tragic, when her dreams were set so high marks the difference between the harsh realities of the 30's era Depression America and the hangover American Dream from the roaring 20's. Steinbeck himself was a social-minded author and a lot of his books were about workers and labourers in predominantly Western States in the USA, and criticising the politicians who had caused the Great Depression. 

Related to this, the tragedy of her death and the subsequent unhappy conclusion of the novella paint a pessimistic picture of the world. Coupled with the tragedy of George & Lennie's stories and that of Candy (?), the old man, Steinbeck seems to suggest that loss and hardship is a very big part of the lives of people out in the South-West. 


I've not changed a single comma. He has such an elegant and flowing style for a 20 year old. I am truly awed by it.

Saturday 1 March 2014

My second rant of the day and this time - its HP under fire.



No. I do not want Bing for HP. I wanted to install a printer driver.

No. I do not want to install your survey software. I wanted to install a printer driver.

Who does?

I mean..

Who thinks... "Hmm I must install the Bing bar because it will make life easier for me" 

No-one. Not one person in the entire universe. In fact .. I bet even the people at HP and Microsoft don't select this crap when they install for home use.

Who thinks.... "Hmm I must install the survey software because it will make life easier for me"

No-one. Normal people get a problem, go to Google, do a search for the answer, maybe go on a forum for an answer or look at FAQs and knowledge bases. If they need a complaint they go to the website and look for Contact Us and then rant away.

They do not use survey software.

Its such a shame because the actual HP software they install (on Windows at least) is the best printer software I have ever used. 

Why my love affair with Apple may be over and why Microsoft are the Kings of Compatibility

I needed to scan a document.

I have an HP OfficeJet printer and scanner thats about 3 years old, we don't use it much because we rarely need to scan or print in colour. All our letter printing is on our Kyocera FS 1350-DN (which is the best printer we have ever owned; insanely reliable and super cheap to run)

So I put a letter on the scanner bed and try and open up the scanner software. Fail. Software is not compatible with Mavericks.

Ok. Not a problem, software needs upgrading from time to time. I'll download the latest drivers.

There. are. no. drivers.

HP say that they are available on the App Store. Well I can't find em. They used to be there when I was on Mountain Lion. Now they're not

It's not just me that has the problem.

I sent the following in the crash report to Apple

Apple need to work harder with device manufacturers to ensure compatibility. I have a printer that I can’t use from Mavericks. Fortunately every machine in my house that uses Windows from XP to Vista to Windows 8 and 8.1 still supports the device. You may not think that this is important but I’m fed up of Apples attitude here.Whatever everyone thinks of Microsoft - they are the Kings of Compatibility

In the end I used my Windows 8.1 VM (running in Parallels on the same Mac) to install the HP software. Worked perfectly first time. It even worked wirelessly - something that never really worked on the OSX version.

Is this Apple's fault? Not really - they can't be responsible for every device driver produced by every manufacturer.

It's a real problem though. Microsoft work with device manufacturers to make sure that compatibility is maintained. Thats why big business will never move from Windows to OSX - they will never get a guarantee from Apple that software will keep on working after OS upgrades.

Apple could get away with this when they had a tiny share of the market. They could change CPU families at will, they could break software easily and their followers would accept the situation, buy the new version and move on.

They can't get away with this so easily now, people buy PCs and expect them to last years. I have an 8 years old Dell that works perfectly and still plays modern games, I have a 4 year old Dell that plays any game I want (after a 30 quid GPU upgrade), my 27" iMac is 4 years old and my 20"iMac (passed down through all 3 sons) is 8 years old.

The Dells updated to Windows 7, 8 and 8.1 with minimum fuss. The 27" is on Mavericks but the 20" is stuck on an old version of OSX. My white MacBook is stuck on an old OS. My sons ancient Samsung Netbook updated to Windows 8 in an embarrassingly short amount of time. Runs like greased lightning , despite being on an Atom class CPU. Microsoft are really good at this stuff. 

Don't get me wrong, I love my big iMac. The screen is huge and makes an outrageously good development machine but I am increasingly using Windows 8.1 in a VM on it in preference to Mavericks because its easier to setup and get running. Everything is compatible.




Sunday 9 February 2014

Running around

Whilst reading a Java Code Geeks article I came across the Mechanical Sympathy Google group.

And this comment made me laugh a lot:

Endless spinning in user mode is not an absolute no-no. But you should think of it like you would about endless running in circles blindfolded in a large a minefield while holding both a pair of very sharp scissors and one hand grenade with the pin pulled out in each hand. If you stop to rest and scratch your nose, things can go bad. When attempting this, you want to have the force with you, and should control your breathing and keep your thoughts calm and pure.

The original thread is here.

Saturday 1 February 2014

Am I a Reactionary, A Wise Old Sage, Overcautious or simply just experienced?

I don't like Git. Too Complicated. I just never need to branch and merge that much. I tend to work on very small pieces of work, integrate as soon as they are done/tested then release them. I encourage my team to do the same. 

I prefer SVN. When I first assessed DVCS tooling Mercurial looked a lot simpler to use than Git.

I don't like Scala or Clojure. I just need Java++ with Lambdas (coming 8 - yay), properties and immutable classes.

Full on Scala looks worse than Perl for readability. Over my 30 year career I have read more code than I have written.

Clojure strikes me as something you could not build a big enterprise class system in. Abilities in enterprises vary wildly across regions and across time. A project setup by a bunch of uber-programmers in the US may be maintained by a much less experienced team in another location a few years down the line. Don't even start me on self-documenting code.

Clojure is where all the cool kids are in Jan 2014. It may change by March 2014 of course.

I prefer Java.

I don't like Linux for development but I love the command line tools that unix gives you. My experience is that these days Linux is no more resilient than Windows. Installations of Developer tools can be a PITA compared to Windows and you have the sheer awkwardness of the *nix community.

I prefer Windows (with Cygwin). I love the stuff that Scott Hanselman publishes on his annual(ish) list. They are real developer tools.

I don't like JavaScript. I love it that people have done insane things using it: PC Emulators, Quake emulators. But that scares me as well.

I prefer ...

I have no idea on that one.

...

My last word on self-documenting code (I could not resist)

It's rarely self documenting.

It requires a higher degree of skill than the average practitioner has.

In almost all SDC I have looked at, the developer writing it wasn't as good as he thought he was.

The only way to prove self-documenting code is to have it code reviewed AND APPROVED by someone who knows nothing about your system 5 YEARS AFTER YOU WROTE IT.



BDC - Big Dumb Cache

As part of my job we use Coherence. Its not a cheap tool at all but it does offer a fast and resilient way to store lots of data.

But my team only use it as a BDC. A Big Dumb Cache. We do that because we don't have deep level Coherence experts on the team. We don't trust all the fancy features. We don't like the programming model for them. We don't like the insistence on running on identical h/w, patches, switches etc etc

We're simple guys who like simple solutions because we have been bitten way too many times in our collective experience by complicated solutions.

But BDC....

Thats a term that I use all the time and I assumed I had read it somewhere... but I can't find a link. Crikey... did I invent it!?

We do use some of the fancier features of Coherence but nothing that we couldn't move away from and nothing that most of the NoSQL engines don't do already. The only thing stopping us is support and enterprise inertia.

I'm being a bit unfair. Enterprise inertia is the process by which enterprises assess things: support, training, installation, performance assessment, security, resiliency etc All of which are much bigger than... Hey, I found this great library on the internet that does everything we need.

But one day.. someone will come along and provide all that in an easy to use, support and maintain tool for people that just want a BDC and they won't need Coherence anymore.

Hazelcast?

Windows 8 really does rock

This post was from 2013 but I forgot to post it. Still valid though.

I decided to spend some time setting up a machine with Oracle Express. For years I has used Sybase and MS-SQL Server but my new project at work uses Oracle and I felt a bit lost.

I downloaded a 4GB VM from Oracle's website that used Oracle Linux (a Redhat variant and RH is what we use at work) and had Express and all sorts of things installed. I loaded it up in VirtualBox and got to work.

It was awful: old browsers, poor driver support and extremely slow.

Ok. Let's try it in Linux. I didn't want to use Ubuntu because it was slow in Parallels. I thought I'd try Linux Mint. I had it installed already and it wasn't slow! By now it was late and as soon as it started warning me about problems with using Open JDK in Intellij I gave up.

I downloaded a 64bit Ubuntu and it really was super slow in a VM. I added more video memory and it was a bit better.

Installing Java was another faff. Oracle downloads come as RPM and Ubuntu doesn't like RPM. Converting RPM to DEB seemed to work but needed lots of manual setup.

OK. lets quickly try Windows 8.

Easy. Peasy.

Updating Windows 7 ran smoothly.

Installing all applications using provided installers was easy.

It was fast.

Why on earth did I even bother with the mess that is Linux.