Inferno, or the art of burning books

Whenever I’m travelling, either abroad or simply on a bus, I love to read. My ereader follows me everywhere (almost). I’m also a fan of Dan Brown, and while Digital Fortress wasn’t my favourite, I loved the others, especially Inferno. Slight spoiler alert.

The end of Inferno is one of the things that made people call Dan Brown a literary genius. I never saw it coming, not even close. The end was fantastic. Since Angels and Demons and The Davinci Code were fairly well adapted to the large screen, I ordered Inferno on VOD. We sat down, and watched it (Anne-Laure has also read the book, and loved it just as much as I did). And we were really, really disappointed.

Tom Hanks is a great author, and we both really love his films. The Professor Langdon is well portrayed, and the character is almost as rich as what you read in the books. The beginning keeps you on edge, but about half way through, we weren’t comfortable. There were a few parts missing, things that we had read in the books that just weren’t there. Not everything can be adapted, but still. And at the end, that was it, we were disappointed, and actually pretty annoyed. The entire end had been changed; one of the characters was completely out of play, and the Dan Brown masterpiece had been transformed into something that was about as bland as Hollywood can create. He saves the day. That’s nice, but we really are missing out on the exceptional conclusion, where you know you are going to be late for work, but you really have to read the last 30 pages, to understand how, to understand why, and to try and wrap that around your brain, while silently mouthing the word “wow”. Nope, bland. It was only afterwards that we had a look on the comments on different sites, and people who had read the book had written reviews that went from disappointed to irate.

It is still a pretty good film, but you have a choice. Read the book, or watch the film. Don’t do both.

Happy New Year!

Okay. To be honest, I’m a Grinch during the Christmas/New Year season. That doesn’t stop me from wishing everyone a Happy New Year, but let me explain.

I’m a geek (or more precisely, a nerd), and while 2001 was the beginning of the new millennium, for me (and my geek partner), it was Y2K. I won’t go into details, but let’s just say I spent New Year’s Eve in the ER ward, and the bad news came a few minutes after midnight. So no, I don’t normally spend my New Year’s Eve drinking (I don’t anyway), and partying. I’m also a Grinch because I don’t see how things change in a single day (plus I never seem to be able to keep resolutions, anyway).

That being said, it doesn’t stop me from wishing you joy, love, health and awesome projects for 2017, since that is the kind of thing that I wish everyone every single day. Let’s not make 2017 a geeky year, let’s make every single day from now on geeky, nerdy, and a fantastic opportunity to learn new things!


I’ve loved small factor computers for some time now. I have a large desktop at home, an old 2nd generation i7 with 32 gigabytes of ram, and a more modern laptop with a 4th generation i7. We’re talking power here; a 4-core, 8 thread processor, all in a heavy 17″ chassis with about 50 minutes of battery life. The battery life doesn’t bother me, if I take it anywhere, it is to use it as a second desk, plugged into the wall.

A long time ago, I used to work for a company that made SaaS products for auditing. Since the software was designed to be used anywhere, they had subscription plans that included a netbook. They then hired me to create a lightweight Linux distribution to go on them. The best way to get to know a machine is to use it, so I did most of my work on the 10″ screen. Of course, in the office, I would connect it to an external monitor and keyboard, and I had a fast computer on the side for kernel compilations (ever tried to install Gentoo on a netbook? Don’t.) but I made myself use the Intel Atom based laptop. If I started complaining that something was too slow, then it was up to me to accelerate it.

A few years have passed since then, and the screen size has increased slightly. I prefer 11.6″ screens now. I have huge and heavy systems, but I still like ultrabooks that can fit between two shirts in a suitcase and go unnoticed. I had a Sony Vaio Pro, but it has Wi-Fi issues, and it also had something that I find really, really annoying. The fan would kick in for just about anything. A simple email would sometimes get the fan going, and while it wasn’t the noisiest, it did bother me. The laptop wasn’t only for the desk, it came with me on trains, planes, in libraries, schools and on holidays. Writing in bed at midnight while others are sleeping is fun, but when the fan kicks in, it becomes a nightmare.

Enter the Intel Core M. It’s fanless design has made quite a bit of noise recently (pun intended). If you have seen the new Macbook, then you will know what I’m talking about. Thin, and silent. I almost bought one, but I couldn’t live with that keyboard, it wasn’t possible. Time to change computers.

A long, long time ago, well before working with the netbook company, I worked for NEC. I was really excited about the new Tablet PCs that were coming out, and I wanted one. I never did manage to get one, though. I loved the idea of a computer that was something like a sheet of paper, with a stylus. So I had a closer look at the more recent 2-in-1 machines that are coming out.

So I have a Core-M, and people are sorry for me. I get comments like “Oh, quick, send it back before it is too late”, or “you’ll never get any performance from it”. In a way, they are right, I suppose, I won’t. But then again, I don’t need performance. I run most of my work inside a virtual machine, where I can have compilers, profilers and other CPU hungry applications. For the machine that I use to write with, I just need it to be comfortable. Then I tell people the real story, the fact that I actually went out of my way to get a Core M. Yes, I spent days looking for the right machine, and I think I’ve found it. I looked at the Microsoft Surface Pro, but I didn’t like the lack of memory or hard disk space; 4Gb and 128Gb respectively. The Samsung Tablet Pro had the same sort of issue, and a few other problems due to viewing angles. In the end, I went with a Lenovo Ideapad Miix 700. It comes with a Core-M5, and has 8 gigabytes of RAM, coupled with a 256Gb SSD. And no, it doesn’t have a fan. You can push it as far as it will go, and while the CPU may well start thermal throttling, it won’t make a sound. It gets warm on the outside, but not hot. I can hold it in my hands without a problem.

So I finally have the perfect machine for writing, let’s hope that I can actually get some writing done! This blog (and indeed the entire site) need some love.

ARM mbed Ethernet Starter Kit

My review of the ARM mbed Ethernet Starter kit is now live! An awesome kit, with everything needed to get up and running with mbed quickly. The shield alone has most of the things you need to learn about digital I/O, analogue, LCD screens and even has a slot for adding XBee cards.

arm mbed ethernet starter kit

The complete review is available at

Brexit effects

I went to bed a little worried last night. I knew the Brexit vote was in full swing, and I knew that it was going to be tight. It shouldn’t have bothered me, since I don’t actually live in the UK, but it did.

I woke up early this morning, and one of the first things I did was to look at the news on my phone. The results weren’t final, but they did seem to tend towards a Leave result. After my shower, the results still weren’t final, but the Leave vote had just hit the 50% of voters mark. Leave it is then.

What motivated the UK to vote to leave Europe, I do not know. I’ve been living in France for 25 years now, and my rare visits to the UK were business trips, where I went to get the job done, and then went back home.

So, Brexit vote. I wasn’t allowed to vote, because I had been away from the UK for such a long time, but now that the Leave vote won, I’m one of the first to feel the effects.

I’ve been living in France for 25 years now. This is my home, and I’m allowed to settle in without anyone asking any questions. After all, this is Europe. I can travel to any European destination without the need for papers, permission or anything else. I can work in any country I want, pay my taxes there, and benefit from the social security. All of that is about to change.

I’m British, living in France. Since the UK wants to leave Europe, it takes with it all of the negotiations in place. I don’t know what will happen when the UK does leave, but in theory, if everything goes with it, then I need to obtain a green card equivalent, I need to obtain a work permit, and possibly quite a few more other things. I need to check my social security status, look closer into my retirement situation, and make sure everything is up to date. I’m fairly lucky, relatively few things change for me. My sister is in France, and her situation has just become more delicate. My mother is also in France, and her situation is now critical.

Today I was in a state of shock. This country has now become foreign, or more precisely, I’ve become a foreigner in the country I love in, where I have founded a family, where I’ve spent the most important years of my life.

Machine love

A notification popped up on my screen, before disappearing a few seconds later. Someone had mentioned me on Twitter, a name that was familiar. Minecraft could wait, I went to see what this was about.

Ethan Lee, also known as flibitijibibo (I copied and pasted that, I still can’t write it without looking), asked a question, and it was a very interesting question.

flibitijibibo's tweet

If you don’t know him, have a quick look on Twitter. If you use Linux and like gaming, chances are you already have reason to thank him. He’s a very good developer, one that loves his job, and if I’m not mistaken, is becoming his own boss, doing what he loves best. His site presents him more than I could, but he is rather modest, he deserves more credit than he gives himself (probably one of the reasons why I like him). He also called me a “very nice person” once in one of his game’s README files, but for the life of me, I can’t remember which one it is. Anyway, I digress.

I would be interested in knowing if people really wanted to program for the machine they fell in love with, or loved programming in general.

Interesting question. Time for a quick history lesson, I suppose.

I was born on the 14th of April, 1977, in Singapore. I’m British, my parents are English, and for several reasons, my mother moved back to England shortly after my birth. My mother had a certain lifestyle which meant that I was often on my own. I don’t think I have any reason to complain; what I didn’t have in the way of family, I had in the way of learning resources. Books, videos and above all, a computer. A rather fancy Apple IIe, quite a beast for the time. I played a few games, wrote some extremely useless documents and had fun with spreadsheets. I was fascinated by the pure logic of this device, and also fascinated by the electronic expansion boards inside it. However, I didn’t really have a way to program it, so that had to wait for another year.

My first “personal computer” (not to be mistaken with a PC), was a Spectrum ZX81, a replacement for the family ZX80. Based on a 3.25Mhz Z80, it had a whopping one kilobyte of RAM, but if I’m not mistaken, I had an elite version that came with 4Kb of RAM. I had a few games, but the interesting thing about this was the BASIC interface. Just as a reminder, a very simple BASIC program looks like this:

10 PRINT "Hello, world!"

20 GOTO 10

The interesting thing about the ZX81 was the keyboard. Each key had the letter assigned to it (of course), but also a graphical character, and a BASIC instruction. To write “10 PRINT”, you would actually type in 10, and then the letter “P”, which would complete the “PRINT” directive.

ZX81 Keyboard

This was interesting. I now had all the instructions available in BASIC, and little chance of writing something wrong, and now it was time to learn. At the age of 6, I wrote my first program. It was particularly boring, and was a crude imitation of teletext, something popular on televisions at the time.

Time went by, and computers came and went. Spectrum ZX82, Spectrum +3, Commodore 64, and then finally, the Amiga 500. Now this was the machine that got me hooked. It was based on a Motorola 68000 running at 8MHz, and had 512Kb of RAM. The games were awesome, and so were the utilities. I saved up some money, and bought AMOS, a BASIC IDE (well, sort of), and could write awesome games. I published my first “game” at the age of 14, a platformer called Kitten Curse. Apparently, it has fallen into the oubliettes of retro gaming, where it belongs. I wasn’t very good at graphics or music, so they were both terrible. The level itself was rather easy, but the code was all mine.

In parallel, I had come to love electronics. I was fascinated by the insides of a computer, and while people told me to try and build my own radio receiver, I preferred digital systems (and I still do).

I moved to France, and apart from “Hi, my names is James, and I have a passport”, I couldn’t speak French. Life is “interesting” when you are 15, and don’t have any friends, living out in the countryside. To cheer me up, my family bought me DEVPAC, a programming environment for my trusty Amiga. DEVPAC wasn’t BASIC, it was assembly.

Assembly let me do some incredible things, pushing the processor to its maximum potential. I made a few more games, including a second port of Kitten Curse, that was probably even worse than the first one. Hey, give me some credit, I was only 16!

Somewhere in my brain, a few neurons fired. This was a mix of both electronics and programming. I knew exactly what happened on the processor, and how it communicated electronically to other devices.

This is the difference. I wasn’t programming the computer, I was programming the microprocessor. That might not sound like much, but it made a difference then, and it still makes a difference in my career today.

When I tell the story, I get a few questions. Hey, you started so young, you must be an awesome developer! No, I’m not. I know what an awesome developer is, I’ve worked with a few, and I’m not one of them. How come? Read on.

Eventually, the Amiga died, and something died with me. I had little choice, it was replaced by a PC, a 386SX25. That machine was awesome, and gave me some pearls like Monkey Island, Lemmings and the BASIC pearl Bananas.bas. Then I tried x86 assembly. I hated every second of it, and I still do. On my 386, there were over 10 types of JUMP statements, and that was just the start. I quickly gave in.

This as a grey period of my development life. I retried BASIC, fiddling around more than developing. I tried C, and it was kind of fun, but I’d lost the love I had. Still, I found out that I could do hardware programming in C, and so my 386 became a control unit that managed the heating of my student flat. Originally, my system used the parallel port, but I soon created my own ISA card. That was fun! Just when I got used to it, they replaced ISA with PCI. Yes, I could play better games, but I could no longer make my own cards.

Something happened. We had some friends that were in the computer industry, and someone gave me an Acorn Archimedes. I forget which model, but I believe it had an ARM3 microprocessor. It had a version of UNIX, so I had a few games, a few tools, and everything I needed to create programs. It took me a while to try ARM assembly, and my only regret is that I didn’t try it earlier. Memories of my previous joy flooded back as I had a look at the assembly instructions, and the power they had. Everything was fluid, and I started writing assembly again. Quite a few years had gone by, and assembly was no longer a viable option for writing applications. While it was fun, it just didn’t work out.

I was back on PCs after a while, and I have been ever since. However, a lot has changed. Despite what I believed, I’m still working on ARM assembly, only this time, I’m using my PC to compile for a tiny processor. I’ve swapped my 320×200 screen for a triple full-HD monitor setup. I’ve swapped my 8MHz processor for a 4GHz multi-core processor. I’ve swapped my 880k floppies for a 4Tb hard drive system with a 12Tb NAS. However, I haven’t swapped my love for programming embedded systems. I love talking directly to hardware, knowing exactly what the output of a particular pin is. I love talking interrupts, cache, sleep modes and bootloaders. And don’t even get me started on optimizing! I’ve found my love again.

Well, sort of. I live in France, and after a professional difficulty, I went to work for a French consultancy agency. This is where things went very, very wrong. This isn’t what people think it is. It is a collection of engineers who are very close to burning out, exchanging stories of nightmare missions and situation. To name but one, this particular company sent me on an international trip to¬† help a client. Two weeks in Brazil. Sounds nice? Well, for a start, we’re not talking beaches, but car manufacturing factories. The night guard at the hotel was armed, and didn’t joke around. I had strict orders to stay in the hotel, and not to leave without an escort. My girlfriend was also 8 months pregnant, and I could have missed the birth of my daughter (luckily, I didn’t). To top it off, remember the Air France flight AF447? The infamous Paris – Rio flight that went missing. No, it wasn’t that flight I was on (for obvious reasons), but it was the same route, not too long afterwards. And the co-pilot of AF447 was a personal friend of ours, so our wounds were fresh. At the time, no-one knew what happened. I arrived 2 hours late, and I turned my mobile telephone on to find several messages from my girlfriend, in tears, pleading with me to tell her I was alright. And this wasn’t even the worst story.

I used to love developing, but two things stopped that. One, the way developers are treated here in France. One of those clients rated developers work by the number of lines they wrote. The managers barely knew what an IDE is, but judged us by the number of lines of code we wrote. Java developers could write hundreds, but I was an assembly developer. So, out of rage, I wrote my cache control program, adding 500 lines of “NOP” (short for No OPeration, or basically, “do nothing”). That actually worked, I was pushed to the top of the list. Secondly, at close to 40, people asked me what went wrong during my career. Wait, you are 40, and you are STILL a developer, and not yet a project manager? Poor you! No, not poor me, I’m doing fine, thanks.

So, to answer Ethan’s question, yes, I did love writing for a specific computer (or at least, processor). I’ve tried writing multiple languages for PCs; C, C++, Pascal, assembly, Scala, Java… No such luck. Ironically, I do love Python, though. I don’t have to deal with memory, or timing, or data types, or anything, but I still love it. Maybe I do love programming, now that I’ve found a language that I love, as well as a computer that I love. Or maybe, after 2000 words, I still can’t answer Ethan’s question. Maybe I just needed more time, but a few things came along that just made me stop.

So, who am I today? I’m not a developer with Google, I don’t work for a Fortune 500 company, I work for someone much less fortunate, myself. Someone at ARM once called me world class, but I still don’t believe him. I now spend my time telling people how these things work. As Paul Rako from Atmel once said, I’m no longer an engineer who writes, but a writer who engineers. I’m jealous of people like Ethan who still love to develop. I really am. Now, enough reading me, go to his website, have a look at what he’s done, and go and play some of the games he’s ported. Off with you. Oh, and if you want to start programming ARMs or Arduinos, have a look at my book, you’ll understand where I am today.

Danger zone

France has been an interesting place to live in, especially the last few weeks. A new law has been passed (well, technically, forced) that changes working conditions. As usual, the immediate reaction was nationwide strikes, something that seems to be a national sport.

On the national news (and even on international news), three cities have been mentioned. Paris, because, well, Paris. And also Nantes, and Rennes. Both of these cities have something in common; the Nantes airport is to be replaced, by creating a brand new airport, somewhere between Nantes and Rennes. Both cities should then be able to use this new platform. There is a debate as to whether the new airport actually has any use; there are people who say that Nantes Atlantique is saturated, others that say that it is far from it. I won’t go into that here.

The fact that the airport is in dispute, and has been for over two years now, means that we have our fair share of “zadistes”, people who have settled in the new airport site, and who are violent to anyone who attempts to enter, especially law enforcement agencies. They haven’t been in direct conflict with the police force for some time, so when a strike was announced in Nantes, it looks like quite a few came over to spice things up. Within a week, the damages in Nantes grew to over one million Euros; smashed glass, stones torn from roads to throw on the police force, degradation of buildings and tram lines. There have been numerous arrests, and even prison sentences for some, but it continues.

I work from home, and I like it. Petrol is in limited supply right now because of the strikes, so I normally get my daughter from school using public transportation (the bus system runs on natural gas, and the trams are electric). Today, I had a nasty surprise.

I took the bus line down to the tram line, as usual. I had headphones on, and I was reading an ebook. I didn’t look at the website to see when the bus would leave, they are frequent enough to not need that. Maybe I should have.

When I arrived at the tram station, there were trams waiting at the station. Far too many, and lines that shouldn’t have been there. I walked up to the driver, and asked what was going on. All transportation to and from the center was cancelled, violent strikes. That wasn’t good news, I wouldn’t be at the school in time. Earphones back in my ears, I started walking. There wasn’t any other option. I walked about two kilometers to get my daughter, but the more I got close to the school, the more I worried. When I arrived in front, it wasn’t something that I wanted my daughter to see. Smouldering dustbins, holes in the pavement where stones had been torn out, and thrown into the surrounding buildings. Plus, the unmistakable smell of tear gas. I grabbed my daughter from daycare, put her on my shoulders, and got out of there as fast as possible.

There were still a few pockets of “casseurs” as I made my way back to the bus stop. Here and there, a few police cars would go by, sirens wailing, and a few people would suddenly disappear.

This isn’t a warzone, this isn’t civil war, this is “just” a strike with people who are bent on destruction. While I don’t agree with unions blocking petrol refineries and transport, I know full well that what I’ve seen has nothing to do with them. Nantes has been the victim of a lot of violence recently, and the police force has been fairly gentle, not provoking them, and only intervening when absolutely necessary. This time, they didn’t ask questions, they acted immediately. I really hope that means that the violence will stop. The only thing separating the school playground and the street violence was a large iron door.

Apple vs Windows?

Before I even start, no, this isn’t a request for a flame war. I’m passionate about my work, but highly tolerant about choice and differences. Actually, I like having several systems, it keeps competition on its toes, and no, I don’t think that any system is better than another, not for everything, at least.

So, what’s with the title? Well, I’m considering a switch. I’ve used and loved Linux, but for my line of work, I just can’t. The other day, I was invited to a conference, and I had to install a Skype for Business plug-in that just doesn’t work for Linux (well, actually, it didn’t work for Window either, the client had to switch conference tools, but anyway, details). My clients use Microsoft Office, and to be honest, as a Linux fan, Microsoft Office just rocks. I’ve never used anything that comes close, and all my clients use it, so I do too. Now, Office works on Windows and MacOS.

So, why the switch? Aren’t I comfortable with Windows? Actually, I am. I kind of like Windows 10. I loved 7, and 8 was just too much of a change for me. I really do like Windows 10. I also like MacOS, even if I haven’t used it for quite some time. I went to the Apple Store a while ago with my girlfriend to get her brand new iPhone, and I had a quick look at the different computers. It reminded me of something that I loved and miss – Time machine. I haven’t found anything that comes close.

I like Macs. I’m not a huge fan of the aluminium exterior, but I am a fan of their solidity. Yes, they are more expensive, and before people start with the “with the price of a Mac, you could buy two Windows systems”, yes, I am aware of that, but one, I’ve rarely seen anything built as solidly, and second, Mac computers retain a fairly large portion of their initial investment; you can sell it a few years later for a decent amount.

I use two systems daily, and three systems at least weekly. I have a heavy desktop, it runs an i7 with 32Gb of RAM; that is where I do my video editing, virtual machines and other heavy work. My laptop is also an i7, with 16Gb of RAM, and I use one or two virtual machines. It is basically my desktop when I’m out of the office. It works, it actually works very well, but it isn’t quite as comfortable as the desktop, and it only has one screen, the desktop has three. Then there is the ultraportable, an 11″ Sony Vaio Pro, an i5 with 4Gb or RAM. This is used solely for writing, I don’t do any editing, recording or virtual machines. All three make up my workforce.

So I still haven’t answered the question; why switch? My desktop computer is lagging behind, and needs an upgrade… While I’m at it, I might as well upgrade to a Xeon platform, possibly with two CPUs. Hence, a look at the Mac Pro. I don’t really have time to fiddle any more, and the idea of a guarantee does sound nice. Apple has some awesome video editing programs, and Time Machine is definitely a plus. So, advantages:

  • Nice new hardware designed to last
  • Apple Care that goes with it
  • Final Cut Pro
  • Time Machine
  • UNIX command line for Python programming

There are, however, downsides:

  • Missing out on quite a few Steam pruchases
  • Expensive!

The problem with me is that if I change one system, I change them all. If I have MacOS on one computer, I don’t want Linux on another, and Windows on a third, I want them to be all the same. I want to have the same desktop no matter which system I use. I’ve been to the Apple Store, and I got an estimate. It’s expensive, I will admit, and it is probably only just the start, but I can see quite a few advantages to switching.

What do you think?

Bluetooth in Action 1 – Guided Tour of the Bluetooth Module

A while ago, Silicon Labs sent me some awesome Blue Gecko wireless modules. I’m looking forward to having a lot of fun with these, and I’ve created a new video series to go with them. I’ll be talking about programming them, and I’ll try to come up with some useful example programs and applications. However, before we get started, let’s look at what the kit contains.

New toys from SiLabs

There was a knock on the door, and a delivery guy came with a fairly large box. Yay! I’ve been expecting this one. So I opened it up, and had a look.

SiLabs cards

Time to have a closer look at their wireless kits, expect a few reviews and YouTube videos.