AppForce1: news and info for iOS app developers

Do iOS Speaker: Drew McCormack, founder of The Mental Faculty, talking about SwiftData

October 13, 2023 Jeroen Leenarts Season 2 Episode 8
AppForce1: news and info for iOS app developers
Do iOS Speaker: Drew McCormack, founder of The Mental Faculty, talking about SwiftData
AppForce1: news and info for iOS app developers +
Help us continue making great content for listeners everywhere.
Starting at $3/month
Support
Show Notes Transcript Chapter Markers

Send us a Text Message.

Drew is founder of The Mental Faculty, developer of Mental Case and the Ensembles sync framework. He works on Agenda. Agenda is an Apple design award winner, editor’s choice, and is featured a lot in the App Store, particularly for the Mac. Agenda made a switch to an interesting business model a while ago.

Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team

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

How to Start a Podcast Guide: The Complete Guide
Learn how to plan, record, and launch your podcast with this illustrated guide.

Support the Show.

Rate me on Apple Podcasts.

Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1

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

My book: Being a Lead Software Developer

Jeroen:

Hi and welcome to another special Do Iris episode of my podcast. I'm sitting here with Drew McCormick. He's one of the people behind Agenda Dotcom, a note taking app that has been an Apple Design Award winner. But that's not the only project that he's working on, and we'll probably dive into that a little bit as well in our conversation. Drew, first of all, welcome for being on the podcast. How are you doing today?

Drew:

I'm doing fine. And thanks for having me. Just back from the summer holidays here in Europe. So all fresh to go. Ready to go?

Jeroen:

So already in the thick of things or is it still catching up, what you're doing?

Drew:

Yeah, it's still still catching up a bit. We get a lot of back support and things like that, so haven't really got completely back into it, but it's getting

Jeroen:

So

Drew:

the

Jeroen:

so is that mostly support on existing products that you're getting yourself through, or is it also other kinds of work that you need to catch up on?

Drew:

Yeah, it's, it's a mix. There's agenda is always got a lot of support just general support for, for, for the customers. But of course you've got WWC a few months ago and we've got the releases coming up probably a week or two away and that means we have to get the widgets working

Jeroen:

Mm hmm.

Drew:

the

Jeroen:

People

Drew:

stuff

Jeroen:

want widgets.

Drew:

from WWE. See, basically, yeah, the

Jeroen:

Yeah.

Drew:

new stuff from WWC. So

Jeroen:

So you already mentioned agenda back there. Can you, like, give a quick recap of what agenda is probably a lot of people will know about because of the interesting business model behind it. But what is agenda?

Drew:

Agenda is a no taking up. Like you said, the main difference with agenda is that it has a very strong focus on, on dates. So it's it's really a little bit like one of those old agenda books that people would have, which would basically have one page per day and you

Jeroen:

Hmm.

Drew:

would take, take notes and appoint, you know, notes about appointments that you've got that day, that sort of thing. So we thought we've sort of made a digital version of that. So you can take notes, you can connect notes to calendar events to reminders. The notes appear in a in a sort of a timeline in order. So there's a chronological aspect to the whole app. So it works really well for things like meetings for for, for your work in general. I use it for programming, so I take all my, you know, making tasks lists for projects. So yeah, it's really it's quite flexible really, but it's got this whole chronological idea that, you know, you've got projects that move forward through time and you keep this list of notes.

Jeroen:

Yeah. And I do know Agenda has like the most insane domain name attached to it as well. Agenda Dot. That's that's quite a feat having getting your hands on one of those domains I guess. So agenda is like probably a big part of your day to day right.

Drew:

Yeah, yeah, absolutely. That's the main focus. Yeah.

Jeroen:

But as you already mentioned there, it' not the only thing that you do right?

Drew:

You know, I've always had a, you know, a diverse interest in various things and, and I've got some projects that have sort of carried over from the past ones. A flashcard app app called Studies, another which we'll probably talk about a bit more today is called Ensembles. That's a core data sync framework that's

Jeroen:

Mm

Drew:

actually

Jeroen:

hmm.

Drew:

for developers. And just recently I introduced something else called Glisten, which is a it's a podcast app for language learners.

Jeroen:

Okay. So so

Drew:

Yeah,

Jeroen:

what's different about listen then, because it's podcast app for language learners, that's okay. Help me out

Drew:

very

Jeroen:

here.

Drew:

specific. Very specific. Yes, of course. It looks a little bit like a normal podcast app. The difference is, of course, as a language learner, you're not you're not completely capable of of understanding everything that's being said. And so what it will do is it will extract the transcript using the speech framework, just like dictation does, and then it will then it can playback each sentence several times and slow down sentences and putting pauses all to make it much easier to understand for for someone who doesn't speak the language. So it's a great way to get great content because podcasts are generally got great content, but it's difficult to understand when you're learning because it's a native speakers often speaking quite fast. And so what Glisten does is it repeats each sentence, slows down sentences and makes it a lot more digestible for for someone learning.

Jeroen:

All right. So it is is it like a thing that you do picked up and that you created because you had, like,your own interest in that area or what's the deal there?

Drew:

Yeah, it's a it's really a I'll be projected that up that I've just put on the market. But it's, it's for myself. I made it for myself and I'm developing the features that I develop are mostly things that I want. So. So yeah, I'm learning. I mean, I speak Dutch because I live in Holland, but I've started to learn. The last few years I've been learning Spanish

Jeroen:

Mm hmm.

Drew:

as a hobby and one of the things I noticed was that there is an enormous amount of, of things you can listen to as a learner. It's usually, if you watch, say, Netflix, it's it's too difficult. You can turn on the subtitles, but it's not quite the same when you're when you're reading as it is listening.

Jeroen:

Yeah.

Drew:

So I wanted something which would make it easier for me to listen to things by native speakers. Yeah,

Jeroen:

But just thinking back on the list of projects that you have worked on and that you're working on, it does sound like that everything you create is something

Drew:

yeah,

Jeroen:

that you also use yourself. Is that correct?

Drew:

yeah. That's absolutely correct. Yeah, yeah, yeah. It's I think you know that the old term dog feeding, which we have in our, you know, in the developer community I think is perfect for that today. I like to dog food, everything and that's true of agenda. I use it every day for all my planning, for all my development. So I develop agenda with agenda, which is nice and circular, but all of my apps. Yeah, even my flashcards app that I still develop a bit. That's that originally came about because I wanted to learn to learn words and things like that. When I was learning Dutch. I think that was a long time ago and

Jeroen:

So

Drew:

yeah,

Jeroen:

speaking of history, how long have you been living in the Netherlands, and where are you from originally?

Drew:

you might hear from my accent that I'm from Australia, but I've been living in the Netherlands for now 20, 25 years. Long time, long time.

Jeroen:

So.

Drew:

No

Jeroen:

But

Drew:

excuse, no excuse for not speaking. Dutch.

Jeroen:

so what was the reason for you to to basically migrate from Australia to the Netherlands? Because that's, first of all, a bit of a climate difference, I would guess a lot less sunshine here. And so there must be reasons that you that you made that move right?

Drew:

Yeah. And the main reason is that my wife is Dutch. So we met overseas

Jeroen:

Yeah.

Drew:

and after a few years of a long distance relationship, I moved to the Netherlands

Jeroen:

Yeah.

Drew:

at the same time. At that time I was also in the scientific community, so I just. I just finished doing a PhD. And after that you usually go into a postdoc and most people do that overseas. So

Jeroen:

Yeah.

Drew:

this this was a nice coincidence and I was able to go to Leiden in the Netherlands and do a postdoc there and later on the food

Jeroen:

Yeah.

Drew:

in Amsterdam.

Jeroen:

And then

Drew:

So

Jeroen:

you stuck

Drew:

yeah,

Jeroen:

around

Drew:

yeah, yeah, yeah,

Jeroen:

which, which

Drew:

yeah,

Jeroen:

is understandable because even at a postdoc, it's not something you do in just two years or something. It takes a lot of time and effort. And then you do build a life where you're actually doing your studies and your your postdoc.

Drew:

yeah.

Jeroen:

But the agenda app, we quickly mentioned that it has an interesting business model. I don't want to like like go deep, depend on that one. But can you give a quick recap on that? And because I know you wrote an interesting and quite long blog post about that already, I think over two years ago, maybe even longer, that describes this model because it's a little bit different to to your standard subscription app model that a lot of people are using nowadays. Right?

Drew:

Yeah, that's right. So when we were first developing agenda before it was on the market, we talked a lot about sales models and what we didn't, didn't like about subscriptions was that most apps have a what, what I would call a rental model of subscription where you, as long as you keep paying, you have the features and you can use the app. As soon as you stop paying the app becomes pretty useless. You can't. You kind of lose your data. You don't literally lose your data, of course, but you can't do anything with it. So so we didn't particularly like that. What we thought what we wanted to do was to have a model of a similar model to subscription where you would get recurring income. So that was we need that, of course, but people would feel like they had ownership of of what they paid for. And so the way it works is when you pay, you get a year and everything that's all about pro features that are released before that year and also during that year, you get to keep forever, right? So you unlock them forever, even if you stop paying after a year, that's that's fine. And then in the future there might be new pro features which you don't get. And of course you can always pay a gain to

Jeroen:

Yeah.

Drew:

get those. So this is the idea that you've got some ownership of what you actually paid for. You never lose anything with our model.

Jeroen:

Okay. So it is sort of, again, something that is date bound, right? Like the app itself, It's you basically

Drew:

Yeah,

Jeroen:

put put a stake in the ground which attaches to a date and everything that is before that. At that point in time, you get and everything that is after this point in time, you don't get. But of course, when you sign up for a paid tier with an agenda, that's that specific date that is selected for you is sometime in the future based on the amount of money that you actually transfer to at that point. But just for context, how big is the company behind agenda? Because I think it's like only a few people right?

Drew:

yeah. It's not a big company. It's this the two of us. Most of the time we have, um, we have a few developers that we've, we've bought in occasionally to do, you know, a bit of, I guess, subcontracting In the beginning we had a great designer and that helped us win that design award. You mentioned, unfortunately, he was a bit too good because Apple poached him so, so he's now at Apple. But so yeah, you will see some things coming up with

Jeroen:

And

Drew:

from him but they won't be agenda.

Jeroen:

yeah, yeah. So, so so grabbing back to this whole design and what thing what's the what's the what's it like? What's the process then. Is it like out of the blue you get an email and that it's like, hey, is this, is this for real? Is somebody trying to fetch me? It' like, is this apple actually sending me a message? What's the process there? To the extent that you can actually divulge yet.

Drew:

Yeah I think I think you have to I think with that that sort of thing you have to be active a bit, you have to network and you have to, you have to be in contact with people at Apple and try to just get the app noticed because something like the Apple Design Awards, as far as I understand it, it's something that they that you can nominate from inside of Apple. And I think anyone can nominate an app and then they'll look at the apps that have been nominated and say, Oh yeah, this is and you can. Yeah. So basically, if you've got a good contact at Apple in the developer relations or something and they like your app, then they then they will they will push it for you to some extent.

Jeroen:

Yeah.

Drew:

So I think we had a bit of that So it wasn't completely out of the blue but it's always a it's always a nice surprise that that, that, you know, that networking pays off

Jeroen:

But is it also true that at some point your end, if you find out of Apple and they give you some feedback? Yeah. It's you're a candidate for being on the list for a design award, but could you maybe please take care of these and these issues or items within your app?

Drew:

and

Jeroen:

Uh, just, uh, just for their, for their specific reasons, which are always bit fake, of course. Or is it like that they don't give you any feedback at all on your product.

Drew:

my experience with Apple is that they don't give any feedback at all, at least, which is extremely frustrating because they could they can say, yeah, it's a pretty good app, but what if you just fix this up? And that would be that would help so much. But

Jeroen:

Yeah.

Drew:

they in my experience they don't do that they that there's some policy I think where

Jeroen:

Yeah,

Drew:

you simply never tell and I actually I was lucky enough to meet Tim Cook a few years ago when he was in Amsterdam and I had a meeting with him with a few other developers. And he also was was kind of the same. He would sort of, you know, he knew stuff about he must have known stuff about all of the developers there, but it was sort of nudge, nudge, wink, wink. It was never, you know, you should do this, you should do that,

Jeroen:

yeah,

Drew:

which is frustrating because otherwise you're guessing a lot of the time.

Jeroen:

yeah.

Drew:

But it's

Jeroen:

They

Drew:

a

Jeroen:

probably have to be very careful about all kinds of liabilities and stuff,

Drew:

right,

Jeroen:

but

Drew:

right,

Jeroen:

yeah,

Drew:

exactly.

Jeroen:

so but then at some point you get a message that you're, uh, an Apple Design Award candidate, that at some point this gets converted into being a winner. And is that then when the whole process starts that Apple suggests that you come over to a WDC? And it's my understanding is they said, Yeah, we got access for you, but you need to take care of your plane tickets.

Drew:

Yeah, exactly, exactly. That's exactly how it went. Just like when I met Tim Cook and it was exactly the same. They never say directly, you're going to meet Tim Cook. They they say you might we might be able to arrange a meeting. You know what I mean? It's it's always hedged. And the same was with the it was exactly the same with the the designer award. It was you know, you're in the top few.

Jeroen:

Yeah,

Drew:

It

Jeroen:

it's

Drew:

would be a good idea if you came over. Okay.

Jeroen:

yeah,

Drew:

Well, five grand later was you paid for your hotel and your airfare from

Jeroen:

yeah

Drew:

Europe. It's not cheap.

Jeroen:

I know.

Drew:

Oh, yeah.

Jeroen:

I went to WW to see and that was all the way back in 2013

Drew:

Yeah,

Jeroen:

and even then it was already prohibitively expensive to,

Drew:

yeah.

Jeroen:

to be able to go there. You really needed to have like a company or an employer that was willing to to back you up on that. Uh,

Drew:

Right.

Jeroen:

fortunately you had a agenda as a company

Drew:

Yeah,

Jeroen:

then, so yeah, but it's still people,

Drew:

yeah.

Jeroen:

so it's

Drew:

Well, it comes

Jeroen:

still.

Drew:

straight out of our profits, of course.

Jeroen:

Exactly.

Drew:

Yeah,

Jeroen:

That's, that's a big chunk of change that you then don't have to spend on other things anymore.

Drew:

right.

Jeroen:

Convenient luxury to be able to not get. Not be able to spend money anymore. Well, but then, uh, you're in. I think it was Cupertino back then. Or was it still San Francisco

Drew:

I'm

Jeroen:

that you. I don't remember how many years ago it was.

Drew:

try to remember, it was 2018. I think it was. Oh it was already San Jose, I

Jeroen:

Yeah.

Drew:

think.

Jeroen:

San Jose. Yeah, that's the way they are.

Drew:

I think. Yeah. Yeah.

Jeroen:

So. But you're

Drew:

But.

Jeroen:

there in the US, you have the information that there is a likelihood of you being a design award winner. When do you actually find out that you're going to be pulled onstage and get one of these cubes shoved in your hands?

Drew:

I think when they announced the winner I think, I don't think we would exclude it. I mean we kind of knew, we kind of figured we would win, otherwise they wouldn't ask us to come all the way out. But I don't think they told us from my my recollection was just that we had to be there

Jeroen:

Yeah.

Drew:

and that we might win.

Jeroen:

Yeah. And then

Drew:

And

Jeroen:

the.

Drew:

then they say, are you are you willing?

Jeroen:

So but that's that's literally in the keynotes that's, uh,

Drew:

Yeah,

Jeroen:

they announced their Apple Design Award winners and then they, they

Drew:

right.

Jeroen:

have to the ceremony. That's a separate event. And by then you've probably been contacted by some PR person to like make arrangements with you. So like be at

Drew:

They just they have they don't have anything in the keynote. They don't announcing

Jeroen:

now.

Drew:

the cards. It's it's in the Apple Design Awards ceremony. Like

Jeroen:

Yeah.

Drew:

you say, it's it's kind of a little bit like the Oscars, a mini Oscars or something like that, you know. So. So there's a little bit of

Jeroen:

And

Drew:

a show, at least it was back then. And we didn't know, as far as I remember, exactly

Jeroen:

so I.

Drew:

what would happen.

Jeroen:

So you were in the audience and I was like, okay, we won. Now what do we do?

Drew:

Well, yeah, I mean, it was obvious from the other candidates that we had to go up on the stage and

Jeroen:

Yeah.

Drew:

and

Jeroen:

Does help that you're not the first being announced. That, of

Drew:

yeah,

Jeroen:

course. All right.

Drew:

yeah,

Jeroen:

But that was like a really fun experience, of course. And I think from what I could can tell is agenda as a product is it's doing quite well over the years. Um, so, so how big of a user base, uh, ballpark does agenda have right now? Is that something you are aware of or not?

Drew:

it's not something we track really closely, but I mean, we have thousands of active users per day. I didn't even know what that means, to be honest. I'm not enough into the app world to know what's

Jeroen:

Yeah.

Drew:

good and what's bad. I do know how much money comes in. Of course I have to know that. But

Jeroen:

Yeah,

Drew:

we're not a huge we're not a huge app. Otherwise we would have more than two people

Jeroen:

of course. Um, but another thing that you, uh, work on is ensembles, and that's probably the biggest reason why you are a speaker at, uh, at the I, And that's not because of the product itself, but because of the experience that this product is based on, which is a lot of experience and exposure to core data. Um, and I expect that at some point you need to get ensembles and all the other products that you're working on, get those products ready for Swift data, which is kind of a change. I was told by people who actually investigated those frameworks a little bit, but a change, yes, but

Drew:

or.

Jeroen:

a lot of things are staying the same. So so can you like give a quick overview of of what Swift data is in comparison to core data?

Drew:

Sure. To be honest, yeah, I'm quite new to it myself. I mean, it's only a few months old and I don't I haven't started moving any products over, so it's a little bit from what I've just at the moment, it's from what I've just seen on Mastodon and things like that. And I'm going to before that, before I give the talk, I am going to deep dive. So don't worry about that. I'll, I'll find out what's really in there. I think this is a what you say is correct. I think what they've done and what I, I think he found me actually from an article I wrote several years ago where I predicted what they would do. And I predicted that they would put in a swift UI type of interface on top of core data. And that's pretty much what they they did do. And as far as I can tell, and the two are, I think, somewhat compatible, you can, you can migrate from one to the other. I think the main difference between them is that with core data you had a sort of a graphical scheme builder, the graph, the core data modeler, I think it was called Always cool, where you would lay out the entities, the relationships, the properties and I think swift data works basically underneath. It's working the same. It's built on top of school lights and cloud kit for full sync. But until you don't use this this graphical editor any more, you simply writes swift code. You write swift types classes and they they have used the new macro system to to basically build up this this internal model of entities and relationships. I think underneath it's all the same probably if I look if I dig down I'm sure I'm going to find somewhere in this managed object or something very similar.

Jeroen:

And the persistent store coordinator somewhere?

Drew:

Exactly. I'm sure it's all there, probably not very deep either, because I've just got this macro stuff. So in theory, that's, that's the stuff which allows you to, you to just convert from one to the other effectively. I think I think doing it before now would have been very difficult to, to make it nice. But the macro, the macros in SWIFT are very powerful it looks like. So they're able to be very expressive. And so now you can very easily just make a class. The macro can determine what properties there are, what relationships you have to use some some annotations if you've got a, for example, a relationship, you might need to tell it how, what, what should happen if, if the object is deleted, that sort of thing. Deletion rules. And so you annotate, annotate the code rather than edit the, the core data modeler.

Jeroen:

And would you say that looking at, uh, the syntax that is being used with these macros and on these swift classes on its trucks, Actually, I think. Is it like, uh, do you, do you guess that it's like, built up in such a way that it is something that will get a visual editor eventually? Or do you think it will stay mostly in code? Uh, as it is right now?

Drew:

I don't think there will be a visual editor. What I'm while I, I think the trend is definitely to doing everything in code.If you look at swift UI.

Jeroen:

Yeah,

Drew:

I

Jeroen:

definitely.

Drew:

think that people like that it's it's nice that you can check things easily into your source management. You can diff source code much more easily than than a XML file for example. So I think that's that's the trend that we're seeing and I don't think that's going to change. We do of course in SWIFT you I have a preview which is useful for for you. I don't know if it's that useful for or for data, but maybe at some time we will have also some sort of auto generated preview of just to show you the relationships in a visual way that might be useful, I guess because because code is, you know, trying to see the full the full model just from some source code is a little bit tricky at times.

Jeroen:

Yeah.

Drew:

It'd be nice to get a map if you like.

Jeroen:

Yeah. That you have a visual guide to to really see how things tie together. And also,

Drew:

Exactly.

Jeroen:

you know

Drew:

Yeah,

Jeroen:

what? Some errors between. It's indicating what's a cascading rule. Sorry, that's the deletion rules. You mentioned.

Drew:

right,

Jeroen:

So

Drew:

exactly.

Jeroen:

and how deep of an understanding of the macro system as a, as a language feature, you do need to have to be able to be effective with swift data. You guess?

Drew:

I haven't dug into it enough, but I suspect not very, very much. The idea of macros, of course, is to to hide a lot of complexity. And

Jeroen:

Yeah.

Drew:

it's nice that you can, you can sort of say debug, but you open up the macro effectively and say, you know, show me what's inside. That's very useful, I think, to understanding how it works. But that's really a I think a pro feature. I think someone who's just starting out with Swift data and wants to make an app, you know, you don't need to I don't think you need to understand all the intricacies of macros. It's you can just think of it as, as a as an adaptation of a property, you know, and this is a relationship and this is a property. And you said that there were structs. I have I think there's still classes.

Jeroen:

Oh, okay.

Drew:

I was actually kind of disappointed. I thought I thought they would allow little abstracts and I think there's probably reasons why they don't related to, you know, how you relate them back to this this managed object context, which is a single object. So as far as I know, there still are still classes. Maybe that will though allow you to use structs in future? I don't know. Yeah,

Jeroen:

Yeah. I haven't looked into core data and data I have a lot of experience with, but swift data are not that much yet, because just I don't have the time yet. Because every year they release so many new features to just the language itself. And then you have to get acquainted with all the new APIs.

Drew:

right,

Jeroen:

So your talk, uh, of course, we're still two months out of the conference, but uh, what is your general direction

Drew:

Right.

Jeroen:

of your talk right now? What are your, what are you planning on, on helping people with if they, uh, are visiting your talk?

Drew:

Yeah, I would I think I'll I'll plan to do is try to give not just give us sort of an intro to Swift data because I think I think you can get that out of the WWC videos and there is also I think is is a Donnie Walsh that's going to do a I know it might have been Daniel was it someone's going to do a workshop

Jeroen:

Yeah.

Drew:

on that. So if you really want to know the details, I think you're probably best to go to the workshop. I will keep it kind of high level, I guess, and I will talk about what we've been talking about a little bit here where, you know, what's the relationship to core data? Oh, of course, show a little bit of of how you how you actually write swift data. But it'll be kind of high level. It'll be, you know, just here's an example of of a few different things I'll try to touch on things like migration from core data, also migration from one version to the next, just just how these things are handled and give people a reasonable idea. And of course I'll try to talk about gotchas and things like that, things that Apple will never talk about. Right. You know, is this is it actually ready for prime time, that sort of that sort of thing, which Apple's never going to say? Of course, they never going to say, yes, this is this is not really for. So those those are the sort of things you can get, I think from a conference talk where you can't which you can't get from a WWE DC video,

Jeroen:

Yeah.

Drew:

you know, basic general advice to what do I think of it as someone who's used core data for so long and have actually written a ST framework with core data, which means you have to dig quite deep already. Is this? Yeah. Is it a good framework? Is it the ultimate framework in the sense that is, is that is it going to be like combine, Is there going to be like, you know, they introduce combine and then they select it within two years or something with a different approach with async await. So is this just a temporary framework or is this really their final station?

Jeroen:

Yeah.

Drew:

They sort of questions and I don't know some of those answers yet, but I'm going to know by the time by the time I get there, I think

Jeroen:

Yeah. If people are attending the conference, they really want to dive deep on our Swift that they definitely should check out Daniel Steinberg's workshop on November 7th. The day before the conference, because he's really planning on, uh, you know, just giving an overview of what Swift Data is, how you attach to if you then explore what state and binding does for you, how observable objects and published properties should tie into this, and then also how you can add asynchronously to this whole process. So that stuff coming in from the network that it's actually not freezing your UI, updating your data storage and then being reflected on the on the screen. And uh, yeah, by the end of a day with Daniel, you will be, I guess you will be tired. But you know a lot more about swift data, so people interested in swift data, check out through, um, talk at the conference itself, but also make sure that you consider going to Daniel's workshop because that's a full eight hour long session that you'll get with, uh, well, is there something he's not an expert on? I'd say,

Drew:

he's is a very smart guy, Daniel.

Jeroen:

and

Drew:

He's a

Jeroen:

also an excellent teacher because, uh,

Drew:

writer.

Jeroen:

yeah, he is. He has a lot of background in actual teaching of complex, uh, material. He's from. He's originally a maths teacher. Even

Drew:

Yeah,

Jeroen:

so,

Drew:

exactly.

Jeroen:

um, so. But

Drew:

Yeah, I,

Jeroen:

go ahead.

Drew:

I was just going to say I followed some of his courses in Paris a few years ago,

Jeroen:

Yeah.

Drew:

combined, and and switched swift UI, and they were very good. He's he's an excellent teacher.

Jeroen:

Yeah. So, um, that concludes the planning of a workshop for a conference which people should attend. But so back to you. Um, so we talked a little bit about the, the, the conference talk that you're planning on giving a little bit of your background on, on what products that you're working on. Um, so Ensembles uses core data because it's like a synchronization and persistence layer on top of core data, if I'm correct. But does agenda also use a lot of core data or is there a different persistence mechanism being used?

Drew:

We actually built something custom there. There was, there was certain things that we wanted to do which didn't fit that well with the approach that this ensemble uses, which is just to sync up the stores. But of course I have a lot of experience with ensemble, so I know the sort of the corner cases and so we need to actually build something custom. It's not, it's not really we do use coordinated but more as a sort of a database type approach. It's

Jeroen:

Yeah.

Drew:

not not the way it's supposed to be used. I guess it's kind of a cheap way to get SQLite working.

Jeroen:

Yeah. So

Drew:

It's

Jeroen:

it's it's a local storage mechanism that you do not sync directly with the cloud. Get this thinking you do yourself, uh,

Drew:

right,

Jeroen:

in a different way, because

Drew:

Exactly.

Jeroen:

I've heard very diverse experiences of people using cloud get thinking and how successful they've been with thinking up a core data store. So, uh, it's always a bit of, uh, yeah, I would hope that Apple with Swift data finally tackles these, uh, these lingering issues with, uh, with, with, with persistent store, uh, synchronization because,

Drew:

Yeah.

Jeroen:

yeah,

Drew:

They've

Jeroen:

it's,

Drew:

got a terrible history of it. Really. I,

Jeroen:

yeah,

Drew:

i the reason I developed ensembles in the first place was simply out of frustration with the core data thing at that time.

Jeroen:

yeah,

Drew:

And if you think that the cloud kit sync is bad, you should have tried the core data sync in in 2000 and what was it, 12 or whatever?

Jeroen:

yeah. That was, that

Drew:

Terrible.

Jeroen:

was the general, the general advice back then was do not use, it was

Drew:

Yeah,

Jeroen:

like

Drew:

that was

Jeroen:

the core

Drew:

that

Jeroen:

data

Drew:

was

Jeroen:

is

Drew:

easy,

Jeroen:

fine but sync on your own. Don't, don't use what Apple provides

Drew:

right?

Jeroen:

because it might work in your, in your development environment, but in production you will run into issues and

Drew:

Yeah,

Jeroen:

uh.

Drew:

exactly.

Jeroen:

Yeah it's and that that that's

Drew:

Yeah.

Jeroen:

that's that's a legacy that that Apple is still dealing with with their synchronization frameworks because every time Apple releases something new that does some form of synchronization, pretty much all developers go like, well,

Drew:

Yeah.

Jeroen:

let's

Drew:

Very

Jeroen:

just see, let's just see

Drew:

dubious.

Jeroen:

how this works in practice,

Drew:

Yeah,

Jeroen:

right?

Drew:

right,

Jeroen:

So,

Drew:

exactly.

Jeroen:

um, what are you expecting from the, the conference itself? Because you're not only going to be presenting there, you're also going to be part of the conference as an attendee for the rest of the time. So what are your expectations there?

Drew:

Well, I think I, I think I guess pretty much at least I was there last year and I've been a few years ago. I think Alex gave a talk one year and I was there. So I think I've been to two or three

Jeroen:

Yeah.

Drew:

of them to do it. So I always see conferences and so I have a vague idea at least if it's going to be the same. I know what, I know what to expect, but

Jeroen:

Mm hmm.

Drew:

yeah, so I really enjoyed it last year. It's not too long. It's at least it was to two days last year I think.

Jeroen:

Correct.

Drew:

And the talks are really the speakers are really good. So yeah, I'm expecting, I'm expecting good things. And you know, I noticed it's a different location this year in North

Jeroen:

Yeah.

Drew:

Amsterdam.

Jeroen:

Yeah. We, we were in the bakehouse despite her for the first two editions. That's like back in 2015. Uh,

Drew:

You

Jeroen:

and that was a really

Drew:

know,

Jeroen:

small space comparatively, because that could fit like close to 100 people. I think it was, uh, and then the two editions after that one that was those were run makokha hats had know they were done in the student hotel in the old theatre. So that's on the,

Drew:

Right,

Jeroen:

on the, on the viable strand And we had 120 seats and 120 seats was already pushing it for that room. And the biggest complaint that we got was that uh, because it's like wooden benches that, that they're like

Drew:

right.

Jeroen:

people are like really hurting at the end of the day because of the sitting. So, uh, we, and then that's, I did a podcast episode on it, but then the whole thing happened that Coco had to know. And I, I'm a part of co cats now that we decided, okay, we need to take the conference out of the, uh, booking of the, of the conference financially. So that's when I picked up the conference myself on my own. And then we had to decide because I still use a few people in organizing, of course, uh, then we had to decide, okay, do we stay with the same venue or do we pick another venue that's maybe a little bit bigger? And that's why we moved to the Nemo Science Museum. It is that. Well, there are not there's not a lot of locations in Amsterdam that are more central than that one, I guess.

Drew:

Yeah,

Jeroen:

And it's within

Drew:

right.

Jeroen:

walking distance of the train station itself. And it's

Drew:

Yeah.

Jeroen:

very easy to reach and it has a room that allows for 201 individuals.

Drew:

Well,

Jeroen:

So we're making the conference a little bit bigger. And

Drew:

yeah,

Jeroen:

uh, the, the venue also allows us to, to do all the activities that we have organized with the conference in the same building. So people who've had a conference day, the first conference day, all the lunches are like right outside of the of after the presentation space. At the end of the day, we'll have like drinks and

Drew:

well,

Jeroen:

dinner after first day, and that will be like at the rooftop terrace, which is in a glass box. So even if it's bad weather, we have excellent space available there. So

Drew:

yeah.

Jeroen:

we people just need to walk up the stairs and they can enjoy themselves and mingle and, um, and then the workshop, uh, the workshops, it's actually two now we can also do that a day before in like smaller meeting rooms that they have available in the museum as well. And yeah, just that convenience having everything in, in a single venue and also uh, the staffing support that's the museum is able to provide essay experienced um, meeting conference, whatever venue was really helpful there. The cheapest spots to to actually go to because if you look at the ticket price it's €300 excluding Texas into some charges. It's it's like off those€300. I'm already spending like €168 just on your food and drinks alone. And

Drew:

So.

Jeroen:

then and then I still and then I still need to cover the staff and and the location and everything.

Drew:

Oh

Jeroen:

And

Drew:

yeah.

Jeroen:

it's actually if I would not have sponsors. Thank you. Revenue card. Thank you stream thank you ABN Amro plugging them as well

Drew:

Yeah.

Jeroen:

is that if I would have sponsors I would not have been able to execute the conference because

Drew:

Oh

Jeroen:

it would just

Drew:

well,

Jeroen:

be like and that would me that there would be no march and then the risk would be just too big.

Drew:

yeah,

Jeroen:

And I think I still need to sell like a few more tickets. And then, uh, based on the ticket revenue alone, I can cover the venue, the staff and the, uh, catering. But then there's a whole list of other things that

Drew:

yeah.

Jeroen:

also needs to be taken care of. So like certain speakers, they, they travel a little bit further, so they, they, they get some, some financial support which they're able to airplane tickets. They also need to be lodged somewhere in a hotel. I have some people helping out as staff that I gave like a free ticket, free access, but they help me out during the day. But some of them are also travelling quite far from the Netherlands, so I need to put them up somewhere as well. And it's all these, these, these small things that, well, if I've got a spreadsheet and uh, it's, it's that, that's, that's, that's a good amount of money in there and it's a lot of people in the Netherlands, if that would be their yearly gross salary, the final number they would, they would, they would consider themselves

Drew:

would be happy

Jeroen:

financially well-off.

Drew:

to.

Jeroen:

But of course a lot of money comes in and a lot of money goes out. So there's hardly

Drew:

Yeah,

Jeroen:

anything left at the bottom line, which is fine because

Drew:

yeah,

Jeroen:

I'm organising this because I like doing it.

Drew:

yeah.

Jeroen:

But uh, yeah, that's, that's a conscious choice that we made and that we were able to make because we had one sponsor that signed up very early in the organisation in organising and we had a second sponsor that I had a good enough relation with that I would be able to trust that they would actually sign up as a sponsor like one and a half month after I started. Uh, getting financially committed to the whole thing.

Drew:

Right, right,

Jeroen:

So. And I still have an

Drew:

Yeah.

Jeroen:

extra sponsor. Uh, well, I'm waiting for the final paperwork to pass through and then the transaction, and then I can announce them as well, because they, uh, if this all works out, then they're actually paying for all the drinks after the workshop and first conference day. So

Drew:

Oh that's it. Very important.

Jeroen:

it's also, it's also a big ticket item for them to, to, to be able to attach their name to because they're

Drew:

Yeah.

Jeroen:

their revenue cat, They really to sell the product in a purchase

Drew:

The

Jeroen:

and everything stream wants to get their products out as well which is a chat and video SDK and then

Drew:

Yeah,

Jeroen:

ABN they basically in there to just get acquainted with people and advocate for themselves as an interesting place to work. And

Drew:

yeah.

Jeroen:

then the fourth sponsor is on the same level as, uh, as ABN Amro. They just want to get exposure to their brand and advocate for themselves. That's a great place for software developers to work.

Drew:

Right,

Jeroen:

So

Drew:

Yeah.

Jeroen:

no, no, no, no. Real conflicts between the sponsors as well, which is good to have because I haven't had it myself. But I've heard stories of conferences having sponsors that were like behind

Drew:

Sure.

Jeroen:

the curtains. They were basically rolling over the carpet, fighting for people

Drew:

Okay.

Jeroen:

almost. So not something you want to have

Drew:

The

Jeroen:

because we like a no violence policy in our in our in our conference space and some other policies as well. Just, you know, proper human, decent behavior. If you do that, then you're fine. If you if you do all that stuff, then you'll get to deal with me or one of my teammates. So just

Drew:

Yeah.

Jeroen:

take care of the situation. So, yeah, it's it's the same as last year and last time I should say, because it was not last year, but it's the same as, oh, this last year.Wow . Okay,

Drew:

I think

Jeroen:

I'm

Drew:

at this

Jeroen:

confused.

Drew:

time it was last year Right.

Jeroen:

Yeah, it is last

Drew:

It

Jeroen:

year because

Drew:

was nice.

Jeroen:

we had a few years in between,

Drew:

Yeah.

Jeroen:

but it's. It's a little bit bigger, uh, but not bigger to the extent that I expect that the intimacy of the conference will be negatively affected by it. Because the one biggest piece of feedback that I got from people who attended do I was in previous years is that they, uh, they really felt like, yes, I was able to really connect with people who were also an attendee at a conference and not just like go to talks, get exhausted, and then having to enjoy myself on my own in the evening. It's like people were able to mingle and interact during the day. And then on the first evening we have like everything taken care of until you had your dinner. And then people can whatever they want. And then on the next evening, probably some people need to travel, some people are staying a night and then they can just venture off with a smaller group and have dinner or do whatever and enjoy themselves and have some extended conversations after the the second conference day and then just go home again with a lot of new knowledge and a lot of new people in their network that they can rely on sometime down the line in the future.

Drew:

Yeah exactly. I think, I think that's the charm of the conference that, that it's not too, too massive

Jeroen:

Mm hmm.

Drew:

and that you, you, it does feel a little bit like a, you know, like a, I mean it's 100, 100 or 200 people or whatever. It's still, it still feels like a Yeah. A tight group. It's

Jeroen:

Yeah.

Drew:

not, it's not like these massive conferences with thousands of people.

Jeroen:

Yeah. I always envision a conference day for do I was to be like a basically, uh, for co cats and L meetups attached to each other. And that's also pretty much the, the vibe I'm going for. It's like people help each other. They, they, if somebody has a question, probably you're sitting next to the person who has an answer on that or, you know, just maybe two seats down that they just know thinks about really practical things. Okay, I need something fixed on my bike. Somebody can help you. I need something messed up with my hotel. Anybody can help me. And quite likely there will be someone who will just. Yeah, just. I'll go with you. And then you just have a native speaker with you who can yell at a hotel staff and get things started for you. Those kinds of things. And

Drew:

Yeah.

Jeroen:

it's

Drew:

Yeah.

Jeroen:

really it's really welcoming to, to new people. And I also hope that it's reflected in the speaker lineup because I was positively surprised by the diversity of people who actually entered the CFP. And it was a lot, but the diversity was completely true and true to the entire,

Drew:

Mm.

Jeroen:

uh, list of people who who actually entered with a suggestion on the, on the CFP. Uh,

Drew:

Is, is the speakers all announced now. At last time I looked it was just a few people

Jeroen:

I've

Drew:

but

Jeroen:

got

Drew:

I

Jeroen:

two

Drew:

guess.

Jeroen:

spots open still. Uh, but those spots are uh, allocated to sponsors. Um, one of the sponsored speakers will be Charlie Chapman. I'm expecting and hoping, but I haven't had final confirm confirmation on that because Josh Holtz is doing a talk on his own. Uh, and that just, I mentioned that in previous episodes, the dates of the conference are actually chosen because those were dates that Josh Holtz was actually able to travel and the venue actually had availability as well. So that was the two

Drew:

Yeah.

Jeroen:

things that came together. But um, I am told that Charlie Chapman will do like to sponsor a session for revenue cards and, and ABN Amro will do a 20 minute session uh, next to Charlie Chapman. So it's like each my regular slots like 45 minutes and one slot is divvied up between two sponsors, each gets 20 minutes. And then I have a third sponsor, which is not yet announced, and they will do a full on technical talk, not just about their company and their product or whatever, but the technical

Drew:

hmm.

Jeroen:

talk about an implementation detail that they have in their product. So it's it's a really big application in the Dutch market and they

Drew:

Right.

Jeroen:

have some experience and interesting things to share there. And they, uh, they basically want to showcase for what they can do as an engineering group

Drew:

Mm.

Jeroen:

and that hopefully then interests, uh, peers to actually come have a conversation and ask an inquiry about potential job openings with them.

Drew:

Right, right. Yeah.

Jeroen:

So

Drew:

Yeah.

Jeroen:

that's, that's why there's still two spots open

Drew:

Hmm.

Jeroen:

in the schedule. And those are, those are reserved right now at least for three sponsors. So one

Drew:

Right.

Jeroen:

shared

Drew:

And

Jeroen:

once you had slots and one for a dedicated.

Drew:

the other, the other speakers are on the website. Is

Jeroen:

Yeah,

Drew:

that right? Yeah. So

Jeroen:

yeah

Drew:

that's public

Jeroen:

I've,

Drew:

meeting.

Jeroen:

I've

Drew:

Yeah.

Jeroen:

put um I think I've put all the speakers online now let me

Drew:

Okay.

Jeroen:

check. So yeah yesterday I pushed pushed Tianna Henry Lewis and she will do a talk about mental status and that was the

Drew:

Ri.

Jeroen:

that was the final speaker I needed to have final confirmation on and yeah, it's a complete list now. So I have

Drew:

Cool.

Jeroen:

Tim Condon,Daniel Steinberg has a workshop host and conference host, so he will be on stage with me announcing people, Donnie

Drew:

Yeah.

Jeroen:

Walls as a workshop host and a backup speaker. If something goes wrong. Phillip Sadowski Gianna, Henry Lewis, Josh Holtz, Mar Dimitrescu from Stream. Alayna Bush, Cinco from Jet Brains. Rudy Longoria, who is a solopreneur aka Yuki from a Japanese bank in their markets doing a talk. Zachary

Drew:

Hmm.

Jeroen:

Brass are doing a sort of like a coaching uh uh, type of talk at the end of the conference then, Monica, about fashion OS And I

Drew:

Oh,

Jeroen:

think

Drew:

yeah.

Jeroen:

Vincent here presents he does a talk about macros if, um, if I'm correct at the top of my head.

Drew:

Cool.

Jeroen:

So

Drew:

Sounds like a really good, good lineup.

Jeroen:

yeah, so it's,

Drew:

But

Jeroen:

it's,

Drew:

I'm sorry. You you had me when you mentioned that the seats would be better. So

Jeroen:

yeah, that was,

Drew:

that

Jeroen:

that

Drew:

was

Jeroen:

was,

Drew:

a probably.

Jeroen:

that was, that was the one bit of negative feedback we got last year. And then basically somebody told me on Twitter my butt hurts the day

Drew:

Yeah.

Jeroen:

after and it

Drew:

Yeah,

Jeroen:

was let's fix that next year. So

Drew:

yeah,

Jeroen:

we thought

Drew:

I guess.

Jeroen:

about

Drew:

I guess it's just not designed for, for sitting there all day. I guess maybe

Jeroen:

no,

Drew:

that theater.

Jeroen:

no, it's really the old venue is like really a space for like, you know, uh, an a session of an hour or maybe a bit of theater for 2 hours. But then that's already long.

Drew:

Yeah,

Jeroen:

And what we have this year is it's really a proper auditorium with like a really big screen and a cinema style seating arrangement which goes up quite nicely. So, um,

Drew:

right,

Jeroen:

I'm told, and I tried it in the, uh, venue myself. It's like basically have a good view on the screen and the speaker from every seat in the room.

Drew:

right.

Jeroen:

So, uh,

Drew:

Sounds

Jeroen:

and

Drew:

great to

Jeroen:

so the one drawback is that there's a good chance of jetlagged people starting to snore at some point

Drew:

sleep.

Jeroen:

during some sessions, but that,

Drew:

Yeah,

Jeroen:

I guess that's like something we can live with and then help these people out with a coffee break or something.

Drew:

yeah, yeah. The name I think is really interesting too. I, I actually don't know if I've ever been, you know, maybe you've been there once,

Jeroen:

Yeah,

Drew:

but

Jeroen:

it's,

Drew:

this is good science. Theatre and science museum,

Jeroen:

yeah,

Drew:

right?

Jeroen:

it's the, the, the venue itself is a museum, but it's, uh, it's a kids focused, uh, science museum. So

Drew:

Yeah.

Jeroen:

people travelling to Amsterdam, if they just so happened that their partner and kids have some time off, probably not, because I think it's a school week in most countries. Um,

Drew:

Oh, right. Yeah,

Jeroen:

they can, they can just bring their spouse and, and kids and they can just, uh, have an enjoyable day in the, in, in the

Drew:

maybe.

Jeroen:

museum itself,

Drew:

Yeah,

Jeroen:

Uh,

Drew:

yeah,

Jeroen:

because it's as, as an adult, you'll probably run through the museum in like, you know, one and a half, 2 hours. But kids, they just want to, they want to, they want to try every installation in there.

Drew:

yeah,

Jeroen:

So it's really things like kids, they can like be engulfed in a in like a soap bubble, for example, a like a human sized lobe. So bubble or

Drew:

yeah,

Jeroen:

all

Drew:

yeah.

Jeroen:

kinds of light experiments or electricity. And it's like basically any kid who has like an interest in something science that they will

Drew:

Mm.

Jeroen:

have they will have a blast in this museum, actually. And

Drew:

Yeah.

Jeroen:

also to the how central it is. It's like you can from the rooftop of the museum, you can see the central station and you can see a lot of the waterways at the eye harbor of, uh, of Amsterdam City and uh, that there's some really posh hotels in line of sights as well.

Drew:

Mm.

Jeroen:

You probably don't want to book a room there because they're quite

Drew:

Very

Jeroen:

expensive.

Drew:

expensive.

Jeroen:

Yeah,

Drew:

Yeah .

Jeroen:

so that's that Emirati hotel and stuff like that. And, but you can also see the, uh, the cruise terminal and the,

Drew:

Mm.

Jeroen:

uh, I think it's a big, um, a big space for, for, for, for, for stage shows as well. Tha somewhere in the same corner as the, uh, the cruise line terminal. So if we're lucky, you can actually see a cruise ship coming in from the rooftop of the museum, and you would be looking at that and it's like, how is this Africa going to fit here?

Drew:

Yeah,

Jeroen:

But it does fit actually, which

Drew:

yeah,

Jeroen:

is wonderful

Drew:

yeah,

Jeroen:

to see.

Drew:

yeah. It's surprising isn't it, that they can come all the way to Amsterdam. That doesn't

Jeroen:

Yeah,

Drew:

feel like it should fit.

Jeroen:

it seems like it's impossible, but still, they they managed

Drew:

Yeah.

Jeroen:

to do it. So

Drew:

Yeah,

Jeroen:

I'm down with that. I think we covered everything that we needed to cover. Or do you have the feeling that we

Drew:

yeah.

Jeroen:

forgot something to

Drew:

No, I think we should leave some for the conference.

Jeroen:

add? That's always a good one, right? Anyways, um, people who are interesting interested in joining us at Do I was in November. Make sure that you get your tickets quickly because I have less than 30 tickets available. I still have some tickets available for Daniels workshop, so definitely check those out and consider those. Um, and that's a number that I have available as at the time of this recording, which is September 5th. Um, so I don't know where my tickets will be next week. So that's probably when we will be releasing this episode. So who knows? I hope people who are willing to come already bought tickets or that they're lucky and they're still one available or maybe through a waitlist that they can get in because of a late cancellation. But I hope people get their tickets early and not be disappointed for not having a ticket because last year

Drew:

Yeah.

Jeroen:

we had like a waitlist of over 90 people. Uh,

Drew:

Well,

Jeroen:

and that's the, that's the first list of people I sent an email when I opened up tickets this year. So,

Drew:

yeah,

Jeroen:

uh, and that works because I immediately got a few super early bird ticket sales back then. So that's basically that it's like ten or ten or so tickets that I'm basically losing money on. But I just needed to like be able to say to sponsors, Yeah, this, this conference is

Drew:

yeah,

Jeroen:

going to be a success because I already sold X amount of tickets.

Drew:

yeah, yeah.

Jeroen:

That's

Drew:

It's

Jeroen:

the whole reason.

Drew:

going to be full.

Jeroen:

That's the whole reason people do the super early birds and early birds tickets is just to be able

Drew:

As

Jeroen:

to

Drew:

I've

Jeroen:

claim

Drew:

said

Jeroen:

that they have

Drew:

it.

Jeroen:

a number of tickets sold already because

Drew:

It's

Jeroen:

that's

Drew:

a trick.

Jeroen:

not a lot of money. That's that's not a lot of that's not a lot of fat on on on these early tickets sales anyways

Drew:

Yeah, Yeah.

Jeroen:

so. All right.

Drew:

You sell them, sell them for cost, price and.

Jeroen:

Exactly.

Drew:

Yeah.

Jeroen:

Well, Drew, I see you in two months, maybe a little bit earlier at a caucus, and I'll meet up and, uh, otherwise, uh, we'll catch up then. And I look forward

Drew:

Okay.

Jeroen:

to seeing your presentation in November. And, uh, thank you for your time.

Drew:

Well, yeah. Thanks a lot. Thanks for inviting me to speak at the conference. Looking

Jeroen:

No problem.

Drew:

forward to it.

(Cont.) Do iOS Speaker: Drew McCormack, founder of The Mental Faculty, talking about SwiftData