Kartones Blog

Be the change you wanna see in this world

Build a Multi-Arcade with a Raspberry Pi 3 and RetroPie

Part I: The Experiment

I love retro systems, and always have been using emulators since they exist. The main caveat with that many of those emulators is that they tend to get outdated and stop working on newer operating systems. With Windows each major version scared me up to the point that my gaming PC is "frozen" on Windows 7 to avoid losing performance and compabitility. Since I switched to Linux, I've been trying to use emulators, with not so good results. So, when I read about the RetroPie project I felt like could be the solution: a dedicated but small gaming machine. I had a Raspberry Pi 2 not being used for anything so... why not?

I used the RPi 2 as a testbed with a spare 8GB SD card. Just following the official instructions and using the official image was enough and I didn't have a single issue. I love how it allows you to setup a USB-drive to add new content, by just setting up some folder structure on it, so I can just place new games and after plugging they get installed automatically.

As an alternative, Ars Technica has a detailed DIY guide, although as I mention later, careful if you play PSX or NeoGeo as their setup won't cool at all and the CPU will heat and lower the speed.

Everything went smooth and I could play some old console games, so I copied some MAME and NeoGeo romsets... and here I got my only issues:

  • For NeoGeo, read the appropiate section and ensure you have the correct BIOS downloaded
  • For MAME, documentation is not bad but I didn't read it so much and found the hard way about the concept of ROMset rebuilding. ROMs are dumped and emulated at a certain version, but as time goes by newer dumps might be achieved, and those usually are not backwards compatible. Combine that with the RPi MAME emulator supporting only until 0.78 ROMsets, and you get the answer to why most games didn't worked at the system when always worked for me at the PC. So either you rebuild the ROMsets for v0.78, or (the way I went as I'm lazy) directly search online for some full 0.78 ROMset to download and then filter.

Part II: Going to production

Emulation issues solved, the experiment was a success so I decided to buy a Raspberry Pi 3. After Nintendo's Mini-NES, there are many clones to use as Raspberry Pi cases. I didn't planned to buy any, but a friend read my tweet about setting up the RetroPie and instead of buying anything he gifted me not only with a case but an actual pack of a Raspberry Pi 3 + NES-like case + SD card + USB gamepad!

It came with some MAME games preinstalled but I preferred to do a clean install of the latest RetroPie. After installing games including the oldie but goldie Gran Turismo 2 for the original Sony Playstation, I noticed that the game slowed down after a few minutes of playing. Some research and touching the CPU to confirm it taught me that when gets hot, RPi lowers the CPU speed to avoid thermal issues. So, the case might be cool but wasn't good for CPU-intensive usage, despite having some heatsinks installed like the following:

Raspberry Heatsinks

Some more reading after it looked like the best solution was to add a fan to cool the CPU:

Raspberry Pi fans

The fans can be setup at two different voltages. Being so small and already used to a semi-tower gaming PC, I directly went for the 5V voltage connection.

Fan different speeds diagram

I originally had made additional ventilation holes to the case, hoping would be enough to let the hot air go out, but as it didn't worked I had to modify those holes to place and hold the fan:

NES clone RPi case with fan

Everything finally assembled, I played through a few levels of Aliens vs Predator (MAME version, good benchmark), a few races in PSX Gran Turismo 2 arcade mode and the first full level of NeoGeo's Metal Slug. Not a single slowdown.

Part III: Replicating the success

I liked the system it so much that I actually bought another Raspberry Pi, a 3 B+ model, with an official case. This is the one that I'll keep at home to squeeze those extra 200MHz and better network speed it brings. I initially thought about just leaving the case open, but as the fans came in a 2-pack, I decided to also install the other one on it:

Installing the fan into an official RPi case

And after some patience and plastic cutting, this is how it looks fully assembled:

Official RPi case with fan

As you might notice the hole is not centered. This is on purpose to place the fan exactly above the CPU. Less aesthetic but I prefer pragmatism.

Even with the fan, the official case doesn't have any ventilation hole/grid, so when playing I open one of the side lids (the one without connectors) so the air flows out from it instead of being kept inside.

I'm only missing setting up the second gamepad for the system, as I have a handy original SNES to USB adapter that allows to plug two pads, but joystick configuration is so easy that I don't expect any trouble.

Closing thoughts

I'll use the NES-like system as a "portable arcade", for vacations, events, etc. as I just need an HDMI plug and I have an extra USB gamepad.

I haven't tested anything more powerful than Nintendo-64 emulator, but people seem to be using it to play even PSP games, so this 3.5 generation of the Raspberry Pi is already quite powerful, despite not having a decent GPU. RetroPie 4.4 feels quite stable and my plan is to stick with the system for as long as possible, as my only wish would be more MAME ROMs support, but even with the actual compatibility is fine by me.

I only tried the Raspberry Pi 2 with few games and then gifted it to my sister, so I really don't know the performance cap it has compared with a Pi 3 or 3B+.


Other useful software I've installed will get listed here.

  • Kodi: An amazing media player from the creators of XBMC, highly configurable and supporting plugins (although I haven't tried them).


Update #1: Added Appendix section with Kodi software.

Update #2: Added a link to an Ars Technica guide which contains very detailed installation instructions.

Course Review: Essential Business English (Udemy)

Last christmas I decided to try to improve my english, so work lessons aside, I enrolled into a university course (B2 European level-equivalent), and now I'm also taking some Udemy english-related courses. This is the review of the first one I've fully studied (handy also for my incoming university exam).

Note: I'm not going to judge the price of courses because we now have at work Udemy for Business accounts so I get access to most of them "for free" and thus I cannot be totally objective regarding price/value. I prefer to focus on a small review of the quality and contents.

So, the first course I've finished is Essential Business English, which contains 2 hours of video with work-related conversations: How to hold a meeting, discuss, interrupt, making business calls, scheduling, complaining about delivery problems, introducing new employees... It also includes some exercises, both inside the videos (showing you the correct answer after a while) and in companion PDFs, online crosswords, quizs and other resources. Videos contain funny but well drawn cartoons and the pronunciation and quality of the audio is excellent.

It feels a bit short but well organized and easy to follow and study.

Alternatives to Google Services

I value a lot my privacy, much further than the mere act of adblocking half of the internet to avoid targeted advertisement and tracking. While my specific methods and tools evolve over time (although are still similar to those I wrote about in 2015), sometimes you get "vendor locked-in" and becomes hard to break free from those restrictions.

While I think Google is awesome as a technical company, they also worry me a lot because of the power to store, infer and correlate information about mostly everything. And for many years I've been using Google Apps for Domain and many of their services... They are generally great, convenient and powerful. But, at the same time, you feed more info and even leave private bits (emails, appointments, documents) inside them. And that was something I wasn't comfortable with.

So, a few months ago I decided to build a plan on how to cut my ties with GApps. This are the results and the services I use instead of Google's. There are "cheats" and I'm also restricted to use Linux so others using Windows or Mac will probably have better (paid) alternatives.

That said, let's go with the list:

GMail and mail Contacts: I'm a happy paying ProtonMail user. I exported all my old emails to Mozilla Thunderbird just in case I need to check something but I've decided to keep a "sliding window" of a few years of emails (I think is around 6) and wipe out older stuff.

GDrive: I decided to use Dropbox after getting tired of synchronization conflicts using Box, with a third-party sync script as there isn't even official Linux support. Dropbox Linux client works flawlessly.

Documents and spreadsheets: I combine Dropbox with LibreOffice. LibreOffice is painful to use (feels and works like a bad copy of MS Office 2000), but I haven't got anything better and don't want to need to boot up a VM with a proper MS Office inside for editing documents.

Keep/notes: I use Dropbox Paper, which is really nice on the desktop and works from mobile, although sometimes feels slow responding to typing.

Search: I've been using for years DuckDuckGo and don't miss at all Google's previously-incredible-but-now-increasingly-biased search results.

Presentations: Here I suffer, because despite not being great, Google Slides were a much better alternative than the terrible LibreOffice Impress. So I sometimes cheated and used my Google Apps account to create the slides, and now I just use a Windows VM with MS Powerpoint. Even a default template in PPTX already has conversion and visualization issues at LibreOffice.

Calendar: I didn't found anything fully satisfying so I built my own crappy alterantive, and being web-based, one app less to install and keep updated.

Chrome/web browser: Firefox, of course. With a few extensions and tweaks. Always loved it since exists, just left it when it got bloated and slow, but it again works amazingly well.

Hangouts: WhatsApp or Telegram, but if needs to be Hangouts there's no alternative but to use it (but only from a desktop browser).

Maps: Can't fully avoid it from mobile, but whenever possible I use CityMapper.

Youtube: Don't use it much and never from mobile, so I just watch whatever others send me being always logged out.

Google+: Only use I can think about this service is as a secret vault, as only Google employees use it and would read them. Bad jokes aside, Twitter is a much better alternative to share links and blog posts.

And then comes the big catch... What to do if you use an Android phone? Well... here basically you're screwed up. You have to keep using it, and somehow manually synchronizing your phone contacts (which are in fact GMail ones) with whatever system you use [1]. This is the only real setback I have... I ended up using a different domain name for my new email, so the account is not even Google Apps enabled. I left the old one mostly to use the phone and redirect emails.

[1] In my case I just manually add new contacts to ProtonMail, so it doesn't gets full of clutter from people who wrote or called me just once (as happens with GMail).

Course Review: GCP Cloud Architect (Udemy)

I've been exploring the online video courses "learning path" since a year and a half, making this one the third course I finish. Two are from Udemy (paid but cheap) and one from Coursera (free). As at work we're migrating some services from AWS to GCP I thought would be a nice idea to repeat Udemy, based on how good the other AWS course was.

Google Cloud Platform - Cloud Architect "In depth coverage of all Services, 200+ Practice questions & 4 Case Studies Design" Sounded quite nice, covering services like Compute, Storage & Database, Networking, VPN & VPC, IAM, Security, Management Tools, and intros to ML and BigData. And while yes, it covers all those topics, it is more like an introduction to them.

Sadly, I'll dedicate the remainder of the post to why you shouldn't bother buying that course even if has some huge discount, so let's get to it:

There is absolutely no cadency when speaking, it is a mere reading of either the slides or slide notes (those not so frequent times that there's more content than what you see). Add to that both typos and mistakes at the slides with errors when reading them, and you get a fatal combo. It was so terrible that I've studied more than half of the course without sound, pausing and advancing myself "the slides". Because another issue is that many times the author is either not even checking his "reading position" regarding the visual content, or doesn't cares, so after reading like a robot a big bullet list, if you're not fast stopping the video, you almost won't read the final line.

Other issues are terrible speaking errors and pauses, which should have meant a re-recording of the segment, but instead were left. Or mistakes like going out of MS Powerpoint presentation mode and not caring to turn it on again until after a while, like here: screenshot

Another of my top annoyances is the mouse pointer. on each and every video you see the little annoying pointer being used sometimes to remark things but many things to just leave it anywhere, usually covering letters, diagrams and most times distracting the watcher.

Everything looks like coming from a teacher/evangelist kit or directly from Google web documentation, which I'm not against but combined with all the previous defects makes the course as a whole lacking any quality. If we were given all the slides would be more productive and useful. And the few demos I tried to watch and follow, were so terribly prepared (full of long pauses, mistakes, etc.) that I skipped all of them.

Now don't get me wrong about one aspect: the author's english is not too bad and could be understood way better if he had made the effort of not reading the notes and focused on real explanations of the contents shown.

I'm a stubborn guy so I went through all the non-demo videos, because you always learn something and I was past refund date anyway.

It might be a nice introduction and less hardcore than digesting all of Google's GCP online documentation at once, but I really doubt it.

Note: I also left a 0.5 / 5 rating of the course inside the learning platform, alongside a detailed explanation of why so low.

Information regarding GDPR (General Data Protection Regulation)

One topic that is getting more and more attention lately is the GDPR, which stands for General Data Protection Regulation. A new regulation that should start to be fully enforced by May 25th, 2018, and that finally provides many pretty good user-related regulations and limitations. For once, and although not everything is clear or properly detailed, even in general is something that benefits everyone using internet. Even companies, although where it benefits them (performance, security, data protection) is not as interesting as user tracking, retargeting and other marketing and data related areas that must change radically.

For a decade, companies have been harvesting more and more data without our consent, so in theory in less than two months, no more automatic opt-out consents, no more dozens of trackers without at least informing you, no more Delaware-based international companies not complying with EU laws and no more tricks to not be able to delete your accounts. Or at least that's the theory, we'll see how it turns out.

Anyway, this regulation also means that most tech companies are going to be busy this two months adapting to the new laws. At work we've already started to prepare everything and the first thing I noticed is that there are many posts but relevant, quality info was not so easy to come by, so I decided to write this small blog post and gather what we've found interesting.

First, the most important link of all, the regulation itself: https://gdpr-info.eu/art-16-gdpr/

Reading all of it can be a bit daunting at first, but it contains a handy search box that allows to easily find detailed explanations inside the 173 "recitals" and of course in the main regulation itself. Instead, I recommend you to start by going through the following links links from Bozhidar Bozhanov, which provide an interesting and practical digest about the regulation in general and cookies:

If you read it, you'll see that there are hundreds of mentions to "personal data", but what really covers that term? This post is a good explanation.

Another excellent summary guide is Stripe's.

Also, while checking how it affects Google Analytics I came upon this post containing very important topics regarding both Google Analytics and Google Tag Manager and ip anonymization, among other things you should now take care about, like never sending to GA urls containing personally identifiable data (emails and the like).

If you speak or at least read Spanish, the two following links contain all GDPR info translated and into PDF:

One topic that had some discussion at the office was if regarding the "consent checkboxes" you could just go and make all of them mandatory or not allow to use your service. According to recitals 42 and 43:

Consent should not be regarded as freely given if the data subject has no genuine or free choice or is unable to refuse or withdraw consent without detriment.

Consent is presumed not to be freely given if it does not allow separate consent to be given to different personal data processing operations despite it being appropriate in the individual case, or if the performance of a contract, including the provision of a service, is dependent on the consent despite such consent not being necessary for such performance.

So, if I interpreted them correctly, you cannot make it an all-or-nothing choice unless it is really critical for the service to work. Which means, you must provide a way to use the service without being tracked by third parties and the like.

As I mentioned before, let's see how all this gets implemented, but at the very least we'll now be able to own a bit more our data, and also request data exports from any service, the "right to forget" (data deletion). or "processing restriction" (in theory, you allow the service to keep your data but they're forbidden to use it for anything else than basic functionality).

Update: Added Stripe's guide link.

Previous entries