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.