Tuesday, June 23, 2009

Review: Gray Hat Python

216 pages, a title of 'Gray Hat Python' and a table of contents with subjects such as 'design and program your own debugger', 'learn how to fuzz windows drivers', 'create powerful fuzzers from scratch', DLL injection, hooking, malware analysis. My first impression was that it must be really niche, hardcore and not for me.

You'd think that the book would appeal to only a subgroup of security professionals or software engineers given the subject matter. The small book also suggests that there would not be much space left to explain the matter to people who are not experts.

First impressions are often wrong.

In my opinion this book is a must for all people who deal with security on a technical level. The book is also interesting for programmers who want to learn more about debuggers and other low level aspects. People who want to learn some new tricks in Python will probably like the book as well. But all these people don't have to be experts to enjoy this book. There are a few ways you can read this book as it was clearly written with a few different levels of perspective in mind.

For example, you can learn about the inner workings of a debugger without actually understanding the Python code. All topics are first clearly explained on a conceptual level. After that Python code is used for implementation. You will get introduced to the Python code gradually, in the beginning each program is short and basic and the most important lines are highlighted and explained. After that more functionality gets added and further explanations follow.

Though the book deals with quite a wide variety of subjects, they all have a low-level debugging aspect. This makes that it is interesting for both security oriented people and developers. It's all about basic, low level techniques. And most of them can be used both for making and breaking stuff.

Given the subject matter and size of the book, clearly some things had to be left out. One of the things this book left out was implementation of the debugger on operating systems other then Windows. I think it was a good choice since Windows is still the platform on which most debugging and reversing takes place. Also, Windows offers a few API functions that make it easier to do debugging. This abstraction was used well to keep things understandable and short while still offering a good picture of what makes a debugger tick. Especially the chapter on debuggers contains loads of references for people who want to explore further. But I missed a few references for debugger implementation on other operating systems.

The only drawback was that there seemed to be some errors in some code listings. Unfortunately, there is no errata section on this book's website yet (24-jun-2009). This can make getting the example code to run a challenge for non Pythonians.

All in all, this is a very cool and unique book for all people who want to take a deeper look.

Monday, June 15, 2009

No Time to Say Hello-Goodbye

I woke up today at six, went on a run and somehow don't even have time for a proper blogpost. Today's run was hard but good. At the end of the training I was sweating all over the place, not that usual sweat but that greasy hard-work sweat.

I hoped I could take it easy after such hard work so early in the morning, but alas. No time to say hello, goodbye. I'm off to take a quick shower and a quick breakfast. Here are the stats:

I'm going down the rabbit hole...

Saturday, June 13, 2009

Muddy horsetracks

The periodical rains of last week kept me from running. Not because of the rain itself, but because of the mudpools it would leave behind. Rain meant I would not be able to run on the horse tracks but only on pavements. Since I want to take it easy on the shins I just waited for better weather. When it turned out to be a bright sunny day yesterday I prepared to go on a run. This time I wore some new gear: shorts and an armband for my iPod.

I'm not really a shorts man but it was definately better then the usual jogging pants I wear. It has a small pocket on the lower back for keys or some change. Quite nice since that part does not move as much while running and I will not be bothered by moving coins or keys.

In addition I put on my new Griffin Aerosport Armband for my iPod. At first I was unpleasantly surprised when it looked like it could not accomodate for the nike+ receiver. But it actually does and its pretty comfortable. I especially like the cable clip.

Being all dressed up, I went on a run, on the horse tracks like I planned. But most of the tracks were still wet and there were huge mudpools. So I was jumping, snake-running, and some times running of the track in order to keep going. It got pretty messy!

The run intervals were at 6 minutes, but like usual, the first one was the toughest. I did the horse tracks two times in one session now and I think I need to start looking for another route. I'm eying another park wich is a bit out of my way but will possibly offer more long unpaved tracks. I'm not sure if it is nice since it looks like it has a big road running right through the middle of it. It's pretty lame that we can't even have a designated piece of forest without roads and pavements and such.

After my run I spent quite some time stretching. I also had a highly unconfortable shower with some hot/cold water therapy. I really hate that cold water it but I think it does really help. I think it really helped since I'm feeling quite recovered today. Or maybe it was the delicious spaghetti after the run :-)

Anyway, here are yesterday's stats:

I like to think that, were I not hindered by the mud, I would have got that 300 meters extra and got my first 5K!

Wednesday, June 10, 2009

Review: The Manga Guide to Databases

Most of my friends and colleagues had to laugh when I told about or showed them this manga guide. Though this book is really fun to read and contains many subtle jokes, it's not something to dismiss as some crazy comic book.

Don't fool yourself, under the happy Manga lies a superb learning book on databases. The book deals with the fundamentals in a clear, quick and fun way. It's quite amazing how some conceptually difficult topics are explained in such a short book. The book brought a clear understanding of some things a 4-year bachelor's study on the subject failed to clearly explain. I hated everything Database before I read this book. Mostly because I felt it was a dry and boring subject and this idea was supported by terribly boring, big fat books with a lot of difficult language.

The book tackles all you need to know to be able to design, use and maintain a database. Subjects such as Database normalization, Database design, ERD models, SQL, ACID, locking mechanisms, query and database optimization, security, architecture, stored procedures and database replication are all explained wonderfully. There are exercises on each topic, and answers are provided a few pages further.

One of the strong points of the book is that it succeeds in explaining some very practical things without being implementation dependent. All the knowledge you gain from this book will be applicable to any database system.

The author is a sheer didactic genius! Repetition is cleverly hidden in comics, written out paragraphs, drawings and exercises. You hardly notice you are actually learning Your thought process is guided by the main characters in the book and a few hours later you know all the Database fundamentals.

People who care about the environment can also enjoy this book since it's been printed on some nice quality Sustainable Forestry Initiative paper. A nice way to read responsibly.

This book is by far the best book I have read on the subject. I think this book absolutely rocks and recommend it to anyone working with or just interested in databases.

Everything should have it's own Manga Guide!

Sunday, June 7, 2009


Rest, don't push it, listen to your body... I was getting that advice from nearly everyone, runners, shop keepers and even a physiotherapist who had suffered shin splints. I had been feeling increasing pains in both my inner lower shin and outer shin lately and felt my legs were heavy and tired all the time. I was really spooked by my possible 'anterior compartment syndrome' and even more by the possible 'tibia stress fracture'. So I took a whole week off, no running.

Ruby provided a way to keep my mind at least a bit focused on running after that. I made a beginning to write an application that can read my exercise data from my Nike+ipod. The app is not finished yet, only the parser part is. I still need to finish the part that gets the data from the database and shows you some nice trends. I'll put the code on github when I have that part running.

Reading 'Ruby in Practice', which I've won, gave me inspiration for my app. However, I did not even finish the first chapter or two other books were in my mailbox! Off course I started to read those, 'The Manga Guide To Databases' and 'Grey Hat Python' as well. To add to the book frenzy, I just found out I also won the ebook version of the ultimate Ruby bible: 'Programming Ruby 1.9: The Pragmatic Programmers' Guide'! So yeah, get ready for some reviews ;-)

Running put the great week to a fantastic end. I have been feeling a bit jumpy the whole week, I really missed the running already. I guess it's quite addictive. Anyway, I did some googling and asked a physiotherapist I know about some stretch exercises for my shins. Yesterday I found the following stretches and they had an immediate effect:

Seated shin stretch

More shin stretches
'Swan lake stretch'

That last one did it for me so I decided to call it the 'swan lake'...

Ok...after that I decided to wear my new black-tech-ninja long-sleeve running shirt and go at it. This time however I really took time to do a proper warm-up. First a fast paced 1k walk, after that a 1k run. After that some stretches. Then I went off, I felt the inner shin hurting again quite soon. But then I saw a horse track, a sand path. When I went running on that, I felt nothing. The rest of the run was mostly a struggle because I had not ran for a whole week and was eating pizza and other badness while doing my geek things. However, when I got home I was pleasantly surprised by my stats: I passed 4K, nearly got to 5, RRRR!!

Monday, June 1, 2009

Review: Learn to program 2nd edition

As I'm taking a brake from running to prevent shin injuries. So I had time to finish reading my latest book, 'Learn to program 2nd edition'. Well I've finished it and thought I'd share my feelings about it in a review, so here it is:

The best book out there if you want to learn programming. If you have a little experience but are unsure, you will like this book too.

The book is also suited as a lightweight introduction to Ruby. But if you have a decent amount of experience in another programming language and want to learn Ruby, or if you want to dive in directly, consider a book like Programming Ruby or the Ruby Way.

The book is very readable and funny. You'll understand most things without too much effort because of the way the author explains things clearly.

The book contains fun exercises such as the 'angry boss' or 'deaf grandma' exercises.

The only minor points were that the exercises were mostly not very practical for real life situations. The last few chapters were not as clear in explaining things as most of the book.

This book offers great value for money and is well worth your time, adding to that it's not a big book and very reasonably priced. Definitely worth it.

Since the second edition is really just from the press, there are no other reviews. So you'll just have to do with mine (I'm a critic so don't worry!):


For the Dutch

Friday, May 29, 2009

New gear and new books!

I've bought some running clothes yesterday: a shortsleeve, a longsleeve, a short and a rainjacket with zippable arms as Montechristo advised. All made from reflective dryfit material, nothing too tight. The kind shop lady added a reflective jacket on the house. We had a short chat on my progress and I mentioned the pain and kramps in my shins. She gave me three tips:

1) take it easy, take some extra rest!
2) whilst taking a shower after a run, run some cold water on the legs for some time. After that run some hot water on them. Change again by cold water. Change three times minimum and always end with the cold. This is uncomfortable but one of the best things to do.
3) apply an ice pack.

After I told her I did not know what that was, she got one, gave a demo and putted it in my bag :)

Speaking of new stuff, the inner geek will soon be nurtured with some new books. First, I won 'Ruby in practice' by asking a few questions to Jeremy McAnally and Assaf Arkin, authors of the book. After that I got an e-mail from NoStarch press to do a review on some books, 'Greyhat Python' and 'The Manga Guide to Databases' to be exact. Pretty sweet! I'm quite curious about these books but first need to finish my current book 'learn to program'. I hope I get enough time over the long weekend to finish it. Lucky for me I'll do some more traveling soon and get to eat some books on the way :D

I just came back from a training with two four minute and one five minute and some lesser minute runs. The beginning, as always, was the hardest. As soon as I'm properly warmed up and into my rhythm all is fine, except for the shins offcourse.

I took on the short sleeved Adidas 'adizero' shirt. I found it to be a very nice shirt. At first I was affraid it would be cold but it kept me warm and mostly dry. Though having a soaked shirt from the effort had it's charm, it's just too uncomfortable. The new shirt is definatively better.

Anyway, here are the stats. No significant improvement yet, but apart from the shins, the workout felt a bit too lite allready. I guess that if my legs would have some proper recovery, I would do much better than these stats:

Time to eat and apply my new ice-pack!

Tuesday, May 26, 2009

King of the hill

Reading MonteChristo's blogpost on 'heavy stuff', reminded me of my difficult last few runs. I also realised my geographical location and the metereological lookout proved to complicate runs further.

With a mercury meltdown in the afternoons, and a busy schedule, it was a question of choosing the lesser evil. Either a run in the night in a world capital where I don't know my way around and some insomnia from the post-run rush. Or a run in the early morning... Or no run. After last nights terrible and overly fat Paella that last one was no option.

Considering I allready woke up at 6 in the morning that day, just doing it again made some strange illogical sense. But living long and prosper does require it's sacrifices, so running at 6 it was.

But where? After doing some Googling, Madrid's Retiro park was the obvious choice. However, I was not sure if I'd find a safe park with open gates at 6. Also, the Retiro was a bit out of my way. I found a few parks nearby the Palacio Royal. One of them had an interresting Egyptian Temple which I wanted to see and I had been doing some sightseeing near the Palacio before. So I knew how to get there.

It was still dark when I passed the Cathedral next to the Palacio to start my run at Campo del Moro. The Campo del Moro is a park at the foot of a hill. On this hill the Moors who had occupied large parts of the iberian peninsula had built a fort known as the Alcázar. After the Spaniards reconquered the hill, the Moors tried to recapture it and layed siege on the citadel. Hence the name, 'encampement of the moors'. The area around the hill, named 'Mayrit' by the Moors, grew to become Madrid. And the Alcázar was replaced by the Royal Palace.

Unfortunately, the park was closed. So I just ran on the Paseo del Virgen del Puerto, the road next to the park. Long name, short run. Unfortunately, I could not figure out how to get to the Egyptian temple site. Quite dissapointing, but I was quick to decide running around the Royal palace would have it's charms too.

However, I was at the base of the hill. And I had a steep path ahead. I attacked the hill with a steady relentless pace. This was very hard work, but I was rewarded after I conquered the hill. It was truly magnificent to run beside the beautifull palace and it's gardens with the dawn breaking and an overview of the valley where Madrid was waking up.

After I passed the palace, I took a left turn and ran straight to the Plaza Mayor where my session ended.

The stats are pretty much like those from my previous run. But taking lack of sleep and the hilly terrain in consideration and knowing the Nike+ sensor can't register if you are climbing mountains, I'm very hapy with these results!

Saturday, May 23, 2009

Second breakfasts and terrible runs

Today was my worst run, ever. It started with me being out-of-breath allready during the 2-minute warmup. The session continued with many 2-minute run intervals. With such short runtimes I figured I should try to run faster.
However, during the run I was slown down by an ever increasing pain on the insides of my shins. Later this was followed by kramped sensations in my posterior shin and calf.

At least this time my front shin was ok.

To add to the feast, I got a surprise second breakfast. It was a hot day today and there were flies all over the place. This usually makes me practice on my breathing, nose-in, mouth-out. No way for a fly to disturb the fun. Today however, one of the bastards flew right into my nose, straight down my throat. It refused to add to my proteine storage but stayed right there in my throat. It made me gag and I nearly threw up. After that I kept the feeling the bugger was having a party in my throat. And running through the clouds of flies got a new dimension. Where are spiders when you need them?

To give myself a bit of extra motivation today, I changed my route. I decided to see how far I could get running in a straight line. I was near the beach town of Scheveningen when I was at the middle of my trainging session.

Knowing the Scheveningen beach is exactly 5k from my starting point I figured I would be very near the 4k when I would finish.

So, after all the hardship you can imagine I was slightly dissapointed when I saw today's stats:

But I'm glad I've survived ;-)

Thursday, May 21, 2009

Not exactly four

Getting myself to go on a run was a challenge today. Yesterday was a busy day that ended with spicy thai food and some beers. It ended somewhere around 04:00, because I just missed the last train back home and had to wait a full hour until the night train. And offcourse do the necessary traveling before reaching the comfort of my bed.

Anyway, the serious dehydration and lack of sleep might explain the lack of progress in today's run. Which is a waste because I took some extra resting days so I would be fit and could break the 4k barrier.

Today's run intervals lasted 3 minutes each, a bit shorter than last run. So I figured I could speed up a bit and get the 4k with some nice speed digits. It felt I ran faster then usual but my Nike+ stats tell a different story...

Actually, the stats don't tell that much unfortunately. I like the Nike+ but the graphs are really limited. The data is there, so I don't really get why the graphs are so limited. I guess I need to go and see if I can access that data and do some graphing myself!

Monday, May 18, 2009

Books anyone?

Like many geeks, I have a book addiction. If I'm near a bookstore I start to feel the need to go inside and check out their collection on the various subjects that interest me, or might interest me in the future. And if I'm online and bored, I just might surf some bookstores or publisher websites.

I'm not so picky in my buying, but I am in my reading. Sometimes a book just proves it's not worth the time, a pity but there's always other interesting stuff out there. So save your time, put it on the shelf and start to read something hopefully better. Oh, and try to read some reviews before you buy (note to self).

Today I posted a few book reviews on RubyLearning.org's book promo forums. I thought I'd share them on my blog as well. Also, I have finished reading my 'Start to Run' book. In the sense of sound mind, sound body there's a short review on that as well.

Don't forget to check out RubyLearning, you can learn Ruby for free! Oh, and yeah, you can now even win a copy of popular books :-)

As I'm writing this, the shipping of 'learn to program, 2nd edition' was announced in my mailbox. Yummie, new book!

Learning Ruby by Michael Fitzgerald, O'Reilly publishing.
This was my very first introduction in Ruby. After Having seen a friend build a Rails website in a few minutes I was impressed and wanted to know about Ruby.
The bookstore had two books on ruby, this one and the other being the massive pickaxe. I chose this book since I was not prepared to read such a huge book. I just wanted a brief into to see what it was all about.

Learning Ruby
The book starts with the basics and a quick tour of Ruby. After the first two chapters you start to have a rough idea about what Ruby is and what it's for. After the two introductory chapters, the usual language basics follow. Conditional loops, strings, math, arrays, hashes, working with files and classes are all dealt with. After that one chapter deals with various things such as processing XML, reflection, metaprogramming, RDoc and embedded ruby. The last chapter is a brief intro on Rails.

The title of the book was a poor choice. It should have been something like 'introducing ruby' for example. The best feature of this book was its shortness and simplicity, while still giving a good introduction to the world of Ruby. What I missed were some short introductions on things such as TDD, Merb, Sinatra, Shoes etc. After reading this book you won't have the feeling you have 'learned' Ruby. You have a good picture of what it is and what it can do. You know a bit of the syntax and how to use irb and check out documentation. You also know about a few extra things such as RDoc and Rails. The book is well written and I had no problems running the code for all except a Tk example. It's a nice book for the absolute beginners in programming, but I think there are better suited books for the absolute beginners out there. Instead, people who have a bit of experience in other programming languages, and just want to know what all the fuss is about will enjoy this book. This book is not for those that really want to learn about the language and it's inner workings and reasoning behind it.

Publisher's website.

Some alternate reviews (I agree with most of them).

Ruby Cookbook by Lucas Carlson & Leonard Richardson, O'Reilly publishing.

I bought this book on a shopping spree. Just needed a 3rd book to add to my shopping basket for a '3 = 2' promotion, it had good reviews so I bought it.

Ruby Cookbook
This book is not a straightforward learning book. It contains just a whole lot of 'recipes', small solutions for common problems. This book is not meant to be read in your bed from beginning to end. Rather it's something to grab on to when you want to do something but don't know how. Each chapter deals with a certain topic such as system administration, GUI's, multitasking, testing, webservices, Rake, databases, Internet services, Rails, metaprogramming and a whole lot of more basic language recipe's such as matching strings with regular expressions or comparing floating point numbers. It's a big fat book with nearly 900 pages.

Well, this is somewhat difficult as it's not a book to read from beginning to end. When I used the book, I have always found the solution for my problem in no time. It just covers a whole lot things. The recipes are short and clear and contain references for further information. It's a really good book and writing this review I am actually surprised I have used it so little times. Since it's such a big book, and not something to read in one piece, It's easy to put on your shelf, forget about it and use Google for help, like I did. The fact is however, that in all cases I thought about the book, it provided the answer I needed.

Given that, this book's pretty efficient. It saves a lot of time providing solutions and you don't even have to read the whole thing. Personally I think this book comes not to it's right on the bookshelf, but more as a desktop companion. Consider a digital version to keep around anr CRTL-F when in need.

Publisher's website

Some alternate reviews.

Practical Ruby Gems by David Berube, Apress publishing.

I stumbled on this book on an Internet auction site. Not having any clue about what rubygems were I thought the 10,- euro price would pay itself back. Read on to see my thoughts about the book...

Practical Ruby Gems
This book contains three parts:

Part 1 deals with what gems are, how to install them and do version control.
Part 2, the biggest part of the book, contains chapters that deal with different Gems. All of them contain a description and one or two practical examples on how to use the Gems to get something done. All code is explained after that. The book focuses mostly on Gems that can be used in a web development or sysadmin context.
Part 3 is about creating and distributing Gems yourself.

I think the book is a nice read for starters who finished reading their first Ruby book and now want to create something useful. But I think it can be informative for more expierenced Rubyists as well. It's pretty well written but I found that a few code listings contain flaws. This is mostly because the Gems used have been renamed, made obsolete by different gems or had other adjustments. So it's mostly due to the books age (April 2007) and some specifics of my operating system (Ubuntu). The publisher has not posted any errata and the downloadable code is flawed as well (at least on my system). This was a bit disappointing, but my opinion is that it's still a valuable book that will save you time in the long run. I bought the book second hand for 10 euro's so I'm pretty positive about purchasing it. But I think I would not spend the full price on the new book, but rather wait a possibly second edition or a good discount offer.

Publisher's website.

Some alternate
reviews (mind the dates).

Start to Run by Evy Gruyaert, Lannoo publishing.

I bought this book to serve as a companion for the fantastic 'start to run' podcast. My main reason was to have some more background info on the do's and dont's in running.

Start to Run
First things first, this book is only available in Dutch/Flemmish language as far as I'm aware of.
The book is about 158 pages and is built up around 4 different themes being: Running expierences, Running tips, stretch and yoga exercises and food tips and recipes. Four experts provided the content for these themes: an expierenced ports coach, a fysiotherapist with an expertise in revalidation, a chef and a runner.

I liked the book. I enjoyed the motivating writeups from evy. I think having the running schedules on print is pretty handy, so now I can easily lookup what my next running session will look like. The stretching exercises are very good. I don't think yoga can be learned from just a few pictures however, but I don't really care about yoga. If you do, check out wii sports or buy a dvd or go to a club or something. There are plenty of good tips for starters in this book, one thing I learned which is a recurring message is to take it easy. But I did not like the recipes. Though food is something really personal and you might like them. I expected some more practical meals for some reason. Many recipe's look a bit too complicated for somebody who just had an exercise. Also, many of the ingredients are not available in the average supermarket.

Overall I recommend the book if you just started to run. It might also be a good present.

Publisher's website.

Some alternate reviews

Sunday, May 17, 2009

On the verge of 4K

After a bit of extra rest to avoid injuries, I went on a run today. The schedule promised to be tough, with two 4 minute even one five minute session or continous running. I messed up my statistics after about 0.42K because I needed to break my run session to navigate around a few large pools of mud and rainwater. Because I did not want to cheat I wanted to rewind the training mp3 a bit. To my frustration, I broke my Nike+ training session instead.

So I started over, there was not much else to do and I could use a bit of extra warmup. The first part of the run was slow and hard and difficult. My body did not want, but the music kept me going. The strange thing is that the last, most long part was the least painfull. I did not feel my legs working against me anymore so I could run a bit faster. Here's the stats:

In principle I reached the 4k, but it feels a bit like a cheat. And besides, it's not 4k without breaks. But I'm making clear progress!

That huge dip is where I stood still to do some stretching as some muscles in the lower legs were feeling a bit cramped or acidic. I still find it a bit strange that there is no mention on stretching on the 'start to run' podcast. At least the 'start to run' book version covers stretching and I applied a few techniques, it helps a lot.

I'm enjoying Evy's book, and will probably finish it soon. But I'm not quite enjoying 'Practical Ruby Gems', though the idea behind it is good. It contains many examples that are flawed and result in not working programs. That's really something terrible that can destroy your motivation and quite often a reason to put the book back to the shelf to never touch it again. Maybe it's so flawed because it's a bit dated. I'm almost finished with it and hope my new book will arrive in my mailbox shortly!

Thursday, May 14, 2009


Always occupying the runners' space with their hordes of beasts. Today they were in their numbers and their beasts were all over the place. You know them, I call them dogwalkers. People who walk their dogs, preferably unleashed, big and overactive. There's usually a few dogwalkers in the forest which is fine as long as they stay out of my way. But today I've ran into the king of the dogwalkers. As I was running I started noticing big drewling dogs poping up all over the place. I kept seeing more and more of these unleashed beasts pop-up and going a direction which was worringly same as mine. It was a while until I saw the smoking dogwalker who commanded the herd. Lucky for me I was just in my walking session, so the dogs were less interrested in active pursuit.
I had many short, one minute walking sessions mixed with 2 minute run sessions. It was a bit different, usually there is more recovery time. But I did not really need much of that and found the different schedule to allow me to speed a bit up.

Overall I'm quite happy with today's stats, 8th run, almost near 4K, the fastest pace and longest runs I made yet. My nike+ told me I've passed the first 15K! So I accepted the 25K challenge, I have no idea what that means but I guess it's nice to hear when I passed 25k.

Thanks for the comments on the photo in my previous post, I'll post some more soon!

Now, off to read a bit in my start to run book which has just landed in my mailbox :)

Monday, May 11, 2009

Growth patterns

Yesterday's visit to the 'keukenhof', the famous Dutch flower gardens, took it's toll on today's run. I've spent most of the day walking and taking pictures of beautiful flowers. It was a great way to practice on my photography and I managed to take a few nearly professional shots. Nature is amazing. Walking around in the keukenhof all day enhanced the pain in my knees and feet that I had since my last training. But it was time for lesson number 7. So I went for a run but it was a torture. The stats say it all:

But there is an upside, it was a bad day for me. So on a bad day I can even run 3K's, thats quite some growth since the running shop. Even though I love Evy's podcast, I do need some more info on this whole running thing. For example, how to avoid injuries. So I 'decided' to order some books. For me it allready is not much of a decision as it's more some obsessive-compulsive disorder. This time my book-shopping spree limited itself to one running book and one ruby book. Since Evy is cool I decided to just buy her 'start to run' book and in that way give her some of the kudo's she (and not the record companies) deserves.

My ruby book was 'learn to program 2nd edition'. I checked out the online version and understood all code examples directly. It seems I have progressed a bit in my ruby coding as well. Though this book is for the real beginners, there is always something new to learn from a good resource. I like the small size of the book and the quality of the pragmatic programmer series. They have a clear, direct and down-to-earth approach to explain stuff. So it seemed to be one of the good recourses, and the price of that book just made it easy to put in the basket!

Friday, May 8, 2009

A small world

Today I reached a landmark.

It had been raining quite hard for some time and there was many wind. So when it stopped raining I went out for a run in a fleece. While I was running the sun came back and it was getting pretty hot. Adding to the sweat, today's training consisted of one warmup session of 2 minutes and three 3 minute sessions.

Each time I run, I either go for a clockwise or counter clockwise run around the forest. When it gets boring I take some track into the woods and after that it becomes a random route.
Today however I decided to try and run around the forest completely. I knew when I was halfway when I saw a lighthouse, a landmark of a hotspot for tourists in the Netherlands. I reached Madurodam, which is like a small attraction featuring miniatures of the most famous buildings and places in my country.

This made me aware of how far I ran allready. It was also exactly at the backside of the park, meaning I was half way. The way back went more quickly because it consisted of longer running sessions.

So here are the stats, I have added a half kilometer. Next run will have at least one 4 and one 5 minute session so I think that the 4K will be conquered soon!

Tuesday, May 5, 2009

Chilly, chili, chill

Today's walk was hard. First of all, it was not the best weather. It was rather chilly, windy and started getting rainy as well. But I went anyway.
The weather seemed not to be that tough when I was running. Breathing was fine today, it seems I have built up a bit of fitness already. However, the run was the hardest one yet and I have doubts if it was wise to go on a run today.

Reason is my legs were just in pain and keeping me at a slow pace. I had felt it last few days. Knees and tendons and muscles in the ankle and shin region. My legs felt heavy, slow and tired. But I completed the exercise anyway, I took it slow though. Here are my stats for today's run:

While I have not spotted any signs of runner high I did have the non-stop munchies since my previouws run. Until yesterday actually.
My yesterday munchies drove me to the supermarket, but it was closed due to WWII rememberance. So I had to be creative with the food I had left. Some meat, vegetables and stuff in tin cans. I decided to make some Chili using:

- 2 spoons of olive oil
- 2 onions
- 3 toes of garlic
- 250 grams of low-fat minced meat
- a bit of salt
- a bit of black pepper
- some chili powder
- 1 can of tomatopaste
- 1 green pepper
- 1/2 gourgette
- 1/2 aubergine
- 1 can of kidney beans
- 1 can of peeled tomatoes
- quite some drops of tabasco

I added all these ingredients to the pan in the above order. Just chopped it all up and threw it in the pan, it barely fitted. So I had to leave out some mushrooms. The vegetables don't need to be cooked very long, but you can let it sit on a small fire a bit to blend the tastes. It turned out to be an absolute hunger killer, and it's got all a body needs if you combine it with a glass of milk.

So after my chilly run and my plate of chili it is time to chill out and do some reading in my Ruby Gems book!

Sunday, May 3, 2009

I'll get you next time gadget!

Having started with a slooow morning, it was time to get active and go out for a run. First I loaded a new podcast to my ipod and I checked the nike+ website again. And this time I could even register. All gadgets were a go and there was nothing to hold me back now! Though there was a lot of wind, I barely noticed when I got to the forest. I quickly loaded Evy's podcast and started out for a minute warm up run. After that a one minute walk followed by a two minute run. As I was just getting into the rhythm I noticed I did not start the podcast from the nike+ menu from the ipod.

Though a plus side of starting over was to have more Evy, I did not feel like breaking the pace. So no stats this time unfortunately.
I'll get you next time gadget!

Saturday, May 2, 2009

Productive Geekness

Having a few extra days off with absolutely nothing planned and nothing social on the agenda just begs for a time to nurture the inner geek. The amount of tech stuff I wanted to check up on or try has been piling up for the last weeks and I finally got some time for it.
Having nothing on the agenda whatsoever keeps the head clear and brings on a state of zen. There is no hurry and all the freedom to really dive into something and keep going at it until you understand or until something works.

I started off reading a few chapters from 'Practical Ruby Gems'. It's about Ruby Gems, a system for packaging and distributing ruby programs. It's much like the Advanced Package Manager on Debian and Ubuntu systems. It also lets you download and install Gems and has a handy versioning system that lets you install and use different versions. Some basic usage:

gem list shows all the Gems you have installed
gem list -r shows all the Gems from RubyForge, the internet Gem repository.
gem list -r foo shows Gems that have a name starting with foo
gem install Installs the Gem called 'bar'
gem uninstall Uninstalls the Gem called 'fubar'

Using a gem inside your Ruby code goes like this:

require 'rubygems'
require 'somegemname'

After that you can call the methods that the Gem provides just as if you had written the method in your own code already.

Being a total screencast fan these days, I watched a few screencasts on Ruby Gems as well. 'Under the hood, an intimate tour of some gems among gems' was the best.

Find some more info on the Ruby Gems website.

Yesterday I used the ActiveRecord Gem. ActiveRecord handles Database stuff for you in a way that's both easy and independent from what database management system you use. While I had some struggles with the code examples in the book (I really, really hate that), and some dependencies from mysql, I managed to get it working.

Usually, when you are confronted with some problem and figured it out after some time, you are confronted again by it a few months later. Usually I don't remember enough about it to solve the problem and must endure enhanced frustration 'why did I not write that down!'.

Since I was rather zen yesterday, I decided to implement a private wiki to document my stuff. The ammount of choice was overwhelming, I'll save you the whole story but in the end I wounded up with Instiki. A very simple Wiki, written in Ruby. It was running in a few seconds. I'm not completely happy with it though since it does not seem to support code markup.

Anyway, time for me to dive into something new!

Friday, May 1, 2009

Three K's for the Queen

I was supposed to go for my third run, but I had to pass up on that one due to the celebrations on the night before Queensday. Today was Queensday and usually there are celebrations everywhere with orange stuff and flags all over the place. However, this years' celebrations were put to an early grim end. I did not feel a wish to sponsor the media vultures and stay home and watch the horror repeat.

I still had a run to catch up on.

But before I would go on a run, I had to deal with the iTunes issue. As I still could not listen to my exercise mp3's while using the nike+. The app just won't let you play a podcast, only mp3 files tagged as music. After a lot of frustration with iTunes, wich magically decides all by itself if a given mp3 file is just a music track or a podcast, I managed to find a work-around.
The trick is to make a new 'smart playlist', and use a filter to add the podcast. This smart playlist can be synchronised to the iPod and played from within nike+.

So, I went to catch up on my date with Evy in the forest. The run went fine but I was still struggling a bit with my breath control. I tried to keep a consistent rhythm of deep slow breaths. But sometimes my running pace tricked my breathing rhythm to speed up. This is just something that needs my constant attention like so many things until it starts to become natural.

Anyway, when I was finished I was surprised to hear Lance Armstrong congratulate me on my results. Yeah, whatever dude.

Back home I reviewed my stats for the first time. In the process I managed to bork up the crappy registration process at the nike+ website. Apparently my birthday, which Nike thinks is important to review running statistics, is not existent. While fiddling with their interresting but amazingly stupid registration form, I entered a birtyear for 10 year olds. Nike thinks that persons younger than 13 should not review their running stats and therefore are not allowed to register.
That's no news really, we all know how Nike loves children... But they locked the datefield and I could not change it back. Further more, even if I deleted all data on my system relating to the Nike website, it still remembered my exact registration form. How? Well the nike+ has a unique track ID which is used by iTunes as an identifier when you access the nike+ website.
But wait, why do I need to register for a username and password if they allready use a unique ID to identify me? Well because they really, really want to identify me. As a person that is, not just as an anonymous runner who just wants to see his running stats. So what? Well just think about it, why would they want to know exactly who I am, where I live, what my age is etcetera?
Answer is simple, they are evil. They will use it for their own marketing pleasure or maybe even sell my personal data to the highest bidder.
Thanks for buying our product, now we´d like to abuse your identity! How´s that for customer bonding. No need to ask or even tell me about that before I buy the product. ´Just do it´ just got a new meaning.

Anyway, here are my first basic stats. I needed to take a screenshot of the overview as I cannot backup this data or access the more detailed info.

Monday, April 27, 2009

Git on the good foot

Get on down like a...

Whoo that was a good run for just the second one! It started bad though. I was in a hurried state of mind realizing it was getting dark, it looked like it would rain soon, I had no route still and I needed to fix my iPod/nike+ issue. Google maps showed me a possible track around the 'Peace Palace'. The 'palace' looks more like a church, is dedicated to peace and houses the International Crime Court and some other institutions dedicated to law. Unfortunately there seemed to be no nice way to run around it. So I decided to opt for a forest run in the nearby forest.

First I ran parallel to the forest for a while. After a long straight run I started feeling a bit of discomfort in my left shin. It was something like a cramp that was building up. Maybe it was caused by the tree trunks running under the tarmac causing uncomfortable bumps. Somehow I noticed that I started running unnatural, using my other leg more. I figured a bit stretching might help. Though Evy from the mp3 did not mention stretching. I always see many runners doing it so I figured it would not hurt to do it just a little bit. That helped!

After that I also needed a change of scenery and I took a turn into the 'woods'. It had been a long while since I was in a forest or anything that resembled it. When you have an allergy of trees, plants, flowers and such that does not seem inviting. However, it was great a green oasis. There was not a soul and no sign of my allergy. The run was good, I was eating trees so to speak. Though I felt my pace was slow making my muscles work extra hard. Maybe my next run will be a bit faster.

My training was announced to over just when my bike was in sight. Excellent, it looks like I've found my running grounds. There are many 'forks' in the road as well, so It seems there is enough variation for a while.

Speaking of trees, trunks and forks. Time to get geek. Last week I have been playing with Git. Git is an open source version tracking system. Basically it lets you track the contents of files. You get to see what changed, who changed it, change it back, label it with a version number and fork or branch it. I always felt I needed to know at least one version tracking system. And I recommend everybody who needs to track changes to files to give Git a chance.

I started out by first reading 'Pragmatic version control using Git, by Travis Swicegood'. This was a fine read, explained everything, nicely written, high value. recommend it. After that I found a few screencasts about git and git/hub. Github is a website where you can manage your git repositories and share and track code with from others. You can find me on github as well, it seems pretty cool and handy. But one thing to remember is that all your stuff will be shared publicly, unless you go for a paid account. The github screencast is from Pragmatic as well, but it's free. Then I found even more Git screencasts on gitcast.

Now I'm off to do some reading in my new-2nd hand 'Practical Ruby Gems' book which I stumbled upon and got for 10 euro's and get some sleep after that.

Saturday, April 25, 2009


False start!
I was all ready to go: shoes, pants, shirt, charged iPod nano and the nike+ sensor on my shoes.
My first run was somewhat postponed thanks to some copyright barons in Belgium. See, one Belgian lady made some really nice mp3 series with the appropriate name 'start to run'. Seems to me people wanted it to be found. Anyway, I was planing to start running with the aid of this program since I heard and read much good about it. However some copyright club had tried to make these mp3's disappear from the web exactly now. On any other day I would have found it amusing how these naive and ignorant people keep trying to make information disappear from a global network that was designed to be able to share information even during an all out nuclear war. They must have gotten high from the news of the verdict on the Pirate Bay people.

But, ha-ha, the pirates have got the wind back in their sails with the not so surprising news that the judge was waist deep in the industry himself. So mateys find ye treasure here, harrrrrrr...

When I thought I had everything, I walked to my battlegrounds for my first run. A nice calm area with huge manors, embassies and stretches of parks leading to dunes and beaches. Meanwhile I was fiddling on the iPod to start both a new training on my nike+ and listen to the mp3. Unfortunately, it turned out that I need to make a playlist since it did not allow me to select the mp3 file which has been branded by iTunes as a podcast. Great. So my first run was one without statistics, but maybe thats actually a good thing...

The first few minutes were obviously too hard. I ran out of breath rather quickly and feared the side pains and all other discomforts I associated with running would follow up soon. But then another runner came jogging by, she looked experienced in running for some reason, probably the flashy stretch clothes. But she was going way slower. So I decided I'd better turn it down a bit. After that, while still being a good workout, the run was smooth.

Because I had no idea what distance I would cover during the first run, I did not plan out a route. It became a somewhat ad-hoc run with twists and turns. Sometimes I would need to backtrack a bit because I reached a dead end or would wind up on a sand track and stuff like that. I had no idea when I would be half-way and what would be a good time to head back. This all resulted in me being finished with the first exercise in somewhat unknown territories. I was a bit lost, and needed to walk quite a bit to get back home. Maybe that's actually good for cooling down, or maybe I should just pick one of the many other parks which are within reach, or just bike to one of them...
All in all, it was a good first run but much, much progress can and will be made!

Thursday, April 23, 2009

Ready, set...

And off I was, running through the crowded streets. Somewhat misplaced, one man against the hordes of shop-melody-induced consumers. But the discomfort was not caused my going in against the mindless zombies. Noo, it was the sheer fact of way too fast bodily movement accompanied by a slight breathlessness and sluggishly carried by way too shiny new shoes.
Not too long before, the nervous spasms of my ankles and feet had been recorded, replayed, thourogly studied and commented. Normally I would have declared insanity on the pour soul who volunteered to put himself to such a drag and horrid display. The sheer horror of what was to come soon was unbearable to even think about.

I was in the running shop, long believed to be occupied by earths minions of Satan, to buy the things one needs to start running. What would drive such a big geek to do such a thing? Well first, offcourse, he is indeed a big geek. Second, it seems there is an interresting tech factor to running. Tech is fun, so I could make myself believe that running could be fun too. In any case I would get to buy some new gear. Since I had allready mostly ran out of toys on my wish list, I could use running as an excuse to buy some geeky running stuff!
So, reminding myself of all the gear one really must have and all the tech it would unlock, I dragged myself through the process.

The result was a bit of an expense stretch but let's just say thats a positive start ;-)

My footgear of choice was a pair of Saucony Progrid Omni 7's. The Omni's had a marking on their sole spelling 'SSL', at first sight that was appealing. SSL, in the geek world at least, stands for 'secure sockets layer', and is a technology used mostly in web technology. For example to provide secure communication with websites. A good sign, but things are not always what they seem to be. There is enough reason to not even just blindly trust even this technology. Fun yes, trust no. Remember that.

Anyway, though pretty advanced for a pair of shoes, the geek in me was not yet satisfied.

So I bought myself one of those Nike+ Ipod thingies and a clip to hook the sensor on to my shoes. It's amazing how each of my new toys provides ways for others to put me under surveillance. Anyway, it will most probably provide some more fun, maybe it is actually usefull in running and if not, there are other interresting uses for it like it and such and so.

Well, that provided a nice 'carrot' for the running. One last thing, I needed some bag to carry my things runner style. Since I always seem to cary some gear with me I always need some bag to put it in. So I bought a tiny nike shoe wallet as well, you know for keys or if I happen to possibly need some usb stick or swiss knife with me for the mc guyver factor.

So with this first blogpost on my new blog. I am ready and set for my first run!