Archive for March, 2005

A great Easter

I'm working like a dog, even on Easter day, but this is nevertheless an Easter I will remember. This one has been a horrible week: on thursday my mother was scheduled to have hand surgery (carpal tunnel and stuff), nothing major or particularily worrisome, but hey, surgery is surgery so I was worried anyway.

To further spice up the medical week, last sunday my father had a heart attack (first time ever: he's a strong men with no health issues in 62 years): he went to the hospital, and was told he had a severe coronary failure. A coronography was in order to understand if he needed bypass surgery or "just" angioplastic: now, even if I know the Internet is not quite the best place to find medical information, I browsed frantically to understand that bypass surgery is major stuff, with high mortality rates, huge chances of cognitive disorders due to the heart-lung machine, long recovery times and notable chances of having to repeat the whole thing in a few years. The coronography, of course, was scheduled on thursday, the very day my mother was scheduled for hand surgery. In a different hospital from my fathers', needless to say.

So I had both my parents hospitalised (or going to be), some 250km from where I live: of course I traveled to my hometown, leaving at dawn to get there in time to escort my mother to her hospital. Her surgery was due in the afternoon, and she was supposed to have only local anesthesia, and leave the morning after in a strictly-no-fuss way. When the doctor came in for a final assessment, I was told that the whole thing would have lasted one hour, one hour and a half at most. My mom entered the surgery room at 1.45PM (meanwhile my brothers were with my father, constantly polling for news): at 3.15 I started counting minutes, at 3.45 I became nervous and at 4 I started asking people around.

I asked no less than FIVE different nurses and doctors who were walking in and out the surgery sector, with everyone of them telling me they would have found out and get back to me. Another hour went by, and this is when I started panicking. I stopped a nurse and plainly told him that I wasn't the only one going to have a heart attack shortly, since my father was already hospitalised and waiting for news. Finally, I understood that the one and only elevator of the building suitable for carrying patients was out of order, so actually my mother's surgery was already over and went fine, but a bunch of patients were stuck inside the surgery room. They waited for another 30 minutes before driving my mother out on a wheelchair: she had full anesthesia, so she was dizzy, drowsy and sleepy, but the fear was over.

Meanwhile, my father's coronography had been rescheduled for the day after, so we were still waiting for news on that front. I barely had the time to say hello to my mother and rushed to my father's hospital, some 30km away: since he was in semi-ICU, visit times were very strict and lasted only 30 minutes, so I rushed to make sure to take the most out of the few minutes I was allowed to see him.

The situation wasn't that good over there: his roommate was examined a few hours before, and told that he had to go through bypass surgery, performed in a different hospital. Another patient was sent away with the same diagnosis and didn't even reach home: a heart attack on the way forced an emergency helicopter run to the main region hospital. It's really scary when you're just a few hours away from knowing if you're going to get over your heart problems with just a small non-invasive procedure like angioplastic, with little or no consequences, or if you're going to be with your chest open, a heart-lung machine keeping you alive and your heart awaiting patches on a tray.

A sleepless night after, we were all waiting outside the surgery room for the verdict. We knew that in the bypass case the examination would have been very short (40 minutes) while, if it was the case for angioplastic, the whole thing would have lasted one hour something. We stood there almost breathless, counting every minute, when my mother called us being forced to leave the hospital since another patient was waiting for her bed. I rushed to pick her up and, on my road to the highway, I got one of the most awaited calls of my life, with my brother saying that my father was out and was fine after going through a successful angioplastic. I broke into tears - a nervous breakdown was in order - and went to pick up my mother with the good news. We rushed back to the hospital and the nurses were kind enough to let us in for a few minutes and say hello to my most reliefed father, who told us how, a second after angioplastic, he clearly felt better: we learnt from a doctor that one of his coronary had 95% stenosis, which means that only 5% of the expected blood was able to get through. That clearly explains why, once the "plumbing" problem was over, he suddenly felt better.

So, everything was almost fine: the only possible complication would have been bleeding from the coronography puncture (they use the femoral arteria to crawl up to the heart), which would have delayed the actual dismissal of one day. Of course that happened, and my father was waken up in the middle of the night, his bed being a pool of blood, with doctors and nurses frantically trying to stop the bleeding - arterial blood runs at very high pressure, so it's really hard to stop it from rinning. Well, this was unfortunate but I would trade that inconvenience anytime given that today my father walked away from the hospital in very good health and with some reccomendation for new habits, but no life changing procedures.

Frantic and horrifying days indeed, but given the happy ending, definitely an Easter to remember and to blog as a future memory. Now, time to catch up with the work backlog...

Quando la testa è dura...

... dopo avere lavorato settanta ore in una settimana, non avere preso un bastone in mano per quindici giorni di fila, e avere fatto schifo sul tappetino il sabato, invece di starsene a casa a meditare sul senso della vita, si decide di andare a giocare una gara con partenza alle 8.30 del mattino. Arrivare al campo in ritardo, sognando materassi e coperte, non è il massimo, ed essersi dimenticati come si fa a giocare dagli ottanta metri in giù non aiuta di certo: il fuori limite al tee shot della uno doveva farmi capire che sarebbe stata una giornata lunga e storta, ma tanto per ribadire il concetto ho eseguito (e bissato ogni tanto) l'intero repertorio di flappe, rattoni, socket e slice che speravo di essermi lasciato alle spalle.

Il risultato è cinque X cinque e un totale di 26 orribili punti che bloggo a imperitura memoria, oltre a tre palline in omaggio e a un bicchiere di gatorade per il quale ho venduto l'anima compilando un form che andrà in mano all'assicurazione sponsor della gara, la quale non esiterà a tempestarmi per il resto della vita con improbabili proposte di polizze sulle allergie al mango: hai visto mai che la prossima volta mi ricordi che in certe condizioni bisogna lasciare il drive in garage e fare penitenza su tappetino e pitching green invece di lasciare il fegato su fairway visti da lontano e green che sembrano miraggi. Nel frattempo, il programma del prossimo futuro è andare a costituirsi dal maestro e ricominciare novene e litanie in campo pratica, in attesa di tempi migliori...

Ajax smells hype

Let me stress this first: I'm very interested in Ajax, and I definitely like the final result and the impressive UI improvements it brings. However, I can definitely smell a lot of hype around it: two different (instant?) books, (pseudo) libraries showing up, countless blog posts, coffee machine discussions, third place in a google search for the term "ajax", all that is somewhat worrysome.

Combine this with a not-so-strong foundation (does really XMLHTTP, an emulated ActiveX hack, qualify as a foundation?), limited cross-browser compatibiliy, and a real danger of spaghetti code and tangled webs of unmaintainable stuff: the final outcome I can expect is either a large success in the low-end market or a huge hype going to fade pretty soon. I definitely plan to keep an eye on it, and even use it (actually we already did) in very specific scenarios, yet I'm afraid Ajax is going to grow as a set of hacks rather than as a sustainable and long-lasting technology. But time will tell.

Will people ever learn?

I won't say much about the hell of recruiting and interviewing, enough has been said already. Suffice to say that we posted a job announce stating specifically that we wouldn't accept CVs not in HTML, txt or PDF format. So far 80% of the applications we're getting has a word attachment. Frustrated...

A CMS rant

I've been working in the CMS industry for the past 6 years or so. Actually I should say 10 years or so, since I started making websites and providing tools for that around 1995. I was never totally sold on the whole CMS messup, but today, after being exposed to the usual CMS software selection nightmare, I'm really starting to think that the whole concept of CMS as a separate product is broken.

When I wrote back in 2000 (here) my first CMS from scratch, as a product to be used internally and possibly sold, the architectural/technical path was pretty much carved in stone: devise a database schema, build tons of code to hook to it, struggle finding a decent editing framework, build a presentation engine - maybe providing some fancy templating system, and ship. Monolithic stuff, conceptually proprietary, uneasy to extend and maintain. Hitting the real world of corporations with stuff to integrate was a sore PITA, and impossible most of the times. Software evaluation was a painful compromise-based process, where customers had to adapt their processes to the tool, and not quite the opposite, as it should be.

Five years later, the situation is incredibly different. We have repositories (and this is getting even better), we have frameworks, we have a plethora of editing solutions, and we have middleware. Does it still make sense to build a full-fledged Content Management solution, or should we just stop here, step back and understand that everything we need is right in front of our eyes in terms of reusable components?

As an example, we do have a Content Management solution. It comprises an editor backend, with WYSIWYG editing, workflow, versioning, searching and all the neat stuff you'd expect from a (admittely, basic, and by design) CMS. It's fully i18n'd, has no Unicode issues, can be integrated with custom metadata and content types with litle to no effort, supports scheduled publishing, strictly (physically!) separates content from presentation, providing a user customizable you-don't-need-to-know-XSLT templating system. All that in less than 16kloc, including comments, whitespace, images, xsl, css, javascripts and all the fuss, not to mention eleven java classes providing some very specific hooks into Slide or Cocoon, the frameworks we're using for the whole thing. Impressive.

Mind you, this is not the "deploy a war and start working" kind of thing but it's not vaporware either: it needs customisation and integration, but we're well ahead the 80/20 paradigm, with 20% being in our experience those features you'd have to reimplement anyway for any specific customer (been there - a number of times - done that). It's however amazing how far you can go today with just some small gluecode.

Of course, we're not geniuses nor rocket scientist: we just happen to stand on the shoulders of giants (and be proud of being a small part of such giants), with Cocoon and Slide needing little more than just some configuration to hit the road. This is exactly what I envision as the power of Open Source in terms of being lock-in free: anyone knowledgeable about Cocoon, WebDAV and Slide can kick in and start working/extending/modifying our framework, there is nothing intellectually proprietary, it's all out there.

With such powerful frameworks, then, how can we possibly need full-fledged CMSes in a tech-savy world? Isn't it better to work on frameworks instead, and customise them to specific customer needs?

Impressive AI sample

Maybe this is a famous one, but I just happened to stumble by it today, and it managed to impress me. Mesmerizing: it asks some questions, and it tries to guess what you're thinking using no more than 20 informations. I tried three times, only in one case it took 25 questions to find out that I was thinking about an eggplant, but it managed to win me on "porcupine" and "reincarnation". Check it out at http://y.20q.net/

(via .mau.)

Escaping the sales suit

David is trying to climb out his sales suit, and he's off checking out tech stuff such as the cool Ruby on rails. This is interesting and reminds me of when, ten or so years ago, I had exactly the same problem: I was, at that time, a disgruntled laywer frantically trying to build a profession in the IT field. At that time, the business side of the Internet was starting off, and I was a bit ahead of the pack since I was already a long time Linux user, an Internet fanatic and a tech-savy guy using all sort of hacks appearing online.

However, my humanistic background was biting hard. The two companies I joined in my early professional years were all small shops run by friends and acquaintances with a strong formal technology background (engineers, CS majors and so on), so being myself a lawyer, I was "confined" to the sales world and allowed only sporadic excursions on the technical side which - at that time - meant running an opera fan site.

Phone calls to customers, offers, CRM (well, we didn't call it that way ten years ago) and all that boring crap took the best part of my day job, and it took me just little more than a year to become incredibly bored and desperately willing to sort myself out before insanity would kick in.

I figured out I needed some sort of technical certification, but attending university again was out of question for a number of obvious reasons. I then decided to accept a lousy helpdesk job at one of the major italian ISPs. That, apart from the ridicolous wage, has been a life-changing experience since I had the opportunity to put my skills to work and slowly climb the company ladder until I became responsible for a few large customers of their colo facility (which meant doing real sysadminning jobs on large infrastructures). The rest is history: once I had I.net on my CV, a lot of doors were opening, and I started my formal career in the IT world.

However, I don't regret the time I spent doing sales, something that is again part of my daily job (although I trick myself into calling it "Business Development" so that it doesn't sound as bad as being a "sales guy"): a sales background is incredibly effective when you need to make technical decisions of any sort, to avoid the clean-room effect where you don't have any clue on what the market really needs and what your customer wants. Also, sales techniques are part of any human relationships: even on the technical field, aren't we selling and buying ideas everytime? I know that's a pretty blunt way to depict a collaborative environment, but if you look at leadership, a good deal of it is being able to convince and influence people, which is a sales-like process (neural marketing, maybe?).

Are you sold on this?

The joy of Windows-based development

My wife had a very neat idea lately. In order to make this blog less boring from a visual point of view, she proposed rotating regularly the photograph at the top (currently showing a view from one of our windows). The real kick, however, would have been having the CSS to dynamically adapt to the new photo, with titles, links, lines and everything else matching the image colours.

Seeing is believing, so she fired up Eclipse and started coding. Shortly she had a working version of a java application that, given a picture, is able to grab the main color used in the palette. From then on, having something to automatically spit out a CSS would have been a piece of cake.

The results were definitely impressive and promising. The color bar above the picture was dinamically generated from the initial output:

Nuancer output

Nuancer output

Nuancer output

Nuancer output

However, before starting to write the CSS part, I suggested some refactoring was in order. In particular, due to a typo, one of the class names was inconsistent with Java naming conventions since it started with smallcaps. I then suggested to use the Eclipse refactor menu and just rename the source file letting Eclipse do the rest.

Last famous words. My wife's PC is running Windows, and even though we're in 2005 now, still the Windows filesystem is case insensitive. What happens then when you rename "fooClass" to "FooClass" in Eclipse? You don't want to know, and definitely you don't want to try. The source file was blasted, deleted, nuked, vaporized and forgotten, with no way on earth to recover.

Bottom line: this blog will keep the current skin for a while (we're busy with other stuff now), Windows sucks and Eclipse should know better and warn you before nuking your work because of an OS deficiency. But my wife rulez. :)