24th June 2016
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.
20th June 2016
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.
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.
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.
26th May 2016
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?
7th May 2016
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
- No NVIDIA CUDA
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?
Finally out of bed
21st February 2016
A while ago, I caught something that looked a lot like a flu, but wasn’t one. It’s the season; my four year old daughter goes to school, and at that age, they seem to collect and exchange just about every single illness possible. So that’s what she did; she caught a flu-like illness, brought it home, and gave it to everyone. Parents will know what I’m talking about.
Now, quite a few people think that flu-like illness is the same as a flu. It isn’t. I had a slight fever for a day or two, I coughed, I had a runny nose, but I could still get some work done. Not 100%, but the advantage of working from home is to be able to do the hours I want. I slept a little in the afternoon, went to work later, and stopped later. That lasted a little over a week.
When I finally got rid of the flu-like illness, I was tired. Very tired. I could get up, I could work, but I was tired. I suppose that wasn’t really the right time to catch the flu, the real one.
This is the first time I’ve been able to pick up a laptop and write anything, please be indulgent.
The flu this year looks hard. I’ve had it for over two weeks, and it still isn’t close to being over. The fever has dropped, but it went up to 40.8°, and it takes a lot of energy to heat up 100 Kg of James to that temperature. That was during the day, but the worst part is that the nights were worse. I can survive being ill, and even with a fever at over 40°, I didn’t call the priest, not even once.
Whenever I’m ill, I normally sleep, as much as possible. I’ll take a few pills, but the best medicine for me is sleep. I’m a lucid dreamer, and while I don’t do it every night, if I need to, I control my dreams to make sure that I work on something at night, or simply make sure I don’t have nightmares. Imagine my frustration when that wasn’t possible.
A while ago, I watched The Martian. I liked that film, but I still have to see Neil deGrasse Tyson’s comments on it. During one night’s “sleep”, I relived Watney’s rescue (if you haven’t watched the film, spoiler alert). At the beginning, everyone has their job to do; navigation, rescue, secondary rescue, pilot, etc. So, for an entire night, I relived Watney’s rescue, from the perspective of a different crew-member. It was kind of fun the first time, but the sleep cycle itself lasted something like 40 minutes, and then another 40 minutes to be able to sleep again, and once again, the same film, the same moment, and from a different crew-member. No matter how much I tried, I couldn’t control the dream, and I couldn’t change the subject, or any detail. That was a very interesting night…
My sleep pattern has slowly returned to what it was, or close enough. Last night, I managed to sleep all night; I did wake up a few times, but I was able to go back to sleep quickly enough. From that point on, I know that I’m winning, and that I’ll soon be back on my feet, even if it might take a few weeks to get back to something like 100%.
Recruiters, the good and the bad
11th December 2015
It started like any other time, an invitation on a social network. Normally it would be LinkedIn, but this time, it was Viadeo. A contact request from someone I’ve never heard of, from a company I’ve never done business with. I clicked on the profile and had a look. A standard image of a young gentleman, a quick text presenting his company, and a tag clearly indicating that he is a recruiter. Oh well, why not. I accepted, and went back to work.
15 minutes later, my email client popped up an info bubble, new message on Viadeo. I went to have a look. The recruiter that had contacted me had just really contacted me.
“Hi James Langbridge, I hope this email finds you well.”
It does, thanks, but the “Langbridge” part is a little too much. Just “James” is fine.
“I saw your profile on <insert job board here>, and wanted to talk about an opening I have.”
No you didn’t, I’ve never been on that particular job site before, and besides, if I had been on a board, you would have found my contact details there, and you wouldn’t have had to go through Viadeo to contact me. This is a case of bad Friday afternoon copy/paste. Oh, and while we are on the subject, if you really are serious about recruiting people, get a Premium account, and don’t just randomly ask people to connect just to send a message.
“My client is looking for a lead Java developer for an exciting new project.”
Before sending me anything, take the time to have a look at my CV. We are developers, we know how this works, we created the database search routines that you use to find us. You went through a database, looking for CVs talking about Java, and you found mine. Well done, except you should have looked a little closer. The last time I did anything Java related was over 10 years ago, and it was only for 6 months. A few years ago I did work for a company that did a lot of Java development, but they needed someone to work on the hardware, not on the Java development. Any student fresh out of school is probably a better Java developer than I am, and am nothing close to being a “lead developer” in Java. C maybe, assembly why not, but not Java.
“This would be a three month contract in <insert name of town on the other side of the country>”.
Thanks, but no. I’m a father of two, and while that isn’t written on my CV, and you have no way of easily finding that out except through a two hour session Googling anything there is to know about me, if you really want to know more about me, give me a call. It does make things so much easier.
I ignored the rest of his message (but I did see something about “if you have any friends who might be interested, let me know”), and sent a quick message. Hi. I am not the person you are looking for, not even close. Hope you find the ideal candidate. Kind regards, James” and left it at that. I also removed him from my Viadeo contacts, because I’ve never done business with him, I probably won’t, and to be honest, I didn’t like the initial contact. 20 minutes later, he sent me another invitation, which I ignored.
This isn’t the first time this has happened, I don’t even know how much this happens. I’ll have to set up some statistics for 2016 to see what exactly happens.
Recruiters, please, take a little more time to get to know the person in-front of you (or on the other side of the screen). I’m not the first person to write this, and in fact, compared to some of the posts I’ve seen on the subject, I’ve been relatively lucky. I have had some excellent contacts, and one of them (who did indeed recruit me for a company), is now a close friend. The company he worked for has always been very good in dealing with people, and often ask a question you don’t get asked very often. I can see what you can do, but what do you want to do? If you take the time to get to know me, and what I’ve done, then you stand a much better chance. In fact, the friend in question asked me if I knew anyone who would be a good fit for a job, and I put him in contact with someone who ended up being the ideal candidate. The gentleman I met on Viadeo gave me no reason to want to put him in relation with friends.
I know this is a touch market, I’ve been contacted by three or four companies in the same week trying to set me up for the same job offer, but there are people who do it better than others, and that counts. You might not be representing the end client as far as we are concerned, but you are representing a recruiting company, and developers have the habit of talking to each-other. This is O so true of French SSIIs; engineering companies that have a rather bad reputation when it comes to recruitment. Again, there are the good, the bad, and the ugly. And when 20 of us are in the same room, from 5 or 6 different companies, we talk, and we talk a lot. We don’t exclude any details.
Not all recruiters are bad. As I’ve said, I know some very good ones (or at least ones that I consider to be good). I’m still in contact with a few of them years later, and they keep on calling to know how I’m doing, to see if there is anything that they could help me with, and anything that I could help them with. And they are the ones who read online resumes, and take note of the details.
6th December 2015
“Hello world!”. It’s amazing how often that phrase has been used. As a developer, I’ve seen it often as a way to show that a program works, and even in embedded systems, “Hello world!” is still a great way of showing that everything works. So yes, I’ll leave the default WordPress title of “Hello world!”, it does suit the situation.
Yesterday, a friend contacted me, and asked me what was wrong with my site. I wasn’t worried, since he made a mistake with the URL, but when he sent me a screenshot, I got worried. It wasn’t a DNS problem, it had the logo of my provider, and an interesting “Welcome to your default website” on the same page. I fired up a new tab, entered the Packetfury URL, and I was welcomed with the same screen. Not a great start to the day.
Long story short, I installed an Exchange server a few days ago, and to do that, I needed to change my DNS settings. I still don’t know what went wrong, but everything was pointing to the wrong place. So, why didn’t I just reset the server settings, and reinstall what I had? I could have, and I almost did, but I have been having problems with Packetfury for some time now. It used to run on a previous version of Joomla, and was no longer supported. The irony is that I had just updated from version 1 to version 2, and a few months later, version 2 was end of life. Attempts to update to version 3 crashed everything, forcing me to reinstall. I figured that the problem came from the multi-language component of Joomla, but I didn’t have time to look further. Now that I have a chance to redo everything, I looked, and Joomla 3 even comes with a multi-lingual component, simplifying things.
Okay, so that’s all about Joomla, but what about WordPress? Well, Joomla never did what I wanted it to do as far as blogging was concerned, so now I have the best of both worlds. WordPress will be used for the blog, on a separate domain, and the original Packetfury will still be there as a collection of notes and development documents.
So yes, I can now say, “Hello world!”.