jlaine.net

Blade Runner

The launch of Amazon’s new Kindles has already been analyzed to near death, so I’m not going to dive too deep in that general discussion. What struck me as interesting, though, was John Gruber’s analysis of the new models being US-only:

Production must be tight on the Fire and Touch models, as well, because they’re only being offered in the U.S. for now. The only new Kindle for sale outside the U.S. is the $79 non-touch model.

Now here’s the thing: it’s clear that Amazon is in the razor blade business. At $199, Kindle Fire either has a razor-thin margin or is sold at a loss. According to Piper Jaffray’s Gene Munster Amazon is taking a hit of $50 for every device it sells. If that’s the case, it must make up for that selling content, which is its bread-and-butter business.

However, selling content such as books, music and movies is also a low-margin business. That means Amazon has to sell a shitload of content to make up for the potential losses it makes with the Fire. Fortunately for Amazon, its customers are people who do spend a lot of money online – maybe second only to Apple. That’s probably the case only in US, though. International clients are likely to spend far less money on Amazon, because of narrower selection of books in their language, and because of movies and TV shows not being available, at all. As Horace Dediu points out:

The problem is that services don’t scale as well as products. Consider that none of the content streams that Amazon will depend on are available outside the US. The Kindle has not been a strong seller internationally. This is because book rights are limited to national boundaries as are movie rights and song rights. Apple has only this week finally completed the rollout of iTunes music to all of Europe! A process that took almost a decade.

So what if the production capacity isn’t the only reason for the new Kindle models being US-only? What if – given Amazon’s current production costs and international licensing deals – they just can’t see themselves selling enough razor blades to make up for the cost of the razor?

iTunes Doesn’t Recognize Your iPhone or iPad Anymore? Here’s the Fix.

Somewhere between updating OS X to Lion and iTunes to version 10.4 iTunes stopped recognizing both my iPhone and my iPad. What’s weirder, even though System information saw both devices, my iPad also showed the disappointing “Not Charging” message in its status bar. The iPhone, which doesn’t demand as high a voltage from the port, did charge, though.

The web is full of different instructions on how to fix this kind of a situation. The gist of them all is basically to restart the device, restart the computer and if these won’t help, reinstall iTunes. There is even a knowledge base article on the Apple support pages with these instructions.

The problem is, Lion doesn’t let you move iTunes to the Trash because it is “needed by the operating system”1, contrary to what the aforementioned article says2.

Fortunately, OS X is built on the shoulders of Unix giants, so here’s how I managed to fix the problem.

  1. Open up Terminal.app, e.g. using Spotlight. Find Terminal using Spotlight search
  2. Move the iTunes.app directory to a temporary place. Note that you need sudo to be able to actually move the folder.

     $ mkdir -p ~/temp; cd /Applications; sudo mv iTunes.app ~/temp
    
  3. Download the latest iTunes version from Apple’s website and run through the installation process.
  4. There is no step four. iTunes should now recognize your devices again.

Warning. This procedure fixed the issue for me. It should not affect your iTunes library (which is normally located in ~/Music/iTunes) or preferences (which reside in ~/Library/iTunes). However, there is no guarantee that it will work for you. Don’t hold me accountable if you mess up your iTunes library. What’s more important, make sure you have backups of everything before you start.


  1. After reinstalling iTunes this error mysteriously disappeared, i.e. I am now able to drag the iTunes.app folder to the trash just fine. 

  2. To be fair, the article is dated back to last December and has not been updated to the Lion era. Which begs the question, why not? 

Compensation. Supercompensation.

This the second part of The Road to RubyConf XK, a series of articles about running training. Don’t miss the first part.

For many, it is enough to know that running keeps you fit. But if you’re training with a goal in mind (be it a specific time on marathon or just to get into better shape), it is useful to know a bit about the physiology of physical training.

I’ll start by letting you into a secret. From the outset, you might think that exercise makes you fitter. Actually, exactly the opposite is true. Exercise makes you less fit.

But hey, I hear you say. Why do we then train at all? Let me explain.

In sports science, the training effect can be described with a simple graph:

Supercompensation effect

Figure 1. Supercompensation effect.

In the graph, the red parts are training sessions, during which the fitness level of our persevering hero goes down1. Then, during the rest phase (marked green) the level goes back up to where it was. However—and this is the interesting part—it doesn’t stop there. Because of evolution, intelligent design or a turn of the wrist of the flying spaghetti monster, the human body is an adaptive organism. It basically thinks, “Gee, I was hit really hard during that last workout, so I’ll be clever and hoard some extra jelly in order to be prepared for the next one”. And thus it steps beyond its initial level of fitness to the land of the unknown. This effect is known as supercompensation.

Supercompensation is a funny thing. It happens in many different training effects, be it strength, aerobic performance, or maximum running speed. As we’ll see later, the effect is also used on many timescales in training programs, from intervals within a single workout to training sessions to days to weeks or even longer training periods.

From the supercompensation graph above we can draw three corollaries:

  • You should train at the optimal point of the rest phase.
  • You should make the recovery curve as steep as possible.
  • You should find an optimal rhythm to your training.

Now, let’s look at each of these in more detail.

Goal 1: train at the optimal moment

In a perfect world, training would always happen at the very top of the supercompensation curve. In reality, that is of course not possible. First of all, the whole graph is a vast oversimplification. There is no single thing called fitness. Rather, there are several aspects to it such as muscle condition, energy level and general fatigue.

Nevertheless, it is important to understand the timing of hard trainings. If you always train too soon after the previous tiring exercise, the curve will never reach the supercompensation state but rather top off before the previous high level. Continuing this for too long can cause what is called overtraining.

Overtraining

Figure 2. Overtraining. Leaving too little time between hard workouts leads to decrease of the fitness level.

Overtraining is a condition with symptoms like general feeling of tiredness, sleep problems, high rest and orthostatic heart rate. Recovering from severe overtraining can easily take months. Many top athletes who have trained themselves too far have never recovered. It is thus important to train on a level that is suitable for your current fitness. You can’t start an olympic-level training program if you have not run a mile in last five years.

On the other hand, if you leave too much time between the workouts (which is frankly far more common among us), the supercompensation effect will fade out and your body will return back to the previous level or even lower.

Training too seldom

Figure 3. Workouts too far apart. The training effect fades away between them.

Goal 2: Recuperate as fast as possible

Like said in the beginning, your fitness doesn’t improve while training, it improves while resting. Assuming that you always exercise at the optimal moment, the next thing you can do to optimize the training effect is to make the recovery period as quick as possible. This will allow you do more training-recovery loops within the same amount of time.

Faster recovery allows for more workouts in the same amount of time

Figure 4. Faster recovery allows for more workouts in the same amount of time, thus resulting in faster increase of fitness.

There are a vast amount of ways to shorten your recovery time. The effectiveness of many of them depends on the individual. However, many if not most of them have been scientifically proven to accelerate the process of recuperation. Just remember that doing nothing at all rarely is the fastest way to recover.

  • Energy: Try to get energy as fast as possible after the training. A rule of thumb is something quick (such as a recovery drink or bar) within 30 minutes and a warm meal within 2 hours. This helps to start the refill process of glycogen2 stores in the muscles and to get them out of a catabolic state. The most important constituent in the recovery process are carbohydrates (the recommended amount for quick recovery is 10g for each 10kg in your body weight), so forget low-carb diets if you plan to go by a real training program3. Proteins are not nearly as important in endurance sports as carbs, but they have been proven to improve the carbohydrate intake and glycogen restoration. The recommended amount of proteins right after a workout is about 3g for each 10kg of your body mass.
  • Sleep: Not only do you rest best while asleep, your body also produces more human growth hormone when asleep4, which quickens the recovery process in muscles. It is important to note that the physical restitution happens mostly in the deep non-REM sleep5, so forget polyphasic sleep and other gimmicks. 9 hours each night and a one-hour nap during the afternoon downswing is not over the top.
  • Stretching: Stretching keeps your muscles more elastic by lengthening the individual muscle fibers and helps to get the waste products flowing away from the muscles by increasing blood circulation. On top of that, too tight muscles and tendons often cause injuries in the long run, and make your stride shorter and running posture unnatural.
  • Massage: The same as with stretching. Note that you don’t have to get an appointment from a masseuse (although it doesn’t hurt, except sometimes, literally), you can help the recovery process of your muscles by rubbing them yourself.
  • Hot: Especially in cold weather, something like sauna helps your muscles to relax. However, make sure you regain the liquids and electrolytes lost when sweating (applies to warm bath as well).

  • Cold: A paradox, huh? Not at all. While warmth helps your muscles to relax, cold on one hand mitigates swelling and micro-trauma, and on the other, stimulates muscles which helps them recover faster. Works especially well when alternated with hot.

Ice swimming

Photo by Tero Maaniemi.

  • More training: More things that sound like a paradox. After tough workouts, very easy training is often way better for recovery than just pure rest, which often causes muscle stiffness and thus makes the next hard exercise less effective. Even within interval workouts it’s proven to be better to slowly run between the heats than to just stand still.
  • Electrical muscle stimulation: Ok, this is a gimmick but if you’re serious about exercise and don’t mind shelling out a few hundred bucks, an electrical muscle stimulation machine can be quite a versatile help in both helping the muscles to recuperate and to treat injuries.

On the other side of the equation, there are a few things that will slow down the recovery process and that you should avoid if possible.

  • Being sick: If you’re sick your energy goes into fighting the disease instead of recuperating from the training. Unlike you might think, there are things you can do to avoid many common illnesses such as flu.
  • Lack of sleep: See sleep above.
  • Jet lag: Pretty much the same reasons as with lack of sleep.
  • Stress: Stress and overtraining form a vicious cycle and are (quite literally) a killer combo.

Goal 3: Perfect rhythm

Like said above, the supercompensation effect happens on many levels. Within single workouts such as interval trainings, between workout sessions and days, and even between weeks. Therefore, unlike we indicated in goal #1, there might not be a single optimal moment for a training on all those timescales. Sometimes it makes sense to train even while tired, especially on training camps. On the other hand, after harder periods of training you might need to take it easier for a whole week before doing another hard workout.

Figure 5. Supercompensation on both workout and weekly level.

It is thus important to find a good rhythm for your training program. This should happen on one hand both on short (day/workout) long (between weeks) timeframe; on the other hand on both workout intensity, length and type level. Some examples:

  • A typical week rhythm for training might be easy, moderate, moderate-hard, hard, weekly hours being something like 6, 10, 14 and 18 hours.
  • One rule of thumb rhythm (for an orienteer) for individual days or workouts during the base training season is long, strength, hard, easy, long, strength, easy. This has seven points so it’s either a weekly (if you train once a day) or half-weekly (if you train twice a day) program. The point of this rhythm is that typically fast workouts are not that effective after a long training. On the other hand, the strength-fast pair is typically pretty effective in putting the strength picked up from the gym into practice.

Conclusion

If you read the training schedules of some famous athletes, you can see that there are no two similar programs. While sport science has evolved massively in the last 60 years, there is still no one right way to exercise that would work for everyone or even for the same person in different situations. You thus need to find what works best for you, which is no small feat.

However, understanding the scientific basics of training a human body will help you assess the training programs you find and to choose the program that works best for you. You are thus in way better position than for example Emil Zatopek, who spent years and years shuffling different training programs, from insane mileages to interval training in snow (which both worked well for him) to maximum strength training (which didn’t). So since we’re allowed to, let’s not be shy about running on the shoulders of giants.

Footnotes

1 The reason for this is that training is a catabolic process, where large molecules are broken into smaller ones, at the same time releasing energy. ?

2 Glycogen is the stored carbohydrate in muscles that human body preferably uses as energy in sustained physical exercise.6 ?

3 Williams, Raven, Fogt and Ivy: Effects of Recovery Beverages on Glycogen Restoration and Endurance Exercise Performance. ?

4 Van Cauter et al: Reciprocal interactions between the GH axis and sleep. ?

5 Weissblut: Healthy Sleep Habits, Happy Child. ?

6 Gotta love research made by Lenny Kravitz. ?

The Road to RubyConf Xk: Why Run?

About The Road to RubyConfXk

This is a series of articles that I’m writing paving the road to RubyConf Xk, the second installment of the running event at the yearly RubyConf. This is the pilot episode of the series. Next parts will explore several diverse topics loosely related to running.

I’ll have to start with a confession. If you’re looking for experiences from someone who knows a lot about how to start to run, I’m not the right person. While I technically did start to run, that happened when I was only a few years old. I don’t remember much from those days. Unlike many others, I never stopped running after that. So maybe the right thing to say is I don’t know much about restarting to run.

Also, I’m not a real runner at all. I’m first and foremost an orienteer and like many other sports as well. Likewise, while I mostly talk about running in this series, many if not most of the lessons can be directly applied to other endurance sports as well.

However.

Running is a natural way to move, and to me, the purest form of all sports. For millions of years, it was the fastest way to move on land known to mankind. It is the way children naturally move when they play, often hours every day1. At some point, we slip away from this much exercise (often all the way down to nothing).

Why is this bad? That’s what the rest of this article tries to uncover.

Health

This is kind of stating the obvious (and—I hope—preaching to the choir), so I’m going to keep this short. Exercise makes you healthier, it makes you live longer and it makes you feel better here and now. There, I’ve said it. Now for something you might not have considered.

Quiet time

In a recent MacBreak Weekly episode, Andy Ihnatko mentioned Nicholas Carr’s The Shallows: What the Internet Is Doing to Our Brains. In the book, Carr explores what the constant stream of bit-size information and interruptions coming from the internet is doing to our brains. Whether or not you agree with his conclusions2, it’s clear that in this age of uninterrupted interruptions, our brain needs some quiet time. Now that we can surf on the ‘net while sitting in the bathroom, there are fewer and fewer places where we can really sit back (either figuratively or literally) and reflect on things.

For me, going for a run (or a bike ride) is often the asylum where I’m really able to gather my thoughts and let ideas fly free. Even if I decide to listen to a podcast or an audiobook while running, I often drift off into deep thoughts on how to apply the ideas presented through the phones to my own current context.

But having quiet time is not the only reason why many prominent figures tell they get most of their ideas while running, walking and biking.

“Exercise boosts brain power”

In his seminal book Brain Rules, molecular biologist John Medina explains in readable and fascinating way how the most important organ of every knowledge worker—our brain—works3. The title of this section is a direct copy of the name of his first rule. As it turns out, the increased oxygen supply to the brain caused by exercise has been shown to not only cause long-term improvement in cognition, but also immediate results. We are even smarter than normally during the exercise. This caused Medina to go so far as to suggest deploying treadmills in classrooms and cubicles. While that’s an interesting idea (that quite a few people have actually made reality), the most important thing is that you exercise.4

Personal addendum: experiences

For many runners, every vacation is equal to a training camp. While some might say this is bringing work to holiday, it has some hidden benefits as well.

To me, holidays are all about experiences. I’m really not interested in lying on the beach or by the pool for very long. And this is where combining running with sightseeing comes in.

You could certainly gain many of the same experiences by driving a car to the spot (when it’s possible). However, I have a theory (based on highly anecdotal evidence) that running accentuates that experience. And it seems there is some research that (loosely) supports my theory.

I got one of the ideas from Dan Ariely’s book The Upside of Irrationality5. In it he explains the so-called Ikea effect, which effectively means we’re most attached to things we made ourselves, or had to go through effort to attain. This might explain why the views from a mountaintop feel so much more magnificent if you ran or climbed up rather than took a gondola.

Another possible explanation to the phenomenon is the runner’s high, which would (whether the cause of the high is endorphin, anandamide or whatnot) quite naturally affect the strength of the perceived experience.

A case study of this is our 6-week workcation in New Zealand, which turned into more of a normal vacation when my laptop died while driving down the South Island.

During the trip, we

These are some of the fondest memories of my whole life. I wouldn’t want to have experienced them any other way.

Footnotes

1 Well, they should. The recommended amount of daily exercise for a child is around 2 hours. ?

2 Carr is a known internet critic and sceptic so he might have an axe to grind even in its effects on us. ?

3 Don’t miss the interviews (1, 2, 3) Geoffrey Grosenbach has made with Medina in the Ruby on Rails podcast. ?

4 If you’re interested in the effects exercise causes to your brain, you might want to take a look at (besides Medina’s books) John J. Ratey’s Spark: The Revolutionary New Science of Exercise and the Brain ?

5 The Upside of Irrationality is the successor of Ariely’s highly successful book on behavioral economics, Predictably Irrational ?

6 We did not, however, go as far as our friends who ran around the whole 60 km track (with 1200m height difference between the highest and lowest point) in a day. ?

How to Quickly Fix Safari 5 Reader Typography

I really like the clutter-free reading experience the new Reader feature in Safari 5 brings. However, what I don’t like too much is the standard html rendering it uses for typography. The full fix for this would be to write a Safari extension to run the whole text through LaTeX or the very least through the Knuth & Plass algorithm.

However, a quick fix for the horrible justified text is this:

Open the contents of Applications/Safari.app:

Then open Resources/Reader.html in a text editor.

Around line 82 there is a CSS rule for .page. Update it to left-align the paragraphs:

<pre> .page { font: 20px Palatino, Georgia, Times, "Times New Roman", serif; line-height: 160%; text-align: left !important; } </pre>

Use !important as well, just to make sure. Save the file (you might need to type in your password here), and you’re done!

If you dislike Palatino, you can of course edit the CSS to your heart’s content. For me, the biggest beef were the rivers flowing through the text when using the default justified alignment.

Speaking at Frozen Rails

The first-ever Ruby/Rails conference in Finland, Frozen Rails, is going to take place May 7th in Helsinki. The speaker lineup is top notch, including three Rails core team members and the inimitable Chris Wanstrath. For an unknown reason, in the midst of these high profile guys, a random guy from Tampere has ended up in the speaker list. Yours truly has the honorable (and somewhat frightening) job to wrap up the conference with an ending talk.

My talk is tentatively titled “Of Perfection, Perfectionism and Perfect Web Apps”. It will be less of a technical talk and more a critical, personal, humorous and hopefully entertaining performance about the previous decade spent writing various kinds of web sites and apps.

If you still haven’t secured your ticket, hurry up! The 99€ early bird price goes out tonight.

6 Guaranteed Ways to Make Me Block You on Twitter

For me Twitter serves two purposes:

  1. It helps me stay in contact with people I know but am unable to see often because they live on another side of the world or just because I’m a hermit working from home and never get out.
  2. It is a moderated feed of interesting content on the web.

These purposes shall thus form the frame of reference for the rest of this article.


One cool thing about Twitter is that it can be pretty much spam-free as far as it affects an individual user. Sure, there are lots of spammers around but they don’t really bother you much since the only exposure to them you’ll ever get is the single email you receive when someone follows you. You can turn off that notification.

In one end of the spectrum in how you handle followers on Twitter is to act like Koz: you let everyone follow you, even spammers. That can lead to a healthy number of followers, and the count will probably increase exponentially. The downside is that most of the followers will meet at least some criteria of the word “spammer”. This ratio will also probably get worse over time because the more followers you have the easier spammers will find you. But hey, at least you can brag about the hundreds of thousands of followers you have.

The polar opposite approach is to only allow your friends to follow you. This will basically make Twitter what Facebook used to be before it gave in to the dark side. Locking up your updates means that Twitter is a radically different tool for you, because you can’t use it to broadcast anything to the public. That’s fine for some people. However, it would totally defeat the second purpose I have for Twitter so it’s not an option for me.

My policy is somewhere between the two ends. Generally, I let everyone follow me. Just don’t expect me to follow you back. I want to keep my twitter feed palatable, so I only follow people based on the interestingness of their tweets. There are, however, a couple of jackass rules that do make me block you from my followers list.

  1. Let’s get the obvious case done with first: your posts look anything like this:

“how to get 16000+ followers in 90 days, fully automated”

or

“RECEIVE GUARANTEED $125 Commission When You Sign Up For FREE Advertisement!”

I have a word for that: spam. And not only will I block you, I will hit the “Report spam” button. I don’t care if you are the leading Twitter follower expert in the world. I just don’t care.

  1. You clearly auto-followed me based on something I tweeted. A year or so ago I tweeted about having watched the film “Who killed the electric car?”. I was immediately followed by @evcast, a podcast about electric cars. It was obvious that my tweet had sparked the action, since I had never heard of EVCast and I’m 100% sure they didn’t know about me either.

A curious anecdote about this is that while automatically following me annoyed the hell out of me and I did block the Twitter account, I still ended up subscribing to the podcast, which is actually quite good and interesting. I wouldn’t recommend copying the habit, though. When the guy behind EVCast, Bo Bennett, later auto-followed me with another Twitter account (one for his own content management system product) after I mentioned the acronym “CMS” in a tweet, I had no qualms about blocking him.

Auto-following is a really pathetic form of follower-whoring, based on the assumption that people are flattered by you following them and follow you back as a favor. Just don’t do it no matter what self-acclaimed Twitter gurus (you know, the ones tweeting like in point #1) tell you. Just don’t.

Bo Bennett is following you

---

The two first points in this list were pretty much black and white rules: break them and you’re out. The rest of the list consists of heuristics. Breaking one of them doesn’t necessarily put you onto the black list, but it does raise a flag. Combined, getting two or more hits is very likely to rule you out.

  1. Make each entry start with the words “New blog post”.

New blog post

That looks like it’s an automated tweet from your blog software (which it probably is). For me, Twitter is all about authenticity and intimacy.

  1. Make each entry end with a link to your blog post. Scratch that, make each entry end with a link, period. The link will most likely be a shortened url anyway, so I have no way of knowing where it points to. I’ll thus assume the worst: your own blog post.

This is a more subtle variation of rule #3 and the same comments apply. Let me elaborate a bit more about that, though.

This rule is irrelevant if you are an actual friend and thus meet the #1 criteria in my Twitter usage pattern. For the second point, remember the word moderated. I have reduced my consumption of RSS feeds recently in favor of getting my daily fix of interesting content from my Twitter feed. If all you do is link to your own posts, you’re not contributing to the ecosystem and thus I have no business with you.

This is not to say you couldn’t have an automated Twitter feed for your blog. Just don’t make it your personal Twitter account. A good example is John Gruber, who has both a personal account and another one for Daring Fireball. Of course, the whole DF feed is already so well moderated that I’m following it as well as Gruber’s own account.

  1. Follow more than 10 times as many people as who follow you. Like said, this is not an absolute measure but a heuristic that tells your Twitter usage pattern doesn’t really fit mine. What it basically tells me is that you’re following people very aggressively and/or you’re not very interesting because people are not following you in return. Either way it reeks of follower-whoring. This can be forgiven if you’re new to Twitter and have only a few followers.

  1. Follow more than 1000 people. Same as above. If you follow a ridiculous amount of people it’s pretty clear that you cannot really follow them all.

Generally, why do people break these rules? To get more followers. It’s the classic get rich quick scheme. The social media consultants are today’s version of charlatans who sell dreams of risk-free, high-interest investments and shortcuts to riches. The asset du jour for companies and individuals alike seems to be the amount of people following them on Twitter or fanning their Facebook page. And the faster you get those numbers up the better, means and integrity to be damned.

So how can you actively earn more followers without me looking at you in disgust? Glad you asked. It turns out there’s a book about that. The book is called The Cluetrain Manifesto. It was written more than a decade ago. Yes, you read that right. Twitter wasn’t even a wrinkle in Ev Williams’s eye back then, since he was busy starting his previous venture, Blogger.com. However, even today the theses of the book are about as apt and fresh as it gets in regard to marketing yourself on Twitter.

Just like markets, Twitter is all about conversations. Write interesting content. Share interesting ideas. Post thoughtful and interesting replies to others. Point to interesting things on the web (yes, some of them can be your own posts). Iterate, rinse and repeat. Keep doing this consistently and you will find your readership flourish.

New Zealand SVG Map in Black and White

High Tide

We had the luxury of spending six weeks around New Zealand in last February and March, including a visit to Webstock ’09. This year’s conference is about to start within hours, and while I won’t be able to attend this time, I will celebrate the event by publishing the SVG New Zealand map I produced for the travelogue book of our trip (click the map to get to the SVG version):

New Zealand map

The map is based on this map on Wikipedia Commons, converted to the only true Kiwi colors, #000 and #FFF.

Since the original SVG file is published under the Creative Commons Attribution-Share Alike 3.0 Unported license, that’s what I’m going with as well. So do what you want with the map, but don’t forget the virus.

Adventures in Online Shopping With Shopping4net.com

Update Nov 24: Turned out I indeed was too optimistic. Updated the timeline

Color me lucky. I’ve done my fair share to support the online economy, but very rarely have I had experiences that have made me regret a purchase decision. I think before this summer I’ve only had to cancel or return two purchases during the decade I’ve been shopping on the internet.

With the aforementioned background, the first truly negative online shopping experience was even more unpleasant, courtesy of Shopping4net.com.

July 4

I order toner cartridges for my color laser and some contact lenses from Shopping4net. All items are marked to ship within 1 week in their online store. The order confirmation states July 8 as the expected shipping date. My credit card is charged immediately for the whole amount.

July 9

I receive an email saying that the shipment is delayed (without explanation) and that the new expected shipping date is July 13.

July 14

I receive another boilerplate email stating that the order is delayed, again without any explanation about the reason. This time the expected shipping date is July 17.

This is the last proactive communication (well, not quite, but more on that later) I receive from Shopping4net.

August 5

I’ve finally had enough and I send an angry letter to the company, where I threaten to cancel the transaction with my credit card company unless I hear more from them, soon.

I get a prompt response to my email where they explain that they had been waiting for the black color cartridge, but now that they checked with the distributor, that whole product is discontinued. The black toner is thus removed from the order and my credit card is credited with its price. This remains about the only thing that Shopping4net manages to handle somewhat well.

August 10

The shipment arrives—without the contact lenses. On top of that, the package slip is for a completely different order and client, so now I know that a guy in Western Finland ordered a Barbie overnight survival kit from Shopping4net.

I send another email to S4n explaining what happened.

August 12

Customer support replies to my emails and insists that the lenses were shipped within the shipment. They ask what kind of package I received and whether it seemed opened.

I reply with the details and tell that the package certainly seemed intact. I repeat that the invoice was addressed to a wrong client and for a wrong order.

I never receive a reply to my email.

August 27

I send another email to the customer support asking whether someone could even reply to my email.

I receive a reply the same day:

From some reason the lenses were returned to us so it seems that our shipping staff has packed your order incorrectly and sent the lenses to a wrong client.

It seems? No kidding.

We will send the lenses to you again and hope they will arrive soon.

They never do.

September 18

I send yet another email asking what the status of the lenses is, given that it’s been almost another month and I haven’t even received a shipping confirmation.

September 21

I finally receive another correspondence from Shopping4net. They acknowledge that

there has been a technical issue with the order and it has therefore not been sent. The issue is now fixed and the lenses shipped to you this morning.

A technical issue? Seriously, what the fuck?

Later that week

The lenses finally arrive. There is an invoice within the shipment, which I ignore since I already paid the whole order with my credit card in July.

October 19

I receive a reminder invoice from Shopping4net for the contact lenses. I send yet another email stating that the whole order was already paid by CC and asking them to cancel the invoice.

I hope the story ends here, but based on the history so far, I won’t be holding my breath.

[Updates, November 24th]

October 20

Everything seems fine. I get a reply from the customer support:

Hej Jarkko,

Tuon korvaavan lähetyksen linssejen summa ei jostakin syystä ollut sama kuin ensimmäisessä lähetyksessä ja summat eivät siksi ole automaattisesti kuitannut toisia vastaan. Olemme todella pahoillamme! Olemme tietysti poistaneet muistutuksen ja kaikki on aivan ok asiakastililläsi!

Kivaa alku viikkoa sinulle!

You need to understand Finnish to appreciate the comedy in the quote. Here’s a translation, sans the broken language, of the relevant part of the message:

The sum of the replacing shipment didn’t match the original so the sums didn’t automatically cancel each other. We are terribly sorry! We have of course removed the reminder and everything is in order in your customer account! (emphasis mine)

I wish it was.

November 20th

I receive reminder invoice #2:

The following invoices from Shopping4net are past due date.

We have already previously notified you that your invoices have not been paid…

Geez, is this never going to end?

I write another email to the customer support. Stay tuned for more…

[/Updates end]

What should I (and you) have learned from this?

In a nutshell, here’s Shopping4net for you based on my saga:

  • They don’t have a fucking clue about how to run a retail business.
  • They lie about what items they have in stock.
  • When your order is delayed because some item is unavailable, they will never tell you about it and after it’s delayed enough, they won’t even bother to contact you anymore.
  • Even if the items you ordered were unavailable, they will charge your credit card right away.
  • They will implicitly say you’re a liar unless proven otherwise.
  • They will not respond to your support emails until you remind them several times and/or threaten them with something.
  • They don’t have the guts to admit how they fucked up your order. Instead, they come up with ridiculous explanations like technical issues.
  • When they ship backordered items, they either out of dishonesty or pure incompetence send you another invoice even if the items were part of an already paid order, which brings us back to the fact that

Shopping4net doesn’t have a fucking clue about how to run a retail business.

So save yourself from what we went through and order from someone else. Their cheaper prices won’t come close to making up for the shitty experience.

Ruby/Rails/BDD Training in Helsinki in April

Note The actual class will be taught in Finnish

Two years ago we joined forces with Helsinki Polytechnic Stadia to organize a Ruby/Rails class for both students of the school and a couple of attendees from the business world. The class was a success.

Now we’re doing it again. The name of the school has changed to Metropolia, and the venue of the class from Arabia to Leppävaara, but the theme of the class will remain the same: teach both newbie and intermediate Ruby hackers to real wizards that can confidently write their ideas in Ruby.

Because of the joined effort, we are able to keep the price (like really) low, at €700 + VAT for the whole 4-day course. That should make the class affordable even for freelancers and individuals who’re just dabbling with Ruby and Rails.

There will be some differences as well. We’ll use more time to teach TDD/BDD and Ajax-related stuff, because of their increased importance lately. Most of the 4th (BDD) day will be taught by Antti Tarvainen, a Rails and Agile wizard from Leonidas who is also famous for his Rails workshop at the Tampere University of Technology.

The program of the class:

  1. Monday, April 6th Basics of Ruby, including what’s new in Ruby 1.9.
  2. Tuesday, April 7th Introduction to Ruby on Rails, based on Rails 2.2.
  3. Wednesday, April 8th Ajax development on Rails, Protype, script.aculo.us and accessible Ajax.
  4. Thursday, April 9th Test-Driven and Behaviour-Driven Development on Rails; RSpec and Cucumber.

Since alumni of our previous classes already snitched part of the spots on the class, we only have a couple places left for sale in the open. It thus pays off to be quick. As an added bonus for the fast ones, you’ll receive an extra 100€ discount if you register within a week, that is before February 26th.

You can register by sending email directly to me .

Welcome to have some fun with us and challenge yourself to learn new exciting skills at the same time!