Long ride equipment

Comfortable or Fast?

I’ve been riding long distance with the wrong bike for too long. My ride is a BMC Team Machine Ultegra Di2 with Dura Ace C24 wheels. It’s a race bike. It’s aggressive. You push the pedals and it wants one thing: going fast.

The problem with a race bike is comfort. Full carbon, very stiff. The Dura Ace wheels are also carbon with aluminium, but more importantly the geometry is pretty aggressive for my body.

After going through a bike fit, I changed:

  • the stem for a shorter one (ZIPP Service Course SL 17° – 90mm)
  • the handlebar for a wider and aero one (ZIPP SL-70 44cm)
  • the saddle for a wider one with a short nose (Specialized Power Expert 168mm)


For going through the night, I added a Dynamo front wheel with a SON 28 hub. It’s a lot heavier than the Dura Ace wheel, but I can now power a K-Lite Ultra V2 front light and a USB charger. This means I can keep my phone and my GPS topped up at all time.

I prefer comfort

Lately I’ve started training with Team Rynkeby and we all use the same bike. It’s a Bianchi Intrepida 105 with rim brakes and entry level RS Shimano wheels. The geometry is very relax and made for spending long days on the saddle. And talking about saddles, I exchanged the Selle Royale saddle shipped with the Bianchi for a Brooks C19, and I really love this saddle.

I’ve had a lot of issues with the BMC and it got me thinking that maybe I should stop using it for long rides. I love the speed, the responsiveness, the noise it makes when I start accelerating… but I hate the numbness in my fingers and my crotch.

Yesterday I went for a 200Km ride with the Bianchi and I haven’t had any issue whatsoever with numbness in the crotch or the fingers. I did start to develop an inflammation on the left knee but I think this may be related to the position of the cleat. I need to dial that…

The only real problem I had was shifting. Since the Bianchi has a 105 group-set, there is no option for electronic shifting like Di2. And when you’ve tried Di2, it’s hard to go back to mechanical shifting.

Electronic Shifting is really cool…

Should I install Di2 on the Bianchi? Maybe not. There is a lot of stuff I would like to upgrade on the bike and maybe it’s not worth it.

Instead I decided to sell the BMC, and shop for a replacement. I got my hands on a Cervélo C3 with Ultegra Di2 and Hydraulic disk brakes.

BMC Team MachineBianchi IntrepidaCervélo C3
GroupsetUltegra Di2105Ultegra Di2
BrakesRimRimHydraulic disk
Fun level⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
Comfort level⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

I’m hoping to receive the Cervélo very soon so I can confirm my assumptions!

Espoo 200KM Ride report

Temperature was cold. Very cold. We got snow for the first 80km. Then some clearer sky. Then rain for the last 50km

Some lessons learnt:

Mud guards are necessary.

Nicer for other riders. But also prevents my back being full of mud. I was keeping some of my food (gels) in the back pocket of my rain jacket and I wanted to get them. But it was impossible without stopping. When you’re hungry and progressing slower than you should, you make bad decisions. You want to continue progressing instead of stopping and eating. If I had no problem taking the food from the pocket, I would have been a happier man.

Avoid big gloves 🧤

They are nice and comfortable, but very inconvenient to do anything on the road. I was already struggling to open the zipper of the back pocket because of the mud accumulated. Doing it with big gloves made it even harder.

That said I purchased some Sealskinz gloves from Varuste and I was very happy with them.

I still don’t have a better option. After 7 hours of riding and being a bit hungry and probably not paying enough attention to my posture, my hands started to be a bit cold. So I would take the same gloves again…

Don’t put any food in the saddle bag

Worst place if you want to be able to reach it. You have to stop. Also my saddle bag is an Ortlieb which is not really easy to open, especially full of mud. I really like it though because it’s just the right size. I pack my tools in it and it can expend so I can put my rain jacket or other stuff if it gets warmer. That didn’t happen yesterday…

Going cycling for a long ride

A while back I’ve shared my list for getting ready to cycle long-distance on the Facebook group called Solitary Cycling.

The comments were a mixed bag. From people who enjoyed my list and thanked me, to people who had no idea what long-distance cycling meant and thought I should “just ride” and improvise if something happens.

The reason I made this list is because I don’t want to improvise. When I go for a ride, I don’t have the luxury to be stuck in some place for hours. I have a family and some responsibilities and I need to get back home, more or less within the time I allotted.

So here is the list:

  • Charge Di2
  • Charge front light
  • Charge rear light
  • Charge HR monitor
  • Charge bike computer
  • Charge phone
  • Put some oil on the chain
  • Check tires and tire pressure
  • Check brake pads – change them if necessary
  • Check saddle bag content
    • 2 x CO2
    • 2 x spare tubes
    • 2 x tire levers
    • Credit card
    • Cash
    • 4 x gels
    • 2 x energy bars
    • 2 x electrolyte
    • 4 x zip ties
    • First aid kit
    • Park took Multitool
  • Fill up water bottles with isotonic and hypotonic
  • Build the route on Komoot
  • Upload the route on the bike computer
  • Dress up
    • Butter up with Chamois cream
    • Bib
    • Jersey
    • Wind fleece
    • Rain fleece
    • Boots covers (optional)
    • Gloves
    • Helmet
    • Beanie if it’s cold
    • Glasses
    • Check that cleats are tight
    • Boots

Training for Paris Brest Paris 2023

The first thing I’ve been doing for training is to tell everyone I know about my plan. I want to build a lot of peer pressure so I feel accountable.

Given how crazy this project is, I am pretty sure nobody would be really sorry if I wouldn’t pull it off. But some people believe in me and I wouldn’t want to disappoint them!

The overall plan is the following:

  • Winter solstice 19-20 Dec 2020 – 150km minimum
  • April – start of Rynkeby cycling season
  • July 2021 – Going from Travemünde to Paris – 1200km in 6 days
  • August 2021 – 300km
  • September 2021 – 400km
  • October 2021 – 600km
  • 2022 – Maybe Ruska. But it’s 2000km, and that’s a lot…
  • 2023 – Super Randonneur series to qualify for PBP
  • August 2023 – Paris Brest Paris

Rynkeby, here I come

In August during a ride, my buddy Karl told me there is this bicycle team that orders a lot of bicycles, and joining them would be a guaranteed way to get a nice bike for cheap. I was not really excited because the team orders Bianchi bikes and they are not my favorites. Not sure why to be honest, but probably has a lot to do with the color.

A few days later, my sister-in-law Jenni tells me about the same team but then she tells me about the whole story.

Rynkeby is a very special cycling team. It’s a charity team who’s goal is to cycle to Paris in France while collecting donations for children with cancer. The team is not made of the fastest cyclists on the market. It’s made of 50/50 men/women, old and young, all kinds of socio-economic backgrounds. To qualify, one has to be a team player, to be motivated by the cause and of course be able to cycle, a lot.

I joined the Helsinki chapter so we are starting from Finland.

From Helsinki to Paris, there is about 2200km. We’re going to cover parts of that route by boat. From Vuosaari to Travemünde in Germany. Then from there it’s 1200km to Paris that we should cover in 6 days. About 200km per day.

With the COVID-19 situation, the team didn’t get to cycle to Paris in 2020. So instead they went around Finland.


When Jenni told me about this opportunity, it was the day the cut-off date for registrations. So I thought I would just register without thinking and then see what happens.

The pre-registration took a few minutes, answering a few basic questions. Quickly after that I received an email asking for more details. And then everything went very fast.

The details were mostly about my motivation and what I thought I could bring to the team.

One has to write a cover letter explaining their motivations, how much of a team player you are, how you could potentially help with finding sponsors and what the cause meant to you, and your level of cycling.

I filled up the form and the next day I received a confirmation that my profile was interesting, along with an invitation for an interview. The interview was the following week.

At this interview I met with Lassi. We spoke about life and why joining Team Rynkeby. It went very fast.

A few days later I received an email saying I was accepted in the team and all I had to do was pressing a big fat green button that said “I accept” (or something like that, can’t remember for sure.

By that time, I was really impressed by how well oiled the whole organisation was. Nothing chaotic, very clear, to the point and just working.

Having created and running rugby tournaments and other associative initiatives, I know very well how difficult it can be to run smooth operations with volunteers. So I was all the more impressed.

Getting the bike

Joining Team Rynkeby means committing to a few expenses. We do collect sponsorship from companies across Finland, but we have to pay for our own expenses. All the money collected by sponsors goes straight to the two foundations we are supporting.

Sylva and Aamu Säätiö

Out of the 2000+ riders, everyone is riding with the same yellow Bianchi bike. And it’s a really good deal. The retail price for the bike is around ~2200€ and we are getting it for ~1400€. It’s a Bianchi Intrepida carbon frame, with Shimano 105 groupset. The wheels are entry-level Shimano RS.

Instead of buying a new bike, I did as usual and found a second hand one. A bit after joining I got my hands on a spreadsheet with contact details of people who were selling their bike from previous years. Tero (who is the famous vlogger of the team of 2020) sold it to me for 1200€. The bike is pretty much spotless. Not a crazy good deal but good enough and the satisfaction of putting more kilometers on a good bike, rather than letting it rot somewhere and buying a new one.

Fast forward one month

The team has met many times already in the past month. We’ve gone through a few walking trainings, usually around 15km at about 10min/km. We’ve done quite a few spinning sessions as well.

I must admit that the language is really a significant barrier for me to contribute more and to get more out of the whole experience.

During the spinning sessions, I get some of the instructions, but not always. Luckily, Heidi, our in-house spinning instructor, gets me the program beforehand so I have an idea of what’s going to happen.

I’ve learned already quite a lot about myself and what I am capable of. But I am really eager for the spring to come so we can get on the saddle and see these yellow bikes in their natural habitat. Also really interested to see what the team will look like on the road. I’ve been always interested to see how it’s like in a team that work well together, where everyone is committed and we all care for each other.

In some ways, this is very similar to Rugby where we have to care for and protect each other. Very much looking forward to see this in action.

How to get hired at Smartly.io

EDIT: I have been now working at Smartly.io for 5 years. Going from 40 employees to more than 400 today. My mission today is to scale the way we do customer support to the next 1000 employees.

Our ways of hiring have changed a lot. The story below is not really a good reflection of how things are working nowadays. You can read it for your entertainment and some inspiration, but don’t try this at home…


What is Smartly.io

Smartly.io is a fantastic company. We’re the leaders in Facebook and Instagram advertisements. Our growth rate is through the roof and we keep innovating in order to delight our customers.

The Facebook ad ecosystem is built around a terrific concept. Facebook is providing Power Editor and Ads Manager in order to build ads. This is the baseline. If Facebook Marketing Partners (FMP) like Smartly.io want to exist they have to provide a service that is far superior to Power Editor for marketers to even begin to start considering to pay to use their product. If an FMP is providing a service that is too close to what Power Editor is doing for free, there is no reason to invest.
At Smartly.io we proud ourselves of being the first ones to release new ad formats. Our team of engineers is working their b**** off to stay ahead of Facebook. The rhythm at which new features come out is purely insane and it’s very hard for any company to keep up with that.
This is why we like to stay very humble. Aware that one day maybe we could lose our grip like some of our competitors have done already before.

At the same time, we want to grow. And we want to grow fast. There is an attitude in this company that is truly interesting. We call ourselves humble hungry hunters.

So if you want to get hired you need to prove that you have what it takes to call yourself “humble hungry hunters”.

Let me tell you my story.

In June, my dear friend Claudio one day told me about Smartly.io. Claudio was in Lithuania, struggling to make ends meet with a startup that we co-founded and from which I was already out. Claudio was asking me what I was thinking of this company and I very quickly understood that it could be the perfect place for me as well.
After 9 years spent at Nokia, it was time to go.
So I applied for the position of Technical Account Manager. The description suited me pretty well and I thought I had a decent chance of getting hired. I was genuinely interested in online marketing, being a former instructor for top mobile operator engineers I thought I was a fast learner and from a technical point of view, I was also pretty well qualified.
In the meantime, Claudio got hired which got me really excited.
I realized from the job posting that AngularJS was a cornerstone of the product (Edit: now it’s more React.JS) so I decided I should take an introductory course in order to understand what that was. I followed the course, took all the tests, and validated all the modules, one after another.

Let’s get started

I also had to solve a small technical puzzle which led to finding the email address where to apply. It was kind of a technical position so it was only normal to have at least a basic technical test… It took me a few hours, some loops, and some curl to figure out the result of the test and then I sent my application.
I got an answer from Joonatan and I was happy to receive homework to complete.
Having two kids at home and seeing the amount of work to be done to prove my worthiness was a bit daunting at first… but luckily my wife helped to make time for me to study.
The homework was an interesting case. An excel sheet full of statistics about an advertisement campaign. The task was fairly simple: optimize that. We want to spend more and stay below a specific CPA.
So here I go studying Facebook advertisement, the blueprint, the blog posts of Smartly, one after another, what’s a bloody CPA? CTR, that I know. I have an email marketing background, very helpful! Conversion? Offsite conversion… Remarketing? Facebook Pixels? Lots of stuff to learn. I submit my homework and Joonatan finds it good! 🙂
But now I have a big task ahead. Demo Power Editor to a bunch of guys who know it inside out since Smartly.io is constantly benchmarking against Power Editor and appear as if I would know it inside out as well. The next task right after that was to demo Smartly.io as in a Sales pitch.
I have done some Facebook ads before for the French version (yaentrainement.fr) of the very famous Finnish Website nimenhuuto.com.
After spending some money to direct some traffic from Facebook to my site, I realized I was not going to put myself in the best conditions for nailing the demo. I was supposed to demo an e-commerce website and all I had was an online service. So what’s the best way to learn? Probably by doing. So here I go set up a shop on my blog.

Really want to get hired? Here is the interesting bit

The blog is running on WordPress. I install woo-commerce, set it up, play a bit with Photoshop to make some fake products, mainly Nimenhuuto t-shirts (maybe I should think about selling these t-shirts), install some pixels.
Then I thought I should take it the extra mile and go for the advanced feature rather than stay safe and only hone the basic features. If I want to get hired I need to shine and I know for a fact that most people don’t go for the advanced features because they are 1) lazy or 2) afraid. Not afraid, lazy… maybe sometimes… but I’m working on it.

So I set up a product feed using a paid plugin that has a demo version. I set up my feed on Power Editor… but then comes the problem of fixing the pixels for DPA. a bit too tricky for me. I reach out to the developer of the plugin and ask him for an extension of the trial period and for some advice about the pixel. I get an extension and a piece of code in order to do the trick.
DPA is running on Power Editor. Now let’s see what Smartly.io can do for me…
I set up an Automated Ads campaign with a carousel and with my products. It’s working well. Very easy. I couple it with Dynamic Image Template in order to enrich the pictures of my product feed with data from the feed like a price, a description, a brand, etc. I need to ask Joonatan to turn on several features for me as many of them are advanced features that are only available to very advanced users and enabled by Account Managers.
D-Day is coming. Let’s get sharp and show that I master the topic and that I can do a good demo.


I meet Joonatan and Joonas, and I do my Power Editor demo. All good they like it and we proceed to the Smartly.io demo. Same stuff. (happy face)
I am invited to come back to meet Anssi, COO of Smartly.io. A couple of days later I am having lunch with Anssi and the interview is going pretty well. Then a quick interview with Kristo, the CEO. Culture fit detection: passed 🙂
Next step, interview with the technical guys. Otto and Arto. Otto is the VP of Engineering and the creator of the amazing tool Flowdock. I am a huge fan. Because of that I actually decided to include Flowdock in my CV. And Arto is the Product Manager of Smartly.io. Same stuff, good interview. I’m confident! 🙂
It’s Friday and there is the usual Friday demo. An open session where some externals are invited to come and discover Smartly.io a bit more.
I follow the demo as an external and I am actually just waiting for an answer… Are they going to hire me or not?
No answer yet. I get back home. Waiting for an answer. At this point, I have been visiting Smartly.io about 7 times, been to a few demos, met with plenty of people, spent days/weeks studying. The investment was consequent. But Sheryl Sandberg COO of Facebook once was told: “When you’re offered to get on a rocket ship, don’t ask what seat, just get on”. That was my attitude all along. I said yes to whatever requirement. Invested all my energy into that hiring process.

The answer

Later during the evening, I receive an email from Anssi:

“We discussed internally, thought about your background and potential regarding the positions we discussed, and unfortunately decided not to move forward with you. As we have communicated, our bar is really really high. We really liked you and you presented good skills, but we’re looking for a “perfect match”. ”

I was disheartened.

But then I thought: Sorry but I don’t take no for an answer.

“I understand your decision but I don’t accept it.
You know I have a lot to give. Let me prove it to you.
Can we speak about it?”

Kristo answered me and we agreed to meet again in August after the July holiday was gone.

The comeback

I came back. I demoed again. Got some help from Claudio to help me learn the roped. Fine-tuned my demo. I was supposed to be also a bit of a video guy, so I made a kick-ass education video. I literally worked my way through the meanders of the hiring process. I went there with a knife between my teeth. Pushing, pushing, I wanted so badly to get hired that… it eventually worked. Maybe I am a hungry hunter.

Anssi made me an offer which I accepted. And I know for a fact that he really wants to make many more offers… but the bar is really really high and we are looking for a “perfect match”.

Today I am not quite doing the job of a Technical Account Manager. I do a lot of Business Development for the French Market. I do videos for marketing purposes. I do support like everybody else in the company. We are all full-stack. I saw a Rocketship, got myself invited, and jumped on board.

This may not be the only way to get hired at Smartly.io. Everybody has a different story. But the common ground of all these stories is that the individuals hired have a solid drive and a humble hungry hunter attitude.

How about you? Do you have what it takes to get hired at Smartly.io?

Video games and learning new words

Just saw a great video from Pr. James Paul Gee from Arizona State University.

When learning new words we need to have an image, an action, something tangible to associate to that new word. If you have nothing but a synonym or a definition or even a translation, you don’t really grasp the meaning of that new word.

In order to understand this, go to a video game shop and buy a brand new video game. Go home and start reading the manual. See if it teaches you to play the game… You will most likely not understand anything this is about. It will like a sequence of unrelated words with no meaning whatsoever.

Then start playing the game for some time.

Take the manual again and start reading. You should be able to understand everything it says. That’s because you can now easily associate the words on the manual with the actions you’ve just been performing.

how to automatically blacklist unsubscribed emails on interspire email marketer

Simply create a trigger which will insert unsubscribed users in the blacklist after every update on the subscriber table.

(emailaddress, list, bandate)
SELECT emailaddress, ‘g’, UNIX_TIMESTAMP( ) 
FROM iem_list_subscribers
WHERE unsubscribed != ‘0’;

How to make a script sleep for a random amount of seconds

If you want to insert a sleep in a script for a random number of seconds, you can do the following:

        NUMBER=$[ ( $RANDOM % 60 )  + 1 ]
        sleep $NUMBER

Replace 60 with the interval chosen and you will get a random sleep between 1 and 60 seconds.

This can be useful if you are trying to fetch data from a server who’s monitoring the number of connections you are opening and tends to blacklist you if you do too much.

How to crash a linux server


You need to execute this as root.

First enable SysRq feature in the kernel
echo “1” > /proc/sys/kernel/sysrq

Then crash the kernel (makes a kernel dump)
echo c > /proc/sysrq-trigger

Reboot with no conditions (no disk unmount, just like pressing reset button)
echo b > /proc/sysrq-trigger

Shutdown all the processes gracefully except init
echo e > /proc/sysrq-trigger

Kill all the process brutally except init
echo i > /proc/sysrq-trigger