A Specialist in Photonics Doing IT: ITMO's Master's Student Wins the Hackathon in Singapore
Finding suspicious transactions, creating his own bitcoin, choosing a unique application for a particular client and finally winning the hackathon of Singapore's largest bank DBS - this is the story of Pavel Dmitriev, ITMO's Master's student and engineer at the Department of Nano-Photonics and Metamaterials who is currently doing an internship atSingapore’s Agency for Science, Technology and Research. In an interview to ITMO.NEWS, he shared his experience and explained why a scientist focusing on photonics should know programming, how to not give up after almost everything you've done fails, how to surprise the jury and finally decline a great job offer in order to pursue science.
This is not your first time in Singapore, isn't it? What are you doing there this time?
Last year, I did a three-month internship at the Data Storage Institute of Singapore's Agency for Science, Technology and Research (A*STAR) as part of the Singapore International Pre-Graduate Award (SIPGA) international short-term program. At that time, I was working on a project on dielectric nanophotonics, as well as learned to work with high-technology equipment – for example, the near-field microscope by the Nanonics Company. This was a great opportunity to work with leading foreign specialists and learn to work with equipment few in the word can operate.
The second time I went to Singapore was this January - I went there for a whole semester. As of now, I have almost completed my Master's Degree program, so I only have to defend my thesis on optical effects in dielectric nanoparticles. I work at the same place - the Data Storage Institute - and now I continue all the projects we've started last year.
Tell of the DBS Hack2Hire Singapore. Why did you decide to try yourself at a different field of science?
I learned of the hackathon accidentally. The hackathon was organized by DBS - Singapore's largest bank. DBS is a traditional bank that is set on changing its profile, processes and rules so as to become a high-technology company; they've opened a new office last November, and are actively hiring programmers. The recent hackathon was also for this purpose - the best participants were invited for job interviews.
DBS Hack2Hire Singapore
Why did you decide to participate?
First of all, I've wanted to take part in a hackathon for a long time already. By the way, about five years ago, during my first years at the university, I worked as a developer, plus I’ve hadsome groundwork since school. Thus, I already have considerable experience, and I try to keep it up. Secondly, just imagine: Singapore's largest bank organizes a hackathon with high competition - as far as I know, a thousand programmers applied for it, and only about 100 got into the final round. That's why I knew that the event will be one of a highest level.
What were the tasks for the final round? Were all of them real business tasks?
There were three tasks, all very particular: they were more about introducing the solutions than coming up with original ideas. The first one was on developing a system for tracking suspicious transactions. We were given a database on operations with credit cards, and had to learn to define which of them are suspicious, so as to use this database to track potential frauds. That was mostly about machine learning and real-time classification.
The second task was on writing our own bitcoin - in essence, we were to create a framework for some currency. For the third task, we were given a database on calls; for each client, we had to choose different types of offers. For instance, if the client does international calls regularly, we were to offer a discount on those, and so on.
Who were on your team, and how did you distribute responsibilities?
Initially, it was planned that in the final round - the 24-hour long hackathone - there would be 100 people, i.e. 20 teams, five participants each. Yet, right before the event it turned out that some couldn't come, so the groups were formed on the spot. In the end, we had 19 teams.
I got lucky - my team was really great, and this must be the main reason we won. There were four of us: a guy from Singapore who's good at front-end development, a girl from India who knew machine learning, another guy from Indonesia who worked with databases, and me. I did the back-end, though that is not exactly my field.
By the way, the girl from India was not a programmer as well - she’s a data scientist, and works with Big Data. Thus, we only had two "pure" programmers.
What was the most difficult part?
The main difficulty was that at first, I couldn't even imagine how this all should work. It started to work out somehow only by about four in the morning. So we started at 10 am on the previous day, and only by 4 am next day I had some back-end, a server that could interact with our front-end. The front-end was a map that showed whether some operation is suspicious or not.
By 6 am, we introduced machine learning to our program. And yes, by morning, everything broke down, so until eight, we tried to solve this problem. Fortunately, we did, and by 10 am everything was ready. By the way, about an hour before the presentation I got many ideas on how to do everything better, but there was no time to make any changes, plus we were too tired.
How did the presentation go? Usually, a successful presentation is what defines the winner.
Surely, creating a good prototype is only part of the job, one also has to present it. We had a great front-end, which showed transactions processed by the back-end server - geolocation and classification, depending on whether the transaction is suspicion or not. All in all, the presentation was a success.
Having a good front-end developer was really great; thanks to him we had splendid visualization.
There was also a gimmick about our front-end and back-end: if one of them disconnects, the application continues to work, which we successfully demonstrated during our presentation. We had a laptop we used to present our project, and the back-end was on a separate server. We've turned off the Wi-Fi, so the application stalled and reported that it lost connection with the server; then, we've turned Wi-Fi back on, and it continued like nothing happened. Though we planned to use this effect for the presentation, we've noticed it accidentally. Yet, I believe that it was the reason behind our victory.
One of the hackathon's prizes was a job interview at the bank. Did you already use it?
For me, the main prize was the new MacBook Pro. This motivated me to not give up when everything broke down at 6 am. Now, I have a good computer for work, something I really needed for quite a long time.
As for the job interview, I soon understood that we don't suit each other. They wanted me for a team that does back-ends, but that is not exactly what I want to do for life. If I ever leave science for corporate companies, I would be much more interested in doing R&D.
DBS Bank. Credit: bankingtech.com
Programming is a good backup plan, yet science is my priority. Having worked as a programmer some five years ago, I know that I was bored with the tasks I had then. As for me, science is a lot more interesting: the tasks are more open, complex, and diverse. And you can earn by doing science, as well, so it’s a great choice for me.
How programming skills can be of use in photonics?
Working in any high-technology field implies having such skills, as calculations and data processing relies on programming.
There's a certain set of instruments, for instance, for computing the propagation of electromagnetic fields or light dispersion on particles of different form. For all these operations, one can use ready products or write his own ones.
I already have a set of codes I wrote for calculations, which I’ve optimized for working on clusters. For instance, I needed relatively simple calculations for light propagation in anisotropic lamellar structures, and wrote them myself. This allows to better understand how these methods work, and thus use them more effectively. All of those are relatively simple things, yet they can be really annoying, and you can't always find good ready solutions.
Yet, if one does not have sufficient programming skills, using ready solutions is surely a better option. Still, if one wants more control of what he's doing, writing his own programs is easier.