Laptop alternatives to Mac

As computer people, we’re never happy with the state of things. But maybe that’s how it should be? Maybe. Anyway—I have been using Macs for many years, and they do stupid things from time to time (perhaps more and more with each revision, but that’s for another story). So I keep checking other platforms to time to time.

Windows has the biggest platform share after all, and we want to make sure that Firefox is absolutely awesome on it. So I decided to contribute to the cause, leave my POSIX regrets aside, and got a Dell XPS 13″ to work with. I was very excited initially. The touch screen looks like a gimmick initially, but it’s really easy to get into it and then I find myself tapping all other screens—without luck, of course! It becomes very natural.

But the rest…

Let’s start with the biggest horror of all: Windows.

Windows 10 is perhaps a little bit less terrible than I expected, but it’s still atrocious.

I spent like 30 minutes disabling useless and distracting fluff that was pinned as default on the Start menu: game widgets, news feeds, gossip stories, a calendar, a widget demanding my email credentials, spinning cubes with weather widgets, etc, etc… and I had to search on the internet to find out how to do that, because it was not clear at all.

It still requires extremely complicated sequences of actions to configure things that are very simple to configure in other systems. I don’t remember the specifics right now, because I gave up, but you had to find some registry setting to configure something regarding the lock screen or something ridiculous like that. Oh and also there were like 3 or 4 alternative ways, each one more complicated than or different to the other. And you never know if they will work, because some screenshots in the guides look like they come from the Windows NT, class of ’97 times. And you’re like: but is this still current? And yes, it is. Heritage!

I had high hopes for Bash on windows (or Bash subsystem, or however they want to call it—everything is complicated in Microsoft land). But it’s like a sort of virtual system on top of the actual Windows file system, and you address files with paths such as /mnt/c, and the repositories it uses are really old. So when you try to use things like Mercurial with Mozilla’s repository, it won’t work, because the client is too old. I felt like I was using a modern version of DOSBox, but simulating Linux.

Installing things felt like travelling back in time to when I only had a Windows XP machine. You have to go to websites, double check you’re in the correct one and not a scam, and look for the package and download it and unzip (sometimes) and install it, which involves copious amounts of clicking on NEXT NEXT NEXT and NEXT! And restart the computer. Oh, how I fondly remembered all the times I just typed brew install… Or apt-get install…

On this note: installing Git is one of the most surreal things I did. It will ask you questions you never considered as “do you want me to change carriage returns to Windows style when you commit” (and you press NO as you shake your head frantically, from side to side, as to make the NO more NO than ever) or “do you also want me to install a Bash for you?” and you’re like WHY IS GIT ASKING ME THIS? but turns out later that Git’s Bash is the only functional Bash that money can get you in Windows. Bizarre.

I also had to register for a Microsoft account to download Visual Studio so I could compile Firefox. I do not intend to program anything using Microsoft’s products on my free time, yet their registration program did not accept my account because it was “corporate”, and it forced me to use a personal account instead. Please let’s all give them a nice communal shrug: ¯\_(ツ)_/¯

The console is awkward to use and scroll, copying and pasting is more of the same. If you paste something from a website which contains some sort of formatting or ‘escape character’, it will not remove them on paste, but they are invisible, yet when you press enter it will complain about the command being incorrect. And you can’t understand what is it that is incorrect, yet it seems fine? IT SHOULD BE FINE! And it’s because there’s an invisible character at the beginning of the line that you can’t see. As a developer, I find myself fighting this UI weirdnesses all the time.

There are high DPI quirks everywhere. When you move windows between monitors, the applications resize: sometimes to double size. Sometimes not. Some applications display minuscule text. Others show a mixture. It feels like some things are hardcoded whereas other use resolution independent units. It’s extremely unsettling, but perhaps not as unsettling as the…

… SOFTWARE UPDATES! Which will pop up from nowhere, when you less expect them. “There are updates to install!” And you click and then it will tell you that “THERE ARE NO UPDATES TO INSTALL”. And you get very confused and try to dismiss the pop up, which uses its own custom UI widgets and so it’s very hard to dismiss because the click area is very small, and when you finally manage to make that damn little window which is on top of your work go away, it POPS UP AGAIN and demands your attention again. “THERE ARE 5 SOFTWARE UPDATES!”, it says now. I really wish it said “WELL ACTUALLY, THERE ARE UPDATES INDEED”. At least it would be more in line with my perception. But anyway. You know. The updates. They sometimes require 3 consecutive restarts. I’m never sure if they’ll be done on the first or second run, so I restart and log in again, and observe the computer for a few minutes before I attempt to resume my work, because I don’t want to be interrupted once I have opened and set everything up again.

And you could disable the automatic updates, but how can you trust Windows computers without updates? You can’t. I am really scared to open the laptop after a while—has it woken up from sleep and got infected by some sort of malware in the meantime? Will I DDOS all the computers in the office?

I don’t really know how people can get work done with this; it requires an incredible amount of focus and concentration. And noise cancelling headphones: because this laptop has a fan, which will turn on the minute you least expect it. So if you didn’t have a headache after using that unpredictable terminal, now you can have one. The fan is LOUD.

And the power charger is still a brick. Despite having a USB-C connector, this still ships with a brick with a thick mickey-mouse ended cable on one side, and another thinner cable on the other side, ending on an LED that doesn’t indicate charging or charged. It just indicates power on the brick, which can be very misleading if you forget to actually plug it on the laptop, and walk away from your desk with the confidence that a lit LED gives you. And ha haaa! You come back to a flat battery because the laptop was not plugged. You need to look at the LED on the laptop front. Because the designers of this thing chose to ignore the laws of causality (I connect it and the light in the connector lights up) and least surprise (this is what other laptops do), because they either know better than us, or have no clue of how people use computers nowadays.

On a similar note, the webcam is on the lower left corner. You will look like Gulliver talking to the Lilliputians, and whether that’s bad or good, I leave it up to you.


I really want to be able to free myself from the Mac prison, but this is not looking very positive. Arguably you could install Linux on this laptop, and in theory Dell supports that, but I have only read reviews of people unable to make function keys work (as usual), or unable to update the BIOS because they do not have Windows installed—unless they dare running the update via a Windows emulator like WINE (and maybe… render the computer unusable if anything goes wrong). And so they cannot use some hardware ports. Hm.

There are other interesting options out there that might be worth keeping an eye on: the Huawei Matebook X (although it seems to overheat), Purism Librem and System 76’s Galago. All these seem lightweight, not-too-ugly and “promise to” run Linux. If anyone has experience with these—please let me know!

Volumio: a Raspberry Pi jukebox

Volumio playing aerodynamisk neger

Last Sunday, I spent some time tinkering with my Raspberry Pi 3, trying to get some sort of jukebox software up and running.

I finally settled on something called Volumio. It is a complete distribution that you install on the Pi and then it becomes a machine that plays many audio formats and that you can control from other devices, using a web interface.

And thanks to the Raspberry Pi 3’s WiFi, I just need to connect the audio jack and the power cable, and then the little machine can hide under the table with the rest of cables and other devices I don’t want to look at generally (NAS, modem, etc).

Volumio is installed by flashing a complete distribution onto a mini SD card. I had a small 4GB one roaming around so I used that. It’s cool because I can just swap SD cards and boom! I have a completely new environment without destroying the previous one.

The “official stable” builds that you’re directed to from their website won’t work with the Pi 3. They get stuck at the colourful loading pattern. I found someone had had the same problem, and the solution was to flash another image for Volumio 2 RC2. I flashed this new version, which is very hard to locate unless you know that such a thing exists or read the forum, and the initial boot didn’t show up the device on Bonjour, but after a reboot I could see it and start using it.

I configured it using the web interface, accessible at volumio.local. I told it to use WiFi (it worked!) and also to use my NAS music library (which also worked!). Then I shut it down again, moved everything out of my desk, and turned it on again to enjoy some music.

Apparently the initial Volumio front-end was built with PHP. Now they are rebuilding everything from scratch as Volumio 2, using Node.js, Socket.IO and Angular. I was excited about the node.js bit! But although there’s plenty of documentation around, I felt like I couldn’t understand where things were in the source, in the distribution, how to get a developer environment running, etc. Maybe it’s because I came back from holidays on Saturday and I’m still pretty jetlagged and my brain is not very functional yet, but maybe it’s also for the best: I surely don’t need to contribute to yet another project.

Anyway, I have a working jukebox. It can even play modules! It’s a bit basic at points (e.g. you cannot navigate by ‘genre’ or other MP3 metatags) but it is getting the job done so I’m happy.

Raspberry Pi 3: first impressions

The last big announcement from Raspberry, the Zero, caught me on holidays. I saw the news on the morning when we were going to leave the hotel, and obviously when we came back all the stocks were GONE for the foreseeable future… and I quite liked the idea of the Zero! Boo.

Anyway, I always have lots of ideas buzzing on my brain. Most of them involve small form programmable devices, and the more connected, the better. So when I saw the announcement for Raspberry Pi 3, I just went and got myself one. A tiny computer with WiFi and Bluetooth! Excellent! Besides, I have used Arduinos, but not Raspberry Pi before. This was a gap in my knowledge which I had to fill.

It arrived last week and it wasn’t until yesterday that I had some time to turn it on. So my experience is very limited to this point. Also, since I’m quite time constrained I bought it with a ‘newbies’ kind of SD card that was already prepared with some kind of partition that would let me select which operating system I wanted to use, and install it from there.

Physical setup was easy and enjoyable as I connected things I already have to this little tiny board: old Mac wired USB keyboard and Mighty mouse, a mobile phone charger for power, and then the HDMI monitor (but this is not old!).

Once it turns on, it displayed a gradient test pattern and then allowed me to select which system I wanted to install, all using a GUI. For some reason the mouse didn’t work but I could navigate using the keyboard. I selected Raspbian and it went ahead and installed the system.

During installation it displayed a few of those “here’s all the cool things you can do with this operating system” we’re used to see from the times of Windows 95, except instead of tacky suggestions such as improving productivity and sinergies, it spoke about the creative applications such as Sonic Pi, programming environments such as Scratch and also just plain old Python. This was very nice and I felt right at home.

This took about maybe 10 minutes? I don’t recall because I was doing other things (namely: grinding and brewing coffee). But when it finished, it restarted to boot into the newly installed operating system…

… and restarted…
… and restarted again…
… and again…

I turned it off and on again. This time it booted directly into Debian, and seemed stable (no reboot loop!), the mouse did work this time, and I went straight to try to find if the WiFi would Just Work™. Which it did, unlike other systems. Exciting! One of the main reasons I bought this Pi worked successfully on the first go. Beautiful.

Then I opened the browser–it’s Epiphany. Uhm. I tried visiting a few of my sites to see how would they look and work. was fine to display, but made the Pi reboot. Ha!

I started to suspect that these reboots were related to power supply issues. Admittedly this Raspberry Pi needs more power than earlier versions as its CPU is faster… and even more so when you use WiFi. So I searched around the internets and everyone converged into the same fix: use a beefier power supply.

I didn’t have any powered USB hub handy and the only AC-DC power supply I could found was 12V (from an old router). I didn’t really want to fry the Pi which I think only takes 5V… So scouring and scouring I settled on the charger from a Samsung tablet, which gives 2A, way more than the 0.7A I was getting initially with the phone charger. Once I started using this I could boot again and be able to browse around, and even submit a bug in Bugzilla 😎

I’m super impressed by the performance of the Raspberry Pi 3. The GUI is super responsive and it certainly doesn’t feel like a $35 computer at all.

If anything I will probably look for an enclosure–I don’t quite like the idea of the board being exposed to metal thingies such as paper clips or perhaps other connectors accidentally shortcircuiting it.

Other minor details: I like the “Made in the UK” bit in the board 😉

Of course, everyone is asking what projects do I have in mind! I don’t have any particular project in mind. I want to learn and I also want to have a tiny Linux machine that I can understand. I have a Synology hard drive which is like a “tiny Linux machine” but I don’t understand the API and I actually don’t want to understand how to use a proprietary API in order to run an ‘app’ in an obsolete environment. I’d rather write my web apps and run them on the Pi with an environment I understand and control, which can then connect to the Synology with normal protocols such as ssh.

Some things I’d like to explore though:

  • web crawlers and similar for my artsy projects. I don’t want to run them on my laptop.
  • portable Pi with a battery pack.
  • or portable Pi with a SOLAR cell pack?!
  • anything portable could lend itself to things such as the portable cloud we talked about with Firefox OS p2p projects
  • learning more about Bluetooth LE (it supports it)
  • playing retro-emulated games (with an old USB gamepad)
  • just a home server

I’d also like weeks of 8 or 9 days. Which planet has those? 😀

Score another one for the web!

Last week I made a quick trip to Spain. It was a pretty early flight and I was quite sleepy and so… I totally forgot my laptop! I indeed thought that my bag felt “a bit weird”, as the laptop makes the back flat (when it’s in the bag), but I was quite zombified, and so I just kept heading to the station.

I realised my laptop wasn’t there by the time I had to take my wallet out to buy a train ticket. You see, TFL have been making a really big noise about the fact that you can now use your Oyster to travel to Gatwick. But they have been very quiet about requiring people to have enough credit in their cards to pay the full amount of the ticket. And since I use “auto top up”, sometimes my card might have £18. Sometimes it won’t, as in this case.

Anyway, I didn’t want to go back for the laptop, as I was going on a short holidays trip, and a break from computers would be good. Except… I did have stuff to do, namely researching for my next trip!

I could use my phone, but I quite dislike using phones for researching trips: the screen is just too small, the keyboard is insufferable, and I want to open many tabs, look at maps, go back and forth, which isn’t easy on a phone, etc. I could also borrow some relative’s laptop… or I could try to resuscitate and old tablet that I hadn’t used since 2013!

It had become faulty at the beginning of 2013, but I thought I had fixed it. But months after, it decided to enter its mad loop of “restart, restart, restart and repeat” during a transatlantic flight. I had to hide it in my bag and let it expire its battery. And then I was very bored during both the rest of the flight, and the flight back, as all my carefully compiled entertainment was on it. Bah! And so I stopped using it and at some point I brought it to Spain, “just in case”.

Who would have guessed I’d end up using it again!?

I first spent about 30 minutes looking for a suitable plug for the charger. This tablet requires 2A and all the USB chargers I could find were 0.35A or 0.5A. The charger only had USA style pins, but that part could be removed, and revealed a “Mickey mouse” connector, or C7/C8 coupler if you want to be absolutely specific. A few years ago you could find plenty of appliances using this connector, but nowadays? I eventually found the charger for an old camera, with one of these cables! So I made a Frankenchargenstein out of old parts. Perfect.

The tablet took a long time to even show the charging screen. After a while I could finally turn it on, and oh wow, Android has changed a lot for the better since 3.1. But even if this tablet could be updated easily, I had no laptop and no will to install developer tools on somebody else’s laptop. So I was stuck in 3.1.

The Play Store behaved weirdly, with random glitches here and there. Many apps would not show any update, as developers have moved on to use newer versions of the SDK in order to use new hardware features and what not, and I don’t blame them, because programming apps that can work with different SDKs and operating system versions in Android is a terribly painful experience. So the easiest way to deal with old hardware or software versions is just not supporting them at all. But this leaves out people using outdated devices.

One of these “discriminatory apps” I wanted to install for my research was a travel app which lets you save stuff you would like to visit, and displays it on a map, which is very convenient for playing it by ear when you’re out and about. Sadly, it did not offer a version compatible with my device.

But I thought: Firefox still works in Android 3.1!

I got it updated to the latest version and opened the website for this app/service, and guess what? I could access the same functionalities I was looking for, via the web.

And being really honest, it was even better than using the app. I could have a tab with the search results, and open the interesting ones in a different tab, then close them when I was done perusing, without losing the scrolling point in the list. You know… like we do with normal websites. And in fact we’re not even doing anything superspecial with the app either. It’s not like it’s a high end game or like it works offline (which it doesn’t). Heck, it doesn’t even work properly when the network is a bit flaky… like most of the apps out there 😛

So sending a huge thanks to all the Firefox for Android team for extending the life of my ancient device, and a sincere message to app makers: make websites, not apps 😉

And the NodeBots from London assembled

I attended today’s NodeBots London event. The theme (?) was “NodeBots of London… Assemble!” and so we did. Compared to the last event I went to in July, which was way more informal, this was considerably bigger (within the venue allowances, of course) with more people and more things to look at and talk about!

First Oli made an introduction to NodeBots (essentially a place where people program hardware using JavaScript, but everything is allowed if you want to), what Johnny Five is and its relationship to node-serial, same for Firmata, and then some interesting tips for software people turned amateur hardware people I hadn’t heard of before, such as:

the case of the generous motor, in which you can fry Arduinos connected to motors without diodes, when the motor keeps spinning even after you stop applying input voltage, and so it becomes a dynamo which feeds current back into the circuit and so… bye bye Arduino which didn’t have any protection
the flappy servo, when you sequence value changes too fast and that results in just some feeble erratic movements instead of the dramatic ones you expected

Then Alex made an introduction to electricity, in general, which was a good refresher for people like me who studied some electrical engineering at uni/school but haven’t used it for reals since then. He explained the basics (V = IxR) and also insisted again on the importance of putting the right resistors in the right place to prevent things getting fried. He used this online circuit.js utility to depict circuits and the flow of current, the voltages at each point of the circuit (in the subcircuits perhaps?)–super useful and I so wish I had had this when I was taking these subjects. Makes things way more intuitive!

And with that—we hacked a bit! Jerome Loï (who had travelled all the way from Paris!) tried to resuscitate my pseudo fried Duemilanove with a shield and a thingy to mount the ATMega168 only, but turns out that it’s such an old board/chip combination that the bootloader firmware is not distributed anymore! So I left it aside and focused on my next task for the day: find out what the components in the kits I have are! With Jerome’s and Alex’s help, and some image searching, all the components were identified in a matter of minutes. Yay!

Then I was not sure of what I wanted to do—I didn’t really want to start a new project although I have a practical idea, and I was also hungry and Oli’s marvelous cooking skills didn’t help to stop making my stomach rumble. Whenever I tried to focus on hardware or research for my idea, a new wave of delicious slow-cooked stew would reach my nose. Ahhh!

Fortunately Charles made a lightning talk describing how he goes from thought to execution using a sketchbook and Autocad instead of thinking by executing as it’s advised in many environments (something like “you don’t want to waste time and effort on build something expensive that might not work, it’s better to think on a sketchbook first”).

Also someone (whose name totally escaped me, ahh, sorry) gave a little intro about a somewhat related event about which I heard about aeons ago but which seemed to have faded out, Dorkbot. It’s been revived, but I’m sad it is held in a) a quite remote location b) at a time I can’t go, because it sounds like the kind of thing I’d like to attend. SAD FACE.

And then it was finally time for lunch. As expected by the opening flavour, it was so yummy! It gave the day a sort of lovely family reunion for Sunday lunch, except we didn’t argue about silly things, but just used the time to catch up on what we had been up to since the last time I visited their maker space, or talk about what we were building today.

After lunch, I spoke to various people such as Andrew Nesbitt of manythings-fame, and learnt new cool things. Such as:

  • which is an IDE for “things”, built on Electron… which can work with Arduino and also has code completion! so if you don’t like the Arduino IDE you can use this instead
  • The Arduino board clones such as the Funduino are interesting not only because they might be cheaper than the originals, but also because sometimes they offer cool features such as additional pins for +5 or +GND, which sometimes can make it easier to build something by connecting the wires directly to the board instead of using a breadboard to ‘multiply’ the pins. Or has a toggle to switch between 3.3 and 5V, etc. This very interesting tip came from Jerome, who also told me about this French shop called HackSpark which not only have a lot of those Arduino compatible boards on stock, but also might seem convenient for folks in the UK. And also have a physical shop in Paris! Wow!
  • The Espruino is small. Like… really small! It also transpiles JavaScript to Lua (if I understood this correctly). You write JavaScript instead of Arduino C flavour, and you can get really quick feedback. Sounds like a cool idea for prototyping without having to tether as with Johnny Five—most useful for wearables!

But my super favourite thing I learnt about today is that pencil lead is a conductor! Jerome built a quick and fun pencil based resistor which controlled the speed of a 555 timer connected to a speaker. So effectively he was changing the frequency of an oscillator, and changed the pitch of the sound as he moved the pencil tip closer or further away from the banana connector clipped to the paper. The other end of the pencil had a drawing pin inserted on it and a wire too, effectively closing the circuit! You can see all this in action in this little vine:

We also talked about how I should use an accelerometer and not tilt sensors for my idea (to avoid false positives), and ways to use Web Audio with hardware stuff, and ways to make things that made noise, even how to make a leslie / hammond! So many things that we can make! So exciting!

And there were many other things I learnt but I can’t recall now (hopefully my brain will retain them). Do join one of these NodeBots groups if you can—great things to learn and a very welcoming environment!

It was also cool to devirtualize people I apparently had met already but totally didn’t remember (hi Jerome… sorry), and meet new people! Hopefully next time I will remember 😀

Oh and Jerome, who was one of the main instigators of the NodeBots cat mesmerizer workshop at LXJS 2014, happened to still have a workshop kit in his travelling suitcase and gave it to me… which means I have a laser in my possession!