The Changelog: Software Development, Open Source - Homebrew and Swift (Interview)
Episode Date: December 9, 2016Max Howell, famous for creating Homebrew, joined the show to talk about his start in software and open source, the tweet that was heard around the world when he interviewed with Google and didn't get ...accepted, the creation of Homebrew, the naming process, as well as the difficulty letting go. We also talked about his passion for the Swift programming language, and his work on Swift Package Manager while at Apple.
Transcript
Discussion (0)
Bandwidth for Changelog is provided by Fastly. Learn more at Fastly.com.
I'm Max Howe, and you're listening to The Changelog.
Welcome back, everyone. This is The Changelog, and I'm your host, Adam Stachowiak.
This is episode 232, and today Jared and I are talking to Max Howe, famously
known as the creator of Homebrew. It's been more than six years since Max has been on the show.
We talked about his tweet that was heard around the world from that time he interviewed with
Google but didn't get accepted, the creation of Homebrew, the naming process, as well as the
difficulty of letting go. We also talked about his passion for the Swift programming language
and his work on Swift Package Manager while at Apple.
We have three sponsors, Code School, TopTile, and our friends at GoCD.
First sponsor of the show is our friends at Code School.
And this year is a great year to give a gift of code.
If you're scrambling to find the perfect gift for a friend, loved one, buddy, friend, co-worker, whatever,
somebody out there needs to learn how to code and you want to give that gift to them.
Give them access to CodeSchool's entire library of courses.
They've got more than 60 courses and 2,700 coding challenges all wrapped up into one
single awesome gift.
You can give a gift of one month for $29, six months for $99, or a full year for $189, a savings of 46%.
Head to Codeschool.com.
The offer is available until Friday, January 6th, 2017.
The offer starts Monday, December 12th, so very soon if you're listening to this before
that date.
Once again, Codeschool.com.
Give the gift of code, and now on to the show.
All right, we're back with Max Howe.
And Max, wow, it's been a long time.
Episode 35, Jared.
I mean, this is basically a lifetime ago, 2010.
Jeez.
Six years.
What's wrong with us, Max?
Why don't we have you back on sooner?
Who knows? You have to ask yourselves i would just say maybe you were busy and we were busy and everybody's busy
that's something i've been i've been very busy well thanks so much for joining us uh max as many
know you uh the creator of homebrew amongst other open source projects. Of course, that one being a massive hit and one used daily by thousands and perhaps millions.
I don't know about millions.
It might be a stretch.
Thousands around the world.
I'd say millions.
It's millions.
Millions.
Is it millions?
I'd say millions for sure.
Oh, man.
Not even stretching.
It's difficult to estimate precisely, but it's definitely millions.
How do you know that number?
Is that a guess or is that somewhat educated? Well, they got the analytics now., but it's definitely millions. How do you know that number? Is that a guess or is that somewhat educated?
Well, they got the analytics now.
Well, it's a guess.
I can look at the GitHub statistics and see the amount of clones.
And we also have other statistics now.
Right.
It can't be precise, but I just can't see how it could be less than millions at this point.
Right.
Every developer uses the Mac pretty much.
Right.
Well, we'll definitely go back and touch base
on Homebrew's creation,
but let's go even further back.
We like to find out the origin stories of hackers
that everybody look up to,
and you, sir, are one of them.
So tell us how you got started.
Give us a little bit of your background,
where you're coming from,
and what really got you into software and open source well way back when i was six we had a bbc micro this is uh it was a
common computer in england at the time or the uk hence the bbc part and i don't know the exact
history of that why it was branded bbc but i assume that they sponsored its development or something
and my dad started teaching me programming and initially i just made awful games like uh you're fighting a monster pick your weapons sword uh stick or colorful language and uh
that was good fun uh but it was always hobby for me i never considered it for a career
right up until the end of college which i did chemistry for and uh the only reason i got back
into programming like more thoroughly like i've been doing it on and off like through my teen
years and mostly making toys or little tools i made this clock for windows that when you clicked
it it moved to the opposite corner of the screen things like that back when uh windows didn't have
the time in the corner obviously when they added that it made less sense and uh it had a great
y2k bug it turned out out that clock I made after 2000,
I tried to bring it up again and it claimed like it was the 15th century or
something.
Couldn't handle it.
Wow.
So for those who may not actually remember that,
maybe those born after 2000,
what was that?
Yeah.
Give us the Y2K rundown.
That'd be good.
Everyone was terrified of the year 2000 in the software industry,
because if you can believe it, way, like, you know, 10, 20 years before that, bytes were extremely valuable.
We had hardly any RAM.
I remember my first PC had two megabytes, I think, and that was pretty good going.
So rather than store the full date, we optimized by just storing the last two digits.
Very minor optimization, but at the time it
seemed worth it. And then as a result, when 2000 started rearing its head, software would
typically think it was the 19th century or something like that. It depended on how it
was written, like what exactly it did with those two digits. So yeah, well, my stepdad
at the time was working in software and he made like a fortune going around banks investigating how this software would handle the Y2K transition.
And, well, it became a media hysteria, of course, as well.
Yes.
Everyone thought that the world had a 50-50 chance of falling into chaos on January 1st, 2000.
Nothing really happened in the end, I guess.
It shows a different world then though, right?
That world then was so uneducated
about what software was capable of.
It was a different world.
No one had a smartphone in their pocket.
No one really knew an application.
It was just such an ignorant society at that time to technology.
Well, so I think to be fair, or it was just such an ignorant society at that time to technology.
Well, so like, I think to be fair,
the software was even flakier back then, if you can believe it.
Right.
So people had very little confidence that software could handle big events.
Right.
And then it turned out that everything was fine.
So either the contractors made it to every last line of code and updated their date implementations or it was all for naught and it was going to be okay anyways and perhaps people were
profiteering or what's the right word for making boatloads of money based off of fear.
But probably a little bit of both.
Yeah, most likely a little both.
Like I'm sure it would
have been bad if the banks had had problems but they were the ones who were most interested in
correcting it and like maybe some minor less important industries had problems but it didn't
cause the end of the world certainly and i don't time it's still a problem of course like you hear
regularly about companies that have to turn their databases off for daylight savings time because they can't handle being at the same date twice
in the same day i mean the same time things like that so now that's a whole new word there is is
time yeah oh man uh let's not get started on time we'll never find our way back out again but
funny that it did actually affect your your window clock app we're not y2k compliant i was not didn't even think about it which is a
common thing with software development of course anticipating everything that's hard
yeah so uh i did a chemistry degree and i have a master's in chemistry as it happens. But in my third year, because in the UK, most courses are only three years for university.
And I did a four-year course with a year in industry.
So in my third year, I went to work at Kodak in London, which was a bad choice.
I should have picked one of the beautiful chemistry labs in the middle of the countryside,
British countryside.
It probably would have changed my life if I'd done that. But I went to Harrow in London, which is possibly the most disgusting place in the entire world,
and discovered that chemistry is very boring, actually. Really, really boring.
So after about four months of this year, I was quite depressed and I decided I'd install
Linux on my computer and get into making apps.
Although, that wasn't really called them apps at the time.
It's more like programs.
Programs, yeah.
Yeah. programs yeah yeah so i uh started working on kde which is still around a linux desktop environment
and i really enjoyed the sense of community and making things that other people enjoyed using
and so i almost got fired from kodak even though they would rarely do such a thing with these
interns that they had and then went back university, spent most of the year working on two apps.
First was FileLite, which was the first thing I ever made, really, which was a, it's like
Disk Daisy on Mac.
Okay.
Uses the same idea of representing the files and folders concentrically in pie charts that nest
inside each other, which really
helped. Again,
back then we had so much disk space as well,
so you really needed to figure out who
was using what and get rid of the
files regularly.
And Amarok, which was a music
player, and that was
my first
proper open source project. We were working as a
team of three or four of us. And it became pretty popular because there wasn't any good
music players on Linux. And we were doing things that other people hadn't really considered
at the time as well, like showing the Wikipedia information for the artists you were listening
to. I think we invented that. So I almost failed my chemistry degree.
It was close, very close. I basically stopped going to classes and somehow managed to cram
and get the minimum grade required, which was just as well because I'd signed up to do a PhD because I didn't know what to do with myself. I was doing computational chemistry for my
dissertation. So the professor I was working for taught me how to use Mathematica and I was doing computational chemistry for my dissertation. So the professor I was working for taught me how to use Mathematica and I was doing quite well at that.
But I didn't get the grade required to stay there and do the PhD.
So I had to go home and just kept working on open source, basically, until I got a job at LastFem in London because of Amarok.
Because we were using LastFem and scrambling quite heavily.
And I went there and that's what got me into
the industry without a computer science degree or anything similar so when you were on the
change the last time which was September 14th at least the published date was September 14th 2010
were you at LastFM then no I'd been at TweetDeck at that point since January 2010.
I was at LastFM two and a half years, which is the longest I've ever been at a single
company.
But it was a lot of fun, LastFM.
And they had the right attitude towards startups and open source and things.
But they got acquired by CBS in 2007.
And it gradually degraded after that. And all my friends left and all the all the
really talented people had left and so i moved on i went to tweed deck where i built the android app
and redid their iphone app just before twitter acquired them wow which happened after the last
episode that we did together so you should work at companies because they get acquired. Basically, it seems to be that way.
Yeah.
I don't, I like small companies.
I like having lots of hats
and learning new skills and applying them.
Well, something I picked up was that, you know,
Jared, like many hackers who come on the show,
their beginnings tend to be in games to some degree.
Right.
But something that Max had said was the community.
Like, you really enjoyed the community part of it.
So it would make sense that you prefer smaller companies because it's far more of a community
feel in a smaller company because you can't hide.
You have to sort of face the demons that sort of wait in the hallways.
They're just there.
You tend to be
more civil potentially even or maybe not yeah i agree um something insulating about big companies
way and uh it becomes so much more political and i can't stand that i i want i want to get things
done i don't want to have to persuade people to let me get things done yeah bureaucracy is is a no fun battle that's for sure
especially if you're someone like you who has the ability to i mean and having the track record of
things like homebrew that millions of software developers use every day and millions billions
did you say billions jared i'm about to check the stats. Okay. But, you know, lots of people use what you make.
So, I mean, if you're that kind of person, why put reins on you?
Yeah, well, I hate to be arrogant in that respect,
but I feel that I get so much less done when I've got barriers in place.
I don't want to be that kind of person.
But it turns out that I am.
I really, really hope so amrock is your first opens that was your
first foray into open source was was this and that was just before last fm is that right yeah
that was i started working on amrock in probably 2004 and then i joined us from in 2007 i'm walking
down memory lane with you max because i ran KDE for a few months in
college. I only
lasted a few months and I had to go back to GNOME
for some reason. Probably, who knows, something
didn't work. But I was
using Amarok and
I have fond memories of Last.fm
of course Scrabbling, I think.
Was that Last.fm's big thing was
Scrabbling and I was getting my
you know, I think my iTunes was Scrabbling,
the last FM, which was posted to my WordPress.
So, like, you're pulling me along down memory lane
as you go from place to place.
TweetDeck, I got no ties there, but you had me at last FM for sure.
Where did Homebrew begin?
Homebrew began just after, well well probably right at the end of last
firm i was because the last time we were making cross-platform software you know had to scrabble
on every platform and uh managing the dependencies that we had which there were there were a few not
many relative to like what people have nowadays like blimey but there wasn't really any good way
of doing that and so homebrew was kind of a response to wanting a system that could be
cross-platform and would allow me as a developer to control the dependencies on my system in
multiple places and it's funny that these features do exist but are not very used not not why it's successful at this
point but it is something it can do you can install multiple instances of homebrew you just
have to check it out in different places and it will install to those places and the cross
platform as well as in ruby it there is now a well-maintained linux, but the original goal was that it could be.
So I started building it at the end of last year.
And then when I left, I left in order to make iPhone apps.
I thought, you know, because it was right at the beginning of...
Yeah.
Well, it was 2009.
So the app store had been around for about a year.
And the stories of people making a million dollars out of like doodle jump and things like that were inspiring and i had experience with iphone development
because at last fan we'd made an android app we made a iphone app and a blackberry app so
wow blackberry the blackberry app was awful yeah they did have an sdk it was just terrible
and i i don't think their store lasted very long
in the end. What language would you use
for BlackBerry? It was C++
which
yeah well
raw C++
I never want to do again
certainly
but last time we used Qt
which was a C++ cross platform
toolkit and Qt was very nicely designed, which was a C++ cross-platform toolkit.
And Qt was very nicely designed using a subset of C++,
like any good framework tends to because there's just too much of it.
And it had a very similar to Coco kind of way of working,
Coco being the name of Apple's frameworks for Objective-C and now Swift.
So yeah, I had the experience.
So I thought I'd quit and make apps and make a million dollars and be very happy.
But the problem was I kept working on Homebrew because I needed it for various other things.
And once I put it on GitHub, people started to notice it. And then one day, this guy, I think his name is Simon Willison.
I forget.
He used to be Twitter famous.
I'm not sure if he is anymore.
But he posted a super user question about how to manage dependencies on his Mac.
So I answered with, oh, I made this new project.
And I explained a lot of the rationale
behind it. And that got it noticed
by Josh Peek, who I think
is a GitHub now. He was at
37signals. So he
tweeted that when he upgrades
to Leopard, which was Mac OS
10.5, I think.
Or was it 10.6? No, that's
10.5. He would install Homebrew
and that got me my first
hundred forks and then it just kept going up and up and up and uh then it became addicting because
every day i'd wake up and there was a bunch of the pull request didn't exist at that point
it was just tickets from people saying oh i made this formula it's in my fork
when you merge it so i'd merge it and from start, I designed Homebrew to be really simple to contribute to
because I knew I didn't want to write all the formula.
And one of my issues with Mac ports
was that it seems opaque.
It seemed really difficult to figure out how to contribute.
So I designed it so that there were commands
on the command line to help you see the formula,
contribute to the formula, edit them.
And it was all built on git that was the
update mechanism so you could just push straight away with your edits and that was the key really
to its success i think it's just the understanding about how people don't really like contributing to
open source because they don't know how so you've got to build that in as like a an easy way for
them to just push back their contributions.
I designed the formula themselves to be very readable so you could open any formula and understand how to make your own.
It was always part of the design I went for.
Another aspect of Homebrew that I recall making it popular, which interestingly we just had Mike McQuaid on the show
back in episode 223,
talking about Homebrew's 1.0 release
and the current core maintainer, primary maintainer.
And he's inherited a lot from you.
He's inherited the naming convention.
And I think Homebrew as a name
and then the metaphor of the naming convention,
applying formula and kegs and sellers
and all these things uh had a certain attractive like it was like marketed itself in a certain way
yeah uh tell us give us maybe you talked about this in 35 but you know six years ago none of
us remember what was the impetus behind the naming convention of Homebrew and this whole metaphor you came up with?
How did that come about?
Well, I love names.
I mean, I hate names.
I love hate names.
I love hate relationship.
So often they're terrible.
Like people often don't think carefully about their names especially in programming for
like classes and functions and they're so important i'm a big believer that you don't
need to comment if the name is good and the responsibility boundary is clear and so i feel
i feel if i need a comment on this function that i haven't or or class or whatever, that I haven't named it correctly.
So I've always been very keen to pick the right names for things.
But also I understand the marketing importance of a name for an open source project.
If you call it Package Manager X, no one's going to talk about it.
Right.
You need something inspiring.
So I was just looking for names at last fem while i was
there like near the end i was like i i need i want a theme i was saying i want i want the name to then
lead to other names i can use in this product and one of my co-workers said well then should be a
beer theme obviously max because startup community obviously there's quite a bit of drink there.
And London, there's so much drinking in London.
Like, that's one of the things my wife who's American said about London.
It's just like, you get a job in London, and then in the evening, you go to the pub.
Every day, you go to the pub.
And that's true.
Basically.
Not everyone goes every day, but someone in your company is going every day.
It might not be the same person every day,
but you know you can go to the pub across the road from the office and there will be someone you know there.
And that's one of the nice things about pubs in Britain,
that they're really places you can go to meet people you know.
And it's friendly and it doesn't have the stigma that it does in America.
In America, you have bars and probably there's some guy who's there every day know you and it's friendly and it doesn't have the stigma that it does in america like in america
you have bars and probably there's some guy who's there every day and he's a loser and he's a drunk
pubs in britain are like where you going it's true he's there right now actually
he probably is but well it london overdoes it honestly I think it's important to draw that distinction too because what you call a pub
is probably a cool place to hang out,
watch sports,
and see friends that you may have not seen in a while.
Whereas my version of it might be more like a bar,
like a small town bar,
which is similar but not the same.
Yeah, a pub is it's a lot more
family friendly i i guess would be a one way of describing it like they serve good food even
yeah and um hopefully it's been owned by the same family for a while although that's less and less
the case sadly so yeah they're a lot they're a lot more savoury. But still, London overdoes it, really does.
So at the time, I was 26 or whatever.
No, I'll be 28.
28 I was.
And so, yeah, there was a lot of beer in my life.
And to be fair, I drank British beer, which is usually 3, 3.5%.
So it seemed like a great idea.
And then I thought, well, Homebrew is a great name for it.
At the time, I didn't think about the Apple connotation. I was just thinking about how, you know, I wanted it to feel like a platform that you could create your own packages for and customize them the way you wanted them to be customized. name and it just led to the other names i thought carefully about each one like there was a while
that it wasn't going to be formula it was going to be recipe because you they're not really formula
in the home brewing beer space but it formula was more unique and uh kegs and sellers and
like cakes are stored in racks technically but that's not really something people know.
It's all there in the,
and it's, it's fun.
So it worked out really well.
And,
um,
I hope I didn't contribute somewhat to the silly naming systems that seem to
go on in open source nowadays.
Like people seem to name their things completely randomly nowadays,
just to have a distinctive name.
I saw an image library the other day called Kingfisher.
Like why is it called Kingfisher.
Like, why is it called Kingfisher?
Right.
It doesn't make any sense.
Yeah.
It's gotten to the point where it's more akin to domain names where, you know, the real estate's running out
and there's namespace clashes.
There's many times that we see names that are, you know,
are exactly the same as another project in a slightly different ecosystem
or language.
And like you said, people are trying to draw more and more attention to their open source
projects because there are more projects.
And so it's harder to get noticed.
And so you start taking the vowels out, you know, doing what you can do.
But yeah, you're right.
That's more of a reasonable explanation for why it's happening.
Still, you know, a name needs to have some sense of purpose
so you have an idea about what it is.
Admittedly, like people always say, well, Kingfisher,
it's an image library or whatever.
But there's so many to remember.
You need a mnemonic for your own brain to remember what it's about and if the name
tells you it as well then yeah and you'll you'll you'll remember it properly like package manager x
pmx go go literal i guess the only question i have for you on that uh on the naming front so
sure you enjoyed the pubs and beer that's
where you're from it's part of your culture to to sort of appreciate that but you know at what
point was it like yes this you know did you start applying it did you start thinking about formula
keg and all the permutations of the naming that could could eventually come out and you're like
okay this does fit and and how long did it get you to be like, okay, it's a perfect fit.
Let's call it home, bro.
After the suggestion, a couple of days.
And then I had most of the names done
within a week or so.
I find it very important to have the names
for some reason.
It really helps me to identify the product
clearly in my head.
So sometimes I know like an app I want to build to identify the product clearly in my head.
So sometimes I know like an app I wanna build or an idea for a tool,
but I don't start until I've come up with a name.
I can't start until I've come up with a name.
Although partly that might be
because often I'm using Xcode
and Xcode's name refactoring tools are abysmal.
This is a good place to pause real quick.
We got a break we'll take here.
When we come back, we'll dive a bit deeper into Homebrew
and other fun stuff with Mac.
So we'll be right back.
I talked to Daniel Reed, head of design at TopTow,
about their new expansion into TopTow Designers,
doing for designers what they've done for developers.
We talked about why TopTow works for designers designers and this is what she had to say. As a designer, the big, or as any kind of creative
person, the big overarching question is always like, how can you find inspiration? And for me
personally, and for a lot of creatives that I've spoken to, it's really about traveling, exploring,
and being accountable for your own career. And I think as a TopTile designer
or a remote designer in general,
the ability to be able to switch up your lifestyle,
change contexts, meet new people,
have new ideas sort of infiltrated into your life
by having that freedom and flexibility
is something that's absolutely fundamental
to doing great work.
That's the real power of TopTile, I feel.
You're not just stuck with one product, one company, or even one agency, but you can choose to work on
multiple occasionally or a range of different clients. And I think that that keeps you fresh.
It gets you involved in new technologies, different people, and is really fundamental
for being sort of switched on as a designer. All right, that was Daniel Reed, head of design for TopTile.
To learn more, go to TopTile.com slash designers.
That's T-O-P-T-A-L dot com slash designers.
Tell them Adam from the Changelog sent you.
And now back to the show.
All right, we're back with Max Howell.
We're talking about homebrew and, Jared, we're back with Max Howell, and we're talking about homebrew.
And, Jared, we love, hate names.
And, Max, you said it best.
You love, and then you said you hate names or hate, you love names.
I'm not sure which, but either way, homebrew is a pretty good name.
And then you sat down and you thought about the architecture of homebrew
and how it'd map out and all these different things.
That's a pretty deliberate choice on a name
for one but then also to kind of like sit down and think about it and and how it would all play
out so tell us a bit more about that well like i say um good names are so great that's what i love
because they allow you to understand the thing and that's what i think a lot of programmers
don't understand about names is that the understanding what the thing is, is in the name.
And so Homebrew led into this wonderful set of metaphors for how the architecture fit
into the naming and it really helped me to design it.
I had a clear metaphor for what a keg was, what a formula was, and the rack and the cellar it all made sense so it
really helped to design thoroughly and then eventually that led to taps and well i i am
kind of working on the sink homebrew right now and i'm using the uh the term growler to define
what the thing is and And it's just perfect.
So it's one of those refillable things then?
Yeah, I don't want to reveal what it is.
Okay.
I think because the name works,
so you're thinking along the right lines.
Okay.
Yeah, it's perfect.
So tell us about the transition
because you built Homebrew,
you maintained it for a long time.
It grew to massive adoption.
Pretty much anybody who develops on a Mac uses Homebrew nowadays.
But we just had Mike McQuaid on, who's the lead maintainer,
and so there's a certain point where you handed it off.
Can you tell us what prompted you to move on
and then how that transition went? So for at least two years I really enjoyed working on Homebrew still and it gradually
accumulated more and more people to help. Mike was one of them and I knew Mike. He was
a friend from the KDE era in fact.
Wow.
And he'd moved to London and worked at a company that was somewhat related to us.
So we were friends and he had contacted me not long after it started getting attention
to us to work on it as well as our work rules.
And he was there from very near the beginning.
After two years or so, I'd solved all the interesting problems
and I'd started to lose interest. It was basically done. And I think that's a big
problem I have in general. I lose interest in things once they're done. And I'm always
looking for the next thing after that. So I started contributing less. And one day I
got at-replied by someone who was angry about some formula that
they wanted to have merged and it'd been rejected.
And the reason it was rejected was really my own fault.
Cause initially when I made homebrew,
I was adamant that it wouldn't have trivial crap in it.
And,
you know,
cause it just,
it's like the app store.
If it would perhaps be better if it was a bit higher quality.
Now I disagree with that decision.
There was ways to work around that.
And we, we invented them.
It's tap system.
So also because the more, more stuff you had in there,
the harder it was to really have high quality
core formula, but the tap system solves that.
So I disagreed with the other guy's decision and I merged it without talking about it because
I was being arrogant and it resulted in an argument and I decided that I didn't want
to be part of a project where there was conflict like that.
So I left basically and uh
the project had always been on my name at that point under mxcl and i was kind of
proud of that because it was for a long time the most forked most starred project on github
and my name was next to it and that had led to quite a number of interesting emails
and conversations and phone calls from people that were just browsing github and found my name so
there was opportunity definitely associated with having a very high profile project on my name
but they wanted me to move it onto the homebrew organization and it made sense. I couldn't deny that if I wasn't going to work on it actively anymore, then it needed to be moved to an organization so that it didn't...
While it was on my name, I could just delete it effectively, which would be kind of an interesting movie, probably.
Disaster movie.
Like LeftPad. Yeah, exactly. Just like LeftPad. That was very interesting, I thought, at the time. And
I was at Apple then, and everyone at Apple was asking me how Swift Package Manager was not going
to be affected in the same way. So I moved it, but it took me like four hours with the button on my screen before I could summon the courage to push it.
Just emotionally, it was so hard to give it up because it never could come back.
And I'm very proud of Homebrew.
It was a project I put a lot of time, effort, and thought into,
and it paid off the way I thought it could.
And that doesn't happen very often in your life.
This is exactly why we say on this show, Jared, to everyone listening,
be nice to your maintainers, because it's that kind of heart
that mulls over for four hours.
It's that kind of spirit you put into that kind of project
and that kind of care and love that
we have to appreciate and honor and if you don't do that then like it's just not cool and i can
hear the anguish in your voice sharing that story bro like that's that's i'm glad you shared it
it sucks it turned out that way but uh to have people like you out there in open source is super
cool to me well it was the right thing to do.
I could not do it.
I cared about the project.
Like if I wasn't willing to maintain it anymore,
then it needs to be given over to the community.
And I was just glad that the community was there to take it.
It's more about the finality of it than it is the act,
is what I mean by what I said.
Because it's this moment where there is, like you said,
it can't come back, there's this point of no return.
And that's hard to deal with.
Yeah, it was.
I felt a sort of relief once it was done, though.
Like, for one, my GitHub notifications were never readable.
You could actually use them.
Yeah, exactly.
I had other open source projects and they were just vanquished
because I couldn't know when someone was actually trying to get my attention for them.
I couldn't really know what people wanted my attention on Homebrew either.
Homebrew's notifications are not designed for a project of that popularity for sure.
So the moment it was gone suddenly i had like
i could get back into my other projects and things that's what i was more interested in at the time
it made sense so once you're done with homebrew what was the next step for you what was the the
next bigger milestone for you in life uh what at that point or now oh when you were done with home but when that that moment back
to that moment where you you push the button the next big milestone for you well i'd uh
basically been doing iphone development at that point for three or four years and at the time
i was in chicago i between then and the last change log and now I've moved to America.
I met an American girl and we moved to Chicago
and we now live in Savannah, Georgia.
So I was in Chicago at the time
and I was teaching iPhone development part-time
like half a week, which I really enjoyed.
And it allowed me to learn a lot about how people approach learning how to code.
It was a boot camp.
So these things are kind of rip offs.
And I felt bad about that.
But I was just an employee.
And I was working on PromiseKit, which is probably the open source project that I maintain the most at the moment, which is just Promises for iOS.
I'd used Promises because I'd done a lot of JavaScript development in between as well,
and Promises just made so much more sense for asynchronicity and there was nothing good for iOS.
So I was like, okay, I'll build it. So I was working on that. But about that time,
the bootcamp I was working for was running out of money so they said well
max sorry you're the most expensive person here i didn't realize i have to let you go so
suddenly i was left no regular income i didn't want to do any more ios contracting which i've
done a lot of um because i know it sucks the soul out of me
working on
other people's apps that I don't
really care about
it was very good money but
I could only do it for a few months at a time
before I became depressed
and just wanted to do open source or
something
that made sense to me
so me and my wife didn't know what to do.
And Google had been emailing me for years saying,
you should come and interview.
You should come and interview.
And I'd always thought, no, I don't want to go there.
I'm not a big company person.
I wouldn't fit in.
I don't have computer science.
Like, does it make sense?
But because things just suddenly shifted around for us,
we thought we'd give it a go.
So I went for the interview.
That probably leads us to the,
what I'll just call the tweet heard around the world.
Pretty much.
Around the developer world, at least.
Yeah.
Which is June 2015.
And you said,
Google, 90% of our engineers
use the software you wrote,
in parentheses, Homebrew,
but you can't invert a binary tree
on a whiteboard,
so, and I'll censor it,
F off.
Yeah.
And that sparked,
well, tell us about that tweet
from your perspective,
because I know it from mine,
but I don't know it from yours. Yeah, I don't know if I know it from mine, but I don't know it from yours.
Yeah, I don't know if anyone knows it from mine, apart from people who know me, because I haven't really talked about it.
Basically, the recruiter who I talked to in the interview process was pretty adamant that I would mostly get asked about iOS stuff.
And that's what they wanted me for, iOS stuff.
So despite their email giving me a big list of computer science stuff, I should know I didn't do any research or study for it because I assumed that they wanted me
for the knowledge I had and not the knowledge that I could have if I studied.
But so my first interview was the binary tree question.
And I think I did a fairly good
attempt for someone who didn't even know what they were talking about although it wasn't a
binary tree question it turns out i didn't even know i just assumed it was it was uh oh god it's
it's the thing where the you have an array and it's every you can divide it in two to get uh
blah blah i can't remember you know what that is
I don't know I can't remember
anyway like after failing at that
I went home and looked it up and figured out how to do it
just to prove to myself I could but
you know I
did well in like half
of the interviews and like since I've actually
talked to the people that interviewed me because
of the tweet
and they said that it was a difficult choice they made, but they decided not to based on the way they do these things.
They have a very strict process.
But anyway, we went by and they phoned and said no.
And I just fired the tweet out because I was like, this is ridiculous.
Considering the popularity of homebrew, I just assumed that they could fit me in somewhere
with something.
Like, they have enough engineers that use it, surely I would have some value to them.
That was my thinking.
Right.
Even if like, even though I thought I was going there for iOS, which I prefer to
have done.
Like, the iOS app needs some work, frankly.
But yeah, so I cut write it off didn't really think
about it i put homebrew brackets i guess because i was thinking well if it's retweeted people will
know what i'm talking about yeah and obviously the 90 is bullshit it was a flippant tweet right i
i was exaggerating like who knows what the percentage actually is.
Probably all their Mac developers or the majority.
There's still some diehard Mac ports users out there for sure.
Yeah, well, that exploded, that's for sure.
20 minutes later, I checked back and it had 400 retweets.
I was like, oh dear.
And then people started linking me to the Hacker News article.
And I got one of my coworkers to look it up on the Hacker News.
He was like, where do you think you're ranked on the Hacker News?
I was like, I don't know, top 20.
He was like, try the top.
And I took a screenshot, my tweet at the top of Hacker News.
I was like, oh God.
And so I never read any of that stuff.
Oh, you didn't?
I didn't reply to much.
No.
Because it was never my intention
to make that much fuss i feel kind of bad for google because to be fair they told me what i
needed to read like the recruiter had made me think differently but they sent me an email that
was very specific and clear about what i needed to know what i should know. And like, it wasn't fair because 90% is obviously not true.
I got a lot of Googlers saying 90% lol.
And, you know, like, I don't like it because I came across so arrogant.
But I like the conversation that arose because of it.
Because they definitely could have found useful.
Yeah.
There's a lot of conversation around this, as you said.
Some of it's in the replies to the tweet and everything from people saying, well, you're not a real programmer if you can't invert a binary tree.
Other people defending you and who's at fault here.
And I like that, you know, in retrospect, you know, the numbers were,
of course, that was not like the actual number.
Did you survey all their engineers and get it at 90%?
Nice.
But I like that, you know, knowing the full story,
it seems like I agree with you that it just makes sense that with how many engineers they have and how many do use Homebrew and you've demonstrated over time that you can have software that's valuable to many, many people.
I could totally see where you would be thinking, surely there's a position for me since they're already interested in having me work there.
It's not like it's a a cold interview um but that being said they hearing that they did like give you
what you need to know or they made it clear that they were going to require this of you
makes it look like it's not so bad on google side no i i feel bad for them by saying yeah
but you know this is how things are nowadays with social media and virality um
and 140 characters the question is would you do it again would i do the if you had to rewind back
to the day would you do the same tweet oh um yes but uh only because i think it inspired some
conversation in the industry about how these entities should be. Yeah.
I really feel bad for shaming them.
I guess they probably don't take it personally.
And I feel bad because I'm sure a lot of people think I'm just an arrogant ass now.
But I try not to think about it personally in that respect.
It was just flipping a lot.
I went from 3,000 followers to to 16 000 in like a month wow
uh i don't like that either why don't you like that particularly like most of these people aren't
following me through anything i actually care about you know they're following me because they
maybe they are maybe they discovered you because of that you know maybe it was the
maybe maybe the entry point for you at at least to them, so to speak.
I think the interesting thing there is that you do it again, but with some regard.
And at the same time, none of us are identified by our tweets.
My tweets don't define me.
And I may say something sometime that doesn't exactly identify who I am.
But the thing is that the people tend to take the black and white text we put on the Internet as like the.
The version of us, you know, like that's the truth.
And it's just there's a gray area there where where you're not exactly the person you seem you are.
And there's a person behind that versus just a tweet. Right.
Absolutely.
I definitely liked the conversation because I knew you previously.
I hadn't followed you on Twitter, but I knew you as the homebrew guy.
And when I saw that tweet, I thought,
and I've never been interviewed by Google,
so I don't know what that process is like.
I know they had brain teasers and whiteboarding and stuff like that.
But I hadn't thought about the interview process
at large companies
because I've never been a part of a large company.
And the conversation around it wasn't just,
should Max have gotten hired?
Should he not have gotten hired?
Is Google evil?
Is Max arrogant?
That wasn't, of course, those things are always said
on any popular conversation, unfortunately.
But it was, is interview broken? Is interviewing broken? Those things are always said on any popular conversation, unfortunately.
But it was, is interview broken?
Is interviewing broken?
How can we do this better?
Those kind of things.
And I felt like the end of it, there were, you know, there were a lot of think pieces that were written.
I think there were a lot of good things that came out of that.
And so I would hope you'd do it again, too, just so that we can continue having these
conversations.
So that leads us to where you actually did land, which was Apple.
So I don't know.
Can you compare and contrast, I guess, the hiring process between the two?
Or would that be profitable?
It's similar in that they're all day.
It's exhausting.
Apple had more interviews.
But I was interviewed by the people I'd work with.
Google really do seem to...
I don't know if they've changed anything.
I heard from a friend who was at Google at the time
that my tweet went round Google
and that it could inspire a lot of internal conversation.
So I don't know if they've changed how they do it at all.
And well, oddly enough, I got two calls the week after from a couple of people at Google asking me
to come and interview with their team. And that it would be very specific to their team because
they wanted me to do iOS stuff for them. And that's partly because of PromiseKit,
because it's a pretty good framework. I designed it carefully like i designed homebrew um and i needed it just like i needed homebrew like the best things i make
always the things i make from things i need tools i need so apple interviewed me personally while
google they just it's like jury duties the impression i got you get an email saying you have to interview max hell on Thursday whatever
it was uh be prepared and then they have uh like a box full of questions that you can generate a
random number and pick one and uh but the interviews get quite a choice like one of my
interviews at google knew that what my skills were and asked me stuff about it and I
did pretty well and another
one had me redesign the API
and I did pretty well the ones I couldn't do
the data algorithm
stuff which I really needed
is the thing
but I think I made a pretty good attempt
right and that's
I guess what I changed about the interviewing
process at these sort of places is
like did i demonstrate that i could solve problems given inputs even if i don't have the specific
knowledge like it seems ironic at google like learning how to do that it's just a google away
that's what i did when i got home right to prove to myself that i could do it after feeling stupid which is what these things
do uh but so apple went to me personally and uh apparently were told to give me a an easy-ish time
because of my tweet wow uh nice don't mess with him he'll tweet about you yeah well yeah like
that was that was one of my concerns with the tweet.
It was like, well, you've just screwed up a lot of chances for yourself.
But at the same time, it wasn't.
I got 200 emails, like, give or take, because of the tweet from different companies saying,
well, you want to, like, give us a call, we could use you.
So that was interesting, an interesting side effect, certainly.
Including, like, uh,
including like SpaceX. And I was like,
wow,
I could really,
that would be cool.
But I didn't.
And like the only reason I considered going to Apple was cause,
um,
I met with Chris Latner while he was at WWDC and talk to him and he was
awesome.
And they were like,
well,
we kind of need like,
you know, something like home brew, but for. And they were like, well, we kind of need like, you know, something like Homebrew, but for Swift.
I was like, well, that's amazing
because I was so into Swift then.
As an iPhone developer for a few years at that point
and Swift just suddenly came out,
the previous WWDC,
and I could see that it was a really nice language
with forward thinking in the right places,
learning from the right places learning from the
right places of different languages it was the language i wanted to use and maybe use
10 years you know who knows like i hesitate to say the rest of my life in this industry but you
know 10 years seems to be like forever right And so the opportunity to shape that language was just irresistible
because I wouldn't have gone to another interview probably
after the Google experience.
It just wasn't for me.
I knew it wasn't for me.
The only reason I'd done it is because we landed in a situation
we didn't know what to do with ourselves exactly.
So I didn't want to do contracting anymore.
So yeah, their interviewing process was much nicer, but at the same time, I don't think they should have hired me, quite honestly. So maybe Google
had the right idea.
Why not?
That's so funny.
Well, I was only there a year. It didn't work out. I'm just not the right kind of person for these big corporations.
I was trying to make the Swift package manager the way I knew the community needed it. I'd been
involved with CocoaPods and Carthage and used them heavily and obviously made homebrew. So I had lots
of opinions about how package management should be, And especially for a language package manager,
which is different to a package manager.
And I came up with all these ideas
and I couldn't persuade anyone about many of them.
And it was very frustrating.
Same time, they couldn't really persuade me
about their alternatives.
So you weren't persuadable, they weren't persuadable.
Yeah.
I wanted to work like I worked in open source,
where I produced stuff and then we reviewed it
and considered how it would go from there.
Or I stewed on ideas for a couple of months
and then talked about it.
And Apple, I can't speak for the whole company.
Sure.
I really can't.
Because every department is very isolated and that can be considered
a good or bad thing. I won't go into it, I guess. But like, so all I can talk about is
for developer tools and developer tools is a very old department. They've been around
since well, like ever.
Yeah.
Xcode itself has existed like 20, 25 years.
I've never worked on a code base that's that old
with clunky clunks upon clunky clunks.
Like it's just, and they have to work with it
because they can't rewrite the thing.
But I was mostly working independently of that
with the Swift team, but I wasn't on the Swift team.
I was on the build systems team. So I was isolated from the Swift team and that was probably a
mistake on their part. I should have been with the Swift team. It wasn't all bad. Like Chris
Lattner is a genius and I'd be having meetings with my team trying to decide how we should take
the product. And he'd come in and instantly appraise everybody in there,
figure out their needs, wants, motivations,
and just say the right thing.
It was amazing.
So this is interesting.
Your pinned tweet on Twitter says,
the foundation of the modern world is developer tools.
And here you are at Apple with the ability to affect
a huge portion of the software development community.
Surely the entire portion of the Apple developer community.
Working with Chris Lattner, who's a genius on the Swift Package Manager, which is to be an open source project.
And yet, like something's not jiving here.
So I'd like to dig into that a little bit more on the other side of the break,
but we are hitting our next break.
So we'll pause, think about that a little bit, Max,
and we'll get back Swift Package Manager,
Inside Apple, open source,
but there's trouble here.
So let's pause, we'll be right back.
Our friends at ThoughtWorks
have an awesome open source project to share with you.
GoCD is an on-premise, open source, continuous delivery server that lets you automate and
streamline your build, test, release cycle for reliable continuous delivery.
With GoCD's comprehensive pipeline modeling, you can model complex workflows for your team
with ease, and the value stream map lets you track a change from commit to deploy at a
glance.
The real power is in the
visibility it provides over your end-to-end workflow so you can get complete control of
and visibility into your deployments across multiple teams. To learn more about GoCD,
visit go.cd slash changelog for a free download. It is open source. Commercial support is also
available and enterprise add-ons as well,
including disaster recovery.
Once again, go.cd slash changelog.
And now back to the show.
All right, we are back.
Max, before the break,
we were talking about your time at Apple.
You were there for a year working on Swift Package Manager,
which is out there and is open source.
And so you got to be there, I believe, during the launching of that,
which had to be fulfilling, I would think.
But there was some struggle between you and management
or between you and your position.
You just couldn't quite have the impact that you were desiring to have.
Is that fair to say?
Yeah.
Yeah.
Um, I wanted to make a really great thing because like I say, uh, I plan to use Swift
for, I don't know when I'll stop using it.
So it having a vibrant packaging community and a good packaging system was important
to me personally, as well as professionally and for the good of the language.
But Apple have their way of working,
which didn't fit with me specifically.
I butted heads with my manager and various other people many times.
I've got to say, though, the Swift team were great.
They seemed to be...
I don't want to be insulting,
but they seemed to be really forward-thinking.
They used modern development methodologies.
They were extremely smart.
They worked well together.
They talked well together.
They figured things out that I wouldn't have figured out
if I was in their position.
They could just...
Little details of how to design the language so that it caters to so many different
ways of working and yet still maintains the strictness, the safety, the fun that is Swift.
They were great. I said to my manager when I joined that I
partly came to Apple because I wanted to learn
from
people who are smarter than me
and he used that against me so many
times because he said that
I didn't want to learn
from them actually
and like yeah
it wasn't a good match
that happens sometimes i think i mean
people go into positions with like super high hopes right like dream job man i want to work
here all my life developer tools i've got the chops for this this is perfect and then it's just
some sort of like bad mixture you never expect and you're like i gotta get out of here yeah i i've been there it
made me realize how important team fit is i i've been lucky my entire career in that i just lucked
into great teams that i fitted well in and that we worked well together uh when you don't have that
it's just impossible yeah and i did my very best because i cared so much and it drove me
to quite a stage of depression actually i really wanted to make something great i just didn't know
how to do it there like so i'm pleased that some aspects of swift package manager like succeeded
to get in and are there i think it it has a good base. I'm glad.
Otherwise, I would feel like I failed completely.
But I think it can be a good thing still.
So is a lot of what is there, is it, you'd mentioned earlier,
likening back to your homebrew days, that your architecture and what you laid out and how it would work is a lot of what we see there,
not so much the code, but like how it works, how it's laid out, how it's supposed to work, the plan for it basically. Is it a lot of what we see there, not so much the code, but like how it works, how it's laid out,
how it's supposed to work, the plan for basically, is it a lot of what you contributed?
Yeah, with some compromises here and there, but a lot of the time I was able at first
to get my way without it being too difficult. And so as a result, it's a highly modular system,
which is one of Swiss powers, like you can easily make modules and it's a highly modular system, which is one of Swift's powers.
You can easily make modules.
And it's a convention-based layout system.
So you make new directories for each module and then sources in there get compiled into the modules.
So you're not messing around.
It's really easy to write code really fast.
The syntax for the package description file, the recipe, the formula is in Swift, which I had to fight pretty hard for,
which means that you have
flexibility with it.
You can import modules into it,
although they didn't want that, etc.
But, you know, there's issues. They really
didn't want that because
it's not very Apple, dare I say.
What was the other options, like a plist or
XML file? Yeah, you know,
probably plist because that's
well uh i don't know like it would have been json i expect json but you know it's just it's difficult
to add things you know like what if you want to make a module where you only want the files with a
windows extension for the windows platform things like. It's really hard to describe that kind of behavior in JSON.
But with Swift, it's easy.
You do a hash if Windows and then you add to an array.
Like programmers like to program is my opinion on the matter.
We like code.
We write code.
We want the power of code, even if it results in some danger.
Right.
With a real language.
And that is decentralized.
I'm very pleased it's decentralized.
I wish Homebrew had been decentralized to a certain extent in the first place,
but it is now with TAPS because it makes it easy for people to just push out
their packages without having to conform to some
system.
For example, with CocoaPods, which is the most popular iOS package manager currently,
when I contribute to another CocoaPod, I have to ping them for a week or so for them to
push an update so that I can actually use it without messing around in my pod file. It shouldn't be like that.
I should be able to just like make the changes,
use my fork very easily and then like have it ready to go into the main fork.
And that's,
that's what GitHub is about.
It's about this decentralized open source community.
So these things should be all over the place and if i think that someone's
doing something wrong i should be able to easily fork it and use it or if i'm in a company and i
need to make a change but i can't release it i can just use my private fork of the thing like
easily etc so yeah i believe that's how these things should be for language packages, certainly at least.
So I feel that it's a pretty good base.
And the people that are now working on it, they're great.
They're really very good.
And I think they'll do a great job.
Certainly probably better than me because I just couldn't figure out how to navigate Apple I couldn't figure it out well I'm looking at
the GitHub page for the package manager and I'm
happy that the file that you're talking
about is called package.swift and it's not called
package file yeah that's a nice somebody who
respects names I think there's a nice, as somebody who respects names,
I think there's a nice break from convention there.
Oh,
like that cost me sleepless nights getting that.
Right.
My,
it's just difficult.
It's difficult.
Like Apple,
basically.
Like,
I'm pretty sure I can say these sort of things without getting an email from
HR telling me to shut up.
It's all about who you know.
So if you don't have the right influence with the right people, you don't get your way.
Even if you got the right idea.
And you only get that through years.
You have to be there years.
You have to put in five, 10 years before you can make an impact. i didn't have five ten years as far as i was concerned i had a year
otherwise this product was going to suck that and uh it needed it now it needed to be good now
and so and i yeah well also i i found that there's a lot of people there who love to invent
work and i don't so i didn I didn't get on with that aspect.
So one thing you said earlier was that you're proud of Homebrew.
Would you say that you're proud of the work that you did at Apple?
No.
Well, that's sad.
Yeah.
As I said, I blame myself as much as I blame anyone else.
I knew before I went for any of these interviews that I didn't work well with teams.
And I don't,
um,
I,
uh,
I can,
if it's just the right team and we all get on and we all can see each other's
perspectives,
but I just,
I can't stand like when I,
there's a bunch of stuff that isn't the work that must be done in order to get things done.
And Apple, it was constant meetings and constant disagreement and constant battles about things that really weren't important in the slightest.
That's why I liked it when Chris Lanner turned up because he could just like see through all that.
This is why he's done so well.
He's very easy to admire.
Well, it sounds like Swift is in good hands with Chris.
Yeah.
Swift has got a fantastic team.
It's going to do really great,
and I'm so glad that they open-sourced it.
Without that, it would have only ever been for iPhone,
even if someone else had figured out how to compile it on linux or whatever or bring their own swift compiler because it's open source
i feel that it has a good chance to be uh the next big scripting language like replacing things like
ruby python uh maybe even replacing node i know that that's going to be harder because people
love their javascript so much so swift package manager is open source swift of course uh famously
open source big shift really for apple to open source things on their own accord and not
because they're complying with a gpl or something like that. That's not strictly true.
Were you involved with the open sourcing idea around the package manager?
Or were you in any of those meetings?
I didn't make the decision.
That was already made.
Okay.
Just thought it'd be interesting to be a fly on that wall
around, you know, you talk about the arguments
and whether or not to open source is a big discussion.
Or the motivation.
Yeah. Yeah.
Yeah.
It makes sense for the language, for sure,
because if they want it to be what you said,
it could be the next major scripting language
or a primary language that you teach children,
these things, it has to be.
Yeah.
Well, Apple really care about that.
That's the impression I got.
They want their stuff to be used. They want kids to learn to code, and they want to help that. That's the impression I got. They want their stuff to be used.
They want kids to learn to code and they want to help that.
Yeah.
That was a lot of his motivation.
I know people want to be suspicious as though Apple are just a company that are trying to get your money.
But my feeling while I was there was it's definitely not that.
Yeah.
So what about Swift?
So you've said earlier that,
you know, this could be your language
for the next 10 years.
You fell in love with it.
Give us, first give us a rundown
of some of the other languages
that you know,
which will give us a little bit of help.
Yeah.
Contextually.
But then tell us what it is about Swift
that you love so much.
Well, the first language I ever used
was BBC Basic, which is basically the same as QBas? Well, the first language I ever used was BBC Basic,
which is basically the same as QBasic.
And then I started learning C
because there didn't seem to be anything else at the time.
This is when I was like 12, 11, 12.
And then C++.
And then that was my first professional programming language.
Then when I decided to make Homebrew,
I wanted it to work without having to be compiled or installed.
So that made it have to be some scripting language that came with Mac.
And I seen a lot of people talk about Ruby and how great it was.
So I tried it out and I agreed. So Ruby.
Then I did about a year and a half of JavaScript while I was working on a music app with someone that was on the web.
And that it also had a bunch of C for a little
app and stuff. And I really quite liked JavaScript. I loved the functional aspect of it. I liked the
dynamic aspect of it. And the use of promises and things was new to me. So I enjoyed that.
There was other things I liked about it, uh that you could call a function with as many arguments as you wanted and then
figure it out later uh like i could see how it would easily lead to devastating behavior but it
was fun and then uh went back to objective c uh which, which I'd done a bunch of that as well before that.
And I love Objective-C or did these until Swift came out.
So, yeah, that's my language history.
I've done like dabbling in other languages like Python.
I've written a few like scripts in Python and Bash and everything.
Consider Bash a programming language.
Of course. scripts in Python and Bash and everything. Consider Bash a programming language.
Of course.
What made you suspect that Python Ruby
might get supplanted by it,
and then maybe even you said Node,
which is more of a framework on top of a language
than a language itself?
Yeah, well, Node made JavaScript feasible
as a server-side and not just in the browser system.
Well, what's wonderful about Swift is, well, it's familiar.
It's familiar to almost anyone.
It's C-based-ness, but it also has influences from so many other languages.
You feel it.
But safety, the safety of it and that's
what scripting languages really don't have scripting languages are great because you can
just power stuff out it more or less works and it's easy to fix at first at least and they have
a good packaging system so you can get all these third-party libraries but they're not safe with
swift everything is safe you end up programming in such a way that you know there's no way that there's an error or anything in this program that you haven't accounted for.
And I think that the biggest problem software has right now is it's flaky.
Software sucks.
It breaks.
You're using an app and you push a button and nothing happens.
Or a spinner starts and the spinner never finishes, or the buttons move around incorrectly when you rotate it
and it doesn't recover, or it crashes, or the data gets lost.
Flakiness is the problem.
We solved speed of development.
We solved it being difficult to crank out an app.
But safety, there's no safety.
And Swift naturally forces you to be safe.
The optionals obviously is a big deal.
It's not an invention of Swift or anything like that.
Most of these things aren't inventions of Swift.
The invention of Swift is the way they put it all together in such a nice package.
They carefully thought about keywords and how they interact with each other. They carefully thought about which things to bring to the language and which things not to bring,
which things had the most benefit. So with Swift, everything is either it is or it's
not. But if it's not, then you have to wrap it as an optional. So this means you're always considering the cases
where there's nothing,
and you're trying to not have nothing.
I try to write my apps now,
so optionals are almost never there.
And without nil, at least with Objective-C,
it was a huge cause of bugs
where Objective-C handled nil differently to other languages.
If an object was nil or null, it would just do nothing.
So a common bug in iPhone apps was like you push a button and nothing would happen because it was connected to something that was nil.
Of course, in a Java app, it would just crash.
So with Swift, you don't crash and you don't do nothing.
It solves both of these issues.
But they understand that it's still necessary to be pragmatic.
So they have implicitly unwrapped optionals,
which are optionals where you say,
well, I know this is never going to be nothing.
Because sometimes you need that, but that will crash.
But you have to opt into that.
You have to really think about it.
You have to be careful with it.
And then you have this big explanation mark
whenever you use it, reminding you that you're not being safe that you're a bad programmer that you should feel
bad about yourself that's funny great explanation too with version two they uh released guard
which is this statement where you can't get past it unless the thing you're evaluating is true or not true.
I can't think about it.
And it just means that you can write a function
and then have runtime asserts at the top.
And you can't leave the guard statement unless you return
or leave the function in some manner.
So you have to leave it safely.
You're not crashing, although you could put a crash in there.
The idea is to make you behave correctly to write code that behaves correctly so if you
had to put your uh your forecaster's hat on i know you like to wear a lot of hats so put on
your forecaster hat and tell us where swift is you know five ten years out you said it could be
your programming language do you think it will come to dominate the programming landscape or do you think it'll
always be inside Apple's bubble?
I think it's already starting to leave Apple's bubble because it was open source for Linux
support.
And since then, some people at Facebook have made it work on Android and some people are
working on making it work on Windows.
So we're getting to this point where you could write your app in Swift for every major platform apart from the web,
but you could write your server side in Swift,
and someone's already made a Swift to JavaScript compiler,
so you could write the front end in Swift as well if you trust the compiler.
I don't know.
I haven't really looked into it.
So I really want it to be.
I think it's a lovely language,
and I'm not just saying that as someone
who's been a bit of an Apple fanboy for so long.
Like, I've been disappointed with Apple in many ways,
not just because they work there.
I think Mac OS is really in need of work,
or at least some hooks so that developers can change how it works like
i want to get rid of the dock i want to get rid of the menu bar i want to i want to experiment with
many different ways of making it a better platform for me and like i've been using windows a lot
lately and i think microsoft are doing a lot better with Windows 10 than Apple are doing with Mac OS right now.
That's a bold statement.
From a long time Apple fanboy.
Well, I've switched. I was Linux
and I switched to Mac because I got fed up with my Linux
Wi-Fi drive is failing every time I upgrade
my kernel.
Mac was Unix underneath.
Now Windows 10 has this
Bash and Ubuntu
interface I haven't tried yet.
It can be Unix, and that's the main thing
that a lot of us want, at least, the Unix system.
So I'm pretty tempted by Windows 10,
but currently all my projects are on Macs.
I'm stuck there for now.
You just bought a brand new MacBook Pro, though,
so you're just...
Yeah.
I did. Having said i haven't said i
wouldn't i did that's why you shouldn't believe anything i say on twitter or podcasts maybe
well as we're getting closer to the end of the show max i know you got a couple things on your
on your side you want to mention before we close out so i know you got a startup going on what uh what's what's new for you what what do
people not know about you these days well since i've been out of apple for like four months
or very long it feels like it was like day i handed in my resignation i felt like such a
weight off my shoulders it was incredible uh i decided I wasn't going to work for a big company again, for sure.
So I consider myself an indie now.
So I've been trying to work on a few things to make myself independently financed.
I don't want to be rich.
I decided I don't need to be rich.
What I want to be doing is cool open source, being involved in the open source community,
just trying to improve the world.
But the little bit I can improve,
bits of software here and there.
So I joined a startup with a friend
and we're doing music stuff,
which I've always been interested in.
And we have an app in the store right now
called Mix Message,
which is a iMessage app.
And you can make a mixtape with a friend,
take turns, he or she puts a track in
you put a track in, keep going like that
it's fun, surprisingly fun
and we just, we whipped that up when the
messaging apps came out because we thought it would be neat
what's the URL for it?
it's mixmsg
I think
.com, but if you just type that in
it should turn up up it's unfortunately named
in the respect that we didn't realize until afterwards is that google always thinks you're
talking about mix mag uh autocorrect did you mean mix mag yeah i hate searches where there's like
did you mean or the autocorrection i'm like no i really meant to write what i wrote like three
times now you stopped stop correcting me.
Yeah, I just don't understand that.
I like how to correct, and it helps me a lot because I type fast
sometimes, but it just drives me crazy when it's like,
no, I clearly mean that acronym. I know
it's weird, but I mean that.
Once you've corrected it once,
why would it try to correct it
again? It's the same thing.
Yeah, so it's M-I-X-M-S-G
mixed message gotcha
that's nice it's got real nice it's our team we have a really good designer and i'm doing the ios
we have a cool back-end guy and then uh um good product guy and we're also working on an app for
local music that's going to be called audio a-u-d-i-y-O. And we're hoping to have that beta this month, actually.
We're cranking it out.
And it's about discovering local bands, local music near you.
Something I'm somewhat passionate about.
I've always felt that the music apps that exist aren't that good.
And I like Apple Music.
It's just not very good.
Beats was better.
I don't know if you ever used Be apple bought it and then ruined it and spotify i just i don't i'm not gonna say anything
bad about them but what was the uh the name again for this last one audio a u d i y o it's audio
with a y so it's like audio we're hoping to have that out, uh,
a beta before Christmas,
hopefully.
Um,
is it a.com or somebody else?
Who's,
who's the,
I'm not sure we even have a website up yet.
So you're gonna have to just wait.
Okay.
I was gonna say,
cause I can't find it on the web.
So I'm assuming that either somebody else has got it or,
uh,
you said you love names,
but then you said you hate them.
So I'm,
I'm,
well,
uh,
I didn't, i didn't name
these things that's all i'm gonna say
and i'm working on something for homebrew i i don't think i'm gonna go back to the core
but i just always have i always have a notebook full of ideas, tools I need.
And that's why that tweet is still pinned, even though I'm not working at developer tools
at Apple anymore.
The foundation of the modern world is developer tools because I believe it, it is.
And I love being a developer because we can make our own tools.
It's like the only industry apart from maybe blacksmithing, and I'm not sure if they even
do make their own tools, that we can make our own tools to improve our workflows, to make ourselves more efficient and productive.
And so I always have a notebook full of ideas for stuff.
And this is one that I've been toying around with for a couple of years.
And I'm really trying to make it now.
And yes, it has growlers in it.
And I don't want to say anything more about it because I don't like to jinx myself
I feel like if I say things about some of the ideas
I have that I then don't finish them
I really want to finish this one
though also because I figured out how to
make money with it and that's what I want
I want to be able to work on open source
full time
well I can poke around on github
and I did see
slash growler which G-R-O-W-L-E-R, which is an empty repo sitting there waiting.
So if you're listening to this, maybe go watch that or start at least or something to kind of keep up.
I'm assuming that's it, right?
That's part of it.
There's no description.
There's no message shared, so you're not being committed to your idea.
Well, I needed the repo to exist for various reasons,
but, yeah, it's not going to be filled yet.
Gotcha.
You know, one of the things Apple do, I think they hammer into you,
in fact, is surprise and delight.
I agree.
Right.
Yeah.
Well, Max, thank you so much for taking us down this uh this trip of yours i mean i know that uh you've got some history to you and
as you had said before millions use software you've worked on and so you've got some history
with everyone listening to this at least those who use mac os uh and i use humper all the time
so thank you for you know the work you put into that
even the
angst you had with pressing the button to share
it back I can appreciate that
and understand your feeling there
and just thank you for
being the maintainer you are and the software developer you are
and the encourager you are especially with that tweet
to sort of change how people
look at the interviewing process
and that's going to be a huge help to,
to many software developers out there for years to come.
So I hope so.
Any last words to share with us before we tell the call?
No, I'm, I'm all good.
Thanks for what you just said.
It was very kind.
Awesome.
And thanks for having me on.
All right.
Well, listeners, thank you so much for tuning in.
We love you.
If you don't subscribe to our weekly email, we would love for you to.
So go to changelog.com slash weekly.
Jared and I, we put in so much hard work into that email.
And every single week, we scour the internet for our favorites in open source and software development.
And we do whatever we can to share that back in that email.
Our latest episodes, our latest announcements.
We're doing lots of fun stuff.
We're growing. We're growing.
We're expanding.
So if you like what we're doing with this show,
check out Request for Commits.
Check out Go Time.
Check out Founders Talk.
We're bringing that back.
We have a new show coming out very, very soon called Spotlight.
So much fun stuff happening.
And the place we announce all that fun stuff is at ChangeLog Weekly.
So go to ChangeLog.com slash weekly.
Subscribe to that.
And for those listeners who have been listening to the changelog for years,
back to Max's episode in 35, subscribe to our master feed.
Many of you love all we do, so just go to changelog.com slash master.
It's our master feed.
It's in iTunes, on Overcast.
You get everything we do.
So don't miss out.
Don't be that person.
And if you see this at conference,
high fives and hugs.
Okay.
But fellas,
that's it for this show.
So let's say goodbye.
Bye.
Thanks,
Max.
All right.
Thanks so much. We'll see you next time. you