Thursday, November 16, 2006

Website re-aligned and search added

.. and still improving, well we should

This post was due for a long time, but I have been just too busy running after an mission impossible.

It is many moons ago that I posted about the Google Mini and the amount of fun it was to implement it. It was easy as well.

Also many moons ago I posted about the fun it is to develop websites the right way. I wrote about the speed with which one could change the original layout from a width of 768 pixels to 1024 pixels.

So far so good

Some weeks ago (it seems many moons again), after all those moons, we finally put these changes live. So, what the heck was I saying about speed and fun? Am I completely insane?

Well, I might be, for still working here, but more about that later, I guess.

Search webservice

As said I had the Google Mini implemented in hardly no time at all. I used a simple wrapper around the API to make it available as a very simple webservice. It had only a few methods.

  1. A simple search method, basically just the one input field, that you can feed a search query. Basically the website just passes the value from the search box to the webservice.
  2. An advanced search method, as you would expect this adds the extra fields that you know from the Advanced Search page like Big Mama Google provides.
  3. Navigate page method, which is used for moving to the next or previous page of results.

These three methods are more than enough to get the information we need from the Google Mini. Actually it is more than we want as we as yet do not use the advanced search method.

Presenting the results

The webservice methods all return the search results in the standard XML format to the calling web site. The presentation of the results in a readable fashion is deon on the side of the website. Just a short bit about our website's architecture.

We have a great many different types of pages: home page, product cockpit pages, information pages, form wizard pages that share many common elements like headers, navigation, footers, sidebars etc. To make development and maintenance easy we have structured these as containers that are loaded with general and specific components. The type of container is decided in the CMS and the code then loads the container, which then in turn loads the controls using information from the CMS.

Thanks to the wonders of Object Orientation and a good implementation of that in our framework it was a breeze to create a specific SearchContainer. Just a matter of picking the right base container type and creating a specific SearchResult component.

The SearchComponent parses the XML that the SearchService returns. Using this information some sub-components (inner classes) are created, like: the search box with prefilled the search term, the serach button, the navigation to result pages, a list of the results, with title and a snippet.

Using as little HTML as possible (the results are listed as definition list) and a special stylesheet for this container the layout stays consitent with the rest of the site.

Providing a search box on each page with of the site was also very easy to do. Only the Navigation component had to be changed and ready!

Redesigning or better realigning

Our web site was originally designed for a maximum width of 800 px. Which is a bit an outdated requirement. Today the screen size you are looking for is slightl different. I wrote about the new standard in screen resolution some time ago. So, we wanted to stretch our site up a bit, making pages shorter and having more real estate for content.

So, not really redesigning: the face of the site would remain the same, it would only get wider. A typical case of realignment. So, a case of stretching the stylesheets and the background images. Not too difficult, but just a lot of work. Thanks again to our Container based approach (also used to split up the stylesheets) this was a relative simple job. With hardly any real code changes. The real code being C# and the unreal code being CSS.

Then when a new homepage design was proposed it was decided to implement that in one go. This caused some delay. Again this was not a too difficult task: it was after all only one container that needed changes. But there were some new content items going in.

All in all, chunks of chewable size, but together still quite a bit of work. It had impact on every page of the site. And that's where things went a bit wrong.

What went wrong?

These months we are extremely busy with (re-)launching improved products. As a Ducth insurance company we are focussed on the health care insurance for next year. People can only change during the month of December so we should be up and running before that. Also a new Car insurance is launched in December. The wider layout was needed for the health insurance wizard as there are just so many options a customer can choose from. Presentation-wise more space was needed.

All available resources were needed for these two products. And needed for quite some time as well. So, management decided that we had to push the Google Mini / Wider Layout project to production as soon as possible. That's when corners were cut, shortcuts taken, very limited testing done. And so errors were not found before the project went to production.

The errors were not killing the site, but they are disrupting here and there. And hurting my pride.

What went wrong then?

It's not too bad to have minor and less minor errors in a production web site. It's bad if you ignore them. You have to fix them.

But since two new major products were to launch it was decided to use all the available workforce on these products and not fix the errors. resultig in more errors in the projects that are coming to the web shortly.

To me, that's not very clever and not in line with my quest for quality.

Is there a bright side?

Yes, I think there is some good stuff in the Google Mini / Wider Layout project. After all, what was done was built in relative short time and thanks to our site framework it was easy to implement. We should have tested better and longer. I hope that is a lesson learned for the future.

But then again the best hope was Bob Hope.

Bob Hope
My next door neighbor just had a pacemaker installed. They're still working the bugs out, though. Every time he makes love, my garage door opens.

Friday, November 10, 2006

Just a short one

.. don't have time for more

It's one of these times again: busy, busy, busy. And again: busy.

I stumbled on this funny site that contains an app that guesses things about you through choices you make about which of two pictures you like better. Weird.

So, dear blog reader, how well do you know me?

Tuesday, October 24, 2006

My personal office

.. as a metaphor for web design

Well, since some time I have almost completed the rebuilding of my garage to my home office. Almost completed, yes. The odd bit here and there still needs a little twist and turn. And I need to unpack some boxes and throw old stuff away. My old IBM PC will linger for some time until this financial year is over and I have closed the books for this year. I can then start on a new much, much smaller and much, much faster machine with a new accounting application. Probably open source. Then it is a final goodbye to Windows 98 SE.

What it's like, the office?

First of all and probably most of all the office is small. It's not even the complete garage that I have confiscated it's about half of it. But like my web design idea: do not do more then needed. Use as little as you can. All things extra cost you and do not deliver any revenue. In web design it costs bandwidth. In my office it costs: extra heating, extra wall paper, paint, ceiling et cetera.

I have kept things mostly straight and rectangular. Yes, I am a CSS addict. I know, I know, you can use trickery to make things appear round or soft, but hey, I just made straight and simple.

By keeping things simple and functional I have avoided the clutter of bits and pieces. I am making doors for my cupboard that will hide all the stuff that the visitor should not be bothered with. I stay away from impressive and Flashy stuff and will only use it if it is absolutely necessary and functional.

Keep it semantic, I say, use things what they are intended for. Use a chair to sit on and not for storing old invoices.

Separate stuff, one shelf for my office supplies, one for books, one for software, one for my invoices, ledgers and other financial bric-a-brac. Like separating the content, the styling and the behavior.

My office will be the metaphor of my profession. Nice, clean, stylish and above all simple and accessible.

One final confession

Being the web purist and CSS addict that I am there is one thing that I have to confess. With some shame.

Here I go There is a table in my office.

I know, I know, being the semantic web aficionado I try to avoid tables, but this table I really use as a table. I tried it with my laptop on my lap, but it just didn't work out. Please don't tell anyone.

Friday, October 13, 2006

Meetings

.. don't you just love them?

If you do then this post is not for you. Better still get out of here. You may just be one of the types that usually destroy my happiness during meetings. Get lost in another meeting. You should probably already be there anyway. Or are you reading this during a meeting? Then politely go to the toilet and bang your head against the wall, until it really hurts.

There seem to be more and more meetings

In a recent enough job the Thursday is for the unhappy few a totally unproductive day of the week. In a department of about twenty people (I haven't counted recently so it's most probably less: we're going through a disintegration phase, perhaps more about that some other post) the management has found a way to make three or four meetings (bi-)weekly with subtle differences in composition to talk for at least an hour each about what is going on in our department. Although I must admit that I can only guess this as I am one of the happy few who doesn't have to attend any of the meetings. The most important meeting (again I guess) is on during lunch providing a group of PHBs with a free lunch. The best thing about the Thursday that most of the people who are in meetings that whole day that are free on the Friday. Yep, a lot of part-timers here. This essentially gives them an effective three day work week, that is if we forget that there are more meetings on other days as well. Any decisions made on Thursday (usually avoided until it's no longer impossible to avoid) are kept luke warm during the weekend and only set loose on the Monday so there is plenty of time to sit back with a glass of wine and think it over.

Me being one of the happy few I am still not involved in the Thursday Meeting Frenzy (TMF). But fear not there are plenty of other meetings around. We have team meetings every other week (in which one of us takes notes). These last about an hour, shorter if we can help it. We have the department meeting, also bi-weekly, in which the management tries to tell us stuff that usually people already knew, but sometimes they surprise us with information literally falling from the sky. These last about an hour and a half, provided we do not raise too many questions. Then there are the project status meetings, weekly, set for a comfortable hour, so it's best to come in late. Then we have the one-on-one conversations luckily only once in every six weeks (theoretically). Semi-annually there are the performance meetings that unrelated to the performance last at least 90 minutes.

Roho
Or are you reading this during a meeting? Then politely go to the toilet and bang your head against the wall, until it really hurts.

And I probably have left out a few. I am trying to block meetings from my mind, you see.

Meetings are not the grease in the machine

Meetings are set up usually with good intentions.

  • To keep everyone on the same page (not necessary in the same book though).
  • To point the noses in the same directions (which means looking at the PHB).
  • To make sure that we stay focused (on something blurry).
  • To resolve issues before they arise (= like making a list of unexpected problems we might come across)

Good intentions already cost hundreds of thousands of lives in Iraq alone. So be careful with good intentions. Stay well away from them.

These good intentions never turn from intentions into reality. The meetings are more repeating findings and problems that are already discussed on the work floor or by the coffee machine (which incidentally is the best place for a meeting). Within a (project) team or a department the informal meetings are by far more effective then the scheduled hourly meetings. The informal meetings arise ad-hoc and only last as long as is needed. The scheduled meetings rarely take less time than scheduled. The informal meetings involve only the people needed for the issue at hand. In the scheduled meeting all team members are burdened with a problem that can be resolved if just two people discuss the matter at the coffee machine and make a decision. In the scheduled meeting this (pre-)decision can then be told to the PHB. When one does this the right way you can even make the PHB feel that he was the one who made the decision.

Roho
All in all most meetings are a waste of time and resources.

The idea meetings is that they form the grease to make the machine run smooth. In reality meetings take up unnecessary amounts of time and people are dragged into discussions about minor unrelated problems that do not involve them in anyway other than that they are problems of people who happen to be on the same team. All in all most meetings are a waste of time and resources.

Meetings are the sand in the machine

Apart from the scheduled pain in the behind meetings also form unwelcome breaks in your work. I guess, everyone's PHB occasionally has a few days off or is ill or on a trip to an exotic place to have a demo of the new wireless mouse you don't need. And then there are these great PHB days where they gather in some luxury resort to discuss the much needed savings for the next financial year, something you can not do in a meeting room in your own building. That would cost much less.

When the boss is not there for some time you can see the department moving around a bit more easily, more productive. Did I say a bit? I mean, a lot. It's not just the lack of his or her inspiring presence, but also the lack of a load of meetings being cancelled. Suddenly, you have more time on your hands and also there are less breaks in your production. You can work on without having to go to yet another meeting. Also, less frustration ahead of a meeting and no frustration after meeting because the frustration before meeting was justified.

In these happy periods of no (or hardly any) meetings you find that meetings are the sand in the machine. The stuff that makes it squeak and go slow.

How to avoid the pain of meetings

Some of the following tactics have been used by me or colleagues with some success so I thought it would be good to share them with the world.

  • The first method is never reading any mail in your Inbox so you never know when you have meetings. If you can uninstall Outlook completely.
  • The first method only works for a limited period of time and then you are forced to read your mail. Now decline all meetings with the following specifics:
    • more then five attendees
    • lasting more than 30 minutes
    • involving people form other departments and more than two people from your own department
    • starting before 10 am or after 4 pm
  • Never ever accept any meeting in the ultimate situation where you can not get away with it: accept it tentatively.
  • be away from your desk (toilet or coffee machine or both) five minutes before a meeting starts and only arrive back ten minutes after the planned starting time and just go to work.
  • arrive late with your mobile in your hand and talk impressive stuff (I know you can do it)
  • ask a coworker to call you ten minutes in the meeting on your mobile and leave the meeting again talking impressive stuff into the mobile
  • bring your laptop and read this blog during the meeting and post some comments to it
  • after five minutes into the meeting stand up and say: "Oops I am in the wrong meeting" and leave
  • after five minutes into the meeting stand up and say: "Sorry, I have another meeting" and leave
  • when any other person in the meeting says anything, shake your head and mutter words like "oh dear, oh dear, oh dear", when asked what you are muttering say that this whole issue is not new and has been discussed numerous times and that management should decide and that this is not the pace to discuss this. Whatever the subject.
  • Play a game of Bullshit-bingo with some of your fellow victims and be sure to say it aloud.

Hope this reduces some of your meeting pain. We're all in this together.

This post is based on personal experience with several employers and on some posts I have read all over the Web. Please also read the Disclaimer.

Monday, October 02, 2006

Surf's up

.. and so is the economy

Now, that the economy is slowly getting up to speed in Europe and my home country, The Netherlands one can see that jobs are opening up again. It is hard to look in a direction and not see new jobs being offered for good pay.

Add to that the feeling that one has a different view on market conformity in salary than the average manager then things start to tickle.

Already various people from my department have accepted other jobs, both internally and externally. The overall landscape has completely transformed from about a year ago. Add to that the rich sauce of an upcoming organizational change as part of a looming merger and whoa! a lot of unrest is being discussed in the coffee corner.

Well, as I am always very flexible to changes I don't mind looking out of the windows of opportunities and see some floating by happily. In a market of demand he who has skills is in command!

We'll see what the future brings who will be the next one biting the bait of better wage in a hopefully more stable situation.

p.s. Anyone want to dangle some bait in front of a web developer? Don't hesitate.