Beyond Teasing

by Zef Hemel

Once upon a time there was a man called Cleveland Heep. He works as a superintendent in a housing estate. He oversees. He cleans. He takes out the trash. He’s the kind of guy that you would trust with anything. He takes his job seriously and seems reasonably happy with his simple life. In the evening he goes to his little house where he lives alone. The little house is located next to the housing estate’s pool. Before going to sleep he writes a bit in his diary. Sitting in his comfortable chair he slowly falls asleep.

Outside is a noise — water splashing. He gets up, takes his torch, goes outside and shines in the water to see what’s there. His life will never be the same again.

Lady in the Water

I saw the teaser for Lady in the Water in the cinema for the first time. After it was over, a minute and a half later, I knew that watching the movie or seeing any of its other trailers could only ruin it.

This is the perfect teaser. This is perfection.

The music is perfect (Josh Groban — Mi Mancherai). The images are perfect. The lead role seems casted perfectly. It’s the most romantic thing I’ve ever seen. I know I won’t be able to resist watching the movie, but I know it can never match the trailer’s premise.

A Home in the Cloud

by Zef Hemel

Jon Udell:

But the desktop isn’t the battleground it once was. I float like a butterfly from Windows to OS X to Linux. My home is in the cloud, and that’s the next frontier for the champions of free and open commodity infrastructure.

The “cloud” Jon refers to here is the internet(s), the web. I do believe that over time operating systems for PCs will matter less. Clients get thinner and thinner. By far the most important application on any computer I use is the web browser. If I had to pick one application I need, it would the browser. I use it to access my e-mail, news, video, calendar, pictures, I can even use it to talk to my friends (more and more webapps are build that allow you to login to MSN, ICQ, AIM and Jabber/Gtalk through the web, like Meebo). If I really had to I could even do word precessing (Writely), I can do spreadsheets (Google Spreadsheets or iRows). I can also play my music through the browser if i wanted to (MP3Tunes Locker).

Soon, the browser is the OS, the rest just doesn’t matter that much. And then it’s Linux’ moment to shine.

Net Neutrality

by Zef Hemel

I’m not going to say anything on the issue, I’m just going to point you to three videos from the Daily Show (one of my favourite American TV shows) that comment on it. To fully understand the reference made in the third video you should have seen of the recent Apple ads (like this one).

Two interesting things were announced in the past two days from two different VoIP companies: SIPPhone and Skype.

SIPPhone yesterday announced you can now make free calls to mobile and landline numbers in 60 countries. Or more precisely, you can make free calls to mobiles and landlines in Canada, China, Cyprus, Guam, Hong Kong, Malawi, Malaysia, Puerto Rico, Russia, Saipan, San Marino, Singapore, South Korea, Thailand, United States, US Vigin Islands and Vatican City. You can make free calls to landlines in Argentina, Australia, Austria, Belgium, Brazil, Bulgaria, Chile, Croatia, Czech Republic, Denmark, Estonia, Finland, France, French Antilles, Germany, Gibraltar, Greece, Guadeloupe, Hungary, Iceland, Ireland, Israel, Italy, Japan, Liechtenstein, Luxembourg, Monaco, Netherlands, New Zealand, Norway, Panama, Peru, Poland, Portugal, Slovenia, Spain, Sweden, Switzerland, Taiwan, Turkey, United Kingdom, Venezuela and Zambia. Cool!

Except there is one restriction: both you and the person you’re calling must be active users of Gizmo, SIPPhone’s Skype competitor (which, actually, is quite a bit nicer than Skype in some ways, plus it uses an open protocol — SIP) and the number you want to call must be listed in the target user’s Gizmo profile. What this means in practice is that the person you’re calling also uses Gizmo regularly, which means they probably have broadband and there’s really not that much point in calling their mobile or landline number. There may be, sometimes, but you’re much more likely to want to call a number of somebody that doesn’t use Gizmo at all.

But still it’s a nice marketing stunt. Hopefull it will get some people to try Gizmo. It seems quite nice. I myself have some trouble getting it to work, for some reason when I make a phonecall I don’t hear the other person, I submitted a support ticket to their system, we’ll see what causes it.

The other announcement, from Skype is maybe more significant. At least I’ve been waiting for it. Skype is going to introduce Wifi Phones with the Skype software built-in. This means that you have a handset (wireless of course) that has Skype built-in and thus can use to make calls to any skype user for free or for low cost to any other number. If you consider that more and more areas are widely covered with wifi access points that are open to anybody to use, that means that you can start making free (and very cheap) calls in more and more places. A very interesting development. It may one day become a bit of a cellphone replacement (although there are major issues when moving from one access point to the other).

Around the Corner

by Zef Hemel

I live on a what, at first sight, looks a very quiet, small street. That’s what it looks like if you walk there and are only there for a couple of minutes, maybe an hour.

If you stay any longer, like me — I’ve stayed there for almost 10 months now — you will notice that this small street is far from being quiet; it’s very noisy in fact. It is noisy because of the huge trucks that drive by all the time. Sometimes I just have to walk to the window to see if England hasn’t invaded Ireland again, because it sounds like enormous tanks are driving past. Sometimes I walk to the window to see if haven’t ended up in the medieval times because I hear horses with carriages driving past.

But it’s not the case.

Everything I need here in Dublin is at the right. When I walk out the door I walk my not-so-quiet street in the right direction and then often directly to the left. My store is there. My university is there. My friends live there. The city centre is there.

Trucks and cars, however, most often drive to the left. Not to the right. I was never there. I was never where the cars and huge trucks and horses go. I always walked to the right. Nothing I need is at the left. I sometimes looked to the left but there’s not much to see. You see some houses and there’s a left turn. I never went there.

Until a couple of days ago.

A couple days ago, I don’t remember exactly what day, I decided to have a look what was there around the corner, to the left. Why did all the trucks, cars and horses always go there? I put on my shoes, took my iPod and there I went, out the door, to the left until the end of the street and then around the corner, again, left.

What I saw I hadn’t expected. Everybody who has spent some time in Dublin and visited London before has the same feeling. Dublin is a little bit like London, but smaller, tighter, narrower, uglier. The streets are narrow. Almost everywhere the streets are narrow. My street is narrow. However, the street around the corner was hardly narrow. It was really wide in fact.

Ridiculously wide. I don’t see why. My street was the main street leading to it, although from the looks of it there were some more small streets leading to the big, wide street. And there was nothing there but a street. Just a huge wide street. At the left there was only a wall. Across the street there were some shops, but they all seemed closed and abandoned. You see a lot of such shops here, many still have the names on them but it is very apparent that they haven’t been open for years.

The atmosphere in the street around the corner was strange, really strange. Completely different from my street. If this would have been a science-fiction story, curious things would be going on. But it is not, and I don’t like science-fiction.

My phone rang. Only once; the sign that my girlfriend was waiting with the phone in her hand in Oxted, waiting for my call. She works there as an au-pair right now and only has dial-up internet so I have to call to her landline number from Skype. I was close to home still so decided to walk back and make the call. When we were done I kept thinking about the street around the corner.

I decided to go back.

Not much had changed since I was there about an hour earlier. Except one thing. There were two cars parked at the left of the street. For the rest the street was completely empty, which was strange in my opinion because I have the feeling all day long big cars, trucks and horses go there. But they were nowhere to be seen. Except for those two parked cars. I decided to walk the street and see where it ended up.

As I walked the street I passed the first car. A man was sitting inside. I looked at him. He didn’t look at me. He looked at the empty wall at the side of the street. I looked at it too, there was nothing to be seen. I continued my walk. When I got closer to the second car I saw there were two people sitting in there. In the front there was a woman. In the back there was a child, a boy I would estimate around six years old. Neither of them looked at me, even though I looked at them. They too, were looking at the empty wall. It was strange. If this would have been a science-fiction story, curious things would be going on. But it is not, and I don’t like science-fiction.

I walked on. This was a strange street. There were some other side-streets that led into it, but all these streets seemed empty. There was a whole row of closed down shops at the other side of the street. A barber shop, a fruit store, some store where you could buy tiles. But they were all closed and seemed like they had been closed for many years.

And I couldn’t stop noticing. The street was abandoned, abandoned! How can that possibly be!? I heard cars, trucks and horses go there all the time and now that I was there — nothing. Nothing at all. It was like they disappeared as soon as they entered the street, invisible for anybody to see. If this would have been a science-fiction story, curious things would be going on. But it is not, and I don’t like science-fiction.

I got to the end of the street. It turned back into a normal narrow street there turning to the left. I decided to follow it. I would take the street to the left and then continue to walk straight ahead, eventually I would have to end up in the street where I knew there was a super market and I had to buy some items there. I followed the narrow street. This one was less curious and there even were some people there. I kept walking and walking. I walked from one street to the other, one turning slightly to the right, another slightly to the left. I got a bit worried. Although the route should be really simple I expected I should be at the street with the super market by now, but I was not. Finally I ended up in a street that was wider and had more traffic. I didn’t know the street but decided to follow it to the left, which in my head would be the wrong direction, but a safe direction. I walked and walked. Eventually I ended up at the street where I had to be. And there was the store. Curious. Very curious.

If this would have been a science-fiction story, curious things would be going on, involving Escheresque street transformations. But it is not, and I don’t like science-fiction.

Orientation just never was my strongest point.

Vim 7

by Zef Hemel

Yesterday I decided to install Vim 7 on my iBook (also available for unices and windows of course) and I was surprised about the nice improvements they’ve made.

My favourite new features:

  • Tabs, you can now have multiple tabs and quickly switch between them.
  • Spell checker
  • More advanced code completion. The regular completion is still there (Ctrl+P), but now shows a drop-down of options. And for C, JavaScript, Python, Ruby and XML it offers real code completion (although I haven’t completely figured out how and when it works).

Here are two screenshots (both clickable for larger version):

vim7_1_small.jpg

vim7_2_small.jpg

Here’s an article on Vim 7’s new features.

This is probably of no interest to you, but I’ll post it so that people who run into the same problem will be able to find the solution through Google.

For my project I’m using Redland librdf, which is a RDF library written in C that has wrapper for Python and many other languages (I’m using the Python one obviously). As my iBook was broken I used my windows laptop for the past months and there it worked fine. However now I got my iBook back I wasn’t able to let the redland-bindings to compile.

However I kept getting an error similar to this:

$ make
Making all in test
make[1]: Nothing to be done for `all’.
gcc -DPACKAGE_NAME=\”Redland\ RDF\ Application\ Framework\ bindings\” -DPACKAGE_TARNAME=\”redland-bindings\” -DPACKAGE_VERSION=\”1.0.2.1\” -DPACKAGE_STRING=\”Redland\ RDF\ Application\ Framework\ bindings\ 1.0.2.1\” -DPACKAGE_BUGREPORT=\”http://bugs.librdf.org/\” -DPACKAGE=\”redland-bindings\” -DVERSION=\”1.0.2.1\” -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -I. -DREDLAND_POST_I -DREDLAND_DECL_I -DREDLAND_TYPEMAP_I -I/usr/local/include -I/opt/local/include/db4 -I/opt/local/Library/Frameworks/Python.framework/Versions/2.4/include/python2.4 -I/opt/local/include/python2.4 -g -O2 -I/usr/local/include -I/opt/local/include/db4 -g -O2 -fPIC -DPIC ./Redland_wrap.c -c -o Redland_wrap.so
In file included from ./Redland_wrap.c:1380:
./redland-post.i: In function ‘librdf_python_unicode_to_bytes’:
./redland-post.i:162: warning: pointer targets in passing argument 2 of ‘raptor_unicode_char_to_utf8′ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_digest_update’:
./Redland_wrap.c:1777: warning: pointer targets in passing argument 2 of ‘librdf_digest_update’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_digest_update_string’:
./Redland_wrap.c:1812: warning: pointer targets in passing argument 2 of ‘librdf_digest_update_string’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_uri’:
./Redland_wrap.c:2342: warning: pointer targets in passing argument 2 of ‘librdf_new_uri’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_node_from_uri_string’:
./Redland_wrap.c:2575: warning: pointer targets in passing argument 2 of ‘librdf_new_node_from_uri_string’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_node_from_literal’:
./Redland_wrap.c:2661: warning: pointer targets in passing argument 2 of ‘librdf_new_node_from_literal’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_node_from_typed_literal’:
./Redland_wrap.c:2710: warning: pointer targets in passing argument 2 of ‘librdf_new_node_from_typed_literal’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_node_from_blank_identifier’:
./Redland_wrap.c:2779: warning: pointer targets in passing argument 2 of ‘librdf_new_node_from_blank_identifier’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_model_add_typed_literal_statement’:
./Redland_wrap.c:3936: warning: pointer targets in passing argument 4 of ‘librdf_model_add_typed_literal_statement’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_parser_parse_string_as_stream’:
./Redland_wrap.c:5394: warning: pointer targets in passing argument 2 of ‘librdf_parser_parse_string_as_stream’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_parser_parse_string_into_model’:
./Redland_wrap.c:5438: warning: pointer targets in passing argument 2 of ‘librdf_parser_parse_string_into_model’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_parser_parse_counted_string_as_stream’:
./Redland_wrap.c:5486: warning: pointer targets in passing argument 2 of ‘librdf_parser_parse_counted_string_as_stream’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_parser_parse_counted_string_into_model’:
./Redland_wrap.c:5536: warning: pointer targets in passing argument 2 of ‘librdf_parser_parse_counted_string_into_model’ differ in signedness
./Redland_wrap.c: In function ‘_wrap_librdf_new_query’:
./Redland_wrap.c:5663: warning: pointer targets in passing argument 4 of ‘librdf_new_query’ differ in signedness
gcc -g -O2 -I/usr/local/include -I/opt/local/include/db4 -g -O2 -Wl,-F. -Wl,-F. -bundle -framework Python Redland_wrap.so `redland-config –libs` -o Redland.so
/usr/bin/ld: Undefined symbols:
_raptor_locator_byte
_raptor_locator_column
_raptor_locator_file
_raptor_locator_line
_raptor_locator_uri
_raptor_unicode_char_to_utf8
collect2: ld returned 1 exit status
make[1]: *** [Redland-stamp] Error 1
make: *** [all-recursive] Error 1

The solution is as follows. From this page download seperately: raptor (latest .tar.gz), rasqal (latest .tar.gz), redland (latest .tar.gz) and redland-bindings (latest .tar.gz). Extract each of them and then compile them as follows:

raptor: ./configure && make && sudo make install
rasqal: ./configure && make && sudo make install
redland: ./configure --with-raptor=system --with-rasqal=system && make && sudo make install
redland-bindings: ./configure --with-python --with-whatever && make && make install (the configure command depends on the language bindings you need, I just used –with-python).

Hope this will help someone in the future.

Next Page »