Such Programming

Tinkerings and Ramblings

Mad Computer Science – Part 0 – Intro

I strongly believe we're approaching a revolution in computer technology, and I'd like you to join me in making that happen!

The performance growth of computers is stalling out. The smart folks that build our modern CPUs, GPUs and other hardware peripherals still have some tricks up their sleeve, but we're continuing to approach some very difficult limitations. CPU clock speeds have reached a plateau, and we’re starting to build transistors that are just 4 silicon atoms wide. We’re headed to a technology era where the mostly centralized model of computing is reaching its peak.

The computer engineering field is heavily software focused, with about 29 software engineers for every 1 hardware engineer in the US. This ratio is increasing too, with software jobs expected to grow by 22% over the next ten years compared to 2% for hardware. The Open Source Software movement made dramatic improvements in the accessibility of software design, and while there have been significant strides in Open Source Hardware, we still haven't democratized hardware design to nearly the same extent.

The hardware side of computing needs more software engineers to dive deeper into the hardware world. It didn't used to be reasonably possible to tinker with hardware design as an amateur due to prohibitively expensive and complex design tools. This dam is finally starting to break, with amazing efforts such as the F4PGA project opening up FPGA based logic design and the Efabless Open MPW Program offering anyone the chance to make a small ASIC with Open Source design tools. I believe these types of projects will be invaluable over the long term.

It's intimidating to get into hardware and logic design, but it is getting easier, more open and more approachable every year. I think the main element we're missing for a paradigm shift in computing is more communities of hackers and tinkerers experimenting with hardware designs in willy-nilly fashion, bringing fresh eyes and novel ideas to this area of design that's been traditionally infeasible for most of us.

In the aspiration of contributing to this change, I'm hoping to share the fun of experimenting with mad computer science. I'm not a professionally trained hardware engineer, and you don't have to be either! In my journey, I've found that many aspects of hardware or logic design aren't nearly as difficult as they seem to be to tinker with as a noob, but there's definitely a lot to learn with fewer entry level resources available.

In this post series I'll dig into various computer engineering topics and demonstrate simple and inexpensive ways to tinker with these concepts. I hope curious folks will check it out and begin their own experimentation that may lead to incredible outcomes in the future!