Some years ago, back in the country I grew up in, back to an age when I still watched TV, there was a certain trend: TV stars would move with their shows to different stations and find themselves, months later, in a much worse position. Even if they were initially offered better packages and – maybe – were able to take some of their initial staff with them on the new venture, they ultimately failed to actually move audiences for more than a limited period of time. Some of them ended being thrown out of TV business for good; tabloids would sometime chime in and ask questions in the line of “how was that even possible?”, but would not post answers (not that they had anything meaningful to put forward). I’m not sure their readers would have had any chance of understanding what was really going on, though.
I wasn’t at that time in any better position of understanding what was going on – even if I did have access to smarter opinions in the line of “the shows were actually better before the move” or “some stations have more money to spend on everything and can afford not to cut corners”. That’s actually the visible layer; I had to move jobs myself a couple of times to realize that success is:
not about you having some special talent;
not about you pulling the company uphill by yourself;
about the whole environment that makes you succeed or fail, starting from how clean the toilet is at your work place.
You don’t get to explicitly use Linux namespaces very often; one usually gets to make use of them when setting up containers or some sort of smart web hosting platform that allows hard resource limits to be put in place for customers, but even then the actual setup is hidden somewhere in the back. There are scenarios when containers simply require too much work for the particular task; I, at one time, faced the need of ensuring some network communication between 2 instances of the same service.
Communication? Same service? Have them listen on different addresses or on different ports and you’re done, you might say – but it’s not always that simple. If you have no control over the code but just want to replicate a certain behavior, there may simply not be an option to have instances listen on different ports. If the protocol also involves broadcasting, things become really complicated, as you don’t always have 2 IP addresses, on different interfaces, connected to the same network. Such scenario is easy to solve with virtualization or containers, but for this particular problem they’re overkill. The lightweight solution comes from manipulating Linux network namespaces.
Some intense months later, here am I with some fresh ideas and happenings. Secrets follow. Well no, not really, but I’ll put everything in a list to make things easier to digest.
1. Getting in is hard, staying in seems even harder
When the commercials go out, the movie starts: the interview and then the orientation do not prepare you for the environment you’ll be swimming in once you start your daily work. On my path to illumination I realised that kitchen personnel, the people that cook that good food for you 3 times every day, are likely to be evaluated on par with the people they are feeding. At the end of the day, nobody is getting any free meal.
I’ve also found out that the photos floating around the interwebs with colourful interiors, pool tables, arcades or pinball machines straight from the ’80s are true. What I have also learned is that an unhealthy balance between productivity and time spent having fun in the games room or sleeping in the library will lead to a PIP (performance improvement plan) before your 1st anniversary. Failing that is obviously your ticket out, but some people choose at that time to leave on their own terms. For the company the outcome is the same, though: a “no rehire” stuck in your file, possibly for life.