A peek into the backend code at Hadrian with Jakob
Jakob is a backend developer at Hadrian, which means he works with all the programs that don’t have a User Interface connected to them. He develops the infrastructure, the hacking tools, and the API that the frontend developers use to create the product the clients see. Born and raised in Denmark, Jakob moved to the Netherlands in November with his boyfriend and dog to start working at Hadrian. An avid believer that backend development holds the most exciting challenges, here he gives us a ‘behind the frontend’ peak at the code involved in creating tools like the ‘Relational Data Indexer’.
The work done by backend developers isn’t always as visible to the client as the work on elements such as the website done by frontend developers, so what really drew you towards backend development?
Really I consider myself a fullstack developer, I know enough frontend development to be dangerous (laughs). What drew me to the backend is that there’s so much complexity and challenge. On the backend you have such a big world: you can make a web server, or a game server without needing the skills to make it look pretty. You can use different programming languages to suit the needs of what you’re doing - you’re not forced into a box.
Of course your love of development challenges started with a love of computers in general. You mentioned to me earlier that growing up you were a huge gamer. What was the first video game that really woke you up to the potential and excitement of computers?
Oh, that’s a good question. (Long, contemplative pause). I think Age of Empires.
I discovered tech through my siblings. My brother is a software developer and my sister did computer science. My sister’s now husband is a software developer as well. I distinctly remember, when I was like five years old, my now brother-in-law brought home this computer that had a bunch of games on it - Age of Empires and Grand Theft Auto. At that point I didn’t understand a word of English so I was like ‘eh, let’s play and see what happens’. I was just exploring this computer and I was fixated.
Well, you’ve come a long way since those first video games. You’ve worked as a software developer for some pretty big companies, like eBay. What attracted you to start-ups, and Hadrian?
I’ve been in lots of large and medium sized companies and none of them were really for me. With the big ones - you’re dealing with a product and a culture that has been around for a really long time and you can never really make a mark. With the small and medium size ones - they’re never big enough to do great things and not small enough to be really agile. With a start-up everything starts from scratch.
In terms of Hadrian specifically, when I saw the job posting and they used Rust and Go, I thought that’s what I want. Rust is a rather new language and it’s just been a dream to work with. When I saw that I knew I had to jump on this opportunity. You see ‘Rust’ and just know that language will make you happy.
Also, I’d never worked with hackers before. It’s super nice because you have the experts right there. Sometimes if you don’t have those resources the developers can become Jack-of-all-trades. In this case I can specialize in my job while I let the hackers specialize in their job.
You mentioned that one of the big draws of Hadrian was that they use languages like Go and Rust, which you found exciting. What makes these languages so great to work with?
There’s a personal reason and there’s a professional reason. The personal reason is that I’ve been in the Microsoft world for most of my career so trying something new is really exciting.
On the professional side, the languages have a different philosophy behind them than what I’ve worked with before. You’re able to work fast, while not sacrificing your precision in terms of making the correct decisions regarding the code, and writing code that has fewer bugs.
With Rust specifically, the way it’s made allows you to avoid so many pitfalls you find in other languages. For instance the way Rust uses memory is really great. As a programmer you need to watch out for memory. When you run your program it will take up a certain amount [of memory] and if it ‘bloats’ you’ll be taking up memory that other programs on your computer need. That’s why you might see your screen freeze on your laptop. You don’t want one program using up all of the resources. The way Rust works, whenever you get some memory to use for your program, Rust tracks the lifetime of that memory and then releases it back automatically to the computer.
In other languages like C# and Java, your program has to run within another program. It’s the outer program that tracks all that memory and cleans it up for you. The issue with this technique is that it comes at the cost of performance. Rust is great because it doesn’t sacrifice speed. Plus, Rust is more ‘environmentally friendly’ because it doesn’t require a lot of processing power but can still do things that high level languages do.
Since coming to Hadrian what has been your favorite project to work on?
The project I’m working on now is the one that I’m really excited about, it is a new tool we’ve been thinking of as a ‘relational data indexer.’ Basically, it explores the whole internet and then takes what we call a fingerprint - IDs, or some specific data from those websites. From this fingerprint we start making hypothesis-driven assumptions about the digital security of your website. For instance, we can use the fingerprint data to identify which version of a system is running and if said versions have any known digital security risks.
It also helps us to create datasets for any future machine learning. The computer can use our classifications to make predictions. We can also use the fingerprints to correlate assets to customers which is very exciting. There’s lots of possibilities and we’re still starting it up.
As a huge fan of challenges you must be able to foresee some obstacles for these projects - what do you predict will be the biggest ones?
The dataset and the amount of websites that we’re going to scrape is enormous. We need to finish sometime before the end of the universe, and we need to have a way to store the data in an efficient manner. Normally we store data on the cloud but this can increase cost as we pay more money as we store more data. It’s a cost-optimization question in a sense, and so that will be something we need to consider, not just speed.
Working on new developments like the ‘Relational Data Indexer’ must give you some excitement over how far the Hadrian product developed - what’s been the most exciting development you’ve seen since joining the team?
When I joined we basically just had a demo website with one script. The fact that now we have nine, ten scripts and then can already do a lot of what a hacker would have to do manually is pretty cool. We almost have an automated Hacker, and that’s the value proposition of Hadrian. To be able to watch it come to life in front of me has been amazing.
The product has grown since your time here, but the team has to. What have been the benefits of working at Hadrian?
After only two months here I already consider it a bit of a family. I can talk to anyone about any personal stuff I might be dealing with and they can talk to me. I just learned a new term this week - Psychological Safety - which is when you’re able to speak your mind without fear of being viewed negatively. I guess an example is when you do a brainstorm or whatever and you don’t really want to say your idea because you know it’s kind of stupid…but here speaking up is just encouraged. Of course, you don’t necessarily know this stuff when you’re looking for jobs, but I think I just got this great vibe from Hadrian. I’m having such a good time.