All our knowledge has its origin in our perceptions. – Leonardo da Vinci

April 23, 2008

One thing that has recently become very apparent to me is that, in fact, people skills over any number of technical skills, are far more important in my career. This has become increasingly apparent as I have recently changed jobs, moving from a permanent position at a large “blue chip” (hate that description, like “red-brick” unis) to slide into the contracting field. It just suits my lifestyle at the moment, no mortgage, no women, no cry.

It seems as though I’m beginning to realise that appearing to be successful, is far more important than actually being successful, or being good at your job. In many ways this is a sad but true conclusion of the industry I seem to be operating in. Admittedly, job-hunting magnifies this fact by a factor of 10, because the cost and benefit to the employee and employer is at its highest.

I’d compare getting a job to a crisis situation, like escaping a burning building, crisis brings out the best and sometimes worst in people. Its also a huge PR exercise, selling yourself to someone. This is where it gets interesting, because, traditionally, the “alpha geek” developer, who is very good at their job, is in fact a terrible salesman, in fact all the developers I know shirk at the thought of the slimy salesguy/guyess. And (never start a sentence with And), herein the lesson lies.

You do actually have to turn into a salesguy to progress in your career. If you don’t you’re going to struggle.

The thing is humans, are clever, but inherently simple when it comes to processing information in short terms. So, in situations where you only have short terms, you have to exploit this. I dislike using the word exploit, but thats what it is, and this is where I’ve had my greatest struggles. I mean, I’d certainly not lie, or fabricate, or mislead, but I have had to learn that acting as though you are the greatest at what you do is the only way you’ll find success, especially, and notably, whilst you are still young, i.e <25. As credibility is inversely proportional to age, it shamefully appears sometimes.

The reason this has been such an epiphany for me is due to the fact that I know it is not in the nature of the stereotypical software developer to be like this, and I’ve noticed the change I’ve had to go through in order to be successful. I’m keen it doesn’t change me fundamentally, but Im also keen that I develop it further go help me get to where I want to be.

So, the old David James, software developer = quietly confident, bright, technically sound.

The new DJ = Experienced, leader, salesman.


They may forget what you said, but they will never forget how you made them feel. – Carl W. Buechner

February 21, 2008

Last week I decided I was going to have a quiet weekend, so before I left the office on friday I took a look at our communial bookshelf and picked up a new book. This time it was the turn of “The art and science of javascript“. The book is pretty good,  it piqued my interest in the subject. I’ve written a bit of javascript in the past, all client side validation, prettyness, nothing great. I certainly hadnt done any real AJAX. The thing with calling it AJAX is that it suggests its some sort of framework, AJAX sounds scary. Its not, to be honest “AJAX” is actually so, so simple. Take a look at the wikipedia page… just jump straight to the code example, http://en.wikipedia.org/wiki/AJAX.

In the back of the book there is a mash-up of flickr and google maps. I decided to do a mashup of twitter and google maps. Im well aware of twittervision, but the problem with it is that its the public-time line, not your friends, sooo… i decided to mash-up your friends updates with google maps in a twittervision style.

Heres how I got on (abridged):

Iteration 1 : Get one thing working. Got api key from google maps, displayed a simple map

Iteration 2: Put the parts together. I put some ajax code (like that on the wikipedia page) and tried to get the results of calling the endpoint – http://twitter.com/statuses/friends_timeline.json. It didnt work.. then i realised i needed to provide http basic auth credentials.. still didnt work. (I should note i used firebug to debug the javascript.. best tool out there)

Then i realised… cross site scripting problems. Basically this means you cant go from one website to another and get data, through the browser. IE and firefox will thing you are trying to be naughty and stop you. There are several work arounds

Iteration 3: Keep the pace by keeping it working. One work around is to send the request not from website a to website b,  but from website a, to website a… which then sends it to website b on the server side and returns the response to the client. I wrote an 8 line c# http server so if you submitted a request to http://localhost/proxy.html?url=http://twitter.com/statuses/friends_timeline.json, it will proxy the request. That worked fine. So i linked the twitter data with the google maps data and everything worked

Iteration 4: Refactor, refactor . I wanted to get rid of the server side proxy as I wanted it totally client side. Enter this little gem Twitter Undocumented Hacks (!!!!) . The bit i used was the Dynamic script tag.

Let me explain how this works. Its another work around to the cross-site-scripting problem. You dynamically (i.e get javascript, when the page loads, to) write a javascript <script> tag, with a url of http://twitter.com/statuses/user_timeline/ 816092.json?callback=statusCallback (statusCallback being the name of a javascript function you’ve already written), this then returns you some data to the fucntion specified, this data is in json format.. you can the do what you please with it. I iterated over it and displayed it on the google map, with pauses.

 subnote: JSON, when dealing in javascript is the weapon of choice, xml is tricky to play with in javascript, its more like string manipluation.

Iteration 5: Polish. Theres a few notations in twitters that people use, one is L:Whereami, e.g. l:canning town, london. So, i wrote some logic in javascript to parse this out, and if its there, display the twiiter as that location on the map, if not, default to the location they put in when they registered on twitter. The google geocoding (turning words and letters into lat/long co-ordinates) does all the hardwork.

Anyways, check it out http://www.simplewebphone.com/YouTwit.html, as soon as the page loads you’ll be asked for your twitter credentials, type them in and see what you think.

Over the next few weeks ill see how I can jazz it up!


No one has ever become poor by giving – Anne Frank

February 13, 2008

  

I’ve always admired the quotes of Anne Frank, for several reasons. Firstly, even through translation her brevity and clarity are hard to match in any form of literature I’ve ever read. The quote “I must uphold my ideals, for perhaps the time will come when I shall be able to carry them out“, particularly resonates with me, after all, time is toughest test of all, and Im slowly learning the lesson that Anne conveys here.

Another reason for admiring her writing is the context. Remember that she wrote into a diary, that to all extents should have been destroyed, there was certainly no way she could have know anyone else would read it. This means that much of what she writes is completely untainted by any human emotion, its sincerity is deafening, this is backed further by the line “I soothe my conscience now with the thought that it is better for hard words to be on paper than that Mummy should carry them in her heart.” (In fact she wrote several times in her diary that no-one was ever to read her thoughts.)

Finally, reading some of the quotes you will see that Anne has some amazing qualities, simply astounding when you think of the facts. She says “Despite everything, I believe that people are really good at heart.” . Putting this in the context of Nazi Germany potentially the most evil regime the modern world has ever seen, certainly make me think of the qualities she possessed that I clearly lack.

Anne Frank was a 15 years old when she died of typhus at Belsen concentration camp.


“To improve is to change; to be perfect is to change often.” – Winston Churchill

January 8, 2008

You’ve probably heard the phrase “if you havent got anything nice to say, don’t say anything at all” …

Why is there so much facebook hating going on, I seriously don’t understand it, do you remember MySpace? Of course they havent got everything right yet, but I’ve been impressed how they react to feedback, e.g beacon .. they say – “oh yer, sorry, our mistake, we’ll stop that”, and “why do all my status updates have to start with is?” they say ”good point, we’ll change it”.

Alot of (read, almost every single) online web apps just dont listen. I forgive facebook, they seem to listen, this is good, very good. I suppose everyone loves to hate on the web.

Now, going at right angles, my next topic. Perfection. Heres my take, and something that I think affects lots of people, businesses and, well life in general.

When you were younger, you probably really liked a girl/boy, maybe you thought they were “the one”, they were the first person you ever felt strongly about, all the feelings were new, and all the feelings were great. Hopefully, your still with this person, if not match.com seem to be spamming the underground , soo….

Anyways, my point is, when you’ve felt how good it can be, its hard, perhaps impossible to settle for anything less going forward, and this, unfortunatly can become your downfall. I’ve seen this in myself and also in the people I work with, the point is, sometimes forgetting is good, and definatly don’t compare everything you do to google. Having read “Getting Real”, its really reinforced to me that perfection is actually a state achieved by knowing you can’t get that feeling straight away, and that although in the past it feels like you could, you actually didnt, you invested time, tried out some different tactics, some worked, some didnt, then when it worked, it was because you learn all those lessons. So dont be a perfectionist, dont be afraid to be wrong, or look stupid, because, if im learning nothing else this years its that you can never look stupid when all your doing is your best.

So look forward to seeing me make loads of mistakes, but never the same ones twice.


“Men of few words are the best men” – William Shakespeare

December 17, 2007

When you ask people, whats your favorite song? Or whats your favorite film? The answers is invariably, “theres too many I like to name one”. Personally, I think this is because, by giving one definitive answer you might feel as though you’ll be typecast, or the permanency of such an answer makes alot of people feel uncomfortable. Of course, something to bare in mind is that over time, people change, and what you like and appreciate changes.

One of my little known secrets is keeping a list (at least in my head) of my current favorite lyrics, in fairness, the song probably as much to do with the lyrics, but I do have soft-spot for a succinct statement of the real. I recently read on JP’s blog about http://www.songmeanings.net/, which kept me amused for a while.

Something old  – “We don’t talk about love we only want to get drunk” – Manic Street Preachers – A Design For Life

Something new – “I don’t want money I want a thing called happiness” – The View – Superstar Tradesman

Something from the Artic Monkeys -“How can you wake up, with someone you don’t love, and not feel slightly fazed by it? Oh, he had a struggle.” - Leave before the lights come on


Progress is made by lazy men looking for easier ways to do things – Robert A. Heinlein

November 27, 2007

I was thinking the other day about this blog, how I don’t blog often enough, and why that might be. I found plenty of excuses, of course the real reason is because im not motivated to, but there are a few other reasons around it. Firstly, perhaps wordpress isnt the best, I mean its good, I like it, but i find it an absolute nightmare to make my blog appear in the correct font, I normally have to write it in Word (gasp), then paste it into wordpress, then spend at least 10 minutes formating, a pretty terrible experience.

 Yet it appears from the interface im typing into now I cant even select a font, surely thats a missing feature, I mean I dont want anything else, just font size, font family and bold or italic (which I can do). My other rant is about password, wherever I have to change it, ive never found it, subsequently everytime I have to log in I have to report my password as lost, generate a new one, go to my mail etc. Boring.

The human reason I dont blog so often, appart from being lazy, is that many of the thoughts I have or things I have a “potentially” interesting opinion on are non-IT related, and I suppose I’ve always felt this blog was my work-based output, so maybe ill change that, and change my blogging provider.

Thats it really, hopefully when I read this tommorrow it will remind me to do something about it.


The question of who or what the Me is, is not a simple one at all. – Mark Twain

October 25, 2007

People often ask me, what do you do?

For most of the population I suspect the answer is easy, and satisfying. But what do I say? Software engineer, software developer, software something, software nothing. I feel that whatever I say will mislead people, I don’t purely develop, goodness no. I probably spend 35% of my time writing code, I invest the rest of my time in a plethora of other tasks, from investigation/research, to engaging with customers, helping to solve problems and a multitude of other tasks.

It feels as though Im doing myself a disservice my calling myself a “developer”. Having said that, that’s what I choose to describe myself as, why? Well, there is a few unwritten rules in the world of software.

Rule 1: If you call yourself an architect, it means you do no real work, have probably lost touch with the man at the key board and are set in your ways. (Of course I jest, but it’s not as wide of the mark as many people I have met would agree)

Rule 2: Consultants – will try and sell you a solution you don’t need, won’t tell you the truth, and will manipulate the people they have a grip on to further their own interests in a company. Beware the consultant, and beware the consultant that works only to sell.

So, looks like I’m sticking with “developer” for the time being.Another thing that really concerns me about this industry is how it appears as though in order to “move on up”, you have to consciously lose your developing skills in order to get people to see your other skills. Become an excellent developer at your peril, the glass ceiling is low, that really disappoints me.

On the flip side, those people that have got into positions of importance and credibility by remaining close to their technical skills get my full and complete respect, and I’m very lucky to work with many of them. Speaking to kings (directors of IT) and paupers (software developers) with the same ability to affect, is perhaps the most important thing I can work on right now.


They say that time changes things, but you actually have to change them yourself – Andy Warhol

July 15, 2007

It’s easy to forget how fast things can change, especially in an industry like I.T. Recently, someone introduced me to the concept of “boiling frogs”, and that a frog will jump out of boiling water if put straight in, but stay in the water and boil alive if the water temperature increases gradually. To some extend this is something that we are all affected by, I mean, from the age of 6, you look in the mirror every day, and barely notice anything other than your hair getting longer. 20 years later you are 2 foot taller and have to shave twice a day.

Back to I.T, an important lesson I’ve learnt recently is to make sure you are always aware of how your environment changes, because without this, you will struggle to get better at what you do, you’ll also end up missing opportunities. Lets take web services as an example, 4 years ago no one was using them in anger, 2 years ago, if you did web services = soap over http (smtp?! Like using a motorway to sail submarines) and now 85% of Amazons web service calls come in the shape of REST. Admittedly my example isn’t great, as there are far better example of rapid change, waterfall vs agile being a good one.           

I suppose, deep down, that’s one of the reasons I enjoy my work so much, because I know not what to expect, and I feel I’ll always have the opportunity to learn, im not sure how many other industries that can be said to be really true of. People say “I have 20 years experience in Banking” I say “Do you?” or do you have 1 years experience repeated 20 times?

I look for a few things in a job, 1) Opportunity to learn 2) Work with good colleagues  (and the word ‘good’ comprises of multiple facets) and 3) Be appreciated . Of course there are many other factors that effect day to day life, but those 3 standards are mine at the moment, they’ve already changed as I’ve evolved through my life, and I’m sure they will change again.


The proof is in the profit.

April 16, 2007

A blog is often like an interior monologue. I feel I need to put a few things down, even if its just so I can read it over a year down the line and see how naive I was/still am.A pretty good measure of success is profit. Be that profit, money, time, love(?). If you get lots of something good back from what you do, it means you’re doing well. (Stay with me…)

 Software engineers, are engineers, do they always look for the most ‘profit’?

 Or are they better at solving problems?

Sometimes software engineers build software to make money, sometimes to streamline a process, sometimes just because they can’t be sacked. Making money is where the real test lays, you have to be clever and smart to make money, they aren’t the same thing. Engineers are generally clever, they can deal with complicated ideas/concepts, simplify solutions, but are they as smart? Do they understand the factors that make a solution “killer”.

Often, I feel, it is the last mile that lets most development down, lots of hard work goes into developing a solution/product, and to quote Jurassic Park “They were so busy wondering if they could, they didn’t stop to consider whether or not they should.” Feature creep, software bloating, and parts of the solution that only the person that wrote the code understand appear. The pricing model gets looked at by one person, whilst the code was looked at by 60, no one thinks to get some customers, but the solutions great right? Only in your head. Agile software development helps here, as the customer should drive the product, but far, far to often the customer is never there, the developer self diagnoses and the result isn’t so great.So, the proof isn’t in the pudding, it’s in the profit.


Money is better than poverty, if only for financial reasons. – Woody Allen

March 7, 2007

I had an interesting conversation with Paul Downey the other day. REST is cool, its cool because its straight forward, pretty easy to understand (if you understand how a browser works, you understand REST), and its intuitive. However, no one can really claim to have implemented a REST web-service (and why would they, it’s a noose for the RESTians to hang you with).

Amazon and Yahoo all have apparent “REST” apis, that both break the first rule of REST, don’t use a GET if its not ‘safe’ i.e. don’t use a getter(http GET) to perform the actions of a setter(http POST). This is perhaps more obviously ‘wrong’ in the world of REST, but many of the rules are unwritten. Should I post to www.example.com/dostuff or www.example.com/dostuff/ or both? What should I do if someone sends me data in a format I didn’t expect e.g. Content-Type=text/html, when I expect text/xml?

Maybe this is trivial, but the point is that without guidelines or rules then how can REST services be consistent? Well, they can’t, perhaps that’s their advantage, perhaps not, depends if you’re an enterprise or a basement developer I suppose, and I suppose that’s why we have SOAP. Joy.

Great article how to provide a web api, talks about keeping things simple, which I think is the key to success. Again here Alex talks about not using HTTP for an unsafe operation. Its clearly wrong when you look at the http spec, but why services do it is really easy to answer. Because users can do cool stuff just by typing text in their address bar, they can delete photos on Flickr, send a text from Gizmo. Do they care that it’s not RESTful, I doubt it, not if they’re making money.