Here comes the leet-mobile! (part 3)

So the Valp was now parked on the parking: Time to get things going.

Is it dead?

The first thing we did of course is to try to start it. Nothing happened. The blinkers and windshield wipers worked so at least we knew there was electricity going on, but since starter engines are notoriously power hungry we decided to buy a battery charger, remove the batteries, and let them charge for quite a long while.

In the mean time we ordered some replacement spark plugs and a new set of distribution cables1 and additionally an original user manual for the vehicle.

After one day, one of the batteries was still not done charging; that’s not a good sign. The previous owner probably never changed them since he had the vehicle, and we were planning to change them anyway. Still we reinstalled them and tried to start the engine. Still no luck.

We decided to buy new batteries and wait for the new set of plugs

Patience is a virtue

Few days after we ordered the plugs we got a phone call from the company asking us if we wanted the military or civilian models. We answered we wanted the civilian ones, but I have to admit that I had this annoying nagging feeling telling me that we made the wrong choice.

The important thing here is to consider that this was a military vehicle originally equipped with a field radio transmitter. These things do not like interferences, specially not from the engine electrical system. To solve this issue they equipped the feltvogn with shielded covers for the distribution head, shielded spark plugs, and special shielded cables. These of course are totally non standard, which make them more expensive and harder to find on the market.

Shielded spark plugs

Shielded spark plugs

Of course, the added shielding made it impossible to use a standard spark plug removal tool because the head part was not deep enough. Fortunately we managed to find a tool that worked2.

Anyway, after carefully cleaning the top of the engine to remove the dirt and other organic mater we managed to remove each of the old plugs and replace them by the new ones, making sure we did that one by one to not get the cable order wrong.

We also decided to replace all the battery cables, and to upgrade the original batteries from 45 Ah to 62 Ah3.

New batteries and cables.

New batteries and cables.

While I was at it I spent some time cleaning the air filter4.

The moment had arrived: Will it work?

We turned the key, and pressed the start button.

All we heard was a clicking sound, accompanied by a little bit of smoke.

Oops.

Is it deader?

There was obviously something wrong, but after checking the lights and wipers it seemed at least that the main electric system was still there, and no fuse had blown up.

At least I knew what this clicking sound was: It’s the solenoid which is in charge of moving the starter’s gear in position so it can launch the main engine.

What it means is that the starter was correctly receiving the current when we tried to start the car, but only one half of it was working, the starter engine itself did not start rotating.

Using a small light torch we try to see if something was wrong with the electric cables leading to the starter engine, and this is when we got this “a-ha” moment: There was a short circuit, which explained both while the engine would not start and why there was some smoke.

What happened is that when the previous owner removed the shield casing of the distributor head, he did not fastened the metal rods used to screw the head, and as a consequence one of the rod decided to fall on the closest thing: The starter engine connections.

We managed to remove the rod, and tried to start the engine again.

YEAHHHHHHHHHHH, it’s alive !!!!!



As you can probably hear on the video, the thing is not particularly silent, but the main cause is that the exhaust is rusty and punctured.

Hopefully changing it will help a bit.


  1. it never hurt to have these changed because they tend to get porous over time and that leads to bad conductivity in wet weather
  2. Search at Biltema, they have long ones, make sure to pickup a 21mm model
  3. There was not much space left, but they fit and you can still close the engine box after that.
  4. A fancy system using oil in a basin to trap heavy particles.

Here comes the leet-mobile! (part 2)

Now that we knew we wanted one of these horribly cute off road vehicles, I started to contact the various sellers to ask questions about their state1 and it quickly appear that you could classify the various available models in three categories based on their prices2.

  • the ones above 40000 kr come with hard top
  • between 20000 and 40000 kr they have soft top
  • under 20000 kr you find the ones that need a lot of repair work or are sold for parts
    • In the end we found a weird one, owned by a hunter.

      It was originally a soft top model, but the previous owner had imported from Sweden a hard top and installed it on the Norwegian vehicle.

      What made it special is that it has many side windows and came with a wood burning stove inside !

      That sounded like totally crazy, and also a perfect basis for a small RV:

      You never know when you are going to be blocked in the middle of nowhere in a snow storm, just go out, cut some wood, and there you go.

      A survivalist dream I guess…

      79_902422102_xl

      More seriously, that was the only hard top model in the 20000 kr range, so we decided to give it a go and called the owner. We got an appointment for the next Saturday; he would fetch us with the vehicle at Vestby’s train station with the Volvo so we could see it in action and he would explain us how to drive it3

      Comes Saturday, we are at Oslo S with our tickets waiting for the train to come, and the guy calls:

      I’m sorry, there’s been a problem. I was going up a hill and it suddenly stopped, I’m being towed back home right now, I will try to fix it, probably an electric problem, call you later.

      Grmmblblblb.

      Since we had the tickets, our afternoon was already lost and we wanted to see what they looked like, we decided to take the train anyway and go look at it.

      79_883164814_xl
      Long story short, we saw it, found it cool despite the rust, missing handles, broken spark plug head and cables, and negotiated a price reduction plus having it delivered to our place in Oslo.

      We made a bet that the failure was probably stupid, like some broken electric cable or flimsy connection, perhaps even a blown fuse.

      So there we go, with a non working Volvo 4×4 on the parking in front of the building.

      Now time to see if we are just stupid computer geeks or if we can get this thing running !


      1. were they sold for parts, or could they actually be driven and had a valid EU control certificate, did they have a trailer hook, etc…
      2. The euro to nok rate fluctuates, but as of today 1 euro gives you 7.5 norwegian kroners.
      3. It has four different driving modes, including 4×4 in low and high gear modes, plus back wheels only mode. It also has a gazillion of combat lights modes.

Here comes the leet-mobile!

Been few months since I posted something, not because I had nothing to do, but because of a number of projects I committed myself to help with1.

Today’s post is not computer related in any way, it’s about vehicles!

Commuting bliss

I moved to Norway about 8 years ago and have happily used the public transport system all that time.

Thanks to my job, I don’t have to commute during the rush hour, so I actually enjoy my twenty minutes spent in the metro; for me it’s the perfect time to go through my book list!

Three years ago I bought an apartment, which gave me opportunities to do some home improvement… but also made me realise how impractical it was to not have a vehicle: Having to pay a premium for deliveries of goods and materials that forces you to be at home a particular day ‘between this and that’ is not particularly practical.

Renting vehicles is expensive and not practical from a timing point of view, and being a member of a car pool comes with a whole bunch of issues as well.

So we decided to look for a vehicle to buy. I wanted something reliable, roomy, that would be ok to keep in the snow and cold when not being used, that would not be an obvious target for a thief, would not cost premiums in terms of insurance, and before all would not cost me a arm and a leg in buying price.

After looking at the prices of new vehicles on the Norwegian market, I had to admit that the prospects were grim: Due to the almost 80% import tax on vehicles the prices gets absolutely ridiculous. So we decided to look at second hand vehicles.

What do you mean by ‘old’?

The second hand market is much more affordable, and actually has interesting vehicles. Of course second hand means that the vehicle may have been mistreated and may cost you a lot in repairs and parts. This is when I heard of the Veteran cars benefits2!

Basically, in Norway any vehicle more than 30 years old is called ‘Veteran’.

Veteran cars benefit from a number of things, like cheaper yearly fees, cheaper insurances, a bit more leeway about following the regular technical control. An obvious issue is that it makes them more prone to failure, and it may be difficult to find parts for them. One has to be careful!

So I started to look on finn.no for vehicles in the Oslo area first registered in 1983 or earlier. There were some funny results, including some Citroen 2CV or DS, old American classics (Cadillac, Deville, Chevrolet El Camino and Corvette), Jeeps, Lotus Seven, Peugeot 404 station wagon, … but some of these cars were still in the 200 000 kroner price range!

So I decided to do a ridiculous search:

Show me all the vehicles of type station vagon/suv/pickup/other that are more than 30 years old and have a maximum price of 20 000 kroner.

That’s where all these military vehicles appeared! Have you ever dreamt of playing like Romel with a Half Track? You can find some on finn.

More seriously, after looking a bit more around, I kept coming back to these funny Norwegian field cars, thinking that this may actually be what I wanted.

Volvo L3314 blue prints.

Volvo L3314 blue prints.

L3314N

In the early 1950s Volvo received an order to develop a new utility vehicle for the Swedish Army. Full scale deliveries of the somewhat improved L3314 began in 19633.

The Norwegian Army adopted a version called the L3314N with a fold-down windscreen and 24 volt electrical system to comply with NATO regulations. About 2,000 vehicles were purchased and assembled at Raufoss in Norway4.

In summary, these vehicles were owned by the Norwegian army, and used to move soldiers around on the field. These had a soft top that could be folded and stored rolled under the front windshield. There was also hard top models, often used as field ambulances.

At some point the Norwegian army decommissioned the Volvo feltvogn and they were then sold as military surplus. They have amazing off-road abilities, so they have quite many users making it relatively easy to find documentation, parts, and help forums.

The interesting thing, is that this B18 engine was also used on a number of older Volvo cars which are considered as collector and relatively sought-after, which means that finding parts for the engine is actually not much of a problem.

So this was decided: It was the ultimate vehicle: Noisy, old, unforgettable, but also almost undestructible, easy to repair, cheap to buy, practical, can go everywhere and would make all your friends look at you and ask ‘Why, oh why !!!’.

Priceless.


  1. Like the Oric 30th birthday: http://oric30years.defence-force.org
  2. In France I was using a Citroën 2CV from 1976 as my main car, so I’m not particularly afraid in having this type of vehicle. You just need to know what you are doing, and have a toolbox close by.
  3. This section was almost totally copy-pasted from Wikipedia
  4. In Norway the L3314 is commonly known as “Felt”, meaning “field” from its Norwegian military designation; Vogn, felt, 1/2 tonn, 4×4, Volvo, modell L3314N. Saudi Arabia took delivery of some 200 L3314N Öken, complete with the Norwegian ski-racks on these desert-bound vehicles.

Minitel memories

What’s this Minitel thing anyway

Outside of France most people never heard of the Minitel.

Released in 1981, first as a small scale test in Bretagne and then extended to the rest of the country, the Minitel business plan was a stroke of genius from France Telecom: Give the choice between the regular printed White Pages and a small dumb black and white terminal allowing you to find the same thing faster; then use the large number of available terminals to allow the creation of commercial offers to make a profit of it.

An animation showing different Minitel servers

The ‘beauty’ of the monochrome teletext!

In just few years a large number of services were available. In was common in France to use it to order train tickets or check the bank account balance, and that long before anyone heard of Internet. Among other services you could also find the list of movies available at the local cinema, specialized services for doctors (like some kind of online versions of diagnosis and drugs lists), online multi user chats, x-rated services of course as well (the famous “minitel rose”).

Later the Minitel evolved, bringing higher resolution modes as well as color display. Unfortunately, most of the pages were designed using the various colors in a way to get nice shades of grey, resulting in some pretty horrific pages when seen later in their full 8 pure colors glory!

Pricing system

Some of these services were free, but for most you had to pay a fix amount per minute, the amount depending of the tarification grid used by this particular service. To access the free white pages you would use the 3611 phone number, the most common services like the french railways used the 3615 access, but some more exclusive services existed.

The way it worked is that you paid for the service through France Telecom based on how long you stayed connected, modulated by the price per minute used for the various services. Then France Telecom would pay back a percentage to the services owners.

Many servers had a front page using a certain billing grid, but would also be accessible using lower cost back-doors. These were mainly for the site operators themselves, but a number of VIP had accesses to these.

3614 RTEL

RTEL was one of these services, most people did not have access to the lower cost gate (3614) and used the main gate instead.

Many of the French demosceners at the time were using RTEL as their main communication channel, using the public and private discussion forums, but also the built-in mail system 1. I myself stopped using it around 1994 when I had to pay my own phone bills for the first time :)

File transfers

The Minitel was a pretty slow device, and the built-in modem was not particularly fast either: It was an asymmetrical 75/1200 bauds connection. The idea was that most services would involve a bit of typing but mostly a lot of receiving, thus the faster download rate.

Many people did not know it, but it was perfectly possible to dial the phone number of a friend who also had a Minitel, and instead of answering on the phone your friend could just press the CONNECT button of the Minitel and then you could both discuss using some very primitive terminal chat. A number of people with either voice or audition problems would use this feature regularly instead of using the phone.

Obviously when you put together two asymmetrical devices they will have to use the slowest speed, so this kind of dialog between two Minitels would run at 75 bauds. Fortunately the designers of the Minitel were very smart people, and in the communication protocol code they added a signal allowing any Minitel to reverse his modem: Instead of sending at 75 and receiving at 1200 it would send at 1200 and receive at 75 bauds. That was all we needed to transfer files electronically between computers!

Calling cards abuses

Putting all that together, some people found out it was possible to actually make money from piracy.

The concept was simple: If you have a Minitel service, you get money from France Telecom a part of the connection cost paid by the users of your service. The most expensive the service, the longest the connection, the more money you get. Putting two by two together, these people figured out that all they had to do was to have some Minitel based BBS system allowing the download of files using Minitels or modems. That would provide them with a way to distribute pirated software easily while making money from it. The only problem is that this would be very costly to anyone downloading or uploading software.

The solution was provided by AT&T and American travelers.

Once upon a time, all these restaurants, hotels, shops, etc… were handing out purchase tickets that had way too much information written on it. Like full card numbers or dates. And most people were very careless with these, they would generally threw them out in the trashcans or left them on the table when leaving a restaurant. On the other hand there was these people who would spend time collecting all these little paper, and then would resell lists with card numbers to whoever want them.

No there was no Internet at this time, and no you would not use these to order expensive goods on Amazon.com, so what you would do if you had a decently good English pronunciation is to call the toll free number of the AT&T on your phone, wait for an operator to answer, and when prompted say that you want to call some phone number using your card for billing. Then you would enumerate the number of the card you got from the list, the operator would then dial up the number and transfer your call to the new line. At this point all you have to do is to press the CONNECT button of your Minitel and you are ready for business: Uploading and downloading as much files as you want, with a small guilt feeling toward the person who was going to have to pay thousand of dollars of bills at the end of the month 2.

I myself did not participate, not because of some elevated moral, mostly because my English accent sucked so hard that there was no way an operator would accept me as a lawful owner of the card…

I hope you liked this small trip in the past!

In memory of the Minitel, definitely turned off in June 2012


  1. Called BAL as in Boite Aux Lettres (mailbox in french).
  2. In practice there was some insurance associated to this, so most people did not really have the problem, it was AT&T who was annoyed.

Are Cheap Androids An Electric Dream?

Last Christmas was tough on my netbook. The travelling around, the trains and planes being cancelled or delayed, the packing and unpacking, the plugging and unplugging, and the occasional knocks finally killed my good old and trusty Asus eeePC 901.

More exactly, the screen decided to die 1.

Came the time to look for a replacement, dictated by the usual set of parameters to consider: cost, form factor, autonomy, ruggedness, planned usage, look.

2011 is a particularly rich year in this regard, due to the crossbreeding between the netbook, laptops, mobile phones, pda and tablets. It’s getting harder and harder to try to put these various devices in distinct categories, I’m not even going to try to do that so please bear with me: As far as I’m concerned, all these devices are potential candidates.

I guess the best way to find out what I need, is to look at what I used to have, and find out from there what was good and what was not good.

Gericom Webgine 1400

Gericom Webgine 1400

Fat and slow, but it has served well.

My first laptop was a 14 inch Gericom heavyweight. At least it was in the heavyweight category from a weight point of view because performance was not its forte: You can’t really expect a super cheap laptop that use a desktop version of an AMD processor to be super efficient at anything, or could you? So basically, it was “transportable”, the autonomy was pathetic due to the crappy battery and the desktop based processor, and it was freezing due to overheating during the summer so I had to buy one of these cooler support tablets ;)

There was at least one positive thing: It was possible to use the machine for real work, either document editing, programming, debugging.

Asus eeePC 901

The inside of a eeePC 901

It's still working.

The eeePC on the other hand was small, silent and sturdy (I had the SSD version), a very practical small machine to keep in your bag when travelling around, and the battery life was good enough to allow watching few full length films when travelling. That’s nice.

The negative things, well the machine was slow (mostly due to the Physon SSD 2), the keyboard too cramped (impossible to do long sessions of text writing, either using instant messaging, so forget about programming or writing a blog post), the Intel graphics being as usual unusable for anything other that displaying basic visual effects.

In the end, all I was using this machine for was browsing web pages, using IRC, talking with friend, and watching films.

Possible options

The market has now changed quite a lot. The traditional desktops and full-size laptops are still available and provide the same type of experience as before, the netbook category is well alive as well, but these days it’s the smartphones and the tablets that are on the front pages of most tech sites, and of course the multiplicity in terms of operating systems is larger than ever.

The easiest choice would have been to buy a new netbook. The prices have gone down, so basically for about two third of the original price I would have got a similar machine, but with a dual core Atom, twice the amount of memory, ample storage size… and still a shitty Intel graphic system.

On the next price range we find the basic full-size laptops, cheap but heavy as bricks.

Then come the tablets and smartphones. Light, good battery life, but can you really do anything useful with iOS and Android, on what is basically just an internet enable touch screen?

Finally comes the top of the range laptops from Apple, like the MacBook Pro and Air.

Difficult choices.

Tablets with keyboards?

As if we did not have enough options already, at the last CES the various hardware vendors decided to bring on the tables the (possibly) best of both worlds: Tablets with detachable keyboards.

Two models in particular seemed interesting, the Asus Transformer, and the Acer Iconia 500. The Asus had some pretty good reviews, very slick hardware, Android 3, super long battery life, flash support… and out of stock everywhere ! Damn’it !

Since these machines were not available, I searched a bit more about Android with keyboard, and I discovered this very intriguing machine from Toshiba, the AC100.

Toshiba AC100 seen from the side

Yeah, it's slim

Android netbook

The AC100 is a very special machine. Basically it fits in the same category as a normal 10 inch netbook, except that it does not run on Windows or Linux, and it does not use an Intel compatible processor. That means you can forget playing any windows game or generally speaking run anything that expect x86 compatibility.

I admit that it’s a bad start.

If you search for reviews on the web, written when the machine was introduced late 2010, you will find out that the grand majority are giving less than the average and some even less than that (The Register gave it 10%).

That looks even worse, isn’t it?

The interesting thing about these reviews, is that they basically all agree that the hardware is great, the machine is very snappy, the Tegra 2 chipset allows for very smooth display, the screen is great, it’s possible to watch 1080p videos (that you can watch on an external screen thanks to the hdmi connector).

The problem is that this machine was released with Android 2.1, does not have the Android Market, the unusual screen size and lack of touchscreen makes many application go hay-wire, and it did not even support flash. And the system was buggy too. And the web-browser did not always work.

I can understand the bad reviews, no hard feelings, too bad for Toshiba, and this probably hurt the possibilities that other companies try to do similar Android netbooks.

I guess at this point you are wondering why I spent so much time describing such a failure of machine. The answer is simple: I bought one, and I’m very happy :)

After market

When this machine was introduced, it was sold as a full price machine, at roughly the same price as normal Atom powered netbooks. Some people noticed this pretty nice and small machine, bought it, tried to use it, screamed, and brought it back to the shop for a full refund.

Then comes me, looking for the prices of various machines in the shop next door, and found out they had a pile of these machines, already used, with a big “slashed prices/must go” sticker. And indeed slashed it was, I paid it nearly half of the price it had the month before 3.

Of course, a turd is a turd, even if you got it for free.

When I plugged the machine, I indeed quickly realized that the default setup was sub-optimal, and that yes the machine was not very usable, but I gave a try.

That’s when the magic happened! After configuring the wifi and performing the registration sequence I was able to run the Toshiba Updater system which quickly decided to update itself. After this update phase I had the pleasure to discover a whole list of new available upgrades, including Android 2.2 (Yeah!), Adobe Flash support (Yeah!!), Multiple Keyboard Layout support – including norwegian -, updated Media Player, additional Market place software, Office document viewer, etc…

Post-upgrade feeling

Toshiba AC100 plugged to a HD tv set

1080p on external HDMI

After this upgrade, what was true about the hardware is still true: It’s a very light machine that feels comfortable to handle, with a very good screen and a perfectly usable keyboard. The touch pad is reactive and can be disabled by pressing one of the built in keys 4. The battery life is quite good and charges fast as well.

Basically for less than the price of the cheapest netbook I could find, I have a machine that can comfortably browse webpages – even when they have flash -, supports Skype, IRC, Remote Desktop, can play Angry Birds and a bunch of other games at full frame rate, supports an external mouse and usb card readers (it also has a built in SD card reader), can play all the movies I had (including multiple gigabyte MKV and AVI files). Google maps also works fine, and you can use DosBOX as well. (Apparently it can also access samba shares, use ssh, can play Spotify, but I did not try).

What it cannot do, is basically allow me to program on the fly, but this was not doable on the eeePC either, so all things considered it’s a choice I would do again.

State of Android

Now clearly for me it showed that the state of Android today is a bit like at the DOS far-west period when you had to make sure that each and every application would actually run on your particular system. You had to have to good type of video card, a compatible sound card, else the applications would misbehave to simply refuse to run at all.

For this machine it’s the same thing: A number of applications expect the screen to rotate freely, they expect a touch screen, some expect a particular screen size or aspect ratio, some expect a gps or 3g module, etc… so a significant number of applications will not work on this particular machine. But the one that work and can exploit the machine are really flying: All the recent 3d games are running perfectly smoothly in landscape format.

Hopefully developers will learn to stop assuming things and write correct code instead. The future will tell!


  1. Technically I guess we can call “showing the same scanline repeated all over the screen” as “not really usable anymore.
  2. If you have one of these machines, I can recommend the Renice mini PCie SSD cards, it’s like over-clocking the machine, you will not recognize it: Everything opens almost instantaneously.
  3. Which for the sake of comparison means I paid for it one tenth of the price of an Apple MacBook Air in the same shop.
  4. You also have keys to change the screen brightness, volume, bring the list of running applications, disable the wifi, play and pause medias…

I’m in love with Kira

No, Kira is not the name of my girlfriend, it is not the name of my cat either, and I’m not in love with any particular film celebrity bearing a similar name.

Kira1 is only a small device you connect to your network, which in turn allows you to control anything that uses infra-red, kind of like an universal remote control.

Here it is how it looks like 2:

The incredibly beautiful Kira

Kira 128 show-off

Home-automation reloaded

As I posted earlier this week, I’m currently toying with the whole Home-Automation concept.

The way I see it, I should be able to control everything from one single place, and in 2011 what makes sense is to make it web-based. The internet protocols and software stack has evolved to the point where it’s basically a no-brainer: Between browsers that can display rich content using CSS (and/or HTML/canvas, Silverlight, Flash, or whatever else to come in the future) plus PHP and CGI on the server side, you can really do whatever you want3. So basically as long as a device can access web pages and understand javascript, it can be used to control my system.

The last post was about showing information collected from the web, in particular how to show when the next metro arrives. It’s cool, but it’s not really automation. With Kira you can start to build the real thing.

Universal remote controls

Of course I could have chosen the easy way and buy something like a Logitech Harmony universal remote control. As far as I can tell, anyone I know who bought one only had positive things to say about it, so kudos to Logitech for designing apparently a very good product.

The reason why I did not do that, is that I wanted to be able to control everything from a single location, possibly make it react to external events (like mute the TV or stereo system if somebody calls), be able to access all that out from home (perhaps because I forgot to record a program I absolutely wanted to see), and generally speaking: Just because I can :)

So here is how it works:

  • You plug the device on your network.
  • You program up to 128 commands using the provided software.
  • You use the Kira’s integrated web server to select one of the 128 commands.

That’s it. Nothing really mysterious, but I admit, that’s pretty basic and far to be as practical as a remote control. Now the cool thing is that you can do much much more than that:

  • The device itself has an infra-red receiver you can use to record control codes from your existing remote control; you can of course pilot your PC this way.
  • You can pair two devices to create a long-distance infra-red relay system
  • There is a complete UDP based API wich can be used to send raw streams of infra-red data, update the pre-programmed codes, change the DHCP parameters, update the firmware…

If you are interested by this device, you can find it on Keene Eletronics’s site, here is the link to their infra-red related products. They even have a magazine showing how the various products can be used together, available in PDF here.

My control panel

The end objective is of course to write complex macros to automatically do operations like switching on the media box, switching off the digital cable TV box, set the TV input source and amplifiers to use the media box, etc…

I’m not there yet, but what I have so far is a complete web version of my media box remote control commands (using a more practical layout), which can be used from any mobile device with a touch screen.

The web based remote control

The remote control web interface (WIP)

When the web page buttons are selected, the page sends the correct pre-recorded control code to the Kira device, which then send the infra-red stream to the device.

The actual code

Interacting with the Kira device from a web page was actually less simple that I expected, mostly because when I started this project I was a total AJAX n00b

The Kira own’s remote control page is very simple, it’s basically just a list of clickable buttons with a onclick event:

POWER
UP
DOWN
...
SHUT DOWN INTERNET

The send_code function is just a simple javascript function performing an AJAX operation4:

function send_code(code)
{
	var ajax=new XMLHttpRequest();
	if (code<100) code="0"+code;
	if (code<10)  code="0"+code ;
	ajax.open("GET","remote2.htm?button"+code,true);
	ajax.send(null);
}

So given a code between 1 and 128, the function creates an URL containing a string from remote2.htm?button001 to remote2.htm?button128.

The first idea I had was of course to try to just have my control panel link to these buttons (did not work), then to copy the ajax code to my own page (did not work either). The reason is because of some nasty security constraints related to something called cross-site scripting.

Basically in order to avoid hackers and phishers to exploit real sites and trick users by integrating some elements from a real site into another, there are restrictions on what can be used. An example of that is that you cannot make a script access data coming from another domain than the one where the script was loaded from. Bummer.

I needed some help.

Keen support

After few hours of head-scratching, duckduckgoing5 and stackoverflowing I decided to contact Keene's customer support. Of course I did that on Saturday morning, so I was planning to do something else during the week end... until surprise! I got an answer from the guy who wrote the firmware, complete with explanations on how to do things, some Wireshark packet dump showing the content of the data exchanged between the Kira device and the browser. Call me impressed.

It took some back-and-forth exchanges until we finally managed to find something that works well, so I'm going to share it here. Basically the idea is to not use the ajax method (due to the security constraints), but to instead use the UDP API.

Here is the result:

POWER
UP>
DOWN>


I admit the code is a bit violent, but it's working well 6.

The same code can be used to send any of the other cmdT commands described in Keene's API details document.

The next step

What remains to do in this part of the system is first to add the control codes for the remaining devices (the TV, the GET Digital Box, and the Thomson 5.1 system), then add support for sending multiple commands to multiple devices in one single request.

At this point my biggest hurdle is to get the page layout to nicely adapt to the native resolution and orientation of the device so it stays at a usable size on screen: A 2x2 pixel icon is not super practical to click on :)

I'm going to document all the parts of the system, and probably release the whole set of pages, scripts and css data so anyone can have fun of their own.

That's all for today :)


  1. Keene IR Anywhere
  2. I had to add a colourful gradient and orange neon glow effect, because truth be told, the while square box with cryptic text on it is not that exciting to look at.
  3. At the pain of having to deal with a security model which really does not want you to mix and match stuff from various sources, but that can be dealt with.
  4. The actual code is doing error checking, I removed it for the sake of readability.
  5. Other people are Googling, these days instead I'm using DuckDuckGo
  6. You of course need to replace the hard coded IP by the one used by your device.

Home-automation experiments

Inspiration

For about two weeks now I’ve been working on a small home-automation project. The inspiration came from few cool YouTube video, and in particular that one:

I’m not particularly fan of Star Trek, but the idea of controlling all the audio and video system from a touch screen using some fancy interface kind of resonated with my inner-geek.

So, what’s this home-automation concept anyway?

The home-automation concept

Well, if you push it to the limits, it is about making your house “smarter”, which mostly means you can control the power consumption, detect water leaks in the utility room, automatically regulate the temperature depending of the time of the day and your planning, start the coffee machine so it is ready when you wakeup, call the local police station if an intruder is detected, etc, etc…

There’s a whole industry1 out there ready to provide wireless cameras, power-grid based transmitters and controllers, security and temperature sensors, smart appliances of all kinds… basically if you can think about something in this domain, it probably exist.

So now, my idea was not to do a full home-automation, if only because it would be overkill for both my small apartment and my wallet. No, what I wanted to do was to have the possibility to replace all my remote controls by one central system connected to a server able to control the whole audio and video equipment, start and stop video streaming from the media center, and then build on that to add small things like gadgets to show the weather forecast, the departure time of the next metro, the latest news headlines, etc… perfectly doable, absolutely pointless, and so by definition something I absolutely needed to give a try at!

The motivation

Of course I have my reasons for trying that: I wanted to invest some time in improving my web-programming skills: Let’s face it, Defence Force was written in 1997 in good old HTML 3.2 transitional, entirely built as static HTML made from tables, and without any CSS, database back-end, javascript or php.

So this was the perfect project to motivate me: The control interface had to be practical and nice looking, had to work on computers as well as mobile devices, the real-time nature of the whole thing required some scripting as well.

I’m going to detail another day about how to control the electronic equipment, today I’m only going to show how to display when the next metro is arriving.

Json and the metronautes

I guess I started this project at a particularly awesome time.

Not one week had elapsed after the moment I decided I wanted to show on my screen the metro arrival time, that Trafikanten2 decided to provide a web API to access free of charge all the data they use for their main website and stops! Not only that, but they decided in a way that is actually practical and very easy to use.

All the information is available on the Trafikanten Labs page, but since apparently some people have been struggling about how to use it, I’m going to explain you now how to do it. It’s very simple, an you can almost copy-paste the code :)

This concept is very simple.

The API is basically just an URL to call, and in return you get some data formatted in JSON format3.

If you add a special ?jsoncallback=xxxx parameter at the end of the URL, the data returned will instead be a variant called JSONP (padded JSON), which is just exactly looking like a javascript function call (using xxxx as the function name).

Given this information, all you have to do is to find in the documentation the parameters you need to pass to get the data you want, and write the correct javascript function to process the result.




Then all you have to do is to interpret the data, which is of course dependent on what you requested. In this particular example I requested the real time traffic data for the metro stop Grorud (id 30119404).

The complete code

Here is the complete html code you can use directly to show the results

function convertDate(stringDate)
{
   var convertedDate=stringDate
   convertedDate=new Date(parseInt(stringDate.substr(6))); 
   return convertedDate
}

function showEntry(entry)
{
  document.write("Line "+entry['PublishedLineName']+" to "+entry['DestinationName']+"
") var aimedTime =convertDate(entry['AimedArrivalTime']) var expectedTime=convertDate(entry['ExpectedArrivalTime']) document.write("Arrival time - Normal:"+aimedTime.toLocaleTimeString()) if (expectedTime.toLocaleTimeString()!=aimedTime.toLocaleTimeString()) { document.write(" - Probable: "+expectedTime.toLocaleTimeString()) } } function parseResponse(array) { for (var i in array) { showEntry(array[i]) } }

Please excuse the quality of the code, it’s the first time I write javascript, hopefully I will manage to write better code when I understand a bit better how the whole language works.

Hope this helped!


  1. If you are interested, check out products by Z-Wave, X-10, Smarthome’s Insteon, Zigbee, Keene, Waveman, Atlona, …
  2. The company in charge of the metro, bus and tramway in the Oslo area.
  3. You can think of JSON as some easier to parse XML
  4. You can query the id for a particular stop using the API call /Place/FindMatches/grorud

Communication protocol exploits

If you found this page using a search engine with the hope of finding any relevant information about exploiting things on the Internet, you are going to be disappointed. What I’m going to write about now was relevant only in a now semi-distant past.

I have to start first with a disclaimer: What you will read is related to events that happened a long time ago, when we were young, stupid and lucky. If you try to do this kind of thing now, you may very well do some jail time and have heavy fines to pay as well.

3.5" floppy disk and a glue stick

Tools of the trade

Stamp reuse

Back in 1989 I was part of a demogroup called NeXT.

The founders were closely related to a cracking group called The Replicants and happened to use the same mail box address in Marseille 1. Soon NeXT got famous2 so we decided it would be a wise move to not use the same mail address as a software cracking group. From this moment we started to use my own home address for all NeXT related communication, which in theory should have been only related to swapping demo disks, source code, disk magazines, etc… only legal things.

In all our productions we clearly stated that we would answer to mail only if the sender provided a self-addressed and pre-stamped envelope, and if necessary blank floppy disks.

This worked fine for a while.

Then one day somebody mixed up the addresses and sent me a large bubble wrap envelope fully packed with cracked software. The problem was not the cracked software. The problem was that this person had the super smart idea to use the UHU Stick trick, and unfortunately the agents at the central post office noticed it.

If you never heard of it, the concept is super simple: Stamps are costly, so why not just reuse them! Of course the problem is to find out how to remove the stamping mark added by the post office.

Well, the solution is super simple: Put the stamps on the envelope and cover them by applying a thin layer of glue. The weapon of choice was the famous yellow UHU stick, just spread a bit of glue on the stamp, wait for it to dry. When stamped the ink will not impregnate the paper and just brushing the surface of the glue will move the ink out. All the correspondent has to do is to steam remove the stamps and reuse them again when sending back the mail 3.

One day the postman rang, he had a very serious face and was handling this bubbled wrap letter – covered with stamp marks and big scary red writings. He told me that this was a serious infraction to the Postal Service Code, and that the Postal Administration was considering filling a complain. I pointed out that it was obviously the sender who was in fault, not me… Fortunately I was able to show my good faith, because the postman had other letters for us, each of them had a self-addressed envelope in it, with a clearly written address and legit stamps on them.

He asked me if I knew the person, I answered that I did not know all the persons who were contacting us (because we were famous of course!), and that possibly they could track the culprit by starting investigations from the place where the letter was posted. Obviously he decided that I was being honest because I had no more problems.

Now well, I knew who the moron was, and I told him what I thought of him by phone the very same day.

Booby-trapped floppies

When they were are asked about the dangers of swapping floppies around, most people would think of the risk of being infected by a nasty virus. Sure, they were common threats, and I had my share of these on the Atari ST. The most common one was the Ghost Virus, which was pretty much innocuous by itself: All it did was to copy itself on any other non protected disk you inserted, and after a short while was swapping the vertical axis of the mouse so when you moved the mouse up the cursor would move down4.

So yes, Virus were a nuisance, but they were not as dangerous as booby-trapped floppies which would pretty much physically damage your computer. I know of two methods used to do that, and both involve killing the floppy disk drive.

The first method required some programming, and assumed that the recipient would actually run the program present on the floppy. The idea is to write a program that repeatedly tries to access a track out of the normal use range. The way a floppy drive is built is that the reading head is moving along an Archimedes screw, when the screw rotates in one direction the head moves slowly in one direction, when you reverse the movement it goes in the other direction. If you continue to rotate the head will eventually be stopped, but if you push again and again it will result in the head getting de-calibrated: the drive is never going to be able to read a standard floppy again, because these things need to be very accurately calibrated by special heavy equipment5.

The second method is a lot simpler: Slide open the metal protective door on the floppy disk and put some of your favourite syrup on both sides of the exposed magnetic surface. Then all you have to do is rotate the disk a bit so it’s does not look like anything is wrong, put a sticker with an impossible to resist appeal (like “Dungeon Master 1.2 final 101%” or “TCB leaked source codes”) and send to your target (generally a high-profile swapper you want to get out of business). If you are lucky enough the person will have read errors on the machine he first tries to use and will try on a second machine as well. Both machine will be unable to read any floppy until the glue-ish syrup is removed from the magnetic head, which will require the opening of the machine, removal of the drive, and very very very gentle care: Touching too much the heads will de-calibrate them.

Fun no?

I guess that post was long enough for today, next one will be about how to make money using the Minitel!


  1. The famous 5 & 7 Place des marseillaises.
  2. First with The Charts and then with the Phaleon Gigademo.
  3. Reusing the envelope by covering the original address is pushing the luck a bit too much.
  4. I eventually had to do a pass of eradication of this virus because it was buggy and would destroy the file allocation table if the disk was using a non system standard format.
  5. That’s the reason why there is some shiny red varnish spots in some places, it’s to stop vibrations and keep the assembly in perfect stable position

Simple C++ threading

For some reason, people tend to think that creating multi-threaded applications in C++ is a very difficult thing to do1.

It is in fact not that difficult, but there are basically two main issues to consider: How to make the code correct (it should not crash, deadlock, corrupt data, etc…) and how to make it efficiently use as many cores as possible2.

The usual suspects

One of the things I noticed is that quite often the code of the application is relatively decent, but the poor performance is due to the usage of inefficient functions called by the application.

Modern applications are not working in a vacuum; they have to allocate memory, load or save files, interact with the user through a GUI and input peripherals, they may use network connectivity, log information, encrypt data, etc… Gone are the days when a programmer would write every single component used by his application. Today you use APIs provided by third parties, and if these API’s are not designed correctly your application is going to suffer.

We are now going to investigate the fancy world of Logging Systems. Let’s examine how the typical logging code is done and what can be done about it.

Logs, the basic concept

Typically when you want to find out what your program is really doing you start adding printf all over the place3. Soon you realise it is not very practical, and you wish you had nicely formatted text files showing the log entries with accurate time stamps. Your program would look then like this:

#include "log.h"

void main()
{
  Log("Starting application");
  Log("Calling something");
  Something();
  Log("Calling something else");
  SomethingElse();
  Log("Quitting application");
}

and the result like that:

2011-02-19 08:23:00 Starting application
2011-02-19 08:23:00 Calling something
2011-02-19 08:23:01 Calling something else
2011-02-19 08:23:03 Quitting application

This is a very basic system, but with that you have a pretty clear idea of what was called, when, and by extension – how long it took to run -. A slightly more advanced system would use millisecond timestamps, and would allow you to add categories (information, warning, error, …) as well as advanced formatting to handle variables 4.

The devil is in the implementation details

The performance of such a system may be good, or it may be terrible. It all depends of how the Log function was implemented.

The simplest way to implement it would be something like that:

void Log(const char* message)
{
  handle=FileOpenForWrite("LOG.TXT");
  FileWriteToEnd(handle,message,strlen(message));
  FileFlushAndClose(handle);
}

Please note that this is not valid C++, it is just an example of the whole idea of adding a new line of text at the end of a text file. In the real world you would check for error conditions, use whatever file handling function you wish to, would handle the carriage return at the end, the timestamp, etc…

The subtlety here, is that most people write the Log system, test it, measure the performance on some small examples, find it satisfactory, and then run ahead using it without second thought. When they start to experience performance issues later on they will generally not think about suspecting the Log system because it was apparently good enough on the small initial tests.

What happens in the real world, is that two phenomenons happen: You may have reached some contention at the operating system level in the file buffering code, and you may be victim of thread synchronisation when you use the code in a threaded application.

So, what is wrong in this code?

Thread safety

If you use naïve code that shares common resources (in this case the file called “LOG.TXT”) without any form of synchronisation, what will happen is that the instructions in the function will get interleaved. This will results in unpredictable results, which most probably would be different depending of the operating system in charge of the handling of the files, the performance of the processor, etc…

If you want to have a rough idea of what will happen, try to imagine you are having two threads trying to print “Hello world\r\n” on the screen at the same time.

Which result do you expect:

Hello world
Hello world

HHeelllloo wwoorrlldd

HeHelllloo worworlld
d

The truth is, you don’t know because the result is not defined. Just don’t do it. You have to protect the shared resources to avoid simultaneous access to it. Either make sure that only one thread is in charge of writing information to the file, or use some of the synchronisation primitives provided by your operating system like the critical sections and the mutex.

Performance and synchronization

Ideally you want to be able to use your logger without incurring heavy runtime performance hits. If you have to disable your logger in order to use your program then you are never going to use it.

So, how bad is the performance of our naïve Log function? Well, it depends of how often it is called, of how efficient your operating system is to write to your hard drive, but also of how much stress you have on your disk at the moment: If you are copying a multi-gigabyte file in the background it’s possible that your Log function stalls for a while until it can actually write to disk.

If you want to be thread safe, you also need to have the synchronization primitive to avoid two simultaneous calls to Log to be interfering with each other, which in practice tend to make your threads to synchronize when they try to write to the log file. This is bad.

A stupid example

Let’s say we want to write a stupidly inefficient, pointless and incorrect program to compute the factorial of the 50 first integers. We could do it like this:

#include "log.h"

void main()
{
  Log("Computing factorial");

  Log("Starting 50 threads to compute factorials");
  int results[50];
  for (int i=0;i<50;i++)
  {
  	StartThread(ComputeFactorialThread,i,&results[i]);
  }
  Log("Waiting for all threads to finish");
  WaitForAllThreadsBeingDone();

  Log("Showing results");
  int results[50];
  for (int i=0;i<50;i++)
  {
  	std::count "Factorial of " << i << " is equal to " << results[i];
  }
  Log("Quitting application");
}

void ComputeFactorialThread(int threadID,int n,int &result)
{
  Log("Starting thread #" << threadID);
  result=1;
  while (n--)
  {
    Log("Adding value " << n);
  	result+=(n*n);
  }
  Log("Exiting thread #" << threadID);
}

Assuming the code is working (ie: that it does not overflow when computing 50!, that all the missing threading boilerplate is there and that the code actually compute a factorial), what it does is to start 50 threads, the first in charge of computing 1!, the second computing 2!, until the last one computing 50!.

These operations are very trivial, but since we are very insecure programmers we decided to log everything, so before multiplying each new value we decide to log the operation we are going to perform. Obviously it’s never going to be fast, if only because just calling a function to display a text takes more time than multiplying two integers together. But that’s not really the core of the problem: If the Log function was written correctly, it would just use the necessary time to receive the new text entry and return as fast as possible.

Instead every single Log operation is going to:

  • Try to lock the mutex (or wait until it gets available)
  • Open the file
  • Add a new line at the end of the file
  • Close the file while ensuring everything is really written to disk
  • Release the mutex
  • Return to the caller
Thread 1 Thread 2 Thread 3 Thread 4
Wants the lock Wants the lock Wants the lock Wants the lock
Has the lock Waits Waits Waits
Open File
Write To File
Close File
Releases the lock
Working Has the lock
Open File
Write To File
Close File
Releases the lock
Working Has the lock

When you have 50 threads running on micro-tasks, they will basically spend almost all their time trying to catch the mutex. As soon as it will be freed one other thread will have a chance to catch it while others still wait: Basically you just made your program single-threaded.

The solution

The solution, as often 5 is pretty simple. Instead of writing to the file directly in the Log function, just make it write to a queue and have a worker thread regularly empty the queue and perform the actual writing to the disk.

At first it may sound just like deporting the problem somewhere else, but if you think about it this allows some pretty nifty optimizations: If you write each line of text as soon as you receive it, you spend your time opening and closing the file. If you do that in a worker thread instead, then you can write a bunch of entries in the log file in one single operation, that’s a lot more efficient from a system and I/O point of view.

After this change, our new Log function looks like this:

void Log(const char* message)
{
  AquireMutex();
  Push(MainLogQueue,message);
  ReleaseMutex();
}

Note: It is sometime possible to use a “Lock Free” container instead of the Lock/Push/Unlock. As long as the atomicity of the operation is guaranteed it is fine.

And of course we will need our worker thread as well:

void LogWriterThread()
{
  while (IsRunning())
  {
    // Wait a bit
    Wait(DELAY_BETWEEN_WRITES);

    // Swap the queues
    AquireMutex();
    SwapQueue(LocalQueue,MainLogQueue);
    ReleaseMutex();

    // Is there something to write?
    if (!LocalQueue.empty())
    {
      handle=FileOpenForWrite("LOG.TXT");
      FileSeekToEnd(handle);
      while (!LocalQueue.empty())
      {
        message=LocalQueue.pop_front();
        FileWrite(handle,message,strlen(message));
      }
      FileFlush(handle);
      FileClose(handle);
    }
  }
}

If you are wondering about the SwapQueue, it’s an idiom I use very often when doing multi-threading programming. Instead of copying the content of the queue and clearing it, you just swap it out with an empty one: It takes almost no time if your container is implemented correctly. The result is that you keep the lock on the mutex for a very short period of time, so even during the regular moments when you flush the logged entries to disk, you do not lock out your other threads that try to write to the log queue.

The state of the art

I’ve done a small search on the examples of loggers you can find online, and they tend to be pretty bad. Most of them are pretty, seem to handle quite a lot of situations (multiple logs, template meta-programming to handle parameters, automatic creation and deletion of the logger instances, …) but many would behave terribly in real multi-threaded usage. That being said, there are few that seem to use some form of asynchronous file writing, these ones are probably ok to use.

So, if you decided to use a logger you found on the internet, I really encourage you to take a bit of time trying to understand how it was implemented in order to avoid performance issues later on.

Better safe than sorry :)

Have fun !


  1. Probably because unfortunately the efficient C++ programming style is not really what people got taught at universities. I wish university teachers had some actual experience in the real world instead of repeating the nonsensical crap found in most textbooks.
  2. Obviously, if making your code correct leads to making it inefficiently use your cores then you should not bother trying to thread it at all: Just keep the code nice and simple – and single threaded.
  3. Or std::cout, choose your poison
  4. But this is just minor implementation details, it does not change anything to the base concept and the associated issues.
  5. Some people tend to make things more complex than they really need to be. If you are not being paid by the number of lines of code you write, I advise you to try to write less code.

How fragile is this Internet thing?

Quite a lot of people these days take for granted the ability to communicate with their computers and mobile phones at any time of the day 1.

People are so used to this apparent dependability that in the odd case when somebody does not answer to a mail, invitation to a party, a greeting card, etc… that it must be that (s)he does not really want to. Well, perhaps they just never did receive the message in the first place 2.

One of the thing we’ve seen lately (among other) is that Internet – and the mobile networks as well – were actually quite fragile: A destroyed back-bone here, a revolution there, heavy handled filtering and censorship all over the place: No, you should definitely not consider your ability to use your communication devices today as something rock solid.

Internet was originally designed to be able to work in adverse conditions as a global nuclear war destroying a significant part of the world. The idea was to have as much redundancy as possible.

Internet traffic to and from Egypt on January 27- 28

Internet blackout

Trouble in store

This original intent has obviously been lost somewhere, because a government should not be able (technically) to just press a button to cut entirely its country from the rest of the world.

If you add to the mix the talks about net neutrality, the botnets attacks, the dissemination of supposedly confidential information, the data storage directives, the filtering of pornography (for my own good) or opposition sites, it’s clear that there’s a distinct opposition between what most internet users would like and what their enlightened leaders are pushing for.

2010 in France has seen the successful vote of the Hadopi and Loppsi laws. In the country of the human rights we now have institutional filtering of Internet, tracking of network usage, and a whole lot of other surveillance and control related material.

All over Europe everybody is busy implementing the Data Retention Directive. All over the world lists of dissidents (or potentially troublesome persons) are collected. 3 Nice world we are living in these days.

It’s kind of an interesting twist that during the same week we can follow the Internet black-out of Egypt, the Obama administration proposes a similar system for the USA 4.

TOR and Freenet will not help

With the increasing number of case where the freedom of speech has been threatened around the world, people have come with solution to restore the balance, generally using some form of encryption or haystack hiding principles.

Sure, hiding your controversial statements deep in packets, hoping for the government will not find them is nice. But your packets are not going anywhere if the tubes themselves are cut. So no, The Onion Routing, Freenet or Haystack are not going to help people who got their Internet access cut.

The only way you can really fight a low-level communication blackout, is to use alternate means of communication, and most of the time this will involve modifying modern equipment or using older technology.

Going LoFi

Remember how the resistance was sending messages from London to people all over Europe during the second World War? Well, they were simply using radio equipment, and some coded phrases. Anyone with a radio receiver in their house could receive the messages, making it very very hard to find the actual listeners.

The same kind of thing can still be done today, using powerful radio transmitters installed on bordering countries. You can even send data; you are not limited to voice and music. I remember that in France around 1984 there was a radio show broadcasting programs for 8 bit computers: All you had to do is to record the show on your tape deck, and load it later on your microcomputer 5.

This does not solve the problem of sending data without being caught, but at least you can get information broadcast from the outside world.

If you want to do the same thing to send data from the cut-out country, your best bet is to get mobile, and have your radio equipment ready to move at the first warning: It’s trivial to locate an emitting station by triangulation. Alternatively, you can decide to broadcast only for very short amounts of time, at random periods of the day. Still dangerous, but should work for a while.

Apparently, some people managed to communicate using their old Dial-up modems, you can read more on LifeHacker. Of course this will fail as well if the land-lines phone network is shut down.

Going WiFi

Now I’m entering in the realm of the guess. I’ve been searching around, but could not find anything about it. I can’t possibly imagine that nobody tried, because the idea is so obvious that I can’t see how it would not work. If you can contribute, you are welcome.

Basically the idea is that today Wifi equipment is nearly ubiquitous in large cities. It’s so widespread that it’s actually a pain to find a place where you are not able to detect at least one Wifi network, and in a previous house I was able to see 9 different ones.

Most of the Wifi hardware (routers or access points) is both programmable and vulnerable: The number of security issues found on the average Wifi equipment is kind of scary. So technically, writing new firmware that would change the way these small devices work should not be much of a problem, and making it easy to install (and possibly transmits from one Wifi device to another automatically) should be doable.

The concept is just that given the high density of Wifi devices, it should be possible to have them maintain some kind of network (effectively a “internet over the air”) using the access points and routers as nodes. At this point all you need is one person managing to get an actual access to the outside world, and then you are back on the real internet, with an admittedly super slow and not reliable network, but at least something that work. Just add some solid encryption and you can relatively safely send and receive messages.

Would this work?

Oh, by the way, have an happy new year 2011!


Edit: Found a bunch of interesting related links:


  1. They probably never experience the thrill of detecting the connection speed of a dial-up connection based on the frequency and funny noises – this double springy sound that tells you that your 56k modem managed to negotiate the x2 protocol ;)
  2. Like one of my sister sending SMS to my father who for some reason can’t receive SMS on his telephone; and my other sister asking me why I’m not sending her mails – then realizing she never actually informed me she had moved to another ISP.
  3. I’m pretty sure that if I started to blog about the American or French Government in violent enough terms (while staying polite of course) soon enough I would be intercepted at some airport for some polite discussion with the immigration offices. Oh and my computer would of course be scanned and confiscated. Actually since my website is hosted on a .org domain by Yahoo! it would most probably be put offline…
  4. But of course it’s to protect the country from cyber threats.
  5. Well, assuming the transmission was correct, that the tape was good, that your mother did not decide it was a good time to start the washing machine, and of course that the computer gods were happy that day