Reality test your professional experience

Distorted reality

How much is your professional experience worth?

If you’ve been asking yourself the question lately, you’ve probably been doing the same job for too long and you know it. If you haven’t yet, that’s a good question to ask yourself: what am I worth outside of my company.

It’s not a question of money, even though it can be. It’s a question of skills, acquired experience and comparing yourself to the big scary world.

Exactly 1 year (and 3 days) ago, I was leaving blueKiwi after 6 years to start a new life at Botify. I’ve written a lot about the challenges I was expecting to face but one. There was a reason why I left I could not tell about yet.

At blueKiwi, I was a kind of super hero, the local Obi-Wan Kenobi you call night and day to fix the galaxy when everything seems lost. When something was wrong, I almost instantly knew where it was, and most of the time, I was able to fix it very quickly. I felt technically great, and professionally accomplished.

Well, sort of. There was something wrong. I had a doubt. What if I was not that good? What if my super powers did not came from my skills but from a deep knowledge of my environment? I had to know, and the only way was to join a team where I would face people whose knowledge of UNIX and computer in general was obviously greater than mine.

After 6 years in the same company, I wanted to reality test my professional experience.

To paraphrase Brendan Gregg, there were things I knew, things I knew I didn’t knew, things I didn’t knew I didn’t knew. There were also things I didn’t knew I knew. They were the things I wanted to know about, even though it meant leaving my 6 years habits.

Last week, my colleague Nathalie gave me the best definition of the comfort zone ever. You reach your comfort zone when you start something without considering you can fail.

Staying in the same for too long puts you in your comfort zone. The knowledge of your environment prevents you from the need to adapt anymore. Issues become easier to solve, and as they become easier, you start avoiding new challenges as you see them.

I love the metaphor of the lion. When in the savannah, the biggest problem a lion has is to feed himself. It’s a vital issue, and as the savannah constantly changes, the lion needs to adapt to solve it. A lion in a zoo will understand his environment enough to know he doesn’t need to look for food anymore. After a few years spent in a zoo, he won’t be able to hunt and adapt to his new environment anymore.

That’s exactly what happens when you’ve been working at the same place for too long. You become the old zoo lion. The world limits are the ones of your company. You start seeing the reality through the prism of your daily work and the feedback of your colleagues. Your yearly (or quarterly if you’re lucky) review becomes your only performance measurement. Let’s be honest, you’re lost your grip with the real world.

The only way to catch up and know is to leave. Find something else, seek for the new challenges you’ve been avoiding, start over, and reality test your professional experience.

Indeed, there’s a risk. We’re living a worldwide economic crisis and for many people around me, finding or even keeping a job is a daily challenge. There’s a risk to be disappointed too. What if you’re not as good as you think you are? But there risks are worth being taken. Only then will you see how much the zoo lion you’ve became can turn back into the savannah one.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

My #1 blogging to last trick: writing 1 thing I learned each day


I’ve been writing about my life on the Web since 1996 with little interruption, and blogging for 12 years now. There were times when I would write 5 posts a day and times when I would not blog for weeks.

The hardest part with blogging is not building an audience. Anyone can do it with lots of work and no particular skills. The hardest part in blogging is keeping writing at a regular pace whatever happens.

Being regular in writing is tough. It takes time to build an audience, and results don’t come in one day. Some day are harder than others. You’re tired, not in the mood for blogging and feeling no one is reading what you take time to write. Discourage comes. You believe what you write is no worth publishing crap and the enthusiasm of your very first day becomes a distant memory. After a few days, your blog becomes a forsaken land.

This happens to me every day. It even happened to me the worst way a blogger can imagine.

Three years ago, I forgot I was writing 2 other blogs. I forgot about them for months until that mail from my registrar telling me the domain names were about to expire. I did not have the motivation to relaunch them, but I decided to build a writing routine instead.

I called it What did I learn today?

Every evening, I take a few minutes to write about one this I learned that day. It’s a powerful trick: I can’t believe you can live one day without learning something, or your life is very boring.

It only takes a few minutes and it should not be longer than 10 lines. But it should be publishing ready, or more exactly teaching ready. That thing I learned that day, I write it to be reusable by someone else.

The benefits are incredible.

It’s my personal knowledge base. Years after, I can reuse it to solve a particular issue I remember writing about. I sometimes come back to something I already faced, and I can see the progress I’ve made.

It brings me new blog posts ideas. When you’re not publishing news, it can be hard to find something to write about. Writing 10 lines about something can lead to 3 blog posts.

It brings me canned drafts. Everything I need is adding an introduction, a conclusion and find an appropriate image. Talk me about easy money.

It helps me to setup other daily routines. Creating routines is like exercising. The firs time are hard, then as it becomes easier, it also becomes addictive. Plugging new routines to a daily established one is like adding new exercises to your daily sport hour.

Finally, it can be useful to other people. When asked about something, there’s a small chance I’ve already written something about it.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

What about asking quitters to write their replacement job description?


For a founder, having someone quitting while your company’s still small is never easy. In France, where you may have to work up to 3 months after resigning, it can be even more uncomfortable for both parties.

Unless things really turned bad, the awkward situation where the person leaving is still expected to do the job as usual but not considered as part of the company anymore should not happen. And something quite smart is to ask the quitter to help writing his replacement job description.

It’s even more important in very small companies, as the person leaving is the one knowing the job from the inside.

There’s indeed a risk here. You need to be sure that the person leaving won’t overestimate his qualification and look for someone oversized and overpaid.

You can even go further, and add his own way of describing his daily work to the formal job description. Because most of them are similar, and you need to be authentic to get out of the crowd.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

If you want to address both corporate and small business, start 2 different companies

Tokyo Horizon

The most common mistake I see in young B2B startups is trying to address both corporate and small / medium business. They’re doing the splits over a hundred meters cliff and don’t understand that.

The discourse is always the same:

We’re targeting the small / medium business but we’ve found a few corporate cash cow, so we’re also investigating that market to keep them.

Before I had worked in two B2B startups, I would probably have agreed. Most of my B2B experience was in small business, and I only had business with tiny corporate departments for a few thousand euros.

If you want to address both corporate and small business, start 2 different companies.

They require a totally different culture, different mindset, different people, different product life cycle, different sales techniques and processes, different go to market strategy and finally different tools and technologies.

The great news is you’ll have to build teams of totally different people, so no recruitment drama between your teams. The bad news, you’ll have to build 2.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

If you don’t ask, the answer is always no

Make a Stand, by JazzmYn

A few times ago, my cousin asked me what advice I would give to someone who’s looking for his first job.

The questions is tough. There are lots of things I wish I knew when I took my first job in 2001, like « try, fail fast and never make the same mistake twice » or « get everything written for what’s not written does not exist ». After thinking about it, I picked up something I tell my kids as soon as they’re 6.

If you don’t ask, the answer is always no.

When you’re starting on the job market, it’s very hard to know what you’re worth to, what you deserve and what you have the right to get. Things got even harder with the economic crisis as many people feel relieved to have a job. A consequence to this is to set yourself into a passive behavior and accept what you’re given.

I used to do that too. I had my first kid young, my wife mas still a student and I had a family to feed. We were living day by day without being able to think on the long term, so I used to accept the first job I was given and never ask for anything. It was wonderful as I never had to leave my comfort zone. It was a huge mistake too, and it took me a bunch of years to recover first, change my behavior second.

This does not only prevails to young job seekers. I’ve met many people who’re just waiting for the life to give what they deserve. They’re reluctant to ask for something, and I heard « if you deserve it, you’ll get it » more than I can remember.

The trick here is to avoid rushing. Take the time to find out what you’re worth and what you deserve. Ask people around you: those who’re facing the same situation as you do, and those who paved your road. They will always bring precious advice. Then, make your mind and ask.

Asking never not put you in a comfortable situation, but the only risk you take is a no. By not asking, a no is the only thing you get.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

Why having a LinkedIn policy is important

Facebook connections, by Michael Coghlan

I have a problem with LinkedIn. It’s an awesome social network, but it pushes you to connect with as many people as possible until the social and professional aspects lose their meaning.

The culprit is that small « 500 » badge LinkedIn displays on your profile when you reach 500 connections. It makes growing your network for the sake of it tempting.

Why would other people get that badge and not me?

This is an early, but dangerous example of gamification.

Facebook has a similar problem: how many of your « friends » are your real friends? Most certainly a few of them. Facebook is pushing you to have as many friends as possible. They need it to build the most accurate social graph possible so they display more relevant adds.

The problem is LinkedIn is about your job. Unless your job is having the biggest address book ever, you don’t need to connect with the whole world. That’s exactly the opposite: one day or another, linking with random stranger just because they work in the same field as you do may have some unlikely and negative consequence.

So 2 years ago, I decided to setup a LinkedIn policy. I browsed my 500+ connections, removing every people I had never worked with, in the large meaning of the terms, and started refusing new connections.

My policy is simple. I’ll accept you:

  • if we have worked together and I see no reason not accepting you.
  • if you’re a recruiter coming to me because you have something to offer, not for the sake of adding a new profile in your lists.
  • if I don’t know you but your introduction mail convinces me we have a real reason to get in touch.

I want to be able to tell anyone contacting me we’ve worked together. I want people who know me and want to hire one of my contacts to know they’re trustful persons. I give the term “professional connection” a meaning, and I wish everybody would.

So if you apply one of the above condition, let’s connect on Linked. For everything else there isTwitter, Facebook and Google+.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

The lament of the self dogfooding guy

Self dogfooding

Friday night, 1:22AM. The whole house is sleeping and the streets are silent. The night is holding its breath, waiting for party people to go home with the rising sun.

Since I went back home, I’ve squashed 15 bugs on Publify. 3 more like this to go and I can release a new version. In the meantime, I update my blog. Delivering on Friday night is the system administrator’s cardinal sin, but I’m confident as the build is green.

I’m back into daily blogging frequently. Since August the 15th, I’ve been writing one post a day, 6 days a week. The time I pushed 3 or 4 posts a day is 10 years behind me, but these 28 posts are more than what I’ve done during 2014 first 8 months.

Incidentally, I’m back into self dogfooding.

Self dogfooding is building something because it solves one of your problems, and being your first user. Most startups, most open source projects begin this way. Someone has a problem, build something that fixes it, and other people join.

This was not in the plan.

7 months ago, I’ve decided to step down from my position of Publify maintainer. I had done it for 7 years, and I did not find motivation in contributing in a blogging software anymore.

I did everything I could to let the project leave without me. I created a Github organization so Publify’s not under my name anymore. I gave my fellow maintainers the keys, opened 30+ issues, bugs and feature mixed, and silently closed the door behind me.

Something (un)expected happened.

As I’m back using Publify daily, I start hating here. I’m tired of the editor hoping up and down while I write, tired of the broken date picker, tired of the buggy autosave, tired of all the small glitches here and there. Even though my brain knows how to work around those bugs, I’m tired of the poor writing experience I have.

I’ve been considering switching to something else. Flat files based publishing tools are tempting when you’re writing inside a text editor. I don’t have comments so I don’t need a database, and most interactive things I do, I can do them in the command line.

But something happened.

2 days ago, Ben and Erin Jo released the hosted version of Known, and I gave it a try. Known is simple, Known provides an incredible writing experience and Known has every Indieweb thing Publify lacks.

For a few hours, I considered moving to Known, but it has 2 issues: you can’t configure the permalink format, and it’s written in PHP. I don’t feel like maintaining 5000 rewrite rules , and hosting PHP on my server is out of question, even in a separate jail.

Once again, my only solution lies in self dogfooding.

This morning, I warned my co maintainers I was back (most obviously after closing 15 issues in the night), and I was back to drop everything none of us use.

That’s the very base of self dogfooding: if you’re not using it, you don’t need it.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

Documenting your Ansible roles interface (and making other people’s life easier)

Today's repeating pattern by Kevin Dooley

My biggest problem with Ansible is linearity.

Ansible roles are plain YAML files describing various tasks you want to achieve. You have no class, no function and no reusable component between roles. Since there are no functions, you have no way to easily document the variables you need to define in your inventory unless you cut / past an existing one. You also won’t know when variables are unset, if they’re set to something impossible, or if you made a typo in your inventory.

Today, Greg found an amazing Ansible trick to both document your roles interface and ensure your variables are set.

Let’s say you want to setup a database connection. You need a host, a port, a user, a password and a database name.

- assert: that: - db_host != '' - db_port != '' - db_user != '' - db_user != 'root' - db_password != '' - db_name != '' tags: ['check_vars']

Placed at the beginning of your role main.yaml, or even better in an included init.yaml, it will prevent your role from being applied if any of the mandatory variables is empty, or if you try to connect as root, which is insecure.

It also acts as a function documentation. Every variable your role uses are described in your init file so you know what you need at a glance. Awesome isn’t it?

One more thing.

You’re missing the smartest part of Greg’s trick. See the tags: ['check_vars'] part in the snippet? You can use it to check all your variables are set before running your playbook with a simple:

$ ansible-playbook -i your_inventory -t check_vars site.yml

Sure, I could have stayed in the past. I could have even been king. But in my own way, I am king.

Hail to the king, baby.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

After 17 years, still amazed how the Internet connected me to a world I'd have otherwise never reached

Time machine by Jes

I landed on IRC in a hot summer night 1996. The Internet room at my local cybercafe was small and smelly. The air was full of a persistent mix of dust, sweat, coffee, cold cigarette and cheap washing powder. It was filled with 4 old PCs, recycled from the gaming room. Most of the day, it was empty but passed 7PM, it was constantly full of people.

For 4.5 € an hour, the introvert I was started a wonderful social life. I was surfing the awakening World Wide Web and chat with people from the other side of the world, staying hours after the shop closed its curtains. Around 4 AM, the owner kicked us out, and I walked back home across the dormant city before another boring day, another night online.

We were mostly talking with people from Quebec. When asked the old fashioned A/S/L, I carefully replied Bordeaux, France. Bordeaux was also the Quebec biggest jail, something I learned the hard way.

August the 31st 1997 changed my life for ever. Someone joined one of the channel I was talking on, telling us Lady Di, princess of Wales, died in a car accident a few minutes before. I left the cafe, jumped on my roller and ran home as fast as I could to tell my parents. They didn’t know it yet, and the TV was lagging on that one. This was my first breaking news on the Internet, and a turning point for my world.

17 years later, the Internet has changed a lot, and it has changed my life for the better. I turned it from my pass time to my job, learning about its internals much more I would have expected. The blogging era and my professional interests helped me to connect with the smart people I could not find at home. They share the same interest as I do and won’t answer wut?! when I explain them something that gives normal people a headache. We share passionate discussions, and I know I can find someone awake whatever the hour and day.

I’ve met lots of them offline, made ennemies and friends. Some of them have been around for more than 15 years and some of them are gone. 6 years ago, after a tweet, I jumped in my car, drove 80 km to spend the whole evening with Molly Holzschlag, the goddess of my early CSS days. This would have never happened without the Internet: the life I expected to have 20 years ago, grew from the size of my town to size of the world.

Yesterday, I exchanged a few things with someone from California on Twitter. Someone I would have never expected to connect with 20 years ago.

17 years later, I’m still amazed at how Internet allows me to flatten the world and break the geographical and social boundaries. 17 years later, there’s not a single day I’m not marveled by someone asking me « how’s the weather in Paris today? ». From the other side of the world.

Many thanks to Tantek, Ben and Shane who helped me write a decent title… from many places around the world.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.

On getting the running process user under Python and Supervisord

Green Python

2 days ago I had a strange issue with Python getpass and Supervisor. Despite being ran with an unpriviledged user, getpass.getuser() always returned root, which was not what I expected.

My Supervisor configuration file launches the process with the system user fred, and sets the USER environment variable to fred as well. The problem comes from the order getpass.getuser() queries the environment variables to get the current user:

This function checks the environment variables LOGNAME, USER, LNAME and USERNAME, in order, and returns the value of the first one which is set to a non-empty string. If none are set, the login name from the password database is returned on systems which support the pwd module, otherwise, an exception is raised.

In my application, printing those variables gave LOGNAME: root, USER: fred, LNAME: None, USERNAME: Fred. Unless the variable is set in the process configuration file, it takes the environment variables already set for the user running Supervisor.

I was expecting getpass.getuser() to query the password database first, but this one is UNIX only. To avoid being forced to init all the environment variables getpass.getuser() is expecting, I’m now using the following code instead. Note the dirty hack to ensure portability.

    import pwd
except ImportError:
    import winpwd as pwd
import os

user = pwd.getpwuid(os.getuid()).pw_name

This is less convenient than:

import getpass

user = getpass.getuser()

But at least, I have no more surprises because of environment variables.

Cet article a été publié par Frédéric de Villamil sur Le Rayon UX | Si vous l'avez lu ailleurs sans qu'un lien ait été fait vers l'article original, c'est qu'il a été reproduit illégalement.