Monday, January 28, 2008

Inspection Repository

The Fraunhofer Institute for Experimental Software Engineering (IESE) hosts a comprehensive Software Inspection Repository. One of the latest additions is Tick-the-Code. You'll find a reference to my paper under my name (Hiltunen) on this page.

Friday, January 25, 2008

SofSW: The Background (2/3)

I am excited about what is to come. I’ve been to this train a hundred times before, but it always excites me. I think it is the promise of adventure. Every trip I take has a hint of adventure in it. This one is filled with unknowns. I feel exhilarated.

I felt exhilaration when I encountered computer science for the first time. I had played with a home computer before. My father bought me a rubber-keyboard Spectrum 48 in the UK and I used it to play some games on ordinary C-cassettes. I even got some books with listings of program code and I used to type several page long listings on those rubber keys for hours and hours in order to see what would happen. Once I had done the typing correctly I could play the game as long as I wanted, but when I turned the power off, it was gone. I had no way of saving the work. I don’t remember experimenting with the code, however. I don’t think I ever thought about it as programming or ever understood for real what I was doing. I was just mindlessly copying strings of characters that formed magical spells that would allow me to play a game with amazing graphics. Some of the games even used colors. My friends had other home computers, which were all used exclusively for playing games. Vic-20, Commodore 64, Amiga all bring fond memories of playing sessions with my long-lost friends.

Several years later, in the university of technology I bumped into computers again. The feeling that I had had with my Spectrum came back to me. I had perhaps never understood the concept of programming but it had felt right nonetheless. It was something I was willing to devote hours and hours of my time to, there was just something there. I think the cold logic behind it all must have been visible to me. This time, however, I was going to learn to program and to understand it. This time the computers would be able to save my work and I wouldn’t have to complete it all at once. I could start with a piece, save and continue after resting. If I had made an error earlier, I could fix it later. I spent six years in the university of technology majoring in computer science and the grip of logic tightened. Logic was my world. Although I now can say that I love logic, such strong feelings couldn’t have been further from my field of interest. Following logic requires no emotions, but even Mr. Spock - a creature of pure logic - softened as the original Star Trek series went on.

Many of my friends seemed to have more previous experience with programming and I felt threatened by it. What if I couldn’t understand something, what if I couldn’t learn, what if I couldn’t catch them in my studies? Some of this fear made me study even harder. I got a programming job during my studies, which helped me put the theory I was learning into practice.

Now, a decade later, I suddenly found physics again. This time it was packaged as video lectures available for free in the internet, which I used extensively years before any of my relatives even heard about it. The access to email and the internet was one great advantage of studying in a university of technology. The video lectures showed a professor of Massachusetts Institute of Technology (MIT) presenting physics to the students. It seemed so very familiar and clear. The professor used a very fluent style of lecturing. He first described a theory and then made some predictions based on the theory and then conducted an experiment, always observing the predicted result to a reasonable margin of error. He showed that “physics works”. This core idea of scientific study of making a prediction and then trying to observe it finally gave me the idea of trying to explain the immaterial world of software in a similar way. The way you can create new theories on top of old, familiar ones and by mathematically “massaging” well-observed formulas arriving at new completely non-intuitive formulas which however produce observable predictions is a fascinating one. What if we could predict some properties of software just from some of its intrinsic properties? I won’t be able to reveal all the secrets of software, but just trying is certainly going to create some new insights. What if there was a formula that would predict the effort needed of adding a feature into a piece of software? What if we could calculate the quality of software? There might be a totally non-intuitive relationship between number of errors and the average length of lines in the source code.

Labels:

Tuesday, January 22, 2008

SofSW: The Background (1/3)

The display hanging high above the platform shows a slight delay in the arrival of the train. The loudspeaker announces the delay in its customary incomprehensibly distorted voice. The loudspeakers make the railroad platforms seem the most anti-acoustic places in the world. Or maybe the railroad companies don’t care about sound design, maybe the low price of the speakers is enough. A train approaches. The people on the platform start nervously packing nearer and nearer to the rails. They seem like a pack of hyenas to me, all looking for their own interests. At the same time they present group behavior, which is clearly predictable. I decide to stand back and won’t move until the train has come to a full stop. I know that it will still take time for the doors to open and for arriving passengers to disembark the train. The train comes to a halt and sure enough the pack of hyenas is blocking the way of the out-coming passengers. The pack has to move and the passengers get off. As soon as the doorway is clear, the pack attacks it and compresses through as if the train might leave at any moment without any consideration to the embarking passengers. The trains aren’t that automatic. There’s a conductor overseeing the boarding and he signals to the engineer when the platform is empty and all passengers are on board. The hyenas have boarded now so I join them and climb aboard the train.

There are two floors and with my luggage I decide to go for the lower one. I find an empty seat, take my jacket off, even though this is only a half-hour trip, but I like to make myself comfortable. I place my suitcase behind the back of my seat and sit next to the window. I have the earphones of my music player on, but I’m not listening to music. I want to think.

The sun is shining through the window. There are lines of dirt on it, horizontal effects of high-speed. The city looks alive as the train leaves the station and crosses the first bridge. The windows of the houses are like eyes. I can see the souls of the apartments with a glance and as the train speeds up, the souls start to swish on by. As we leave the city, the amount of green grows. First there are trees among the houses, and bushes, slowly the houses go into minority and finally the green takes completely over. There are fields of green bright in the sunshine. There’s not a cloud on the sky and I turn my gaze inward.

Labels:

Thursday, January 17, 2008

Looking back at year 2007

Yes, I'm still here too, even if you haven't heard from me. I guess Miska is trying to make this blog more professional, but regardless I'm going to post here some links, so you know what I've been up to last year.

The year was quite full of music. I have to start with the local bands Single Malt, Double Fun and Drinkin' Ovations.

The Rock Classic All Stars happenings are worth to mention - at least three times I saw these legends of rock, some of them even more often, more privately, like ex-Slade Steve Whalley. And boy can he sing!

Then I went to see T-Rex (not to be mixed up with the original T.Rex) for a couple of times. These guys know how to rock! And they know how to party :-)! And I shouldn't forget the Paddy goes to Holyhead.

But maybe, just maybe, the most unforgettable one was Moya Brennan, the singer of Clannad. More Irish music I got to enjoy with Noel McLoughlin.

At Pori Jazz there were many artists, some good, some not so good, and at this point I will only mention one - the one who made us to go there in the first place: Paul Anka - alive and kickin'!

I saw the musical We Will Rock You in Cologne and the best musical ever Vuonna 85 in Tampere.

So if you haven't heard from me, it's because I'm always somewhere enjoying good music. Or travelling - I didn't care to travel that much last year, just wanted to stay at home, but somehow I found myself being not only in Germany and Finland, but also in Denmark, Sweden, Russia and England! This year I will stay at home... Well, I'm going to Ireland soon, but that's only because of good music: Christy Moore in Killarney - that's where you'll find me in April!

Have a happy year 2008!

Wednesday, January 16, 2008

SofSW: The Departure (2/2)

When traveling, there are three ways to pass time; entertainment, gathering input or production. Entertainment is the easiest solution, all I need is a good fictional book or comic and I can almost forget that I am traveling. I consider travel time my own time and I get to decide what I do with it. My music player comes in handy in providing a lot of entertainment. There are about 240 songs from my extensive over six-thousand song collection on the player and I always play them randomly. I never know which song is coming next but I always know that it is a good one as it comes from my own collection. Why would I need more control? When I resort to entertainment and to music specifically, I like to let it affect me and my mood, not vice versa. Upbeat songs make me happy and blues makes me pensive. Sometimes I might even become a little sad because of a beautiful but tragic song, and I thoroughly enjoy the feeling. It is temporary anyway. The next song is going to take it away. I know people who make playlists of songs based on the feelings they inspire. They might have a list of sad songs, which they play when they are already feeling blue. Or maybe they play only happy songs if they are down, I don’t know. I don’t want that kind of control over my feelings. When I’m feeling really depressed I sometimes wish that the next song would be a hero story about a tragic loser who against all odds wins in the end or about a rebel who keeps his head no matter what and is rewarded for it. They give me fighting spirit and if by chance one of those songs happens to play, I can forget about my depression. It is gone and I’m back in the game.

Inflight TV programs and movies are other ways of entertaining myself and I have been known to resort to magazines or menus in the seat pocket in front of me, if I was in the mood and had nothing else to read. Entertainment has its place mostly when I’m tired but not tired enough to sleep, or when the trip is too short for doing anything sensible, or when the environment is too noisy or disruptive for serious thinking. When I decide for entertainment, I go all the way. I use it to forget all my troubles, I deliberately avoid thinking about work. That’s the best advice I can give. Whatever you do, do it properly.

Gathering input means learning. While the value of entertainment comes from the temporary relaxation and escapism, learning is meant to provide longer lasting value. I usually carry one professional or non-fiction popular science book to fulfill my needs to learn. I have noticed that I can read books and not learn anything. I maybe remember reading a particular book, but after half a year or longer I can’t necessarily name any fact I learned from it. In order to become more effective in learning and not just using science books for their entertainment value, I have taken to making notes. Whenever I come to an interesting or thought-provoking passage in the book, I stick a small Post-It note on it so that it sticks just slightly outside of the edge of the page. I keep a small sample of these small Post-It notes on the first page, just under the cover. Whenever I choose a new book to read from my book shelf, I put a bookmark and a collection of stickers on the first page. After I’ve read the book, all I need to do is go through the stickers, copy the passage on my laptop, remove the sticker, place it behind the cover page and move on to the next sticker until I’ve gone through them all. When I get back to my book shelf, I move the stickers to the next non-fiction book. As a matter of fact, in order to collect interesting quotes and sayings, I use the stickers also on fictional books and sometimes even magazines. The file on the computer gets reviewed every now and then and reading the copied passages refreshes my mind. The learning intensifies.

I am a doer. I can entertain myself easily for days and weeks on end. I can go even longer without feeling guilty when I read good scientific books that teach me. But eventually the need to produce becomes overwhelming. If I don’t manage to find the time to write or draw or play guitar, I become extremely irritable and will explode with the slightest hint of resistance or criticism. To outsiders my behavior seems inexplicable. I seem to lash out unprovoked. To me it is a clear symptom of going too long without leaving my mark on the world. It doesn’t have to be anything others see, it doesn’t have to be popular. What it must be is something with lasting value. A drawing on paper is a physical object that can be shown or stored. A poem can be read out or stored on a website for random passersby to find. Playing guitar actually serves my learning purpose more but at least my neighbors get to appreciate the sounds I produce if they want. Writing in any form more lasting than a casual email is enough for me to feel having produced something. When I write a marketing letter from scratch, I definitely feel I’m creating. If the marketing letter happens to convince a customer, the creation has accumulated even more value. The peace of mind is the principal value for me, anything other is just a bonus.

I try to fill my days at home with a healthy mix of these three activity types, but traveling focuses the free-time. There is nothing else you can do. You have to choose one of them. Unless you decide to sleep or talk to your fellow traveler, which I hardly ever do. On this trip I’m going try something different. I’m going to talk to strangers and see if I chance upon pure entertainment or will I learn something of lasting value. A talk might even prompt me to make notes, which would definitely fit into the production category.

I am also going to think deep about software and science in general on this trip.

I was a typical good schoolboy. I did my homework and learned what was taught and did well in exams. I studied mathematics, took the longest possible courses in physics, chemistry and liked natural sciences very much. Maybe the only slight abnormality with me was that I was also very good in languages. This seemed to prompt amazement in my relatives and neighbors, who all seemed to think that boys are good in mathematical subjects (if at all) and girls do better in languages and somebody excelling in both kinds of subjects is exceptional. Later on in the university the gap between the hard mathematical sciences and soft humanistic subjects, like language studies, grew even wider. I know extremely gifted men who could solve the most difficult mathematical problems, but who would be out of their depth when asked to pronounce the word “la fille” on the French class. Mixing it with the culinary term “le filet” is bound to awaken some hilarity in the class.

After high-school I had spent two summers in Switzerland amazed by the strange German-like language they call “Schwyzerdütsch” or “Schweizerdeutsch”. I had studied German and being able to understand what the Swiss people were talking when even German people wouldn’t gave me enough confidence to skip further studies of German language and to get the credit I just did the exam. Having thus saved time from German studies, I took up French. I did a couple of basic courses of it, even though it wasn’t mandatory. That goes to show that I do like languages.

I remember the physics classes in the university of technology. The teacher looked like a hippie, although this was in the early nineties. I found physics fascinating, but little by little it seemed to lose on practical value. In the end I read physics in order to pass the exams and get the credit. I never imagined being able to use the learning in practice. But here we are.

Later on I found computer science and programming, which became a major part of my life.

You’ll have to excuse me now but I have to exit this bus and hurry for my train. On the train I’ll have more time to explain the basics of software engineering.

Labels:

Saturday, January 12, 2008

SofSW: The Departure (1/2)

Dream disappears like a wolf into the woods. I rise, switch off the alarm in my alarm clock just as it is about to go. I think it makes a little sound a minute or half a minute before but I’m not sure. On many a morning I’ve woken just before the alarm clock and the only other explanation I can come up with is that my biological clock is much more exact than I give it credit for. After all, usually I set the alarm in the evening and I know when it is supposed to go off. Maybe my subconscious wakes me up on its own. I guess it would be easy to test and set the alarm and listen for five minutes for any extra noises but I won’t do it. First of all, I have a feeling that the ambient noise level during the day will drown out little noises from the alarm clock. Secondly, I think that I’m more receptive to auditory input asleep than awake. It might be that even though the alarm clock did make an extra sound a minute or so before alarming, I probably wouldn’t hear it if I was paying it attention. And thirdly and by no means least, it is good to have some mysteries in life. It is after all a minor thing and a positive one for that matter to wake up at the right time without disturbing anybody else. It is a natural start for a day.

However, the nights I didn’t wake up before the alarm are hugely more numerous than the ones I did, so it might just be an indication that I’ve slept enough. The day ahead most definitely has an effect. Bad days, exciting days, scary days wake me up way too early. They seem to want to be nasty. Laying awake in bed, tossing and turning, trying not to think about the troubles of the following day and trying to fall back asleep is a guaranteed recipe for not falling back asleep and keep thinking about the troubles of the following day with a sleep-like stretched certainty and magnified evilness.

Good days, on the other hand like the one I’m having today, make you sleep soundly until it is time to rise. On dull and normal days, it is the alarm clock that wakes me usually in the middle of no dream. Good days - did I already mention that today is such a day? - start with an escaping dream. It is not necessarily a dream about escaping though. As the mind apparently can spin a year-long yarn in a few seconds with all its important goings-on in enough detail, it might well be that the dream I just had just started when the alarm clock made its alleged click. It then started to bring my mind back to the waking world and did it in the pleasant possible way with a fast-paced dream of happiness and joy. I no longer have any idea of its topic if it even had one, but the state of mind stays.

My state of mind fits my day. It is going to be a wonderful day. The sun hits my eyes as I open the curtains. I squint and head for the toilet. It is wonderful to feel pressure only on my bladder. I know I can relieve it soon enough. Physical pressure is often straightforward to relieve unlike mental. Today is a glorious day, there’s no pressure on me at all. In the kitchen, I fix myself breakfast. Eating a bowlful of cereals with milk and drinking a glass of multivitamin juice I read a comic to ease my mind into the real world. The breakfast is over before I know it and it is time brush my teeth. After a second visit to the toilet and a shower I’m ready to get dressed.

I have it all planned out, the clothes I’m going to wear today are waiting on the chair next to my bed. Black underpants, black socks, a black t-shirt with Mark Knopfler’s Shangri La album cover on it and black jeans are my traveling clothes on this fine day. I like to take it easy and although traveling is for some a luxury, I’ve done enough of it to dress casually and comfortably. I respect the other travelers and dress neatly but I’m not trying to impress anybody even if I am going to be moving through some very public places. I wonder if some people overdress because they like to show off or because they try to make others notice them? I decide what I wear based on my own comfort, I don’t let anybody else run my life. At least I do dress.

I have packed a little suitcase and it contains anything I going to need for a week. If I’m on the road any longer than that I’ll have to either buy new clothes (and a bigger suitcase) or wash some of them and re-wear them. The suitcase contains eight underpants, eight pairs of black or blackish socks, two pairs of sports socks, four black T-shirts with varying images, four blue shirts and grey trousers to wear on business days, a pair of black shoes, a toiletry bag with toothbrush and toothpaste, a mini-shampoo, a mini-shower gel, some cream for rashes, two band-aids, scissors for cutting my nails, a bottle of after shave, a deodorant stick (I never did get used to sprays), and a bottle of moisturizer. I have packed also the electric razor (I’ve never even tried shaving with a blade), a couple of books to read later, two pencils (3B and 4B), two graphite sticks (3B and 6B), a sharpener, an eraser and drawing paper, a charger for my mobile phone, a charger for my tiny music player which I’m already wearing, and an empty plastic bag for dirty laundry. I’m taking a small bag to carry as hand luggage. In it I have three books: a comic book, a scientific book and a novel. I also carry with me a notepad and a pen for making notes of anything interesting I see, hear or happen to think about. I carry my laptop computer in the bag too.

I go through the luggage mentally one more time, can’t think of anything missing and feel even better than before. Now there’s nothing stopping me, I am ready and eager to go.

Labels:

Sunday, January 06, 2008

Zen = Quality

In this post I want to explain my thoughts on two books I read recently. The first one is “The Way of Zen” by Alan W. Watts. It was written in the 1950’s. It is an attempt to explain, in English, what Zen is. It says itself that it is not possible to define Zen, so any attempt to verbalize it is going to fail. Yet that is the way of the West, so Mr. Watts gave it a try. He used many translations of texts and compiled a wonderful book of little stories, haikus and other zen poetry. As he can’t really say what zen is, the sense of the stories is not apparent. As a matter of fact, zen seems to be reached when you can answer incoherently to a simple and clear question. You just have to do it without thinking and immediately. There must be no consideration.

Somehow sitting around thinking without doing anything else leads to such a mental place. One of the places I stored in my story crumb repository was the wonderment of the Western people who ask how anybody can do anything good by just sitting around not doing anything. The answer given was that there seem to be enough people doing stuff already and it seems like a wise decision to stay out of it and not cause any more trouble. Muddy water clears best when left alone, after all.


Zen Dream by *RoieG on deviantART

The other book, which I read right after Zen is a popular classic from the 1970’s. It is written by Robert M. Pirsig and it is called “Zen and the Art of Motorcycle Maintenance”. It was the right kind of philosophy for me. It deals with the Western analytical thought. The framing story is a motorcycle trip in backlands of North America, but the real story is the hunt for Quality. What Quality is and how come we seem to have lost it. An additional things was that it seemed impossible to define, at least to the clearly capable but mentally labile main character.

The book made me think and as I attached a small post-it note at each passage of text I wanted to store, I quickly ran out of stickers. At some point I realized something, along with the main character. Zen was outside definition and I had some kind of idea of it after reading Mr. Watts’ book and now there it was, Quality, just like that outside of any definitions. It was clear to me that whatever Quality was, it was Zen. It is the attribute of an activity that is needed additional to plain work in order for the result to turn out good. Without Quality, you just have a product or a thing or stuff. With Quality, you have a useful tool, a productive team, an elegant solution or a beautiful result.

In another context, I heard a character in a TV series say “love is something you can’t define.” Was Love the same as Zen? Was Caring about the work the ingredient that added Quality to the work? I think it is. No matter what you call it, professional pride or perseverance in the face of trouble and adversity, I think Love is Quality is Zen.


1 Motorcycle by ~NutsnRaisins on deviantART

Does it do any good to have this insight? Indirectly it does, I think. As with all knowledge, the question is how you apply it. With the insight at hand we can see that the people most likely to do a good job - any job - tend to pay attention to it, are concerned for it and motivated to finish it with the best possible results. It doesn’t mean that you have to be a perfectionist, but it means that trying really to improve things every time can not hurt you. Actually, performing a quality job improves not only whatever it is you’re working on, it improves you yourself in the process. As a matter of fact, Robert M. Pirsig puts it very well in his book “Zen and the Art of Motorcycle Maintenance”:

Or if he takes whatever dull job he’s stuck with - and they are all, sooner or later, dull - and, just to keep himself amused, starts to look for options of Quality, and secretly pursues these options, just for their own sake, thus making an art out of what he is doing, he’s likely to discover that he becomes a much more interesting person and much less of an object to the people around him because his Quality decisions change him too. And not only the job and him, but others too because the Quality tends to fan out like waves. The Quality job he didn’t think anyone was going to see is seen, and the person who sees it feels a little better because of it, and is likely to pass that feeling on to others, and in that way the Quality tends to keep on going.
My personal feeling is that this is how any further improvement of the world will be done: by individuals making Quality decisions and that’s all.

It makes sense for your own sake to always strive for a genuine improvement. It is good physically, mentally, spiritually and socially.

The way the book is written, gave me an idea. What if I tried to explore some subject as a journey in this blog myself? The motorcycle trip across America is an easily understood metaphor and it makes for a great framing structure. I need to find my own journey, of course, but the main idea would be to describe the journey (of my life) and every once in a while dive deep into an interesting subject, trying to uncover the ultimate truth about it, all the while watching out for insanity. You, as readers, will have a great responsibility. You have to notify me, when you think I’m diving too deep into my thoughts and won’t have enough air in my lungs to reach the surface for another gulp. In other words, you’ll have to comment on my writings and tell me when I’m losing it. Warn me before it is too late.

The topic of my search will be software, software quality and whatever else pops up (that’s the trouble with any expedition, you never quite know what you are in for, otherwise there wouldn’t be any real discoveries) and the approach I try to take initially is traditional scientific method. I’ll first state the problem I want to solve, then I’ll write down some reasons or causes for the problem (the so called hypothesis), then I’ll design some experiments to test the hypothesis, predict the results of those experiments (notice emphasis on ‘predict’. It is a key ingredient of science to be able to say beforehand what should happen. There’s nothing mythical about that.), then I’ll perform the tests and observe their results and as a final step I’ll draw conclusions from the test results. That is the Scientific Method as described in Pirsig’s book, too.

I discovered a series of videos on the internet, which I find absolutely captivating. For the last two weeks I’ve been watching the video lectures of Physics from the Massachusetts Institute of Technology (MIT) Open Courseware offering. I’m currently following the Classical Mechanics course (8.01) at a rate of a lecture each day. Professor Walter Lewin makes each lecture lively and interesting by being enthusiastic and always having a more or less practical experiment up his sleeve. Not to mention the ever-changing pocket ornaments. On iTunes Store, there are two more lecture series Electricity and Magnetism (8.02) and Vibrations and Waves (8.03). I’m currently not doing any exercises, although I’m sure that would make the experience even more useful. For now, I’m happy to try and walk on an almost familiar ground. These are mostly things I was taught way back in school, and most of them I can at least vaguely remember and understand. Every once in a while it seems that Professor Lewin shows the matter in a way, which makes me understand it more deeply than I’ve ever done. That feels good. Before, I just wanted to watch the lectures because it pleased me. And as I was sick and traveling between Christmas and New Year’s, I had nothing better to do anyway, so I could get started. I had no clear value statement in mind. I didn’t know what for I would use my re-learned knowledge of physics, but I had the vague idea that I would find a use for it. It was clearly useful and valuable knowledge to have. Now the road is quite clear, I will approach the area of software (without defining it yet to software engineering, quality or whatever is supposed to be known by now.) as undiscovered territory and I will try and see if I can’t develop a kind of Physics of Software, just like we have the natural laws of physics that govern the universe. And just like chemistry is basically physics with useful shortcuts to hide many details, it just might be that I get to discover something like Chemistry of Software. Who knows, but I have to admit to being excited about the prospects. I'll label relevant posts with "Science of Software".


Code for Life by ~woraz on deviantART

I’m going to invent a traveling metaphor or similar to use as a framing structure for the rest of the narrative and go on discovering software as scientifically as I can as if it were terra incognita (unknown territory).

So please stay tuned, check back for how my journey is going and let me know if you want me to continue, or if there are errors in my thinking. Tell me if you don’t understand my reasons or logic, let me know if you have had an idea because of something you read here, generally comment just to show that you are following, it helps keep me going. And who knows what we’ll accomplish in the end.

I’d like to end with a French greeting, which puzzled me for some time until I realized what it really meant. Upon leaving a store or café in Paris, the people used to say “Bonne journée” to me and I was always thinking how did they know that I was traveling. Probably because of my accent (well, mostly my using of English, which clearly spoken isn’t an accent of French at all.), I thought. Until it dawned on me (by Virpi, of course) that they were just wishing me a “Nice Day”, not “Happy Trails”.

Anyway, without further ado, I’d like to wish us “Bonne journée!”


Wave Goodbye by ~beautifullyxchaotic on deviantART

Labels: