On a new road

That’s it, today was my last day at update, I’ll be working for Viaboxx starting next week.

I’ll really miss my coworkers and, considering that I’ve been here for four years, switching jobs is making me a bit nervous and a bit sad.

On the other hand, I’m really looking forward to my new job. From what I’ve seen, the development team is agile, highly effective, open-minded and each developer managed to impress me. They have several interesting projects, including parcel machines, mobile applications and web applications. Furthermore, they have 20 percent time, an awesome office, ergonomic chairs and iMacs with ridiculously large screens.

Consider me excited.

Fukushima

As you probably know, there have been disturbing incidents at several reactors in Fukushima, Japan lately. I’m not sure how the mass media in your country handle the issue, but those here in Germany are certainly going completely insane over it, to an extent that even Germans start to think they might be in danger.

Don’t get me wrong, this is a terrible incident and I don’t support nuclear energy (mostly because storing nuclear waste worries me). Nonetheless, as educated human beings, we should approach such events factual, not emotional.

So what is radiation? I’m no physicist, but I know that radiation is not some rare, deadly poison – it’s everywhere. Sure, in very large doses, it can damage your health, so can pretty much anything on this planet. As Paracelsus put it:

All things are poison, and nothing is without poison; only the dose permits something not to be poisonous.

So it’s the dose we should talk about, not the fact that there is radiation near Fukushima, because radiation is everywhere. XKCD posted a very nice chart comparing radiation doses from various sources.

So how much radiation is there around Fukushima? Greenpeace published their monitoring results. The problem with data is that we have to find some we can trust. I consider Greenpeace a sufficiently trustworthy source on this matter.

Now we can get ourselves an idea of how bad the situation in Fukushima is. When looking at the Greenpeace data right now, I see some dark red bubbles north west of Fukushima. Since that colour indicates the highest readings, we can infer that 11 µSv/h is the highest radiation dose around Fukushima. So that’s 264 µSv/day and 96.36 mSv/year. According to the XKCD chart, this is twice the allowed dose for US radiation workers, which is 50 mSv/year.

That’s certainly not good. But how bad is it? Another look at the XKCD chart reveals that the lowest yearly dose clearly linked to increased cancer risk is 100 mSv/year. That’s awefully close, so these people might in fact suffer from an increased cancer risk if exposed to this amount of radiation for a whole year. And how big would that cancer risk actually be? Probably lower than that caused by smoking, according to Nature News.

That was the worst region in the area, how about those south of Fukushima, further away (about 1/3 on the way to Tokyo)? The readings say 0.4 µSv/h, which is 6.9 µSv/day and 3.5 mSv/year. I don’t think that’s a dose to worry about.

I’m no radiation expert, so both my data and my analysis could be wrong. If you’re sceptical, do some research on your own and see what you can find out. And, as Douglas Adams wisely put it in (and, in fact, on) The Hitchhiker’s Guide to the Galaxy:

Don’t panic.

Algorithms

It’s been a while since I last posted to this blog, mostly because I’ve been incredibly busy being a dad, moving to a new appartment and a new job (I’ll blog about that one).

Nevertheless, I recently found an excellent excuse to finally work on my basics, so I got myself a copy of Introduction to Algorithms (not the Knuth, but still extensive) and began to deepen my knowledge. I’m enjoying it so far, and there’s lots to learn since the topic wasn’t covered in such detail at my university.

Nearly everybody I told about my endeavour said I’ll never need that knowledge. I respectfully disagree. Sure, I probably won’t need to implement sort or matrix multiplication algorithms in my day job, unless that day job involves low level systems programming. But algorithms are everywhere, and studying them doesn’t mean to learn all the existing ones by heart, but mostly to learn how to design efficient algorithms for any problem. The most useful skill is in my opinion to transform real-world problems into problems for which a proven efficient solution already exists, graph problems for instance are everywhere, visible only to the trained eye.

Since all mathematical proofs and no code make Felix a dull boy, I decided to implement every single algorithm explained in the book on algorithms.ubercode.de. I’m also using this as an opportunity to make my first pure HTML5 site and to try Node.js.

The one thing I’m not happy with is that I had to use in-place algorithms in order to visualise the sort process. For instance, my implementation of merge sort originally looked like this:

function merge(array1, array2) {
    var array = [];
    // Merge array1 and array2 into array
    return array;
}
 
function sort(array) {
    if (array.length == 1)
        return array;
 
    var middle = Math.floor(array.length / 2);
    return merge(sort(array.slice(0, middle),
                 sort(array.slice(middle));
}

I find this a lot more readable than what I have now. But since this is a recursive implementation, I wasn’t able to regularly send the whole array from the worker to the main script in order to display the process. The current algorithm modifies the array directly, not returning anything, which clutters the function calls with various indizes and bloats the code. On the other hand, this is very close to the pseudo code in the book, and the performance is likely better. Still, let me know if you can think of how to update the progress with a functional implementation.