AppForce1 Podcast: news and information for iOS app developers
← All episodes

Benedikt Terhechte, a Rust and iOS Developer located Hamburg.

01:00:03

Send me a text

You might know about Benedikt through one of his confernce talks, or the podcast he did with Bas Broek. Anyways, he has done some interesting things in with Rust on iOS.

Oh and… “Basically, it just involves a crazy amount of brackets. So if you find Objective C offensive, then please do not look at Lisp code.”

I think it was me who said that and I do not know where I heard if first, but this line cracks me up every time I hear it.

My talk with Benedikt is an example of why I enjoy doing the interviews so much. So, thanks for that Benedikt.

You can find Benedikt on Twitter. And to learn about the other things he is doing have a look at his website. https://terhech.de/

Join me in Amsterdam for Do iOS 2025, tickets and details available now.

Lead Software Developer 
Learn best practices for being a great lead software developer.

Support the show

Do iOS: https://do-ios.com


Rate me on Apple Podcasts.

Send feedback on SpeakPipe
Or contact me:

Support my podcast with a monthly subscription, it really helps.

My book: Being a Lead Software Developer

Read the transcript
Jeroen Leenarts: Hi, and welcome to another special edition of our podcast. I'm sitting in here with Benedict Terhechte. I hope I say that correctly, because you are from Germany, right? Benedikt Terhechte: Well, I'm from Germany, you're right. And you pronounce it very well, like a Dutch person would. Jeroen Leenarts: Yeah. What's a nice G in it? Right? Yes. So you're originally from the Netherlands? Benedikt Terhechte: No, I think one of my ancestors was, Jeroen Leenarts: so it's, it's a last name that migrated with families into Germany, Benedikt Terhechte: but into Germany isn't really right. Because the area where I was growing, where I grew up, was around five kilometers from the Dutch border. So you would have friends in the Netherlands? And obviously, there's a spillover, right? Where I do have, I do know, families where one person is Dutch. And one person is German. Because there's so much spillover between over the Jeroen Leenarts: border. Okay. Yeah. Because your your first name is, to my knowledge. It's it's very German name compared to typical Dutch names. So you grew up in Germany in Munster? I think it was. Benedikt Terhechte: Yeah. In a region closer Munster like really next to the, you know, on the Dutch side. Enschede? Yeah, yeah. Basically, they're like, outside of Enschede, is where I Jeroen Leenarts: Okay. So yeah, you had your childhood there. grew up. And then at some point, you got involved with an education at University of Munster. But communicate Sean's business shafts. That's like communication science. I think it's in English. But it's it's quite a peculiar topic, I think, for a study, because it's very focused on on the technicalities of communication, like communication technologies. Right. Benedikt Terhechte: Right. Interesting that you research that. So I did a bit of a gamble back then. So what happened was that I had worked in software engineering, like I had started. Basically, in Germany, we have the system where you can do a apprenticeship. And after the apprenticeship, you basically stay on the job. So you don't necessarily have to go and study. And so I did the apprenticeship and did that in software engineering. And I worked in the company, and I enjoy doing that a lot. And after a couple of years, I had the feeling that because you learn something cool school, and you learned, you learn a lot of things from from the people around you like the co workers. And I wanted to study something. And I felt like if I want, if I'm going to study something with computer science, there might be a lot that I have already done, right? Obviously, there's much more topic on computer science there. It's totally clear to me, but I had the feeling that maybe I could do something else that would widen my horizon in a different area. And my idea was that software is really just a mechanism that transforms media. So I was wondering, maybe I should learn more about media. And there could there were a couple of universities were applied. And there was also something that something similar in 2008 and the University of Trento were applied. But then the thing I got was the one in Muenster. That's why I was accepted. And so I did that. And now in hindsight, it was not what I expected. I learned a lot of things that are really not useful. I learned a couple of things that are very useful, useful, but I met great friends that are still good to my heart. And I still have basically, in my circle of friends today. So if I would like if a fantastic time, right as university is, but Jeroen Leenarts: If you have a good time, then you have like a really good time, usually at the university. Yeah. So that. So yeah, so you mentioned that you did that while you were working as well. Right? While you were running some sort of senior developer role somewhere. You were were you like sponsored by the company or what was the construction there? Benedikt Terhechte: Yeah. So that was the the idea because I, I could not have done, we would go into technicalities and legal technicalities, because in Germany, there's a system called Path Pathak where if you want to go to the university, and don't you don't have the technical merits to do that, the state sponsors you. But in my case, this wasn't possible. Now, why that is the case. It's out of scope here. But it didn't, it wasn't possible. And so I needed to pay for it myself. Which mostly when the university itself is cheap, but it mostly meant you're paying for a flat and having enough money to survive if you're not working, right, because you need food and drinks and the weekend and the entrance to the club and stuff like that. And so that all all need to be need to be paid for and the company that I worked for before, like a couple of years before I started to go to university. They gladly paid for it in for a deal where I worked two and a half days for them. So two and a half days of the week were university and two and a half for working. Jeroen Leenarts: So that was that was a useful setup for you because it allowed you to do your education and basically financially remain afloat. But when you graduate that was 2000 And then 11, that was pretty much like ground zero for the iPhone, right? Benedikt Terhechte: I actually graduated I think in 2009. Yeah. But yeah, there was already I'd already started doing iPhone development at that company. So they they were. So the interesting part here is that at that company is where I started doing Objective C development. Because what they did was, they would take like, originally, they would take Linux boxes, installed media, playback software on that. So that would play movies and stuff like that connected to a TV and place it in museums. So that in museums, you can basically have interactive installations and play videos and stuff like that, they will do that. They started doing that in 2004. I was they we basically the big then started to the doing that in 2004, rolling optic Linux installations, all the museums and controlling them from a central server. But the you would always have these agencies was very, very skillful designers that wanted to do very nice things with shadows and animations and transparency and Linux couldn't do that. And so in 2006, when Apple released the Mac Mini, I started working on that immediately because Mac was back then compared to Linux, that there's very few, like even today basically had this this great Windows server where you could do transparency and rotation and everything was really easy. Like all these text effects and stuff we wanted to do that were very difficult to Linux, you could just was cocoa could just do and so that's our I started doing cocoa development 2006 because we needed to get to import the stuff we had over to the Mac. Jeroen Leenarts: Okay, so and then you move on to even more work on the Mac platform. So your entry into the Apple ecosystem was actually on the Mac side of things. But what I find interesting at a company that you worked, it's that you did Objective C, Python, JavaScript, Lua, and closure. Yo, Whoa, man, why all these languages? Well, so Benedikt Terhechte: I that was what I collected. I'm not sure where you're where you read that because I think that is a couple of years old. Nowadays, I would remove Lua enclosure from that list. But I would guess I wrote that in 2015. And at that point, those were indeed the languages that I was using for a couple of projects. Like there was a time after doing a couple of years of Objective C right, I started in 2006. And around 2013, I felt bored was object to see like, I don't know, I didn't it was just like, I felt like there was a demo shortly before swift came out. But nobody knew that yet. And I can't, I was looking for something else. And so I started learning Scala, because I wanted to do to learn a different language. And I enjoyed Scala. But there was things I didn't like. And from Scala I somehow I forgot, honestly, I forgot why I ran into it to closure. And I really liked to the listeners and so on, and actually did like two or three freelance projects for a couple of companies in closure that was very fun. And even include the stickers on my laptop. But then stuff come out, right. And so I thought my way back to the Apple platform, and I left Lua enclosure in Scala behind. Jeroen Leenarts: So it does expose you to a number of different languages, and especially if you have a lisp based language, probably a lot of my listeners have no clue what we're talking about right now. Basically, it's it just involves a crazy amount of brackets. So if you find Objective C offensive, then please do not look at Lisp code. But but in a sense, did you feel that that Lisp as a language gave you like more handle on different approaches to solving problems in software development? Benedikt Terhechte: So thinking back, there were a couple of things that I really liked about using Closure. One was that you have this, like what's very normal enclosure is you take a single function, and you execute that, just that function into into a repple into basically you hot reloaded. And then you can execute it as if you were in a playground. But you do that with all the code you have. So instead of copy pasting the stuff into a playground running it there, you basically you're in your file, and let's say you have a 1000 long line file of code. You can take you there's a function, let's say you and somebody else wrote and worked on that. And there's a function, you look at that. And you wonder what exactly does it do when I give it a couple of parameters, right, and you just go there, you tap in I was using Emacs, because that's what you do when you use it. And so in MX, you have like this combination that I completely forgot about where you press seven keys in a specific order. And then it executes this function. And you can start running it with different parameters and see what happens. And this makes it very easy to understand code because you can play around with things. So I like that. That's very good. That's very good and nothing else I've used since comes close. And the other thing is that back then multi threading on or concurrent On Objective C was mostly limited to dispatch queues. And closure had a couple of really beautiful abstractions to handle concurrency in a very simple manner. And in order to use them properly you had to understand them and that's how I learned a lot about concurrency that is still helpful today. Because fundamentally in the like, beyond all the below or these obstructions that you have the the the mechanisms are similar, but it's just very good to know them from the from first principles and cloture made that easy because he would use the much more because they were so such a core part of the language. Jeroen Leenarts: So just in a few sentences there you just like you mentioned Emacs, you mentioned Clojure, magic key combinations, and a thing called a REPL that 's a run evaluate print loop, if you want to know what it is. It's basically a bit like Prego playgrounds, but then playgrounds on on steroids, and then some. So yeah, you seen a couple of different languages, and then swift came around. And then swift basically allowed you to pull yourself back to the Apple ecosystem. Again, you mentioned. So but what what was it like when you're doing like Mac apps or iOS apps? So what what kinds of stuff were you doing back then? Benedikt Terhechte: I was. So interestingly, when we jumped back a couple of years, when I left that company, after I was done with university, the Instagram came around. And so insulin was really just, it had just started, I think it was end of 2010 that I signed up for it beginning of 2011. And they had an API. And I had worked on a desktop app for Facebook, like a couple of months before that, that had I had released and that hadn't really gotten a lot of traction. But the fundamentals were similar, like I had built in a gallery viewer and a photo feed and stuff like that. And I was like, well, can't I just take your notes stuff up from this Facebook app and put it over to an Instagram app. I did that. And that's sold much better. Like I was an indie developer. And so I built this app called Insta desk. And that was a makeup for Instagram very, very early on. And I just continued doing that until 2015, I think, was ever new releases. And dude, while doing that also learned a lot more about Objective C, like the first couple of versions were really terrible in terms of everything. But as you go on, you learn more, right? And via that's what I was doing. And on the side, I was doing freelance projects. Jeroen Leenarts: Yeah. Would you consider yourself to be like right now, Apple developer, an iOS developer or a Mac developer, just to label yourself Benedikt Terhechte: or that sort of question. So I don't I wouldn't consider myself a Mac developer anymore. Because I like when I when I was done with incidents, it had to be renamed to photo desk at some point because Instagram had a trademark when it's done. So when I finished working on photo desk, I stopped doing that development. I haven't really done much in that area since so I basically had I haven't followed up on what happened to a kid in the last couple of years, except for a couple of small things. But But fundamentally, I think I would be very confused. Actually, I was confused. This summer, I wanted to build a small Mac app and the things I stumbled upon, like we didn't know how it worked. So there was a lot because things change and you forget things. So I know I was much better because I've been working as a senior iOS engineer in the in the last company I worked for for five years. And I have this other side project. Now we will probably talk about it hypothetic, which is based on catalysts or UI kit. So I would rather see myself as a iOS developer. Yeah, then electable. Jeroen Leenarts: But but also, you've been like a senior team leads, I think it says on a specific page, LinkedIn, actually. But if you look at that role, being a senior engineer, being like a team lead, or what was your day to day back then Benedikt Terhechte: usually at the company as a team lead, you don't leave really look into the technical things, and you're not really developing anymore, because you're a manager, managing a team of engineers, or engineers and QA is like a team of people. And you're responsible for making sure that they develop properly that like they to keep too much work from the away from them or any or any issues that might confuse them and so on basic, you make sure that they have like they can perform it the best and they can also develop at their best and become better persons and hopefully grow up and become like the best version of themselves. The team I was a team that have a very specific team, which was the the platform team, which is a team that is responsible for integrating the work that happens by from all the other teams that work on the iOS And the company I worked for, which is a competitor to LinkedIn, it had around 40 iOS developers. And so it from that perspective, like the the team lead of the team that I was leading was special in there always special in that there is development involved. Because like the the platform team is so far, like everything the team does all the work and so on is so fundamental in the in the task that it's useful to understand the problem from the software side, if you're leading the team, otherwise, you would better decisions. And so I would still help out, although less so I would say to do code, but mostly it was more being part of the discussions, raising topics, talking to the community of other iOS engineer at the company and trying to find solutions and discuss solutions and stuff like that. Now, there's much less development. Jeroen Leenarts: But you mentioned already that you did like five years of like, of like team leads work at this company. But what year, why do you think you ended up in that role, what were like the things that made you stand out, amongst others, that they said, Hey, you might be a good fit for the senior team lead role within our company. Benedikt Terhechte: So I started as a senior engineer, and I did that the first three years, and then I switched over to the team lead role. And I specifically asked for that, so that there was an open position opening up. And I liked the idea of being able to have more influence on the product from a from the technical perspective, like influencing decisions, to make sure the product can improve properly. And so that was, that was for me, like one thing. And the other thing was being able to help the team along by by like, using my knowledge of what I knew about all these technologies, and so on to help the team find make the right decisions, and, and so on. So basically, I wanted to try it out. To be honest, like I've been doing development for such a long time, but I felt, why not try this out and see if like people, managers management is something that I would like. Jeroen Leenarts: So what's harder, managing some bits of code or managing a couple of people. Benedikt Terhechte: It's a bit like asking the difference between managing a very difficult code base and a very simple code base, right. So you would actually have to compare for different things like being a teammate of a fantastic team or have a obviously, from the team lead perspective, there's no better team, let's say from from a team that's very new to and you have work that needs more attention. And having a fantastic code base, or having some code base that needs a lot of attention. Yeah, so let's take just the two perfect examples. They take the x perfect codebase and the perfect team. And I think if you if you compare these two, the team lead thing is very different. And that in that it involves a lot of communication. It's like, it's really important to talk a lot to your people and to think about the discussions that so there's much more work that doesn't happen with a computer. And like it doesn't require a computer. And it's basically it's like, you know, you could also sit down and just look at the wall and think I mean, you also do that when you when you code, but less so yeah. And you, you really have to there's a emotional component component attached, because you really need to understand the people in your team, because they might not open up, right, they might have an issue that might not want to talk about it. But you still need to see that in order to be able to help them you can't just ignore what you're feeling. And so there's a lot, it's a completely different set of tasks. I think the engineering part is easier. Jeroen Leenarts: Yeah. Yeah. And then in looking back on all the things that you that you did, if you would be in a position that you would be able to choose, what would be the best way for you? Or the most? What would be the best way in your mind that you could like, create an income for yourself? Would that be like being an indie developer? Being a software developer in a large company? What would what would like the ultimate job description be for you? Benedikt Terhechte: I asked myself this question many times, because it's fun. It's fundamental in figuring out where to go to write it was, you know, the saying don't skate where the puck is going, is skateboard. It's going to end in a similar vein. Live is about figuring out where you want to be in 10 years. And this is obviously a crucial, crucial part of that is like what is it that you really enjoy? And from from a pure software development perspective, many years ago, I did back end development in Python. And what I will never forget is that when you do like sa iOS swift developer, usually like half the day you're fighting the framework, right? You do something and then it doesn't say What it's saying it does, and, and then you try to figure out. And when you, when you explain that to a back end developer, it's like, half the time you're using the database, it does something else. And then like that would be untenable to a dead end to a back end developer like there, you don't fight the framework, it just works. You weren't, you have your code, you write your tests. And if something doesn't work, it's your code. And so that's what you have to look into. Now, obviously, when you use a complicated, but framework, there might be an issue, but there are phallus issues, then you have with the APA frameworks, simply because what they do is much more complex. And, and so life as a back end developer is good, because you're mostly concerned was writing the code writing the test and the networks and know if there's a bug, you can you know, where to look, you look at your code, it's all the stuff we have to do in order to figure out what that code is doing in a certain framework or or cocoa is doing. The worst I ever had was when I when I disassembled something from UI kit to figure out what it is doing. Because I couldn't I couldn't understand it. And Jeroen Leenarts: yeah, especially with UI kit, even when you're, it's It's working, it's bug free. It does what you want it to do on screen. But even then, it's like spewing autolayout complaints on your console left and right, and like dozens at the same time. Yeah. Benedikt Terhechte: And then you release it. And then the people that use it, it crashes. And you kind of say, because it's not crashing on your system, and then you do a release but it and you drag and drop it onto your iPhone in order to make sure that it's not a release optimization works fine. But somehow something some of their iPhone devices, everything is in a sandbox somehow on their devices is different. And it crashes. Jeroen Leenarts: Yeah, yeah, that's, that's even though because the the the iOS ecosystem in devices is, well, compared to Android, it's like really constrained in all the variants that you have. But even then, the number of different combinations and platforms that you can actually run on are, are substantial still, and, and it's amazing how long some of these phones last with some people, right? So yeah, along the way, what were some of these like these, like these hockey puck decisions that you made? And because you mentioned that, yeah, these kinds of choices is like not skating to where the puck is, but where the puck is going? Where do you want to be a teeny 10 years from now? And do you have some examples? Like, from over the years that you've made a decision that you in hindsight, think yes, that was one of these key moments that I made a decision? Doesn't matter if it's the right one, or not to almost a question how it works out. But do you have one of these examples? Maybe? Benedikt Terhechte: Well, I think we already mentioned some right from a, I think, a very smart decision. And that was not something where I where I can claim that I had smart thought it was just a lucky accident, I was doing this Instagram app, because it just grew together with Instagram. And at some point, it was generating really, really good income. And I was working with a couple of hours a day. And the rest of the time I did travel met friends, I worked on side projects, I learned very weird programming languages, such as Java and closure, because I could like it paid for a lifestyle over years. So that that I mean, it also, there were a lot of downsides to it, right? Because I would get tons of customer feedback that I need to go through. And some of some of them I couldn't help and so on. So it's not all bright. But in general, that was a good decision, I think. And I learned so much. And also, before that, like switching to like I used to be a Windows user, and I switch or Windows and Linux, and I switched to the Mac in 2002, I think or 2003. And that was a good decision. Because they brought was it like me starting with cocoa and was was Mac development and a lot of the other things and yeah, so they suddenly I would say that it probably a couple of smaller ones. But the kind of thing that you hinted at, which is to really think where do you want to be at some point in time, there's something I was never good at? I think I think need to I'm not, Jeroen Leenarts: I think I think this is one of these things that Hindsight is is always King in these cases. Because yeah, especially if you're like in your 20s it's still like, yeah, you just do whatever you like, and you think you can take on the world. And there's so many options and things you can do and everything is fun. But just Benedikt Terhechte: before going to that if I may I can I can give you an example of a really bad decision. Jeroen Leenarts: Those are good as well. Benedikt Terhechte: In 2011, a friend of mine and me we decided we want to do wanted to do a iOS game and iPad game together. And we we worked on that for two years and we invested a crazy amount of work. So it like it was or maybe I think we started in 2012 or may 2011 I forget the details. And so it was like every day at Couple of hours of a total two years, and it was it had 48 levels, and it had kind of a couple of characters. And there was music and like all the things you need and the animations and so on, like, and we had a custom game engine and so on. So it was a crazy amount of work. And I think it was free, and 48 people downloaded it. That's That's it. Jeroen Leenarts: Ouch. Yeah, that's, that's like, not what you were hoping for, to say the least. So just looking at all these things, right? At some point you got into the Apple ecosystem by just making it your main workstation really? Was that like a specific reason back then? Or was it because of everybody else was using it in your environment where you were at? Benedikt Terhechte: Yeah, we're not gonna switch over it was. Back then I was still doing. I was doing development. Like I had to run Python and a couple of other things. And but I was also doing design. So I always had Photoshop and and illustrator and so on running. And for, for Python, and so on, I ran Linux, and but in order to use Photoshop, and so on, or in Windows, and so over the day, I would like to do a multi boot five times because I needed to do the one or the other thing, but the Mac back then it ran the full Unix. And it had Photoshop and Illustrator. And that was what I really wanted. I wanted to be able to run these things at the same time. You could do that with wine, which is an emulation layer for Linux to run Windows software. But that was buggy back then it was even way worse than it is today. And so that wasn't really an option. And obviously there's stuff like GIMP, which is a image editing program for Linux, but I like I was doing proper design back then. And I needed the same tools as my coworkers. Jeroen Leenarts: Yeah. And came didn't cut it. Right. It was just losing the ad was missing some features then. Benedikt Terhechte: Yeah. And even if you can't, like open and save the files that the coworkers are opening, saving in Photoshop, it doesn't really help. Yeah, that's, Jeroen Leenarts: that's also a bit of a hurdle. But I guess that you already mentioned you were like, in Windows systems, Linux systems. So it must have not been your first computer that you were dealing with then. So what was your first interactions with with computers, and then I'm reading like, and I'm meaning like, they're really first interactions, not like schoolwork. But even before that, Benedikt Terhechte: when I was seven or eight years old, I really, really, really wanted to have a computer and my parents bought me a Commodore 64 Oh, wow. Which was at that point in time, already kind of old, the Amiga had come out and so on, but it would like that was my first computer. And usually you would have them with a disk drive. But the one that I had, it was basically they had bought it from a guy in our village, and he didn't have a disk drive, he only had a cassette tape drive. And that I don't I don't want to go off a tangent here. But it's interesting because like, obviously, some people some people still know floppy disks, which are like USB sticks only with almost no no memory on them, like very little and but there was also there was a cassettes, which were the same things you would put into your Walkman. But you could also store data on them. And then it would basically if you played them in, in a Walkman or something there was there was just noise. But if you put them into the cassette player for your Commodore 64, this noise would be interpreted as bits and bytes. And then it would load the program and like loading a program would take up to two minutes because it needed to play the tape and be done with playing and getting all the data. So it was terribly slow. But that's what I had. And so that's what I started with. I mostly use it to play games to Jeroen Leenarts: Yeah, but it's a nice entryway. And it's it's it's something that's relatively simple that can get you familiar with, with the technologies. I actually got started with a set expectrum So there was a there was like years before that, I think and that involves tapes as well and recording programs from midnight broadcast my my dad fortunately did that I was sleeping at those times. But I still remember Manic Miner being a game that I played quite a lot actually. So then you get started with like your first computer. So that's like a Commodore 64. Then at some point, you go through your educations. And then at some point you come to the conclusion How are maybe I should like focus a large part of my work life on something involving computers, right, because design work, computer work, software development is computer work. But what was the what was the reason that you actually decided to chase this career path when you were like still like an adolescent? Benedikt Terhechte: As the first computer I got was and that was because I really wanted to have it and I asked my parents for years and at some point they gave him and they bought me back then it was a Pentium 60 which was like the like intellect, the 486 line. And after that came the Pentium nine and there was the smallest lowest Pentium you could buy. And so that's what I got was a small 15 inch screen. And I just liked everything about it. Like, I started playing Doom, which from its software, and like, after playing, even playing it a bit, I was able to get my hands on, on software on level level editors for it. And so I was I was immediately starting making my own levels. So I really enjoyed that. And then I got my hands on music software, and they're called trackers, and they you can use them to like compose music, a bit like a programmer, and I started doing that a lot. And so what I realized this I was never good was handiwork like at school, you would do like, let's, let's use a block of wood, do something with it, and some people had something beautiful, and everything I do would look shitty. Yeah. And, but with computers, I could be very creative and without having to use my fingers in weird ways and hurt myself. And so there's like the the ability to be creative, like, like a bit this bicycle of the mind thing from Steve Jobs. It just allowed me to do things I couldn't do without it. And then what got me hooked up. And then I want to learn about programming. I wanted to do that because I wanted to play to create games. And then from there, I learned in general just how I liked programming how fun it is. I continued doing music and so all the creative things. That's what attracted me. Jeroen Leenarts: Okay, so you could say that you you learned your first bits of programming on your own time as a kid with some books, probably from the library. Yeah, and then just diving in headfirst and just hope for the best. A lot of lot of stuff that you broke or was usually fixed with a reboot. Benedikt Terhechte: I, the computer I got had all as to install, which was a alternative computer operating system that was different to Windows. And I knew nobody else who had that. Like I was the only person who had it and I had no clue what it did what I was at work different than what my friend said. But it was very difficult to break. That was the upside was was das it was easy to break it Yeah, you just needed to delete one file was always to was rock solid stable. I couldn't break it. At some point. I removed it because I wanted to play games that it didn't allow me to play. Jeroen Leenarts: Yeah, so that's always to warp rights. It's yeah, I still remember that. But like the box art was a lot of yellow. I think it was. Benedikt Terhechte: Yeah, it could be could be I didn't get it with a box. I think it was sold out. Like there was a time when it became what came pre installed on German computers. And that's when I got my computer. I have like when I look at screenshots, I have good good memories. Because like it like everybody else was running dos, and then you had to to enter a cryptic DOS command. And then we know what Windows would boot up and always to head. It was just the UI, like everything was nice and so on. But then in the end, it didn't run all the games I wanted to play and I was a kid. Jeroen Leenarts: Yeah, that's that's yeah, it's typical, what motivates you to do certain things. But already, you were like, pretty much on an alternative operating operating system back then. So maybe that's where like this, this this this offhand seed was planted for you to get an interest into closure and emacs as well later on? So iOS development, or at least Mac developments or something with Objective C or Swift? Let's dive into that a little bit as well, because you mentioned something that was interesting. There was HyperDeck hyperdeck.io. Actually, it's, it's an app that's been in a beta stage for quite some time. And it's, it's, it's an app that allows you to create presentations, right, right? And is it something that was created by you to scratch some itch that you had or that you will like, I need some software that works in a certain way so that I can do my own presentations in a different way, or Benedikt Terhechte: he kind of so right now with the new world we are all in. They are not really that many conferences going on. But when I started working on Hypertech, I was attending around seven conferences a year five to seven, they're giving talks there now. And most of my talks were heavy on the code, like not too much. But But I was like less slides, but code, but then what I wanted to I wanted to highlight specific lines of code and then maybe zoom coded and out and stuff like that, like do to be able to be flexible and have proper syntax highlighting and so on. And with keynote, there was just a pain and especially if, once I was done, done with my things, and I found a typo again, it was a lot of work. And they're there were competitive apps like deck set, for example, which is a good app that takes Markdown and you just have the code in the markdown to create slides, but it lacked a lot of features that I thought to have in a presentation like proper animations, proper slide animations, proper code animations, and a lot of other things and being able to form individual headlines and paragraphs to change the font and the stuff like that, and the design in layouts. And in general, I, like I tried to fix it. And I felt that it didn't offer what I needed, I want to have, I wanted to have something between keynote and tech set somewhere on this area. And I thought, you know, if something like that exists, it should also run on the iPad, because why not. And I started with a small prototype, and I had it broken very quickly in a very limited manner. And from there, I continued, and, obviously, things are much easier from the outside than from the inside. And so initially, I progressed very fast. But then I ran into specific issues and problems and so on. And then it took me much longer than I thought, to have a version that, like I began with an iPad version and thought I would just, you know, add the magic catalyst button in the end and have a Mac app. And that's not how it worked. So I think Mac support took me almost a year to get right in because of catalyst. Like I mean, it would also have taken me a year without catalyst. But then at least I think I would have run into less packs. But so in general, the idea was to have this thing between deck set and Keynote and hopefully have way more features in the future because I thought I would have a proper framework to add additional cool features. Yeah, but it's still in beta. It's still not done, because there are a couple of issues that are very, very tough to solve. Jeroen Leenarts: Yeah. So is it like something that you have mentioned already, you created because you wanted to do your presentations in a specific way? And that's an entire topic that we haven't touched upon yet. But you mentioned catalysts being like a big part of the of the of the challenge of getting this this this HyperDeck products, like, ready for for like not better status? Is it like every time that that Apple does like a big system upgrade? So let's like in June, they announced it and then like September, October, they released a new version? Is it like that you're very hopeful, install these new versions and hope that like a catalyst is like all of a sudden, like much better or and does that actually happen in practice? Benedikt Terhechte: The second catalyst release, I was very hopeful that a couple of major grievances I had resolved and the second cut of his catalyst release, they weren't solved, okay, at all. And the like, and this was so I mean, it's obviously everybody has a different gripe, right. And I had something that which didn't, which I will explain it. So basically, when you when you write slides and markdown that you have to split up and say this is where a slight answer with a next one begins. Yeah, and you do that by using the three minus signs next to each other, and then you hit enter. And the UI TextView in Catalyst would interpret this the three minuses and would create an A M dash now. And you could not disable that there was no way to disable that at all. So whenever somebody would start typing slides in my editor, and he would try to insert a new slide, UI text, you would just do a text replacement, and then you had a m dash, and it was impossible, like I did, I tried a lot of things like the last thing I tried, I think was to hook into the input system. And then when I saw that this replacement would happen then so I thought basically, I hooked into the the storage of the UI text view and when the when this replacement happened, I would undo it, like I would replace it, but the replacement happened even below the storage layer so I couldn't hook into it and stuff like that. And so there was no way to fix it. And so for the second laptop, I got a call with a the like for the with the next candle is released. I got a call in one of the what what's it called, again, when you talk to the the labs, yeah, one of the labs and then explain my problem. And then he said all create a ticket and I had already created a couple of tickets for that, like radars, but then it was fixed was like the the subsequent release and from then I could at least release a beta of of HyperDeck because at least people could write markdown but they have more issues like that. And with the last release of micro es nothing really changed which isn't bad because I was also afraid that they would have changed somewhere they would break my app in terrible ways. It just they didn't change anything. Yeah. But many things are currently hooked patched by by by code that I wrote that a figure to add here or there were just it just crashes or it does weird things and there's nothing Jeroen Leenarts: I can do about it. And for next project would you like ever use catalyst again? No. That's a clear opinion. So but you created like your own little presentation tool because you're you had like a specific need for your presentations. And that also seems to indicate that you've been doing a lot of presentations before March 2020. Chris, you already mentioned that conferences have somewhat slowed down over the last couple years already. But doing conference talks, is that something that you have been doing for a long time and is something that you enjoy doing? What what's the reason that you that you like to do like five or seven talks a year? Benedikt Terhechte: So I guess my first I would say, official talk, like at a conference in 2015, the German conference, and I was very afraid. Very, very afraid of standing there because I have stage fever. And so I, my heart was beating fast. I was afraid I couldn't like I couldn't focus, or I would run out of AR stuff like that. And the reason I did it was because I wanted to prove myself that I can do it. Like, fundamentally, there was an issue with it. And, but then, I enjoyed doing it. And I got very bad, very good feedback for that talk. And then, and so I, I did another talk, and then another one. And then then in 2016, I gave a talk at a Spain In Spain, obviously. And so what they do is, they have a house where all the speakers basically share a house together. And so yeah, like, you wake up in the morning, and like, there are five or six speakers sitting downstairs and you can nerd out with them. You go to the kitchen, and you have a coffee, and you chat, and you meet all these crazy, cool people. And you talk about things. And that was like that was absolutely incredible. I really enjoyed that. And from that point on what I what I liked about going to conferences is well, there are many things. But as a speaker, the thing is that you meet really cool other people, not just other speakers, but also attendees that you meet. And they talk to you a lot you learn from what they do, and they learn from you. And then you also like as a matter of courtesy to the other speakers, you listen to all the other talks, right? You usually except for let's say the top right before yours usually is where you where you go through your slides again. But other than that, you obviously go to the talks. And so for my job, it was incredibly because I was always up to date on all kinds of things. Because I went to I don't know, like five conferences a year, say conferences, I watched all these talks, even though if they were not relevant to me. But then maybe they were at some point. And then I had that knowledge. And so I ended up just like to travel. So a couple of things came together. I really, really enjoyed doing that. And the first year of the pandemic, I was very sad that I couldn't go to conferences anymore. No, I'm just used to it. Jeroen Leenarts: So but what did you What do you expect at once? If frt, the world opens up a bit again, that you will be traveling again and doing some conference talks here and in 10 to Benedikt Terhechte: 20 years? No, I'm hopeful that this year in summer, maybe there was this conferences will start again. And I will maybe go to two or three this year if things Jeroen Leenarts: work out. So So what are some conferences that are like really high on your wish list right now? Benedikt Terhechte: Well, I don't think all of these will happen. Months. Right? When COVID started, I was just about I was one week away of flying to Tokyo for a try Swift. Yeah, I had already been there, that would have been my second visit. And I just love Japan and I would have loved to go there again. So I would love to go to another try Swift. And then, obviously, in Spain, I mentioned that I've been to every NSP and that you actually could go to since 2016, and I would love to go there again. But then also, maybe there's I don't know I I think those are the two that I would really look forward to but then a lot of others as they happen. I would also like there's a great one in Switzerland. That that I would love to go to that. So Jeroen Leenarts: yeah, that's in Switzerland. That's the that is that the apples one Benedikt Terhechte: with the Apple is is also really cool. I also went to that one. Yeah. And then there's the workshop conference. Jeroen Leenarts: Swift Alps. Yes. Yeah. Yeah, that's also and that's like Dutch version of that as well. Why some some guys right there. On Tessa. Yeah, with Sydney and Neil's Yeah, yeah, yeah, Sydney Neil stay we're actually part of the Dutch cocoa hats at some point, which I'm still running nowadays. And because when when this really attention but the Dutch cocoa hats one that there was already like an existing media organization, but at some point I for some reason, they trusted me to be in charge. I still don't know if that's like a good idea. But then back then that news part and I decided, hey, we need to like incorporate this thing into a legal entity. So a nonprofit because then sponsorships will be like way easier. So actually Neil's from the Swift is Is it is one of the founding board members of Coco Chanel. Nowadays he moved on, he's not involved anymore with day to day of coca hats. But anytime that that he's he's around and he's able to give a presentation his his his welcome always because he's one of those people he does these crazy live coding talks. It's it's amazing to watch, see to see Neil said one of his presentations. So back on topic. So conferences, it seems that that's something that you will really enjoy doing. You mentioned you had some stage fever. But what were some other hard things that you had to overcome when when when doing presentations? Benedikt Terhechte: Well, the stage fever was it was and is a difficult one, to be honest. So that's something that I still still fight with. In the end, like at the end of 2019, it had gotten way better, because I just gave so many talks that you know, it's you get used to it. I think if I were to give a talk, no, I would start with completely new stage fever. And one of the ways and I mean, I shouldn't show this on a podcast. But one of the ways I bet that was there was always a little bit drunk. So whereas before I would go to the stage, I would go hide somewhere away drink a beer, or a glass of wine or a shot or something, and then I will go to the stage. Yeah, but I've never been sober. Yeah, Jeroen Leenarts: but that's sober is not being something that's like just one glass. That's okay. It's it's it's a bit of a coping mechanism. But on the other hand, I think the ritualistic aspect of going through the motions, that's the important bit, not the amount of the little amount of alcohol that one class will actually put in your bloodstream. But I think really having a ritual, that's probably the thing that gave you like, some some comfort and some something to hang on to in those last few minutes before somebody shoving you on stage. Benedikt Terhechte: And the other thing that's difficult is coming up with topics. Yes. It's like when you're sitting there, and you're listening to talks, then like, there are three or four talks where think, oh, yeah, I had the same issue and the same solution, but I wouldn't have thought to make a talk out of that. And what a great talk it is. So there's like, it's there's a lot of knowledge we have, where we just don't think hadn't figured out how to make that into a into a fun talk. Yeah. And that was always difficult to me. Yeah. difficult for me. And I guess it's difficult for everybody. Jeroen Leenarts: And did you reuse the same talk on multiple conferences? Or was every conference talk? Original? Benedikt Terhechte: That that's depends. But usually a talk was given two to three times but always in modified versions? Yeah. Like I would go like after the first stock, I would know, okay, this part was maybe a bit too much. This one will be short, not this is something people had issues with, I will lengthen it and so on and so good, become better from from top to top. Jeroen Leenarts: Okay. If people have questions on getting started with, with conferences, and like doing presentations and conferences, what are some, some some what are some tips or some resources that that we could point them at? Benedikt Terhechte: Is I think that like, currently, it's easy to give a talk because you can do lots of online conferences allow you to submit talks, and most of them allow you to submit pre recorded talks. And that is, I think, a much easier way to start because when you when you start talking and after 10 minutes, you realize you messed up, you just start from the beginning or you edit the video, so that is very easy way to start. But before that was possible, what I usually advise people to do is to go to a cocoa heads and give a talk there, where you have depending on the corporates, you might only have 15 to 2020 people listening, and if you are in a city like Barcelona, where they are 100 people at the CoCo x then go to a different city with a smaller Cocoanuts. Yeah. And so that you can start there and especially, and maybe you also don't know all of the people, and then you can start small, it's much easier Jeroen Leenarts: now. Yeah, that's also with Cocottes. We really try to facilitate that. Sometimes. It's it's a lot of fun, because, yeah, how do I put this so that I don't put off people but it is, it is a lot of fun to actually have somebody new on stage who's like, completely struggling. But then of course, you recognize a lot of things that this person is then able to improve on, because they're never doing something wrong, right? And what's really nice, at least in the setting that we're at, it's like really, once this person sort of like crawls offstage, feeling ashamed of themselves and just like, oh, man, this is what this is. I'll never do this again. And then just the sheer amount of feedback, the encouragement and just like, hey, man, if you ever need some help, reach out, I will review your slides. I will do like a practice session with you. That's that's amazing to see. And it's, it's actually quite a lot of fun because there's some people who started at the Dutch coca Hatsu are now reasonably well known. as presenters and and content creators from the Netherlands, and they got their start at the Dutch Go Cats, which is really nice. So yeah, with that, did we forget anything to talk about? Something that we missed? Or do we have to revisit something or? I think we covered pretty much everything right? Benedikt Terhechte: We didn't talk about rust, but I don't mind. Jeroen Leenarts: So yeah, what is the rust anyway? Benedikt Terhechte: Well, we can briefly talk about that. So just so why why would how I ended up doing that. So in 2000, I think was 18. I felt like learning another programming language. Sometimes I have this urge. Yeah. Makes makes fun of it. Actually. She calls it I have this glitter in my eyes that I only have when I start using a new text editor or new programming language. And she Jeroen Leenarts: she picks up on that. Benedikt Terhechte: Yeah, she she understands that. No, because I, because I started like, I start talking about it. Okay, so when I when I picked, at some point, we were in like four or five years in a relationship, I had been a vim user. And at that point, I switch over to Emacs. And it's not a topic that it's interesting to the significant other, but I didn't care. And so she had to learn her nobody next. And, and similarly, so in 2018, as a habit, I started, I wanted to do a different language. And now, the reason that I picked and picked rust is because it's a strongly typed LLVM based programming language that is very similar to Swift in many, in many ways. So it has something like protocols, there are traits, it has extensions on the protocols, like like Swift has, it has a very similar type system with associated types, obviously, everything has a different name, because in programming languages, it's it's not good to have the same name for the same concept in two different languages, you don't do that every concept in every language has to have a different name, even though it's the same concept, different name. And so, so all the things have different names, obviously, but they are the same, you have enums with with associated data, which again, has a different name. And so it's all very similar except that in Rust, everything is harder, because it's it doesn't have the reference counting system arc that swift so it doesn't have a garbage collector, it has a different way of managing memory that is also pretty nice, but it's tough. And what I liked about that was the challenge of like back then I quoted swift in hurt me plenty, like when you play some computer games, you can choose the difficulty mode. Yeah. And rust is basically like swift except everything is much more difficult. And I like that because my idea was when I went to understand this and learn this, I will probably become better at swift because a lot of the things that were swift just has magic dust to have you ignore the the nitty gritty details of how it works in Rust, you have to understand them. So that's that was my idea. And I needed a nice side project. So I started learning it. And then when I started working on HyperDeck, I needed a fast way of parsing Markdown and syntax highlighting it possibly in one pass. And back then there wasn't really a good markdown parser for for Swift. And even if there were my requirement was that I didn't want to have a parsed syntax tree. So I didn't you know want to have let's say there's a header, there's a headline editors, The following content 123 A B, I wanted to know the ranges because I wanted to paint a UI text view, I wanted to take the markdown that is written and it give it a bold and a rich text on top like I wanted to format it properly based on the Markdown and I wanted to have all that in one pass and rust offered that and so that's how I started really using it in production because the the other person could inhabit it was using rust and I enjoyed that so much that from there on, I started doing it more and more. And so right now in my spare time, I'm mostly doing rust development. Jeroen Leenarts: Okay, so small sidestep. But then how do you incorporate the stuff that you build in Rust with like Swift or with Objective C? Because that it's you have to bridge two different worlds really? Right? Right. So Benedikt Terhechte: it used to be that this was a bit more difficult when I started. But now it is actually like I have it all because I've done it in multiple projects. Now I can basically I can compile the rust into a XC framework and just drop the Drake's code. And there is a there are two rust projects that generate swift bindings. So basically you get a XC framework that already that already has everything exposed to Swift. I'm not using that. What I'm usually doing is rust can like expose a C binding interface you As we can see header file, and I'm usually using that. Jeroen Leenarts: So but then you're calling into your rust code at with with unsafe pointers and like at C level. So that's like, hear me talking C level, but that's like the C functions that you need to call and then you have to do the elegant free correctly. And then once you do that, yeah, you have Benedikt Terhechte: to do that correctly. But so what I try to do normally is to have this interface as minimal as possible. And one option is to just move Jason back and forth. Yeah, so instead of having a complicated structure with a ton of stuff, I just within rust, make a JSON string, give it to Swift, Swift parses it, and then it's fine. Jeroen Leenarts: Yeah. So that's, that's basically sort of It's a bit like a web service, but then not with the internet component. Right, Benedikt Terhechte: right. Yeah, I would love to use something else other than Jason. So there's FlatBuffers. And a couple of other things. But the last time I did this, viz, implementations and issues on the Swift side, and was tricky, and Jason was easy and fast enough. Jeroen Leenarts: Yeah. Jason, Jason works really nice. Because most Jason parsers, do UTF eight encoding correctly, which is for some reason, it's a big problem for a lot of languages. Benedikt Terhechte: Well, boy, I had so many issues. Oh, I don't have to address it. That is like that will be a three hour conference talk to talk about Unicode. Yeah, I Jeroen Leenarts: did something similar with with goco that you do bridging on C level bindings, but that was it's it's it's a lot of fun. And fortunately, I only had to like call for functions into the into the Go code, and then heaps of machinery would start working inside the thing. But yeah, just it's amazing what you can do just with with code sharing, but a lot of people don't really know about it. Yeah, so yeah, sorry. What's that something? No. So yeah, with that? Small sidestep, right. Anything else? Benedikt Terhechte: No, no, I don't I don't think so. Okay. Jeroen Leenarts: Well, if there's nothing else to talk about, where can people find you online? Benedikt Terhechte: I'm on Twitter, at tiszta, which is the last name that is so difficult to pronounce for almost everybody except for Dutch people. And, and the with the same name, I'm also on GitHub. Yeah. And I also have a website called to H dot d. And I also for website, fa, a swift blog called adventure.me. But I hadn't really been updating it for years. So it's, it's a bit stale. Most of the content there is old, and I used to have a podcast together with plus Brooke called contravariance. But there's, there's one episode coming. Jeroen Leenarts: Yeah. Because bus, he left the spaceship again. Yes, he left us there. That's also the reason why I had to stop because he was moving into Apple back then. Or if I remember correctly, Benedikt Terhechte: we had a couple of episodes without him where I had different people on. But yeah, so in general, that the main reason was that he was not allowed to do a podcast because he was working for a very secretive company. Jeroen Leenarts: Yeah, with this nice spaceship sized campus. Yeah. Okay. I'll make sure to link up everything in the show notes, because then probably have an easy time getting spelling correct. And, yeah, with that, thank you very much for your time, I'd say. Benedikt Terhechte: Thank you for the awesome discussion and the interesting questions, and I really enjoyed it. And yeah, thank you. Thanks for inviting me.

Keep listening

More from the show

Image
Title