Please tell us a little about yourself. I am a software engineer and musician, making most of my living from the former. Currently, I am working on a real-time motion capture system for embedded devices (https://github.com/glimpse-project/glimpse), but I have worked on all sorts of things over the last decade or so. My areas of interest have been, in no particular order: embedded systems, hardware-accelerated user interfaces, web browser backends and most recently, machine learning. I am based in South London, where I have lived all of my life, though I studied at Southampton University, where I achieved a first-class masters degree in Computer Science.
How did you get started with computers? I was interested in computers and electronics from a very early age, since my dad was a computer programmer, and my mother also spent a significant amount of time doing accounting on PCs and writing COBOL for a living. I remember having computers all of my living memory, starting off with an Epson QX-10, before upgrading to an Amstrad 8086 machine and then various other PCs over the years. I always showed an interest in computers and my dad was keen to oblige, so I had the advantage of being taught programming from about 4 years of age, starting in MF-BASIC, before progressing to C and dabbling some in Z80 assembler.
During my late childhood, my mother also worked at what was then called Cable (then United Artists, then Telewest, then BlueYonder, and now Virgin Media) and that let us get cheap internet, which I took full advantage of. This was quite unusual for the time, having access to the internet, and being able to use it for long periods was pretty rare in the early 90’s in England. Though I spent a lot of time playing games, I also spent quite a bit of time programming them too, and learning more about programming in general. It was not long before I realised that I enjoyed the periphery of game programming a lot more than programming games though, so that was never a career path I pursued.
What attracted you to the ODROID platform? I had been researching Pi-based portable games devices, but it always irked me that using a Pi generally meant using Linux and dealing with lengthy boot times. As far as I am aware, the Pi does not support any suspend states, which makes it a pretty poor choice for such a use. I was reading an article on Engadget about someone's Pi-based portable retro gaming kit, and someone in the comments section, happened to mention ODROID-GO. Pretty much immediately, I knew it was quite close to what I wanted; a device that can boot instantly into an application and that has the power to emulate the systems from the 80s. Not to mention insane battery life. I also enjoy the kit aspect of it, it was not long ago that I built a gigatron TTL kit, which I found to be a very fun and informative process. I am looking forward to modding my ODROID-GO with a headphone socket, and who knows what other upgrades people might think of down the line.
How do you use your ODROIDs? I mainly use my ODROID-GO to play NES games during my work commute, or while watching TV. Specifically, I am a big fan of the NES version of Tetris, and after spending some time improving the screen-update code, it is an excellent device to practice on. I have probably spent more time writing code for it than I have actually playing on it, but hopefully the disparity is not too large. Having GPIO pins neatly accessible on the outside of the device is a really nice touch that would be fun to take advantage of sometime, maybe to enable Gameboy link cable functionality.
Which ODROID is your favorite and why? The ODROID-GO is my favourite, as it is the only ODROID I have 🙂 Looking at the rest of the range though, the H2 looks interesting. Having that sort of power and the x86 architecture is a huge boon for a lot of use-cases. I would be interested in knowing how its power consumption compares to contemporary Pi SoCs.
What innovations would you like to see in future Hardkernel products? I would love to see more ultra-portable designs, like the GO. Customisable portable gaming is very attractive to me, especially in the sort of ultra-small profile of the GO. Somewhere the GO is a bit hamstrung that I would love to see addressed in a later model (11-year anniversary celebration, perhaps?) is using SPI for screen output. Or at least, using SPI for screen output coupled with a screen that requires at least 16-bit pixel data. There just is not enough bandwidth for a 60Hz output without performing some clever tricks (which is what I have been working on, with mixed success). If it was coupled either with an LCD controller that could do palette-based 8-bit updates, or a controller that could run at the full 80Mhz of the bus, this would not be an issue. Alternatively, a chipset that could more finely control the speed of the SPI bus would help solve this issue too, currently the ESP32 offers either 40Mhz or 80Mhz, and reports show that the chosen LCD controller tops out at about 70Mhz. This is really a limitation of the ESP32 chip, but I think it could be worked around with some thought.
What hobbies and interests do you have apart from computers? When I am not working on computers, I spend most of my time playing music. I am a keen banjo player and play in a band called The Vanguards (http://thevanguards.uk/). When we are not gigging, I like to play in open sessions around London, and I have made two musical pilgrimages to the southern states over the last couple of years. I particularly like playing bluegrass, which is quite niche in this country. I have played music for most of my life, starting with piano when I was 6, and moving through euphonium, trombone, bass guitar, electric guitar, drumkit, banjo, acoustic guitar and double bass, with varying levels of proficiency. Banjo is my main instrument at this point, but I still enjoy playing piano and I can fill in on rhythm guitar in a pinch. For me, music is an escape from computers, which dominate most of the rest of my life. I like to keep them separate as much as possible.
What advice do you have for someone wanting to learn more about programming? I have had the privilege of being in positions to interview other programmers during my career, and something that I think can really separate people is a basic knowledge of how computers actually work. It is far too much to expect people to understand modern CPUs with their various micro-architectures and ludicrous long pipelines, but certainly basic concepts can still apply very successfully to coding today. You can tell the difference between someone that started on JavaScript or Python and never went any lower, versus someone that is done some systems programming in C or assembly, even for high-level jobs. I would suggest that people try to reach the lowest level they're comfortable with. For me, that was assembler programming on a TI-83 graphing calculator, and then the same for the Gameboy. I think the Arduino platform now can teach similar lessons and it is never been easier or cheaper to dive in.
Be the first to comment