Google Reader going off-line

Being thrilled was not my reaction when my Google Reader item list informed me that my favorite and only news aggregation is “going out of business”!

GoogleReaderOff-lineI do not understand this decision here. The application is working, the user base is big. So why are they closing it down? Some say that the want to focus on other products, but if that is so then are there not other candidates to close down before we go for this one. Guess not. Some say that they want to focus on Google+, if that is the case then I will be quite disappointed.

So what now? Find an alternative I guess. This will not be easy. But at this point I have “something” that is working.

Its feedly and till now it looks nice. But there are some things that still annoy me. But because I want to do a full post on just feedly going into detail at this point would be counterproductive.

So until next time

I have to get my stuff together

I fell like I am waking up from a long sleep. After finding no fun in what I do I finally found something that I enjoy doing. After so long I again know why I love the things I do.

Sadly while my head was berried in my depression the world did not stop and a lot of things happened.

The first thing I have to do now is to get my stuff together and continue where I left off.

Day 2 – what the frack happened to you

Well some of you have maybe noticed that there has been no day 2 following my day 1. This is mostly because nothing extraordinary happened on the other days and there were other things that prevented me from writing on my blog.

First of all on Tuesday that week I got a horrific fiver. So that I could barely attend the classes, but I managed to pull it through. So that explains the absence of the missing posts from the 8.19.2011 to 8.13.2011.

When the fiver subsided another thing popped up, or better, popped away. When I had my fiver my body somehow refused to smoke. After I started felling better the non-smoking continued. After smoking for X+ years I just wanted to see how long I can go without.

And to be honest today is day # 20! I do not want to jinx it but I think that there is a slight possibility that I am will join the quitting site of the smoking area.

Until now I have not smoked 400 cigarettes and saved myself around 60 EUR. And I am continually contemplating if I should invest this saved money into Deus Ex for the PS3. To this day I am still thinking about it!

But the back to the reason no posts have been written: The computer was the place where I smoked the most. And so this because the place where I was the least, because the temptation is the strongest here.

I am slowly learning to live without the 5min breaks that were my cigarettes but it is a day to day struggle.

Thx for reading

Localization! If I tell you English then give me English

I know that the next logical step in web pages is to deliver more and more localized content. But i think that some companies and developers are taking to many shortcuts to achieve this! The most aggravating ones is defining the users preferred language based on his location! This I just wrong! And in this post I will explain you why I think that this is wrong and how to do it correctly!

Before we start a little word of explanation: I prefer my web sites in English (regardless of my mother tongue) but sadly my IP address belongs to an Austria ISP. So naturally all “geo-aware” websites know where my computer sits. OK, this is not bad but what drives me mad is what they do with that information.

Now that that is done lets start. So I fire up my browser and navigate to a geo-aware website, like IGN.com. so what do I see on my screen when the page has loaded? I see:

  • Local news…OK
  • Local release dates…OK
  • The adds are also local…OK
  • Everything on the freking page is in German…NOT OK

I am quite happy with the location related information but does my location really tell anything about my language preferences? The simple answer is NO IT DOES NOT! But how should the web page know your language preferences if it does not know you? Someone could ask at this time. The answer to this is so simple that 80% of web pages tend to ignore it:

The web page does not but my browser knows!

Each browser on the face of this earth send the desired language preferences to the server when making an request! Why this simple fact is ignored i do not understand! Here is the screen that proves it!

Language settings dialog in Firefox

Firefox language settings

So this “preference” gets send to the web server with every request I do! Take this and give me the page in the language I would like to see! I do not care about the adds and the offers but the actual page content could be displayed in the language I desire (If it exists). I do not expect this to be true for small local sites that are only published with one language. But for big multilingual sites that have all the content in English to show it in my location language just because my IP says so is just mocking the user!

If the content that I want is there then please give it to me!

Making it the right way is not that hard! I will take .NET with C# to make my point, but it is easily possible in all other languages.

If you are in a web application you can simply query the HttpContext for the data you need:

string[] languages = HttpContext.Current.Request.UserLanguages;

And that is it! Now you have the names of the users preferred cultures (this includes the language he wants). Just pick the first one and use that to resolve all your multi language resources.

Is that really that hard?

A new face

I do not know if it is only me but I need something visual to put on a idea. This is why I am so obsessed by logos. When I start to do something I have to reference it with a visual clue. The same situation is with valy.

That is why the first thing that landed in the repository was the logo. My criteria of how a logo should look like are quite simple:

  1. It has to be simple
  2. It has to look good in black and white
  3. It must be cheap to print or stitch on a peace of clothing
  4. I must like it 🙂

And looking at the above criteria the original logo was not the best out there. Just to remind you how it looked.

valy logo

valy logo

Not the most exiting thing in the world. So I asked my sister to help me out here. She is quite a good visual designer and knows what I like. I guess not more than 5 to 10 minutes were spend behind the computer to create the new valy logo.

Take a look and judge for yourself.

New valy logo

New valy logo

I would like to take a second here and thank my sister. If you want to find out more about here you can contact her through me or on facebook.

How to: Elevator

After an extended shopping tour you are standing with your full shopping cart at the elevator and just want to get to your car, which is two floors below you. Sou you stand at the elevator and are faced with a extremely complex user interface whit which evil designers expect you too operate the elevator. That is the feeling i get sometimes!

Lets look at this situation as a normal person. You stand in-front of an elevator. There are two buttons on the wall, one with and up arrow and one with an down arrow. Which one to press? My brain goes: I want to get two floors down into the garage, so I should press the down button. Sound logical right? If you want to go down press the down button, if you want to go up press the up button. No it’s not! Because there are people who are in the same situation and press the wrong button. Why is that?

My first suspect was the user interface itself. But there is not much of an UI to criticize. And to be honest I can’t see how to make it simple. So there has to be another cause for the “misunderstanding”. Once in the same situation I asked the person pressing the wrong button why he did so. And his answer really surprised me. He thought that he has to tell the elevator to come down.

That was a surprise. I find this way of thinking quite funny because of the following:

  1. Why should the user know the location of the elevator (he has to at least know if the elevator is above or below him)?
  2. Why would the manufacturer of the elevator expect the user to know the location of the elevator?

I have no answer to those questions as does the person pressing the wrong button. So to finish this off please stop pressing the wrong button!

And there is something in there for developers to. Regardless of the simplicity of the user interface there will be people that will just not get it.

The PM whisperer

Yes project managers. Don’t we love them?

We tell ourself that they are important to the project but still we find it kinda hard to work with them. Why is that? My personal theory is that they are people employed to break the developers “flow” every half an hour and at the end of the week ask the mandatory question “Is it done yet?”. This is the time when we have to display a Jedi like self-control. But still we like them. Why is it that we can’t seem to work with them? Why do we constantly argue with them or just turn around and do their biding? Why I ask you?

And the answer is simple. They are the lesser evil. Most developers do not care about the business side of their work. We just want to write good code! We just want to come to work sit behind our keyboards and turn coffee into code! So we created the project manager to manage us! Take care of our basic need to not care about all the stuff that is not code. But lately I see that the PMs have developed self awareness and are trying to think. This is dangerous. Do not get me wrong not all PMs are evil. Some were developers before they were twisted and warped into PMs (pore souls).  No the real enemy is the 30 year old graduate of a business school that is trying to manage the team and has no interest in the work or the product. He just wants reports and epilepsy inducing charts!

So what can we do about it? Well I see two options:

  1. Get read of the management and code like its 1996
  2. We learn to work with them

Sadly option 1 is not a option. Why? Because I am afraid that a platform debate would kill 80% of the development community and visual basic would win. And we cant allow that!

So we are stuck with option 2. But how do we do this? Simple we will apply the same technique that biologist used to study new species! We just have to do the following steps:

  1. Learn the basic information – in our case this means we will gather all the information we can about them. Goggle and Wikipedia are your friends
  2. Observe! – because we work with them it will not be hard to observe them in their natural habitat. So keep your eyes pealed and notebooks ready at work
  3. Look for nests after breeding season – OK this is just wrong and well gladly skip this part
  4. Go online and the library – already done that in step one. But a recheck could do no harm
  5. Ask the experts – because this is a new observation and not much literature exists on this subject finding valuable experts could prove a bit of a challenge
  6. Keep learning – the nature of our business is to learn new things so this should not be a problem

There is a PHD somewhere in there.

But alas we have not the time do this. So we have to take some shortcuts. Basically we will call on our immense deducticall faculties to give some pointers on how to get it right.

Communication

First we have to learn how to communicate with them. The main problem being that we use a language of abstractions and mathematical formulas and they use a language of pie charts and excel sheets. I lovingly call their language  piesheet. So how do we start a conversation without an universal communicator?  We should try to find the lowest common delimiter. In our case this is the project. We all work for it and we all want to see it get done if for nothing else then for the sake of getting reed of the monster so we can start work on a new one. Each on the team has to know what the project is about and what its purpose is. This part was easy, because most of it is dependent on the customer or target audience.

Now comes the first major tripping stone in the communication, “estimates”. They call them estimates I like to call them wild guesses. Well not even a guess because its easier to guess the lottery number than to give an accurate estimate. Lets take the following conversation:

PM: Bob, the customer wants an extension on the billing system. How long do we need for that?
DEV: What kind of extension?
PM: Oh nothing big (my development senses are tingling) they just want to be able to add an additional billing type.
DEV: OK?! What kind of billing type?
PM: They would like to have the possibility to split the payment between a cash payment and a credit card debit.
(This would be a perfect time to ask the all important question WHY? But for the sake of keeping it short we just assume)
DEV: So basically they would like to split the payment between two debiting stations?
PM: I guess. So how long would that take?
DEV: I would say no more that five days.
PM: Great. I will speak with the customer right-away.

So lets take a look at what each of them have taken from this conversation:

PM: OK the change will take no more than 5 person days and the cost will be 5 x 700$ = 3500$ to that we will ad 20% of risk management and 20% for quality control. So the final price will be 3500$ + 20% =  4200$ + 20% = 5040$. So the change will cost no more than 5040$.

DEV: How the freaking hell did they come up with that? What were they thinking when they ordered this stuff. Well OK we have 5 days and me and my team will make it in five days. So the calculation goes something like this:
3 developers working for five days at an average rate of 10 hours a day (when was the last time you left the company after eight hours?).  5 * ( 3 * 120$) = 1800$. But wait this is not as innocent as it seems. We have to take into account that the daily “business cost” of a developer is 700$ and so this little endeavor will take on a whole new dimension: 5 * ( 3 * 700) = 10500$ .

So we come to the situation that the change has cost twice as much as originally estimated. Why is that? For once the communication is just plain broken. The other one is that we are expected to make estimates on the fly. And don’t give me this meetings bullshit. You can not expect a single person to have the whole application structure in his head. A good estimation takes time. Time that is just not given. Then we could deliver a better estimation but not an accurate one. So basically we are screwed. But I know that estimates are crucial. What I can’t understand is that our misguided estimates are then presented to the customer as de facto.

Example time: When your car breaks and you go to your local car repair shop to get it fixed you first ask for an estimate. And that is what you get. You get an estimate of what it could cost. You decide based on that estimate, and then after the car is fixed you get the bill with a number that usually differs from the estimate. So why in the name of all that is holly do we do it the other way around? Still waiting for the answer to that one!

The second part of the communication issue is the need to explain things. This is shown in two ways:

  1. You explain everything multiple times
  2. You have to explain low level development stuff in piesheet (reference to language above)

From my experience most PMs are not interested in the technical stuff until they have to explain it to someone (a big salute at this point to my current team).  So they just set up meetings and do not appear to them or show no interest in the development process that will produce the product he is managing.

So it happens that first you talk to the customer for 2 hours then you come to the office and just want to work. But no! You can take a chair and explain everything again to the PM. And after you hammer the knowledge into him you can go off and write the meeting minutes. So a two hour meeting will take anything from 4 to 6 hours of your 8 hour day. And then you are expected to do 6 hours of work on top of that. Do the math and tell me whats wrong here.

The other one is when the PM suddenly develops an interest in the implementation. Now you have to find a way to explain the code structure and other code specific things. This is just wrong. We operate at different levels of abstraction. Do you ask your surgeon if he will use a #5 or #9 scalpel? I don’t! Usually my only question is: “Will it hurt?”. Thats all the information I need. And to be honest I do not want to know how he will do his job. I just want it to be done.

And there is the question of how will you explain your “hack” you had to do to get the application to print on toilet paper? Do you really want to go through that traumatic experience again?

But enough about that lets take a look at another problem we have to solve, documentation.

Documentation

Documentation is a big part of the software development process. Humans forget, document don’t! So we get the point of documentation. But every thing has its limits. It usually happens that there is to much documentation produced by the team and no one reads it. When you write a 5 page essay about a half hour meeting you cant expect us to read it. We were there for crying out loud. Sometimes documentation is written just for the sake of documentation. To have something to put into the document management system and point at it when you can’t answer a question. This is kinda counterproductive. If I want a given fact I do not want to read through pages upon pages of documentation to find out that the application background should be blue with green starts. Which brings us to the documentation format.

In my opinion word is a place where information goes to die. After a document is written it takes enormous effort to keep it up to date. And when it takes effort you have to force a developer to do it. Developers have a live up to date documentation of the system. We like to call it source code. It’s a shame that no one else in the world can read it. So what do we do about it? I like the idea of the project wiki. An informal place where information can be stored, and changed effortlessly.  Some documentation in the form of document have to be created and maintained. But not all! I do not want to fill out a 5 page form just to get a refactoring done. And after I take my time and fill out the form I still have to justify my purpose in-front of a board of PMs. So whats the point of it?

Basically I have the felling that all the documentation is there so that someone could theoretically track all decisions the team had made in the project. And now I ask you. What would cause that to happen? Nothing! Even if people die they ask the developers and they can then tell them. No one goes through the million of pages of documentation.

So let keep the documentation at an manageable level.

Context switching

What is that you ask? I do not know about you but the majority of developers I have talked to and worked with are men. And men are notoriously lousy at multitasking. That basically means that we can do one thing at a time. Like dos or windows 3.11. So we are happily coding away in the “flow” and then comes a question from across the room. You try to ignore it the firs time but your flow is broken. So you turn around to answer to a question that has absolutely nothing to do with your current work. Because your are a man you have to unload your current work context and load the question context, this can take a minute or two. Then you answer the question, which is in the most case’s a simple yes or no question. After the question is answered you turn around and try to figure out where you left out. It’s like if you are reading a book and suddenly have to sneeze. It will take some time to find the exact word you left of. Same happens here. Just that the process takes everything from 1 to 15 minutes. Not a big deal but if you add all of those minutes end to end they add up to a couple of days in the project where you just try to figure out where you left off.

The funny thing about context switching is that it is not broken if you stand up from the computer and do something that does not include your brain like drinking a coffee, take a smoke or just get rid of some extra weight in your bowels.

The human concentration is a funny thing.

The final verdict

Freaking hell you know I don’t have any! This is like the newer-ending story. There is just no end. All you can do is to work with your current situation. Or get read of your PM and pledge for temporary insanity.

I must say that I am one of the luck ones. Where I have a PM that cares for the people in the team and not just for the charts and excel sheets. I am really one of the luck ones. Not to say that there are not some rough edges in our team to. But we can manage.

If nothing else I hope you had a little laugh reading this. And if you one of the select few then I hope you have seen some trough in my silly little rant!

Thanks for reading and don’t forget to offer me a job 🙂