A somewhat pragmatic comparison of OS for software engineers

The debate on which laptop is the best for professionally developing software has a tendency to get somewhat fanatic and emotional. When it does, this debate quickly depreciates because it becomes particularly difficult to discern opinions from facts, plus people get all shouty which is rarely a good thing in the context of a discussion. It's a shame, because I do believe that it's an important question which will most certainly affect one's development experience in many ways.

Seeing that I have had experience working with all the major contenders (i.e., Windows, Linux, and macOS) at least to some extent, I'm hoping my experience can be of use to people contemplating new setups for professional software development.

It's important that we define KPIs (a fancy word for criteria) which we will use to perform the comparison. Hopefully this will help avoiding statements like X is better because it's gray. Unless gray is a criteria I actually care about (spoiler, I…

Sending the right kind of message

I have recently had a number of colleagues tell me about their work environment. I find tech culture fascinating and rarely miss out on a chance to get first hand details.

One of the companies I was told about, had a well stocked kitchen area with an LCD monitor looping through various dashboards. Sales leader boards, news about deals getting closed, social media and tons of other sales related material. Occasionally it would also display pics of people who had birthdays coming in.
This may be be a good point to mention that the friend who told me this, had been working at a branch which consisted of mostly R&D and some product, few to none sales people whatsoever.

This setup made me think.

Dozens of software engineers and researchers walk by the LCD monitor in the common area every day, numerous times, and get an excruciatingly detailed view of the names of the sales persons who made the most sales, how many places they went up or down that week, the number of deals closed that m…

Eclipse vs. IntelliJ, an empirical rant

When I tell people how strongly I feel about my IDE preferences they are often surprised and go all "haters gonna hate" on me. Being all into empirical software engineering, here's a post on the little things that make all the difference between Eclipse and an IDE that actually puts effort into trying to understand people who write code (Java in our case).

Getting HiDPI to work with an external monitor (note to myself)

Macbook pro has an incredible retina display, and if you had a chance to work with it so much as a few days, going back to anything less feels quite unsatisfying to put it mildly.

Questions you might want to ask your potential employer

Today's recruiting managers have become salesmen, and oftentimes will be willing to tell you more than a few "alternative truths" to get you onboard.
During an interview, one of your main goals is therefore to get wind of any such suspicious statements, and try to get to the bottom of them by kindly asking for more information.

If you're told you have a once in a lifetime opportunity to join a new team that is building from scratch a product that's helping millions of users do this and that, take a minute to think things over and consider getting (satisfying) answers to the following questions.

Reflecting on reflection in Scala and Java

Reflection has always been a bit of a trickery, and while there may be some true to it, it does not mean one cannot master mind some cool stuff using it, and by cool I mean useful,  re-usable, elegant and the likes. In this post we put on the wizard hat and pull out some rabbits.

Problem Statement In this post we'll discuss 3 use-cases in which we want to retrieve runtime information for some generic parameters. In all three of the following use-cases, our goal is to retrieve the runtime information for the generic type parameter T.

The first use case is when you have a class deriving from a generic class, without having generic parameters of its own:
classGenericIntextendsGeneric<T> {} // one wants to know the type of T of its parentnewGenericInt()
The second use case is when you create a new instance of a generic class by providing a generic parameter:
// one wants to know the type of T inside the classnewGenericClass<Integer>()
The third use case is when you invoke …

A tale of Goblins and Streams

At QCon 2014, LinkedIn gave a talk (slides) about their Gobblin project (as well as published a blog post). Gobblin is a unified data ingestion system, aimed at providing Camus-like capabilities for sources other than Kafka. While Gobblin is a fascinating piece of engineering, what I find to be no less fascinating is the direction LinkedIn has chosen by going for a system like Gobbblin.