Tim:
- Tim Hinkes
- tim[ÄT]tim-hinkes.de
- Berlin, Germany
- Software Engineer - Backend
- Software done right
- TU-Berlin Msc. Computer Science (almost finished)
- Focus: System Engineering
- Minor: Economics
- Java (8)
- Cryptography
- In Crypto We Trust
“Who are you?”:
I’m a backend software engineer who is interested in Software-Security and well build systems.
“What kind of work do you do?”:
Since May, 2018 I’m working again as a backend software engineer for one of the core components of a Berlin based startup. This time starting with a greenfield project utilizing JOOQ Spring* and Cucumber for our Behaviour driven development(BDD) (Stay tuned for more details SOON)
From March, 2017 until end of April 2018 I was working as a junior Developer with the great people at neXenio, developing the Spring Java backend of a truly secure cloud storage solution (BDrive) “made in Germany”.
Previously i worked as a working student at TU-Berlin @Institute of Mathematics as a Linux-SysAdmin/Developer (to be honest, most of the time is spend supporting users and sometimes feeding the printers).
“And in your free time?”:
I read a lot of general IT stuff, mostly it’s about programming, programming paradigms or design patterns. Since my focus is Java(8) a lot of posts are about java and the java-universe. I’m really into how to do things the right/best way and what are the best tools to get a job done. I often try out new things in a small project for myself (most of those projects never even make it to github, due to a lack of a real purpose/vision behind it).
Lately i got more and more interested in what good APIs look like and how to design them. I ask myself the question “If i had to program against my own API, what would i want it to be like?” This helped a lot in designing my first APIs for small (university)-projects. For example i designed almost the complete public API for our Microsoft-OneDrive SDK which was a university project. Just recently i build a little grabber for the Berlin public transportation, which gives you almost an SDK for getting the estimated/scheduled departure times.
Another big part of what i’m interested in is security, cryptography and privacy. When you read IT related news you often get the feeling that there is something really wrong with how IT is done. A lot of common problems are really unnecessary, because they are solved problems, or at least the impact of a successful attack could be significantly reduced by employing simple and broadly accepted measures.
“You said cryptography, isn’t that a rather mathematical subject?”:
It depends. Of course, cryptography is a purely mathematical problem. But how can the best encryption help, if it is used wrong? I’m not really into the cryptographic algorithms themselves, i leave that to the math geniuses who (unlike me) actually know their math. What i try to do, is find ways how to use the “features” (trust/confidentiality/integrity) asymmetric encryption offers. My whole Bachelors thesis was build upon how non-IT people can establish trust and confidentiality over untrusted channels.
“What about University?”:
During my bachelors i chose “Software engineering” as my main field of study and threw in a couple of “Machine intelligence” courses which were really interesting but soon turned into “math only”. But there were really interesting software projects, in which i often turned out to be the “project manager” (or as close as you can get concerning university projects). For example, we have built a fully functional flightradar24 clone and have developed a softwaresystem for a Go AI-tournament. We subsequently split up into small groups to develop our own AI to compete against the other groups (didn’t work so well for our team. Years later we figured out, that while implementing the reinforcement learning algorithm, we forgot to negate one if-condition, which was meant to adjust the weights if we made a bad move. So in fact our neural net got “punished” every time it made a good move…..)
Later during my masters i continued with the Software engineering path, only now it was called “System engineering”. That was also when we built the OneDrive SDK, and we had to play around with all kinds of cloud related technologies (Amazon AWS/S3, Google-AppEngine, Cassandra, Bigtable, DynamoDB, Hadoop, MapReduce, …). I always tried to lay a strong emphasis on Software Security related courses, which in the end lead to a project where we developed a prototype platform “Cybersecurity for developing countries”. This project resulted in a workshop where i presented the system to the afghan ambassador, the head of the Team Cybersecurity of the Berlin Senate and others.
“Could you list a few Technologies you know/use or could show someone how to use them?”:
- Java
- Maven
- Git
- SVN
- GPG/PGP(asymmetric encryption in general)
- SQL
- Spring-(….)
- Eclipse/IntelliJ
- Database
- JOOQ (“Java object oriented querying” TypeSafe compiler checked SQL in Java)
- PostgreSQL
- Speedment (Java8 SQL ORM framework heavily relying on Streams)
- Hibernate
- N1QL Couchbase
- Amazon AWS/S3
- Blockchain
- Bitcoin
- NXT/SuperNet
“How would you describe the job you want to work in?”:
First of all, i like to describe myself as a Software engineer, rather than Developer/Hacker/Programmer/Rockstar/Magician….. Short term i would like to work in a small team developing backend components for a larger System, in a company that sees it’s IT not as a necessary burden, but as a central important part of it’s business. Long term i’m looking for something like being head of a software engineering team doing software development on a project basis.