USB ports vs. cigarette lighters in cars

On this blog post (in Italian), Giovanni Fontana wonders why cars still have a cigarette lighter instead of standard power sockets. Most people, he argues, need to connect portable devices to charge than to light up cigarettes, and sockets should at least be an optional replacement for the standard cigarette lighter. Moreover, he continues, the current situation is as weird as having a house full of cigarette lighters requiring an adapter to connect electric devices: wouldn’t it be more logical, he postulates, to have standard sockets requiring an adapter to have a cigarette lighter?

Continue reading “USB ports vs. cigarette lighters in cars”

Speed up connections to IRC servers

I have recently gone back to IRC — specifically Freenode — and among the delicious problems of the old days, such as the inability to easily establish DCC transfers (more on that later), I have been presented with the inevitable ident check delay during the connection to server. Ident is essentially a protocol that lets the server know what user is effectively connecting from the client machine. It can be very handy, but most people are behind NAT and/or do not run any ident daemon. This translates to a delay while the server patiently waits for an ident reply before giving up and adding a tilde to the username in the hostmask, which effectively means “this user claims to be called foobar, but I could not verify it.” In practice, this doesn’t change anything at all.

Continue reading “Speed up connections to IRC servers”

The only problem with Blu-ray is BD-J

Unlike Steve Jobs, who claims that Blu-ray is a bag of hurt, I think that Blu-ray is great. I’ll take instant 1080p24 at 40-45 MBps over 720p at 10 MBps without hesitation. In fact, I had originally bought a Playstation 3 mostly as a Blu-ray player rather than as a gaming rig, and I recently sold that in order to get a simpler yet stand-alone player. It supports BD profile 2.0, so it can do all the fancy things such as downloading material off the internet, provide real-time updates about the characters of the movie you’re watching (if the disc supports that, of course) and so on.

Everything is great on paper, but falls short in practice. The reason? It’s slow. Really, really slow. And this is not just about my Samsung player, because the PS3 did the very same thing. Something is inherently wrong with BD-J. Certainly processing power is not lacking: decoding a 50-megabit stream in full high definition takes a whole lot of CPU. Can’t such big processors handle the new menus? And it’s not a problem with the network either: if 8 megabits aren’t enough for the menus, I don’t know what it is.

While the disc menus are still acceptable, BD Live in particular is unbelievably slow. It takes time to download the content, and that’s surprising considering how limited the interface is. I don’t know exactly how it’s developed, but a website with a similar interface would be measured in the tens (or hundreds at most) of kilobytes. Why the same thing has to take so much through BD-J is beyond me. Perhaps the bytecode is huge? (Or maybe Java sucks? Hmm… tough one there.) And then again, why is navigating the finally-at-last-downloaded interface such a pain? You press a button, and it takes well over a second to register. Again: this also applied to the PS3, so it’s not exclusive to my relatively low-end player, which incidentally also has “Internet applications,” and they are just as slow. Probably it’s just local BD-J stuff.

Oh, and as a side note: my parents’ Blu-ray player has no internal memory. Mine has 64 MB — megabytes — of flash. On the other hand, my ebook reader has a solid gigabyte. Why not toss in a little bit more so that users are not forced to use USB thumb drives to access online content? Perhaps they want to make it harder for users to notice how slow BD-J is?

Righties and lefties

An Italian proverb says that you can’t thread all the weeds in one bunch. It’s exactly what comes to mind when I see people commenting on the iPhone 4 antenna issue by saying that “it only affects left-handed people.”

The basis of such theory is that, since the problem stems from a gap on the lower left side of the phone, it is more likely for left-handed people to trigger it. That may be, but there are many people who are generally right-handed, yet prefer to do things with their left hands. I do, for instance.

I often hold my phone in my left hand in order to use my right hand to navigate it, especially when pinching to zoom. I am also left-eared: for some reason, holding any phone to my right ear feels very innatural to me. Of course, that leads to holding the headset with my left hand, which has the added benefit of leaving my right, dominant hand free. I also open bottles by holding them with my right hand and unscrewing the cap with my left hand, and I bring my left eye to the viewfinder of my reflex camera. On the other hand (pun not absolutely intended), I cannot write with my left hand at all, at least not with a pen: I fare much better using my left index finger on a misty window.

Most of you probably do the same. There is nothing like complete right-handedness and complete left-handedness… or complete ambidexterity, for that matter.

Get a replica of your skull

Here is what I was thinking: you can get a digital 3D scan of your skull through a CAT/CT scan, which is essentially a series of 2D scans stacked one on top of the other. You can also print things in 3D these days, using one of various technologies available industrially.
Considering you can pay a company to sequence your own DNA for less than $500, why hasn’t anybody come up with a business plan to make a model of your own skull? After all, most dentists will let you keep the “model” of your teeth after they are done with the impression.

Overkill e-mail validation

I just came across an insane code snippet to validate e-mail addresses, apparently derived from RFC 822. It is in the form of a Perl module that can be downloaded at http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html.

The Perl code is intertwined with just a little bit of regexp hell, and looks as follows:

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
: (?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
: (?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

…wow.

Video games: are they addictive?

Every now and then, we hear news that someone around the globe has ruined his or her life by playing video games. It appears to be a big problem, to the point that the American Medical Association had considered adding it to the next edition of its Diagnostic and Statistical Manual of Mental Disorders. The idea was then put on hold because more research was needed.

But are video games addictive? Are some people more likely to be unable to stop playing? And when should playing video games be considered an addiction? Let’s try to answer those questions.

Continue reading “Video games: are they addictive?”

Analysis of a misspelling

Some time ago, Lamebook showed a picture that captured my attention. Here it is:


(Click to enlarge)

It seems to me that the author of the message is not even a native English speaker. The syntax of the phrase is unusual; nobody fluent in the language would say “I do apologise,” unless someone complained about not getting an apology in the first place. Moreover, while “inconvenence,” “mechines” and “workin” might be a direct spelling of the local parlance, there is no way that “apologise” would be written “apploiges.” Misspellings are always homophones or quasi-homophones of the correct attested variants, but “applogies” has an entirely different pronunciation than “apologize.”

What is interesting to note is that the author might however be familiar with the British usage of the ending -ise. The caption of the picture does indeed mention KFC Byker, and Byker is a ward of Newcastle upon Tyne in England. On the other hand, the -s ending in “applogies” might stem from confusion the plural ending; even in that case, though, the unlikely singular “applogy” was pluralized correctly, rather than turning into “applogys.”

Also note that the author has no problems writing shorter words such as “about,” “thank,” “but” and the never-mistreated-enough “are,” which oftentimes magically turns into “our.” It is indeed a fact that shorter words are more easily remembered, at least because they tend to be more common. In any case, I am entirely unable to guess where the author of the sign might be from.

In any case, rather than the misspellings, what I find annoying is the comment of the person who posted (and presumably took) the picture: “The intelligence levels at kfc byker are sooo high! Lmfaooo.” The person who wrote the sign is ignorant, in that he or she doesn’t know English well enough, but talking about lack of intelligence is a bold and inappropriate claim at least. That might make sense (from the point of view of logic) only in case someone keeps making the same spelling mistakes over and over, even after being instructed properly.

The line between completely different concepts should not be crossed. Intelligence and ignorance are not the same. Saying so — or implying so — is not only Orwellian, but also plain wrong. At least the person who misspelled the sign is likely a foreigner and can be excused!

Headless virtual machines with Oracle VirtualBox

Like any other well-respected geek, I would love to have many computers all around me. However, money constraints make that hard, yet it’s still possible to have extra machines around… if they are virtual.

For those unfamiliar with the concept, virtualization is exactly what it sounds like: an entire computer is created in software, possibly with some help from the hardware. In practice, what this means is that you are able to have a “computer in a window,” as if it were any other program. The actual physical computer is called the host, and the virtual machine is called the guest. Note that virtualization is radically different from emulation; the former takes place when the host and the guest share their architecture (e.g. x86/amd64), the latter implies that they are different (e.g. a PowerPC host with an x86 guest.)

A very retro-futuristic word to describe the virtualization software on the host is hypervisor. Go figure.

Continue reading “Headless virtual machines with Oracle VirtualBox”