Shoot Paintballs At Some Iraqi Dude

This Iraqi artist, Wafaa Bilal, decided to make a statement or something artistic like that. What’s great about this is the way he decided to do it: he set himself in a room for six weeks and by logging on to a website you can shoot paintballs at him (aim the gun with the right/left arrows and click the gun icon to shoot). Good luck!

Oh, and if you’re interested in the artistic part of the whole thing, you can see his video diary and read some article about it. But really… who cares? You get to shoot an Iraqi guy. (via Download Squad)

HugeURL – Bigger, Therfore Better URLs

Following the footsteps of TinyURL, a service that let’s you shrink big URLs (web addresses) into small ones, for the purpose of not breaking them when sending an email (for eample), comes HugeURL, the place to get your URL enlarged. I guess it’s good for those who feel their “address” is too small, if you know what I mean.

For example, here’s a link to this website:
http://www.hugeurl.com/?NjY5MGNlMzZjNWJmYzY2OGE1MzhhZDczNGRh
YWFlMjUmMTMmVm0wd2QyUXlVWGxWV0d4WFlUSm9WMVl3Wkc5V1ZsbDNXa2M1
YWxKc1dqQlVWbHBQVjBaYWMySkVUbGhoTVVwVVZtcEdZV015U2tWVWJHaG9U
V3N3ZUZacVFtRlRNazE1VTJ0V1ZXSkhhRzlVVm1oRFZWWmFkR1ZHV214U2JH
dzFWa2QwYzJGc1NuUmhSemxWVmpOT00xcFZXbUZrUjA1R1pFWlNUbFpVVmtw
V2JURXdZVEZrU0ZOclpHcFRSVXBZVkZWYWQxTkdVbFZTYlVacVZtdGFNRlZ0
ZUZOVWJVWTJVbFJHVjFaRmIzZFdha1poVjBaT2NtSkdTbWxTTW1oWlYxZDRi
Mkl3TUhoWGJHUllZbFZhY2xWc1VrZFhiR3QzV2tSU1ZrMXJjRWxhU0hCSFZq
SkZlVlZZWkZwV1JWcHlWVEJhVDJOc2NFaGpSbEpUVmxoQ1dsWnJXbGRoTVZW
NVZXNU9hbEp0VWxsWmJGWmhZMVpzY2xkdFJteFdiVko1VmpJMWExWXdNVVZT
YTFwV1lrWktSRlpxUVhoa1ZsWjFWMnhhYUdFeGNGbFhhMVpoVkRKT2RGTnJa
RlJpVjNoWVZXcE9iMWRHV25STlNHUnNVakJzTkZVeWRHdGhWazVHVjJ4U1dt
SkhhRlJXTVZwWFkxWktjbVJHVWxkaVJtOTNWMnhXYjJFeFdYZE5WVlpUWVRG
d1dGbHJaRzlqYkZweFUydGFiRlpzV2xwWGExcHJZVWRGZUdOR2JGaGhNVnBv
VmtSS1QyUkdTbkpoUjJoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxKRlduSlVW
bFp6VGxaYVdFNVZPVmhTYlZKSldWVmFjMWR0U2toaFJsSlhUVVp3VkZacVJu
ZFNNVkowWlVkc1UySllZM2hXYTFwaFZURlZlRmR1U2s1V1ZscFVXVlJHZDFk
R2JISmFSemxxWWtad2VGVXlkR0ZpUmxwelYyeHdXR0V4Y0ROWlZXUkdaVWRP
UjJKR1pGZE5NRXBKVjFaU1MxVXhXWGhhU0ZaVllrWktjRlpxVG05WFZscFlZ
MFU1YVUxWFVraFdNalZUVkd4YVIxTnRSbGRpV0U0MFZHdGFWbVZYVWtoa1Jt
UnBWbGhDTlZkVVFtRmpNV1IwVTJ0b2FGSnNTbUZVVmxwM1pXeHJlV1ZJWkZO
TlZrcDVWR3hhVDJGV1NuUlBWRTVYWVRGd2FGWlVSa1psUm1SellVWlNhRTFz
U25kV1YzUmhVekZaZUZWc2FFOVdlbXh6V1d0YWQyVkdWWGxrUkVKWFRWWndl
Vmt3V21GV2JGbDZZVWhLV2xaWFVrZGFWV1JQVWpGYWMyRkdhRlJTVlhCS1Zt
MTBVMU14VVhsVVdHaGhVMFphVmxscldrdGpSbFp4VW10MFYxWnNjRWhXVjNS
TFlUQXhSVkpzVGxaU2JFWXpWVVpGT1ZCUlBUMD0=

Google Calendar – I Use It For Birthday Reminders

Usually I don’t need birthday reminders, but it did happen before that I forgot a friend’s birthday date. Currently I use Google Calendar for birthday reminders. The best thing about Google Calendar is that you get SMS reminders to your cellphone (all major Israely cellphone service providers are supported), so you don’t have to login to get your reminders every day.

There is one small caveat, though. Initially I set birthdays to be all-day events, but then I started getting the reminders for them around 5am. So what I do now is set the birthdays as zero time calendar events around noon, therefore getting the reminders at sane hours.

The JavaScript Programming Language Videos

I love learning about programming languages. Every language has something unique about it that makes me think: “That’s a nice feature”. While just getting acquainted with a language doesn’t mean that you know how to write code using it, it’s still nice to see what’s out there.

JavaScript is a very misunderstood language. Being “the language of browsers” by perception makes us (wrongfully) think it’s a lesser language than C++ or Java. It also makes JavaScript a very popular language these days, as almost all interactive website include some JavaScript code.

If you want to learn about JavaScript, here are very educating four videos of Douglas Crockford of Yahoo!, including the interesting history of the language:
The JavaScript Programming Language 1/4
The JavaScript Programming Language 2/4
The JavaScript Programming Language 3/4
The JavaScript Programming Language 4/4

The Waterfryer – Has Water (and a Fish) Under Your Frying Oil

Finally, another stupid “gadget” that’s worth mentioning here. It’s actually an interesting idea, but the demonstration is horrible. So what is the Waterfryer? It’s a deep fryer that has water under the oil. The result of having the water there is that, since water and oil don’t mix, the oil stays clean because all the food crumbs fall into the water. The water stays clean, and to demonstrate this there’s a fish living there right under the very hot oil. I guess you have to see it to understand. Check out this video. (via Digg)

My Programming Lessons – #2 – Be Paranoid About Your Code

I chose this to be the second lesson because I feel this is one of the things I learned through experience. It’s the basis of many many other lessons.

So what does it mean to be paranoid about your code? While you’re writing code, for some strange reason, you have this false confidence that it will work. It’s false because it’s statistically impossible to write code that works the first time. Consequently, you have to assume that everything you write will fail.

Sometimes a failure is not bad – it depends on what you’re writing. If you’re implementing a word count feature for a document editor and your code causes the editor to crash, then there’s always auto-save that will give the user his latest changes minus the last 2 minutes or so. But if you’re writing the auto-save feature for that same document editor, your feature can ruin big, important documents that belong to clients who will never buy software from you again.

In practice, being paranoid about code means that you should check every return value from every function and exit error situations as gracefully as possible (the optimum being working in a transaction-like manner). Include sanity checks and assertions as much as you can, so that during tests your code will crash early instead of dragging an error to the point where it can’t be found.

Both advices, “crash early” and “anything can fail”, are well known in one form or another. Today they seem obvious to me, but I first read them in a book called “The Pragmatic Programmer”, which is a great read for developers at all levels.