More than two years ago, on 13 January 2010, I wrote my first blog-post. Four months later StreamComputing (redacted: rebranded to StreamHPC in 2017) was both official and unknown. I want to share with you my personal story on how I got to start-up this company.
I wanted to create a company which was about innovative projects – something I had hardly encountered until then. The years before I programmed parts of A-to-B-flows, as I call them. That is software that is in the base quite simple, but tediously discussed as very, very complex.
The complexity is not the software, as you can see. It is undocumented APIs, forgotten knowledge, knowledge in heads of unknown people, bossy and demanding people who friendly ask for last-minute architecture changes, deadlines around promotion-rounds, new deadlines due to board-decisions, people being afraid of getting replaced if the software is finished, jealousy if another team makes version 2 of the software, etc. The rule of office-software is therefore understandable:
Software is either unfinished, or turned into a platform for unintended functionality.
The fun in office-software is there for analyst, architect or manager – the developer just puts in his earphones and makes all the requested changes (hooray for services like Spotify). But as I did not want to become a manager and wished to keep improving my development skills, I had to conclude I was on the wrong track.
My addiction to fast software
The software I really was proud of, was a flow-framework which could be built like LEGO: each small module did a small task only and things like order, dependencies and parallel executions could be changed each day, while I programmed new modules. It was built using Spring – the wire XML-file was converted to a Graphviz dot, which could be printed as a nice looking dependency-graph – both great for keeping track of versions and to easily talk about what needs to be changed. Due to it modular setup, it was not complex, easy to maintain and easy to extend. Did I mention it was fast and built within a few weeks? It moreover brought me to my interest of optimising software for speed, which led me to OpenCL. Later on I sped up some software around 300x using various techniques (mostly caching and fixing dependency-problems) without extra hardware. The damage was done: I became an addict to speeding up software, and GPGPU introduced itself to me on the right moment.
Signing the start
Fast-forward to Wednesday 19 May. I sign the papers at the Dutch Chamber of Commerce, and I have my company. I still had other projects, such as a mirror that stays clean in a moist environment, a shower that keeps warm and a device that advises train travelers (or huge building visitors) where to go to under 5 seconds. Later I learnt that investors prefer real products that can scale up, but I put all my time where thought I could find real innovation: GPGPU. And indeed I have found it there.
After a while I had to agree with a friend’s advice that it might be too early to bring OpenCL-solutions. But I strongly believed in the possibilities of OpenCL as a method to develop massively parallel software on any hardware. I knew I was right, but felt a member of a small club. People close to me know it was a hard time last year – looking back I can say I never learnt so much as in 2011. But as you see I did not give up and I kept focusing on where I believed in. And as the slogan on the image tells indirectly: if it was no developed market for GPGPU yet why not helping in getting it created? I kept blogging about the need for open standards, the possibilities of GPGPU/OpenCL and tried to show that it is not about the programming-language, but about the hardware. All things I strongly believed in, and still do. I hope people got interested in OpenCL after reading my blog and later think of StreamHPC when they have a need for faster performing software.
The road ahead
From around December 2011 big changes were brought, as people on network-events changed their reply on my pitch from “What? So you can make Windows boot faster?” to “Can I have your business card?”. This was because more people got aware that you can program GPUs. As of the sudden my story about “doubling the throughput of computations” became a start of a conversation on creating faster software instead of complaints about the pain-spots in generic IT-environments.
The world in which StreamHPC operates, changes fast. NVidia pushes a lot of new technologies, ARM slowly gets more important than X86, AMD and Intel create GPU+CPU on one die, LLVM grows up and creates new possibilities, and all of these can change overnight. The focus stays on hardware (GPU-programing and vector-programming) and cross-platform solutions (OpenCL, LLVM and such).
Now that I program much closer to the hardware, I feel like a real programmer. I recommend everybody who needs more challenging matter to put their teeth in, and want to avoid ending up typing in A-to-B-software, focus on hardware, C/C++ and maybe also scientific languages like Matlab and Python. Avoid .Net and Java – not that great things are happening in the world of managed languages, but just to increase your chances to get a job in solving puzzles.
Thank you all!
The products I invented before StreamHPC will have to wait now, as it is very busy here (I am writing this more than two weeks too late). I am looking forward to another year with even more growth. Thank you all those people who regularly visited the website to read our blog (doubling each year), all those interesting people I have met online and offline, and the customers I have serviced.
There were a few people with me since the beginning, who I want to specifically thank. My family for easing the difficult start, my girlfriend for always believing in me, my dear friends for understanding I have little time, the contacts at AMD and Khronos for supporting me in many ways, my business partners on whom I can build, and Liad from Appilo with whom I have (had) many interesting discussions via the chat.
Follow StreamHPC on LinkedIn.