First steps in programming

I’ve been into computers since childhood, my fifth grade at school to be exact. Not everyone had them at home, but I got lucky: my mom was temporarily given a work computer to use at home; my school also had a computer. And then my dad brought home another computer, or so it aimed to be, an old Soviet machine which basically resembled a calculator with a lot of buttons. This contraption was predominantly used as a notepad as it only had the memory enough for ten programs. I recall how, trying to launch one of these programs, I found a grocery list instead of Basic. The only good thing to come of it all was that enclosed to this grocery list was a book on Basic. With its help, I started to delve deeper into the subject.

I started my programming journey with simple games: explorations, shoot 'em ups and quests in the style of “there’s a big angry ogre standing in front of you, what will you do”. So by the time they finally started to teach us Basic at computer science classes at school, I’d already had some experience and asked for more difficult tasks.

When the time came for me to decide on which university to attend, I chose ITMO as even back then it had that reputation of being a university for champions. I didn’t even consider other higher education institutions and enrolled at the School of Computer Technologies and Control thanks having via an academic competition.

Why having a varied curriculum can help you in life

At the university, I had to master Unix, computer simulation, networks, and programming. All this theory came hand in hand with lots and lots of practice: when you’re given this or that task, you have to begin by getting to terms with how everything works, which technologies are needed for you solve this task, and, in case these are unfamiliar to you, you have to master them also. This is very close to how things work in the real world, in your real career.

Looking back at it now, I can see that all of these in-depth fundamentals I was introduced to at the university came in handy in my work: simulation, networks, hardware, and to my surprise, even philosophy. I came to realize that all people are different, that everyone has different values, so that what’s right in the eyes of one person can be utterly wrong in the eyes of another. This is why I don’t see any use in arguments, unless they pertain to something truly crucial or some technical aspects. So you could say that the things you learn at the university stay with you post-graduation, coming up in the right moments.

Exigen. Credit: dev.by
Exigen. Credit: dev.by

In my fourth year, I found the company Exigen, where I went on a summer internship and later got a job. It was situated on the Petrogradskaya Storona, which was great as it allowed me to easily juggle university studies and work. The internship helped me become part of real projects and understand the whole process from behind the scenes: how teams work, who the customers are, and why it is important to talk to people instead of sitting in your corner all the time beavering at your project and giving some sort of a result once a month.

The four years after I graduated I worked at different companies, specializing in Java, backend and Android development. For the most part, everything revolved around JVM (Java Virtual Machine – Ed. note). It’s hard to come off JVM, it being so universally versatile, but working with it can get boring from time to time. Now that I’ve switched to Kotlin, the process has become significantly more fun and convenient.

Working with startups and acceleration course in Amsterdam

From the moment I enrolled at the university, I developed a plan: start working as a programmer and then, once I accumulated enough experience, try my hand at startups, which is very much like entrepreneurship in the field of IT. I’ve always been interested in creating a system that would allow for upscaling based on the number of users there are, and it’s hard to push yourself in a stable, nine to five environment. When you know that there’s no one to cover you in case things go wrong, you make more effort.

In 2015, I was offered to work on a new trading platform; I was in charge of the technical side of things. Later, the framework of the TabTrader project allowed me to take part in the Amsterdam-based accelerator Rockstart (Rockstart is an accelerator that offers 180 days of mentorship, 20,000 euro worth of investments, as well as office workspaces – Ed. note). This was a cool experience.

The accelerator Rockstart. Credit: noviotechcampus.com
The accelerator Rockstart. Credit: noviotechcampus.com

We attended lectures on marketing, branding, as well as lectures by technical experts, for example, from Google. While there, I tried to talk to as many people as I could, from fellow programmers to marketing professionals and psychologists, just to obtain a varied experience. I think that first and foremost, this experience was useful in that it taught me to develop products for real people out there, not some imaginary person in my head. Now the project continues its successful operation; moreover, we’re in the process of hiring new staff.  

How to survive a serious injury and seven surgeries, and launch your own project

At the beginning of 2017, I got seriously injured at a ski resort in Dombay. I survived seven surgeries, changed a couple of doctors, and in the end, got cured at the R. R. Vreden Russian Scientific Research Institute of Traumatology and Orthopedics. Chances were very low that I would be able to save my arm, but I did, though now I’m still recovering.

I felt really bad during my treatment; however, that was when I took to reading a lot: about biotechnologies, neural interfaces, and prosthetic limbs. At the same time, I started learning more about the existing prostheses, and there was a moment when my physician told me “Why don’t you create something of your own instead?”

At about the same time, I watched a video with Hugh Herr, a famous American rock climber, engineer, and biophysicist, who was caught in a blizzard and had his both legs amputated, but didn’t give up. Currently, he is a professor at the MIT Media Lab, where he directs the Biomechatronics research group, as part of which he and his colleagues develop new types of artificial limbs. I got really impressed by his phrase “Humans aren’t broken. It's our technologies that are”. This made me wonder: why is that we have rockets, ships, and smartphones, but can’t develop a proper prosthetic limb?

How come there are no good solutions in the artificial limbs market?

The thing is that this is a very small market. There are just several dozens of medical companies that rule it, which makes it extremely hard for smaller ones to bring their products into the market. Besides, medical technologies is a very complex field with lots of regulatory mechanisms, risks and rules, so no wonder that most people prefer creating some fun entertainment applications or web services for millions of users instead of investing in this area.

How will the system work?

When thinking about the concept of the project, I asked myself what is the easiest way to produce a neural interface? I realized that I needed some sensor that I would then sync with a smartphone and create an app capable of processing big amounts of data. The app would serve as a bridge between the sensor and the server that uses machine learning technologies. So, the system consists of three key components: a sensor, an app, and a server.

Neural interfaces function at the intersection of several fields such as medicine, electronics, programming, and machine learning. Bearing that in mind, I decided to invite specialists in these areas to help me with my project. For example, Andrey Ivanov from Astana helped me with electronics.

Apart from that, I got acquainted with researchers from Computer Science Center, who also offered me their help. Our main task now is to complete and launch our application and server. We also plan to use deep learning technologies to further improve our device, which will possibly allow us to move to more complex control strategies, not just classification. After that, we plan to create an artificial limb based on this simple control system and install a smartphone into the prosthesis.

The majority of prostheses now don’t use electronic solutions at all or use very simple ones: for one, a basic modern artificial arm has two sensors on each side. Such a system is very user-unfriendly, let alone extremely inconvenient.

Prospects

As there are quite a lot of people who will benefit from our neural interface, from the very start, I decided to make it an open source project. In fact, it can be useful not only for people without limbs but also for everyone interested in controlling anything. Maybe in the future, touchscreens will be replaced by more intuitive forms of human-machine communication and interaction.

Imagine that your hand is a gamepad that you can use to play video games. With the use of machine learning, we are going to develop such a ‘virtual gamepad’, which you can learn to work with as if it’s your new body part and use it to perform certain tasks. For example, play video games or control your devices. In the end, I want us to get an open source method of communication with the nervous system, which all humans have.

You can find Kirill Yashchuk's project repository on this GitHub page. Here's the developer's page on Kaggle.