Sunday, September 20, 2015

Simulating statistics

This presentation was interesting - it explains how you can simulate your way through various statistical problems instead of trying to figure out the right analytical approach. For instance, to answer the question: is this a typical scenario? You just run the simulation many times in a loop and see what happens.

Wednesday, October 29, 2014

Confident idiots

This article about the problem that ignorance makes people more confident and how that affects society was really, really interesting - e.g. is it safer to educate people on how to drive on icy roads or not? It even has some advice on how to not fall into the ignorance trap.

Sunday, May 11, 2014

When three becomes four

It's now a little over three months ago that Janne gave birth to Nor.

Nor, Storm and I a few hours after the birth

He was born almost on time, and slightly disappointingly, he wasn't quite as done as Storm - more wrinkles and odd baby skin.

The birth itself went fast. Despite being warned last time by the midwifes, Janne didn't think the birth was actually starting until quite late, so in the end an ambulance came to pick up us and went through the morning traffic with blinking lights and sirens on. A young female apprentice ambulance driver sailed us through the red traffic lights as if nothing was on.

After delivering us at the hospital, everything went pretty smooth and calm, though. Janne is good a giving birth, and in many ways the perfect mother too. I don't think most people think of that when they pick their partner. But I guess some of us are lucky.

I managed to ask the assistant midwife for some help so didn't faint this time either. I swear they turn up the heating every time we're there - this time a technician even came to try to fix it afterwards.

Nor is turning out well and is day-by-day developing the muscles and skills that make us those human beings we are. Keeping the head up and smiling.

Friday, October 25, 2013

The disproportionality factor - why do people get angry?

It has recently occurred to me that many of the conflicts and negative feelings I see from time to time at work and elsewhere are caused by two parties having very different levels of interest in something they are cooperating on. For one party, the party that wants something from the other party, the effort is extremely important, for the other party, the delivering party, it doesn't really matter.

For instance, think of a situation where you're going to a foreign country on the other side of the world. You have done countless preparations, booked the flights, scheduled everything around it at work, and now just need to obtain the visa from the embassy - which is late.

So you send reminders, press for it to go through, and finally get through by phone in the one service hour per day to a person who kindly explains that yes, he has your papers, and yes they look fine, but unfortunately he will not be able to process them because he's going to lunch and after that he has two weeks off so the case will have to wait on his desk until well into your travels.

I think most people would get pretty angry in that situation.

For better or worse, we have to rely on other people which means they sometimes have power over us. I am not talking about formal power relations, I am talking about the fact that when someone is doing something for you, you have effectively lost control over what happens. A manager who assigns a task to one of this workers is dependent on the worker to do his job. Otherwise everyone, not just the worker but also the manager although he's formally the one in power, gets in trouble.

And when you have lost control over something that is very important to you, and the other party has very little if any inherent interest in the matter, chances are something will go wrong.

Oops, you need to walk here? (by Gabriel)
I think of this as the disproportionality factor.

More examples: the bus is a bit late. For the driver, it's only 3 minutes, but for you it's the difference between being able to catch the train or having to wait two hours for the next one. Are you cursing at the transportation company? Yes, you are.

Or in reverse: you spend 10 minutes extra at work with the phone turned off to finish up an important project, get home in high spirits, and find an angry and hurt husband or wife who wasn't able to go to a concert because you were supposed to get home half an hour early to take care of the children. Which you had of course forgotten - because you weren't the one buying a ticket three months in advance in anticipation.

In a similar way at work: when we call the hosting company because our server is down, it's critical for us. But for the operator in the other end, it's just pressing a button to restart one server among thousands.

It happens with minute details too: why are people not aligning their vehicles properly at the parking lot - now I can't park properly! Why are people not formatting their code properly when they know I hate camelNotation! Why has this error in the software I'm using not yet been fixed when it annoys me everyday!

I think there are two things that are important in dealing with the disproportionality factor.

The first is that we need to understand what's important to other people. This goes both ways - you need to think about what's important for people you are dealing with, and you need to communicate effectively what you think is important.

The second is that we need to remember that on average, we can't expect people to really care that much about anything that isn't important to them. That's just human nature.

So we need to help them, not just by explaining what we think is important but also by helping them out, instead of just crossing our fingers and hoping for the best, and then getting ticked off when we are inevitably disappointed.

And sometimes, when in the land of the minute details, we perhaps need to help ourselves to just get some perspective.

Friday, June 29, 2012

Exim with a whitelist of recipients

At IOLA, we have a couple of servers that we use for a lot of different things - just not running live code.

Now, with a standard install of Linux with something like monit installed to respawn dead processes, whenever there's a problem a local mail server is used to send an email about it. That's a good thing because it means you never hear from the server unless it's got a problem, so you don't have to monitor it at such, except for reachability.

If you're on Debian, you'll get Exim installed as the default mail server, together with a semi-scary, semi-friendly series of debconf questions to configure it. Unless you configure one of the questions, it's locked down so it won't accept connections from the outside.

So if you remember to configure your real email address as an alias for the local users (e.g. with a root: in /etc/aliases/) things actually work quite well.

The only problem is when you actually run a web site project on the server, either for development or as a test instance before putting it live. It's not uncommon for a web site to have some corners where it's sending email. Which you definitely don't want to be able to happen by accident during testing.

So in the past, we've configured Exim to not deliver any mail remotely. No accidents possible. But this means we never got any problem reports from the server either.

What we really want is to be able to whitelist a number of adresses that Exim can freely deliver email to, the rest should be discarded.

One way to do that on Debian is to select the split configuration, then put these lines in the file /etc/exim4/conf.d/rewrite/01_rewrite-everything-but-whitelisted_LOCALCHANGE: * T * T
*@* thisaddressdoesnotexist@unrouteabledomain T
This means: skip all rewriting of a To envelope address of and but rewrite all other To envelope addresses to thisaddressdoesnotexist@unrouteabledomain.

The latter is of course not routeable so will fail and end up in the queue until Exim gives up. This is a bit ugly, so you can add the following lines to a new router in /etc/exim4/conf.d/router/01_drop-unrouteable_LOCALCHANGE:
  driver = redirect
  domains = unrouteabledomain
  data = :blackhole:
This will match the domain unrouteabledomain and discard everything sent to that right away.

If you're not on Debian, the rewrite rule needs to go in the begin rewrite section of exim.conf and the router rule in the begin routers section.

I'm quite happy with this setup, it's actually a problem that has been bugging me for years. At some point I made a hacky Python script called from cron that would check the local mail and forward it through SSH to another machine with a mail server allowed to send remote email, but that turned out to be a error-prone and high-latency idea.

Thursday, May 10, 2012

Arab spring

National radio in Denmark has been broadcasting several documentaries on the recent change of regimes in the arabic countries.

Last week it was about Yemen with The Reluctant Revolutionary. One smooth tourist guide, one half-exploitative journalist and a sit-down revolution camping in the streets.

Yemen demonstration - by FreedomHouse2

It is amazing to watch.

There's a lot of talk about freedom in libertarian ideology. But here we see how it's like to be beaten by hired thugs or even just the police for requesting a change of regime. The martyr syndrome unfolds - each beating makes people more angry, each casualty is a proof of how callous the rulers are. It is brutality, weapons and bullets against the sheer force of the people.

I'm happy I'm donating to Amnesty, although they were surprisingly quiet during the whole thing. Maybe revolutions just aren't their thing.

Wednesday, March 28, 2012