John is a senior full-stack software engineer and entrepreneur with 10 years experience. He runs a small boutique-style software development firm that specializes in crossing the barrier between cloud, desktop, mobile and physical applications.
Since he joined Codementor, John has become one of the top Codementors. He mentored and helped dozens of developers and product managers overcome challenges and take their projects to the next level. John is part of CodementorX, our network of top software engineers available for hire.
What are the most exciting projects that you’ve worked on?
I have worked on a number of exciting projects. One of the most exciting at that time must have been KinEmote. I remember reading on a news site years that Microsoft was working on a 3d camera for the XBOX. I immediately thought it would be really cool to use it to control what was then still called XBMC (now Kodi). I thought about how it should work way before it came out so I could quickly build it when it got released. I predicted there would be a lot of interest in the technology, which turned out to be true. When I released my little tool though I was not expecting it to receive so much attention from the press. From CNET to Engadget, people talked about it, which was actually stunning, to say the least. In the end, I did not see a path forward to build a business from it so I stopped working on it. It was exciting while it lasted, though. Not too long ago, I Googled it just for fun, and it seems people are still writing research papers drawing on their experiences of using the tool, and using it to think about how human computer interfacing could be improved in the future. That I have unknowingly contributed to the research world – this is something I find very cool.
What are your favourite technologies, and why?
I don’t really have a favourite technology per se. I prefer to use whatever technology that allows me to reach my goal as quickly as possible. I like the premise that universal Javascript holds, to run the same code on the server, web front-end, and mobile front-end, but I believe there are still a lot of kinks to work out. With these technologies there’s so much “craze of the day” going on that sometimes it is hard to keep up, as well as there is often a lot to code yourself. If you look at the .NET or Java world, there are so many libraries used by so many people that they are pretty much drop-in and use, whereas within the JavaScript world things are often half-done, and with lots of competing technologies that are outperforming each other every few months. I still use it, because it makes requirements of some of my projects overall easier, but I do long for more mature “universal” cross-platform technology. I also really like embedded platforms. For some reason I find it cool that you can build a device specifically tailored to one goal only. I think the progress that is being made in those fields are interesting too, to say the least. Nowadays you can buy a system on a chip (Arduino, Raspberry Pi), pair it with a service like Resin.IO, and build a production grade custom device in no-time. As a company, we are also looking at the industrial industry. There, we predict the next revolution will happen, where factories, machinery and robots will also get connected to the cloud. That too is very interesting to me, because we can now apply what we learned from large scale web deployments to systems that have traditionally been pretty small and closed ones. The power of big data, when applied to industry, will let the manufacturers, rental agencies and end-users use their equipment much more effectively and efficiently.
If you didn’t have to work for money, what would you spend time on?
I don’t think I’d be spending my time very differently, I really, really like what I am doing right now. I do have many ideas that are more related to crossing technology and art, and which are not so profitable. Therefore, if I didn’t have to work for money, I think I would be spending a little more time on things like that. Luckily, sometimes fun opportunities present themselves, like last year when I got the opportunity to consult on LumenUs, a student led project at the technical university in Eindhoven.
What is the first thing you ever built?
It must have been a music remote control app, when I was 10 or 11, it was a little program copy pasted together which was basically a custom web-server with just a single page. On that page it had 5 buttons; “next”, “previous”, “play/stop”, “volume up” and “volume down”, which when clicked controlled my media player. This was back in the time when mobile phones had WAP browsers and just got polyphone ringtones, so the fact that I could control my media player from anywhere in the world was amazing to me. Nowadays we have Spotify and Sonos and things like that, but back then it was pretty revolutionary. I think that that feeling I got from having built something that almost nobody else had is what inspired me to continue to try to push the boundaries with everything I do.
What is the best advice you’ve ever received?
Motivation gets you started, but habits keep you going.
What do you wish you knew when you started programming?
One thing that I found out later than I would have preferred was that there is some serious merit in the Computer Science theory. I used to believe that there was no point learning about the data structures and “algorithm-y” side of things, until I actually did. At some point your code is going to be too slow and that’s when you really start to need it. This is the advice I’d give to someone just starting out: “Don’t forget about the theory!”
Beyond programming, the one thing I wished someone had told me earlier is that “nobody is out to get you”. A lot of people, including myself, are brought up with the idea that “the system is rigged” and that “it is impossible”, whatever your audacious goal may be. It’s not, it’s just very, very hard. Unfortunately this means that it is a lot of work, but fortunately it does not mean that it can’t be done. I wasted so much time trying to get the permission from others to do what I really wanted, but the biggest challenge was getting over myself.
What was one of your best collaborative experiences?
I was working on KinEmote at the time and my partner had arranged a pair coding session with a very good developer to review what I had produced up until that point. I remember him sending me a remote desktop file and we connected to a single session on a remote Windows Server machine. I was completely astonished to see how fast we could collaborate, even though we were 9000 km apart. Incidentally, this was also the event that made me go: “wow, it’s here now” when I saw Codementor. I knew that a lot of people were going to experience what I had experienced that moment. !
What was your first encounter with technology?
I think my first encounter with tech was a big chunky mobile phone my father bought, which we loved to call “the fridge” because of its size. It couldn’t do a whole lot of things but I remember going through every menu and learning about all the settings, what they were and could do.
How does Codementor fit into your life?
At some point, I decided to start working on a startup, which of course had to start with an idea. I discovered Codementor and thought it represented such an improvement on the existing model, where you have to sit in a room with 25 other people and listen for years and years to things that some outdated institute thinks you should learn, with often very little about the knowledge that is actually needed to succeed in the field. When I saw what Codementor promised, I was inspired to apply the same idea to another field: engineering.
Ultimately this startup failed, as they sometimes do, and I was left back where I started, needing to find something else. I looked back and reflected on the pivot points I could go back to and take a different road. I realized that instead of building a marketplace myself, I could participate in the one centered on my expertise in and from which I spun off my own concept. After all, I already used to regularly help friends with their school assignments and projects. There’s a saying that you should “find what you’re good at and then try to get paid for it”. So that’s what I did. Interestingly, some of the people I helped used Codementor not only to get mentoring and solve specific problems, but also to find experts to work on projects. Before I knew it I had built a consulting firm just by working on projects for people that I met through Codementor. In order to teach and mentor someone else, Codementors need to be able to explain ideas in a way that is easy for others to understand, and that this is something that is also crucial for a potential remote development partner.
As Codementor grew I was able to grow alongside them, and now they have a great CodementorX team (Austin, Jovian, you’re awesome, guys!) dedicated to helping us and the clients succeed. I have grown my consulting firm, now to a team of 4, in large part thanks to the opportunities that I have been privileged to get through Codementor. Codementor has become an important part of my life, it literally has changed my life tremendously, and for the better.
Currently, we’re working on a CodementorX project called Nulern, which is an “expert marketplace” that allows expert to teach subjects like Math, Cooking and Music. This gives us the opportunity to work on a project that aims to empower others all around the world, in the same way that Codementor empowered me. It is a truly open marketplace where students can pick their own curriculum and pace, and learn from the best in specific fields, while experts get paid for sharing their knowledge with those eager to learn. I am excited to be a part of all the things I am part of, but both Codementor and Nulern have a special place in my life and I am extremely grateful for that.
What tools help you be productive?
I absolutely love everything the people at JetBrains build. Their IDEs are my work environment, running on my MacBook Pro, and that, combined with Google and the documentation of whatever technology I am working, is how I get the job done. Besides that, I track my own and my team’s time spent on tasks using Toggl. What gets measured gets improved, right?! I also drink a lot of (good) coffee and water. Gotta stay hydra- and caffeinated.
What inspires you?
I am hugely inspired by the idea that you can change and mold (part) of the world to your liking. Steve Jobs said “Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use. Once you learn that, you’ll never be the same again.”, and it’s true. There really are no limits to what you can do if you set your mind to it. It is a very special feeling to see something that you made come to life and that exists just because you thought of it and took the actions necessary to make it happen. Besides that somewhat esoteric source of inspiration, I draw a lot of inspiration from the fact that my projects allow me to build on and live a great life with my loving girlfriend who is there for me and who supports me every step of the way.