AppForce1: news and info for iOS app developers
AppForce1: news and info for iOS app developers
Alexander Griekspoor, co-creator of Agenda.com
This is Alexander, he and Drew created the note taking app Agenda. A Mac and iOS focussed App.Learn more about Alexander, how he got to creating Agenda and what motivates him day to day.
To learn more about Alexander and his product:
- Visit Agenda.com (referral link, it extends my Agenda update window)
- Learn more about Papers
- On Twitter
Stream makes it easy for you to seamlessly integrate real-time experiences into your application. Check out their Swift tutorial to learn how you can get started adding video or in-app messaging to your apps!
Lead Software Developer
Learn best practices for being a great lead software developer.
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
Hi, welcome to another special edition of my podcast. I'm sitting here with Alexandre Flexport. That's a Dutch name, you might have been able to tell that by the way that I could pronounce it because try it. And you might have a hard time because there are some typical Dutch vowels in there. Alexandre has been working on agenda.com, which is a notetaking app that has a twist in the sense that it attaches your notes to your calendar. So probably going to dive into that he's been working on that with through McCormack, and several designers on the needs of a needs basis. So that's Marcelo and Joe, but mostly it's you, Andrew working on this product. But just to get started, Alexandre, how long has agenda been available?
Alexander Griekspoor:Hi, yeah. Since 2018. Yeah, that's amazing of Time flies.
Jeroen Leenarts:But that's probably not the first time that you wrote some code for this product. Right?
Alexander Griekspoor:For agenda. Yeah, well, agenda started two years earlier, we had a bit of a bumpy start. You know, it's a long story about that. Maybe we get into that. But before that I was already making apps for Mac. Yeah, for science, basically.
Jeroen Leenarts:So immediately, you dive into some of the history because I know, by chance, maybe that you've been doing something with software development since at least 2001. At least, then you graduated from your education, which was not it related. But you've been tinkering with computers a lot longer. I believe you. Just before we started recording, you said, since you were 15. So that's, that's a couple of decades already that you've been doing something with computers?
Alexander Griekspoor:Yeah, you make me feel old? Well, we
Jeroen Leenarts:only have a difference of like, two years, I think. So let's let's just keep it at that. Right? Well aged. So But why did you get started with computers in the first place when you were a kid, because as a 15 year old, there's a whole bunch of things that you can do a lot of stupid things you can do, but then bought something with computers, as has been a very useful thing to do.
Alexander Griekspoor:Yeah, well, I guess with this answer, I'm gonna reveal the, you know, people can do the math, but, you know, that's 30 years ago. So things are completely different. I mean, I have three small children. They basically the moment they, you know, open their eyes, people are babies nowadays, you know, they get an iPad. And for us, it was very different. I didn't have TV until seven, you know, my dad brought home a Mac a classic Mac when I was 14. And that's when it started. And so So, you know, mobile phone, not before 23. So it's a completely different time. And, yeah, so my dad brought back that that Mac from from work, he wasn't too much into it. And he asked me to help basically, and I and that's how I got hooked to the Mac right from the start. Many of my friends have, you know, Commodore 460 fours and these kinds of things, but I just from the get go, I was a Mac person, which also meant no programming windows, you know, yet with Windows and clicking a mouse and everything. So even the programming that wasn't really my thing. Status hobby, but that got me a side job where I got more and more into it. And ultimately, I discovered the multimedia side of the Mac. So making videos and making images Photoshop 1.0. And, you know, that's, that's where I got in, I fell in love with it until 2001 where it became for people like me accessible to program because I was 10 came out and with that, you know, the project builder at the time interface builder and the tools from Apple and so finally, I managed to jump that hurdle and and get into programming
Jeroen Leenarts:and getting into programming. You mentioned you did that. Not at an early age so in 2001 So you probably were like 21 years old. Yeah, yeah. So why did you
Alexander Griekspoor:What is what something is something I always wanted I mean, I had done multimedia project. So a little bit of scripting language scripting tools came with that and you know, to to make your dynamic and interactive slideshows and stuff I had done this but for me the jump to especially then you know, building things in I think C++ was a language that your Pascal Pascal that you that you had to know to make Mac apps was just way too big and I couldn't make that mental jump. And in addition, the tools were just inaccessible, you know, you had to buy Metro works for, you know, $1,000 or something. So it was just a way to pick a risk and to different And then when Apple, you know, brought basically tools for free, they made the tools for free. And in a much more accessible language than it was still a big jump because I started out with Apple script studio. World Fair all things. But yeah,
Jeroen Leenarts:what you mentioned there the much more accessible language and trying tell any regular swift developer nowadays that Objective C is an accessible language.
Alexander Griekspoor:Yeah, that's That's true. I still like it, actually. I mean, I still, I still liked it a lot at the time, because it was definitely a lot more readable than anything. See, Oh, yeah. Read answer. Yeah. So that was, yeah. And in fact, there's a funny story because I, I bought basically the Getting Started with Coco book at the time, and I forgot that's it. But now I can actually, you know, that this looks a lot more accessible. And then it started, you know, talking about arrays in like base three. And it's like, I don't get any of this, what's this thing with a star and, and so I Okay, I have to go a little bit more back to a little bit more basic. So I bought a book on C itself, like a C Bible. I read until chapter seven, where they again, started talking about the pointer arithmetic and all the stuff that you had to do with arrays and buffers, and was like, well, maybe I can now understand this whole NSRA thing. And so I stopped reading the Bible. And went back to the, to the cocoa guide, and that was exactly the jump that we're at just enough info to understand it and grow from there. Yeah.
Jeroen Leenarts:Yeah, we're really talking about Objective C. Before all the nice syntactic sugar that we have nowadays before aarC, automatic reference counting, you had your own memory management with, with what Alec and release? I think it's been exactly. Release? Yeah. And then sometimes you want to drain your auto release pool manually, because otherwise you would run out of memory. And so yeah, algorithmic situations.
Alexander Griekspoor:A lot of times, yeah, a lot of a
Jeroen Leenarts:lot of hassle to just get some simple things done, right. Yeah, comparatively, the iOS apps and Mac apps back in that day, they were a lot simpler compared to what they are now, right?
Alexander Griekspoor:Are you hearing my silence, I'm doubting I don't personally see a lot of difference to be honest. And in fact, you know, the nicest thing and you know, this is kind of maybe a pet peeve of mine. But everything that we got back then was built in a way, you know, the whole next, basically, the call Coco set up, was built in a way where it was really generic Lego bricks. So you could build everything. That's how I felt I felt empowered, I felt I felt super excited, I could build everything, because you could override things and subclass things, if you wanted to do it differently. It was real fought out in a way where it was generic building blocks, which is sometimes a bit harder to get started. But you can then build everything and control everything. And it felt fantastic. You could build everything nowadays. It's true, it's more complex, more devices, more things. But I feel that Apple is building stuff in in a way that you also see actually, with Lego itself happen as well, where you get more and more of those kinds of one use parts is like you buy a project or a box of Lego. And more and more you have, you know, 234 of those kinds of parts that are specific for that box. And, and it means that you can't do much more than that, then then just use them in that project. And and, and I feel that that's where things have moved a lot. So you got a lot more stuff you can do. But in a way, you have way less control. So and it's not built generically anymore. It's built basically, Apple needs this. That's what they built for their apps, then they let it mature once, you know, the next WWDC, we get it as developers, but it does exactly what Apple does. And, you know, and if I didn't say, but I would like to do like that. It's like, yeah, sorry, that API. We haven't got any. It's not fought out in a way where it's built for generic purpose reuse. And that's and that's the thing that one of the things that I find the big PD nowadays, actually,
Jeroen Leenarts:could you say that a lot of complexity has shifted from, like coming up with your own things based on more basic building blocks to an API that has a much more broader API surface. So that's as there's so much API you get to deal with and every specific thing that you can do on a Mac or on an iOS app, is something that you have to call a specific API for I'm thinking about all the extensions that you can deal with nowadays. Everything is an extension it seems Yeah.
Alexander Griekspoor:Yeah. And it actually goes me Uh, yeah, I mean, we talked a lot about my 80s podcast, and I'm gonna sound like a grumpy old man. It's horrible. But, you know, even with API design, I see this happening and you know, like swift to go back to Swift. I love the link, I absolutely love the language, I feel it's going way too broad. There are services like combine are the things that I simply haven't touched, because my, I just feel more and more than my mental capacity is not able to craft the whole thing. I just feels heavy to me. I mean, every time is something new is in, for instance. You know, I think the one of the biggest mistakes made with Swift, two, so to speak, is the addition of function builders. It's terrible. Because take Dow added as a shortcut support, so app intense, and every framework of Apple now starts to build their own effectively domain specific language, which is terrible, because it means that if I, if I go to implement app intense, I have to think, Okay, how did this actually work? And what kind of Function Builder things do, did they invent? And which means like, okay, they've decided that you need to do an if then when else, whatever, all kind of nothing follows the basic swift rules, because it's all functions. So you can do whatever you want, and that they build a complete domain specific language for app intents, then I'm going to implement, I don't know, I want a handle for something else. And chances are that that group within Apple have built their own domain specific language with function builders, let alone swift UI, which is another one with with Function Builder. And so it means that every framework gets basically is becoming different. And you have to if I now a month later go back to the app intense stuff. How do I know that it actually works? Documentation is terrible, all this stuff. And so it's, like you say, it expands the surface at a tempo at the speed at which just becomes too much for me to even, you know, it feels draining. And maybe that's because I'm getting older, but I don't feel I didn't have that with you know, the old. It was very concise, the old app kid, Coco. And it felt different at a time. Yeah. But I do
Jeroen Leenarts:think you have a point there because it used to be that apps on the Mac, and also a little bit on the on the iPhone, because the iPhone was already much more constrained and a Mac platform that initially it was really about, okay, what can people do on this platform in creative ways. So what their product really does. And nowadays, a lot of the work that you have to do to build a product is actually finding new and interesting ways to actually attach Apple's API's together in new and novel ways. So that you can actually pipe data from an input to some sort of an output facilitated by Apple.
Alexander Griekspoor:Yeah, and the problem there is that because those API's were not built in a generic way, often, you cannot do much more than what Apple does. For instance, a good example is I implemented pointer support in agenda. And one of the things I wanted to do is like, based, you know, based on, you know, whether when you would swipe, you know, the trackpad, you would open the left or the right sidebar, and I would do that on a Mac, I do that based on where the mouse your pointer is, because it's very low. If your pointer is on the right side of the screen, you very likely want to open the thing on the right side, it's on the left, vice versa. Now, the first thing I do is like, Okay, give me the location of the pointer on screen. API doesn't exist. You can't ask, you know, where's the ring on screen school? Sorry, I have to get that out. You know, you can't ask you where's the finger on the screen?
Jeroen Leenarts:It's probably somewhere like three layers? No, it's
Alexander Griekspoor:not. It's not. It's just not there. No, at least I want my happy, happy to be contacted say, Now is there but I look for, it's not there. And it's, it's, it's like, what's even worse is that, like, you know, it's not that the pointer was invented for the iPad, I mean, we have had for 30 years, and literally over a month. And and so, you know, all this stuff? Is there on a Mac. And it's just like, of course, you can just ask for the mouse location in its window. It's, you know, and it's like, and I feel a lot is that of that is happening. And I think it's a shame because it's not fought out from Okay, so what are we what does a great, you know, pointer API looked like in a generic sense. And then we built that now, it's basically Oh, Apple needed this. And they just never had this need to, you know, at least publicly make available the mouse location, so or the pointed location on screen. So the API is not there. And we didn't need it. So we didn't build it. And I can understand that that's how their system has worked. But it doesn't, you know, it doesn't mean it generates, you know, good API for us as developers. Any new security in a box, you're in a box that is basically say, okay, Apple things, this is what you should make. And this is what great apps are. But you know the time from the highly inventive apps where you were like blown away by third party apps, it's kind of it's gone. And maybe the only way we get those is by technology, like the stuff that Twitter nowadays is exploding about, but not about apps that do interesting stuff, because they're boxed in all kinds of ways. API wise, sandbox wise, privacy wise, everything is Oh, yeah, don't expect something like that blows you away anymore, like an old disco did with smoke coming out of your fingers, or that we did with I did with putting a destroy in CD into your Mac, I remember,
Jeroen Leenarts:like, there was like a CD ROM, the only tool. That was initially when they brought it out, there were some people who are running with somewhat older hardware, that their actual write operations were failing because the CPU was a bit busy rendering the smoke coming out the app on screen. So it was a bit of a suboptimal experience if you didn't have enough performance in your system. But speaking of, of the Swift language, because you touched upon that a little bit, and you mentioned swift UI, and I know that a lot of the features that have been added last few years have been to sort of make sure that certain things would become possible in Swift UI. And some other things like async await, and some other asynchronous operation has been added to the Swift language. But what I do notice is that the basic principles that were already available in the Swift language, they're being repackaged and given new API's, and it's just adding more complexity. And I'm, I'm, I'm still a recovering Java programmer for decades. So I've been doing Java development from 2002 till 2012. And then I switched over to iOS development full time. I see the Swift language making the same moves and going into the same direction as for instance, the Apple language, it's just getting, it's a nice concise language, then it gets a bit bigger. And then it's basically Well, at least my taste was like feature complete somewhere around the time of Swift five, or maybe swift six. And then it just starts growing and growing and growing. And I don't know about you, but I'm feeling like, do I need all this stuff? Yes, yes, it is cool. And yes, it is interesting to read about it. But do I need it?
Alexander Griekspoor:Yeah, no, I'm with you. And swift UI, you know, it just doesn't click with me. And again, that's because I like to have real control over what I get on screen. I want to say this pixel needs to be one pixel up, and not, you know, and so because it's off, and then I mean, I'm just, I can't I just want that control. I understand that Apple is steering towards, okay, we'll get unfortunately, we'll get you know, 90% of the apps doing, you know, great stuff in terms of basics. Yeah. Which was their problem that I tried to address, I think, is that a lot of app developers were just sloppy or not going for it. But people like, you know, maybe like us that want to really go the extra mile to make a great app. That's actually the ones that you now hinder. Because you don't give them the control that I need. And worse for me, I've been following it from the side every time. Okay, I'm not ready to join that ship. But it works like you say, because it's grow so fast that if I would join now and try it now. And then often the answer is yeah, oh, yeah. But that was kind of how you did things last year, because now we have, you know, last year it was geometry reader, but now it's something that where you can just ask it to face fit the size you give it. Right. Okay. And it's okay. Yeah, what next year, you know, and so, combined, same, you know, where did that go? Like this? WWDC is gone. And so
Jeroen Leenarts:it's, it has a very specific nice use case. But it's not, like, advocated anymore by Apple as being the end all solution for asynchronous and timeout operations and orchestrating basically processes within your app process. Wow, that's kind of matter. But anyway, you think that's that that's the old style, compared to the new style, and then the old style being objective C swift and UI kit and app kit? Does that like fade out in comparison to Swift UI on the Mac? And on iOS eventually, because I know right now, there are certain things you still cannot do in Swift UI. You have to go back to app kits or UI kit but what do you think about like the future of like, the familiar API's to the both of us?
Alexander Griekspoor:Yeah, I think ultimately it will go that route that I think it will be very comparable to Objective C and Swift, ultimately, in the sense that, you know, Objective C, you can still do things and you can build. Yeah, it will, it will. Yeah, but I think Objective C and Swift is a good comparison, because ultimately you will start to get, you'll actually see that already, you will start to get frameworks that are only available in Swift UI. Just like some frameworks are only available in Swift and not in object in Objective C, and that's the route I can see things going for that it's been too long to not be a garbage collection. To mention, another nice example of garbage collection
Jeroen Leenarts:fails in Objective C, right? Yeah, but
Alexander Griekspoor:that's what I mean, I've heard I, you know, I've made that mistake. I've I've gone full in garbage collection with, with papers at the time. And, you know, because that was the thing. And and indeed, you mentioned out the release and all this stuff, and you're like, oh, man, no, DeLacy kind of this is this is it, you know, garbage collection is going to do all of that stuff for you automatically knows better than you, etcetera. So we went all in. And it was a disaster till the point that at some point, you know, I literally ripped it out. And I was surprised how much quicker things were gaming, because we had massive performance issues. But, you know, for certainly, at least one WWE, I'm sure, probably to Apple was, you know, telling you this is basically the way forward garbage collection, is it. And so, and then two years later, you know, it was dead. And so that's the one thing I've learned Ben is to say, I never jumped on any, you know, like, well, in a way combined, I think is for me, that's a similar example. It was really brought at one WBC it's kind of almost like this is the next example, maybe not intended, but just because we've got so much intention. And then now it's gone. Nobody talks about it, I think
Jeroen Leenarts:combined, basically, was a victim of its own. Well, not success, but it was so well thought out as an API. That was true, but it was trying to do so many things. And also, the complexity of the API itself was so high that a lot of people they just tried combined, and they just failed miserably. And then just thought, well, table flip, I'm just going to do it the old way. And that's why when Apple saw that happening, they came up with something like async await to just simplify the experience for the for the end user, the software developer, I think, yeah,
Alexander Griekspoor:yeah. Well, I mean, the funny thing is that, you know, you mentioned async await, and it's another with actors and everything I can see, I guess. Yeah, exactly. And that's what I mean, I mean, that it just feels heavy to just add all that info to really dive into that, if you're an app developer, like myself, who's always, you know, his main focus is to progress the app, and already is an existing app not to forget, right. So I can't jump always into the newest things, you know, just adding on top of, you know, doing the support and the development of your app, and everything, just add the mental load of having to learn new API's, and certainly the complex ones, because they tend to be, you know, you know, complicated to keep to say it nice. You know, it's just too much. And then even worse, I recognize that there's a lot with a lot of those technologies, you, you know, it's make apples, and I understand why it is, and it's not wrong, but you want to make it feel that you can step easy easily in and it often makes you feel that you don't have to know so much of what's going on beyond the you know, below the hood. And I think that's a you know, ultimately you always need to know exactly what happens because you can still create reentrant issues and you know, all kinds of, you know, typical concurrency problems. So, and at least with, you know, with Grant, you know, this it can Grand Central Dispatch, yeah, that you kind of familiar with those limitations and everything. So, that also took long, but at least that,
Jeroen Leenarts:could it be just just like, thinking a bit out there, because you have a product that you've been working on for six years now. Yeah, that part of your viewpoint is also influenced by the situation that you have to be careful with your backwards compatibility. And adoption of new API is not as straightforward as like greenfield development, because you already have a ton of code that just needs to be brought up to spec again, in sight of new SDK versions coming out. Yeah, absolutely. I
Alexander Griekspoor:mean, it's different if you start a new project is different if you're mean there's nothing nicer than to be younger. If not no, and then because that gives you the energy to battle these things that you will come across the way Well, now, you know, you may be more the guy that has become the person or to the app, let's not risk it, you know, you have your risk evaluation very differently. And so, you know, when I started programming, you were like, you know, I just want to make this happen in every hurdle on the way you would you would just overcome. Now, I'm much more like, okay, you know, I see 10 hurdles on the way because of my experience, so I'm not going to try it. And yeah, yeah, whether that's what I'm saying that sometimes I'd love to be the one, you know, back to be in that state. It's just not how it goes. It's just
Jeroen Leenarts:one of the characteristics that separates a junior developer from a more experienced media or senior developer, you think,
Alexander Griekspoor:yes, and in many ways, it makes a senior developer, you know, more valuable, more effective, etc, etc. But the new stuff or the innovation, and it may be the kind of thing that unexpected comes from the junior people, because they don't have to beg. It's
Jeroen Leenarts:like, the new guy on the team comes in, and he just does something in like, I don't know, 10% of the lines of code that took me like 10 times as much code. And I was like, wow, yeah, yes. Right, actually,
Alexander Griekspoor:yeah, maybe because he didn't start off by thinking about all the things. I mean, a good example of it, I look at swift UI, and I just see bindings. And that's another technology, I've been bitten so much by cocoa bindings, you know, it, you know, you end up with, with all this stuff, where you're like, Oh, my God, oh, let's just push this to the next run loop, because then it will actually work. And then things are actually ready, you know, and as you've saved you a lot of these kinds of parallels, and they're like, no, never again,
Jeroen Leenarts:I've been lucky in regards to binding, I think, because I got started on iOS development, and they just didn't have the concept of binding at all. So it was never a thing within within the iOS or iPhone ecosystem. Yeah. But before we really dive into, like, too much complaining about Yeah. I do want to talk a little bit about the product that you work on. But before we do that, I just want to drop in a little bit of a timeline, because 30 years ago, you started tinkering with a classic Mac. And then yeah, 24 years ago, you started software development in earnest. So somewhere around 2001, you mentioned, yeah, but Well, what did you do between the tinkering and 2001, because you must have done something, you did some form of education, you just did something to like, sharpen your cognitive abilities, and get yourself to a point that you actually wants to start to program, I guess,
Alexander Griekspoor:yeah, I lived a parallel life, basically, two parallel lives. I had on one hand, I had studies studies becoming University for some, you know, I won't go into crazy reason, I went from a more technical thing that I always liked to biology, then studied biology, and then you go into kind of a flow in a kind of stream that you, you know, there's just automatic, you follow University, then you have to do rotation periods as part of those. So you do those, then the guy where I did the rotation period offered me a position in his lab to stay longer than he offered me a PhD position, and etc. And so I've I followed the, the career path of a scientist, the biological scientist, and at the same time, I had this, you know, like I said, I earn some money on the side is in this in the summer, you know, helping out on in an office where they had Max, you know, just doing Excel sheets, and etc. Then I went to university, I couldn't do that in the summer anymore. But so I had to shift to something that I could do in evening hours. So I worked for them on the marketing department, by then my immediate skills required, okay. And then speaking of the programming, so at that university, I run around the time I started building websites, so I earn money by building websites, then, you know, then on the during a PhD, I started making those Mac apps, those were basically targeted for myself and scientists. So we started sharing that and that started living its own life grew, etc. So I had these two parallel tracks. One was kind of wonder what you would call it Mac iOS development. And the other one was scientific career. And, but they kind of were overlapping, but I realized at some point that the passion was at making those apps.
Jeroen Leenarts:But when did you really make the switch from primarily being a biologist to being a software developer because the software development was like, growing and becoming a thing in the background, but at some point, you must have flipped the switch in your own mind. Right.
Alexander Griekspoor:Yeah, so during my PhD in cell biology, I started making those apps for scientists, we put them on their website called Macintosh, that was our kind of our acronym. And, and that started really taking its own life, people started using scientists started using those apps, and you can really popular, they were all free, by the way at a time. And I, I noticed, okay, this is really you got feedback, you got a lot of users, you know, you got it. But you really, it really became the passion. And then, when I finished the PhD, I realized I need to do something where that software bug kind of contributes to my scientific career, because I couldn't really see how I could live from those free apps. And so I chose a bit of a slight redirection of my scientific career towards bioinformatics. And I had a gap because I was waiting for a grant to come through. And that's when, and that's when I decided to build papers. And that was a project that was just too big for hobby, but that I always wanted to make what's the kind of iTunes for scientific research articles. And that's, that's what I built. And that became so popular. And because I had, you know, used some time from the spare time, I also decided to make that a paid for product, you know, and that became so big that within one year, it basically was the equivalent of my, you know, my postdoc salary. And I figured, well, it was also what I really wanted to work on the moment that would leave the lab. And so I decided, okay, if I, if that is now already generating and living next, on top of what I'm doing for professionally, I should be able to live from that full time. So that's when I stopped the science bit and went full time indie developer, first alone, and then a bunch of people join me because, you know, you meet people that are like minded, and it kind of organically grew until in 2012, we were with six people in six different places in the world. And a big scientific publisher came and they said, Well, we really like to, you know, acquire your product, grow it further within, you know, this, this publisher. And so that's when I sold it, and then it grew to 25 people or something in based in London, but I was still working from here in Portugal. And I decided to, basically, after three years, okay, well, what are we I basically seen the entire cycle from pure hobby, to more serious hobby to more, you know, independent developer, small group distributed to large corporates, 25 people. And I said, Well, what I really loved was the period where I was just doing it on my own. Just everything, just also the marketing, also the sport design, the building of the product, everything. And so I returned to that, basically,
Jeroen Leenarts:so. So we're talking about that 2016 timeframe, I guess that you stepped away from papers, which was a successful acquired product, which basically, many indie developers just dream of that ever happening to one of their products. You got a paycheck out of this acquisition, I guess. So they gave you some runway to build something new? Did you already have like an idea of what you wanted to create? Because I can see the similarities between your prior experience as being a researcher or a biologist, doing a lot of things with notes and that you wanted to organize in your own way?
Alexander Griekspoor:Yeah, actually, this is actually a product that came from the period that I was running a larger team in a more corporate environment. So you start having more meetings, and you start to have, you know, one on ones with people, weekly meetings, etc. And that's where I kind of had developed a notetaking way, you know, that was our fault revolving around dates and everything. And I also realized there wasn't really a good tool for that. And at the same time, I saw people around me that were not taking notes at all. So I was like, okay, you know, I see something that at least I can build for myself, which has always been housing, so it's gone. For me, I always build stuff today, too. Which, by the way, is also you know, even I was by then also like, five or 10 years out of science hands on science. So also by then I started realizing I'm not building papers for myself anymore. And so I that's another reason why I wanted to go to agenda because there was a product that I still everyday use for everything in that same kind of way.
Jeroen Leenarts:So do you use agenda yourself everyday?
Alexander Griekspoor:Everyday? Everything everything?
Jeroen Leenarts:Do you for yourself use the production version, or the latest bleeding edge that you have products?
Alexander Griekspoor:Products in person? Yeah. And so I switched to, you know, we have said that we have set the project up for that reason, so that our debug versions are, I can run them side by side and they run their own libraries. And then basically the moment we create the first test flight builds is when we switch ourselves, Drew and I switch ourselves to, for our own notes to that version. Yeah,
Jeroen Leenarts:yeah. So at least you have the full product lifecycle. It's yeah.
Alexander Griekspoor:And we're going full in, you know, I'm losing my notes if my testflight build is not,
Jeroen Leenarts:that would be a bit sad. Yes. So so the notetaking of agenda is, well, the novel thing is the direct attachments with your agenda, I think. And also, for some reason, you were able to land this amazing domain name for that. Is that also maybe in part, part of the origin of the product that you were able to security agenda.com domain? And then thought, Okay, well, now I have to build a product based on this name or what?
Alexander Griekspoor:No, no, no, it's actually it's a kind of a funny story. Because the I was thinking about naming its agenda. It's because the idea is that it's the cross between calendar in a notetaking. App. And in, in certainly in Dutch, we have we use the word agenda a lot for for it's a sec, essentially a pocket agenda. It's kind of a small, small kind of agenda that you have with you, which has more like the week is more focused on the day slash week view. But a lot of people use it also to keep notes in. And so it's not like a wall calendar, or desk calendar. It's really in between. And that was also my thinking is like there is something missing that is in between the Calendar app and the Notes app, you know, and so that's what's the idea. And at the same time, I was thinking, okay, there was a lot of calendar apps done again, we're living in. I think, right now we're living in the hype of calendar apps, one every there's every week, a new one. That's same hype cycle, we went through with notes app 234 years ago. So there was there's a ton of note taking apps, and there's very little in between. So you start thinking is that because there is a gap in the market that we can fill? Or is it because the other two categories are so overlapping that there is no oxygen in the room for that, that kind of product? And I was looking at the time, I was thinking about naming it agenda and under name, we thought it was minutes, you know, from meeting minutes, but there was a bit more focus. But agenda sounded nice. And I started looking and then I noticed that agenda.com was up for sale, I find it very odd. And and I looked at it, but it was it was very expensive, first of all, but at the same time, again, it's confirmed this thing like Okay, is there then nothing in the middle between? And in the end, he said, Okay, we go for it. And I negotiated a bid with the domain owners. And they it was just a generic, it was literally just for sale. So it was one of those generic companies. And it was a very expensive domain. But at the same time I fought out. Yeah, let's go for it. I mean, I knew from from papers, that was also a successful product, that if if the product is successful, it's nice to have a domain like that.
Jeroen Leenarts:So yeah, it does help with discovery. And also, it's okay, yeah, agenda. Yeah. agenda.com. It's very Yeah, share with people.
Alexander Griekspoor:Yeah, it's very hard to find on the App Store. That's, that's the flip side.
Jeroen Leenarts:That's where the domain name comes in. So but agenda is, what I really like about it is that my mom, she used to have like this big. It's more than a4 sized book. That was her agenda. And it was basically she took her appointments in there, which also did during the appointment, she did her note taking in the book itself. So and that's always the the idea I get with, with your products. And
Alexander Griekspoor:yeah, that's exactly, exactly it. That's exactly it. Yeah.
Jeroen Leenarts:But I do know that the book that my mom used to carry was a bit unwieldy, and just having it available in your pocket on your phone, or on your laptop. That's like really awesome, because you can just bring it with you. Yeah, but creative agenda. It's a Mac app. It's an iOS app. How difficult was it to grow? These two codebase because I recognize some overlap. But some things are very specific. And on top of that, I do see that a lot of the user interface elements that you and mechanisms that you use in agenda, both on the Mac and on the on the iOS platform. There, but they're not exactly standard. I think they're like, they're obvious. They're logical, but it's not what you get out of the box with with with SDKs. If I'm right,
Alexander Griekspoor:Yeah, correct. Yeah, I mean, Marcel did an amazing design, very clean and fun. If it is that. I think we were one of the few people that have very few things to do for, you know, what does it make? I was 11 or when they introduced the big redesign. Yeah. Because effectively, we, you know, our app looks like that. So you know, it's like the windows It is very wide. It's very text based and is very clean. So yeah, it's using a lot of stamp for me easy. It's not like we invented everything from, you know, all the all the controls. Now it's just styling them really. But like you say, like we discussed earlier, I think with Swift UI would have maybe a bit more work to do could also be possible. But it's not that it's not crazy amount of custom controls. But there's a fair amount of them. Yeah, in their own looks. Yeah.
Jeroen Leenarts:One thing that is really different about when you launched agenda with Drew, was the way that people could actually support the product, right? Because back in the day, when agenda was launched, it was a new thing that you did. And it's basically an in app purchase that gave you sort of like a runway of updates. And then once that runway ran out, you either renewed or you didn't get the new feature anymore, you still get the product updates, but new features that you launch, they are not part of your experience anymore, then. So what's the idea there because it was new, it was, I think, a big gamble that you took there.
Alexander Griekspoor:Yeah, I don't want to take all credits. Because I mean, I think there were a product like sketch and others that were kind of going in this direction of you will kind of keep the products even if you stop paying. But that's the thing where there was this big drive that is still going on, I think towards subscriptions. And Drew and I ourselves, we're not a big fan of it in the sense that if everything becomes a subscription, it just doesn't make sense. So and the other component of that is that they say subscription. But if you think about it, it's actually rental often. So you basically until you you get the features, and then when you stop paying, you're simply lose them. So it feels like more like rental to me, then social. So subscription. And a real subscription, to me feels like the magazines that you would you would pay at a magazine subscription, you get those copies at home. And if you stop paying, then yeah, you won't get new magazines at home. But the pile of magazines that you're read is yours and will stay yours, you know. And that model is what we tried to replicate. So it's it's really feature based and date based. So each feature, what we call a premium feature. It has a date stamp, and basically depending on on, if you're paying if you're paying, then it's included that feature and will stay for your for as long as forever, basically, you will own that feature. If you stop paying, then then basically you can keep using whatever you have. But if there is a new premium feature, it will be indicated in the UI that it's premium. And that is not part of what you have. And so you can't use that feature. But everything else is there. And I mean, that's only a handful features, almost everything of the app is free, you will also still get all the updates, because that's the major difference with say the models from sketch is that there you would be stuck on version with us, you're always on the latest version. So you always have the latest version. And you know, you get say in the next update another 50 minor new features and bug fixes and everything that we ship, just not maybe that one or two new premium features, if you're if you've decided to stop paying. And the whole idea is to say every time we have to deliver because you you can just It's fine that you pay once and then you stop paying us if you don't feel you get the value for what we deliver. And you can keep on using what you have. And then maybe, you know, you know, a year from now we ship a feature that you do think makes it all worth it paying for. And then and then you step back in, and you basically unlock those and everything that was in between at that moment in time. So it's very much, you know, it's much more, I think, what the reactions have been very poor, very, very good. People think it's an extremely fair model towards the user. And at the same time, it does guarantee us as developers some kind of recurrent income, which ultimately is needed if you want to keep on going and keep the app alive.
Jeroen Leenarts:Do you see a lot of reactivation of user accounts from like unpaid state to a paid state in their timeline? Or do you track those metrics? Yeah,
Alexander Griekspoor:it's nice, because we can see in the App Store Sales, for instance, are clear. I mean, often, you know, we're lucky in that Apple sometimes teaches us after it's one of those updates. But the nice thing is that we see a direct, big peak on the day that we release the app, which are people then That must be reactivating or, you know, buying premium features again. And so we see that big peak preceding the kind of attention the big you usually get if, say, Apple features you. So we see that very clearly. Yeah.
Jeroen Leenarts:So basically, the reactivation that you're seeing when you release is based on your existing user base, and exactly the feature status with Apple is just added on top. And that's growing your exposure, but new use exactly, exactly the same people seeing the same stuff again,
Alexander Griekspoor:that's really cool. Yeah. So we invite now we've seen, it's often that you can say it really works. And the model works. And we get a lot of developers saying, oh, yeah, but that doesn't work. Because Oh, now you've got like a wheel, the code base, where we'd 100 If deafs everywhere, because, and in fact, there's another all the case, because it feels very natural, because, you know, it's just like, it's like, it's just a door right there feature is a door, door to a sheet or to a configuration or to an action. And so it's there's very often natural entry points to the house. So this is the front door. So if the front door, you can't open, you can't get into what's behind that house. But other than that, you don't have to think about it. So it's very natural, you learn how to pick, you know, where you put those barriers, but then it doesn't lead at all to a code base. It's Oh, this guy can't use this, or this guy can't do that. And it's very natural. It's not very different from any of them.
Jeroen Leenarts:And just as an indication for the two of you, Drew, and you, is it like a recurring income stream that is on the level of yeah, we're getting by or we're living comfortably? Or it's like, oh, wow, what do I do with all this money? I need new ideas to create something new.
Alexander Griekspoor:Now, it's free, I think in the in the middle for two people is is comfortable income? Yeah. Of course there is the you're still an independent developer. So you need to look further than two. Okay, now I have a stable income. So that's all but that's for any self employed person? I would say. It's not like it's comes with buckets loads in and we don't know what to do, you know, the fifth Ferrari doesn't fit my garage? No, it's not, but it's not, we don't have to scrape by. But the thing is, is we can't scale this to say, oh, let's add 15 developers, then then then it doesn't become profitable anymore. Yeah,
Jeroen Leenarts:yeah. But that's, that's, I think, right on the sweet spot where your wants to be right to be able to keep on working on a product tightly integrated with your end users, because you have a lot of a lot of interaction with them. And a lot of back and forth, that at least that's what I see on the agenda forms. And also on top of that, the product and the company is now in a state that, well, you don't need to have some sort of an outside investor just giving you lots of cash to grow the product, there's no pressure to grow it. It's just, I think, the
Alexander Griekspoor:only priority even even differently, I would put it even differently. I mean, in 2018, we won the Apple design award, I kind of in year one. And at that point, we had the choice because now I in hindsight having gone through the entire cycle I can I can understand that I can see that we could have gone to a bunch of feces and say we're the next Evernote with did went away I kind of predicted and gain a lot of money, you know, open an office in Lisburn, with beanbags and football tables, and you get a whole bunch of people working. But I'd come from that I've that's exactly what I didn't want to do. I didn't want to become a manager. So we decided on purposely not to go to the world, it means also that you can't just do a lot of things that that those companies would want you to do, like an android version or a web version, or or, you know, I don't know, you have to really be selective and say no to a certain amount of things that that people would want to see.
Jeroen Leenarts:But it also gets to the product, right? Yeah,
Alexander Griekspoor:definitely. And, and keeps it in this phase where we can do everything. And we can have those interactions with the users. And I can have this chat without anybody having to consulted about why am I not here this morning? And, you know, everything right? So that's a that's a deliberate choice that you make. Yeah,
Jeroen Leenarts:that's, that's, it's very good to hear that it's, it's actually in a state that you Andrew actually want it to be, but doesn't give you a lot of pressure that you have to get the next premium feature, thought out and implemented in a reasonable timeframe. Because I can imagine people with a subscription, they are really itching to get to new premium feature or the next best thing that you're going to add to the product, right?
Alexander Griekspoor:Well, not in my experience, I think we have basically a list of features that we know people would want then that we wanted from day one, we're now five, six years further. And so we're chunking through a bond to through those I know the things we're working on is that people want because we wanted ourselves as well. Yeah, the pressure comes not from the business model, the pressure comes from the interaction with the people that ask you a, you know, I asked them, you promised this two years ago, which I never have learned to try to minimize promising. But nevertheless, you experienced it as that's a form of pressure. But it's again, I think we both are in the software business before. So we learned how to deal with that pressure. And, and it's the same, it's pressure, but it is also excitement that the stuff I'm now working on, which is scheduled for January, that I think will be the stuff that everybody that is now a user would love to have. Yeah. So that's that's excitement that you get from the energy that you get from that, that knowledge.
Jeroen Leenarts:And it's its agenda, the the only thing that you're doing professionally? Yeah,
Alexander Griekspoor:yeah. It's funny, because I remember people asking me when we launched the need to have a DNA. So what are you going to do next? You know, Friends, you don't understand if this is any, if we can see if it's sustainable. That was, of course, the big question in year one. If it's sustainable, then this is a product I can work for 10 years on, and that that's maybe something more specific to me, you know, every person is has this kind of, I need something new kind of level. But for me, which fits this job very well, I think is that I can I can really motivate and find energy out of working on this project for, you know, another five or 10 years easily. Without the need, like, oh, I need to do something now with with Swift UI or something.
Jeroen Leenarts:Maybe someday, start carefully with an extension or two.
Alexander Griekspoor:Yeah, you know, one of the I'll be honest with you. And again, maybe that's a bit of a set, etc. Moment. I'm getting actually more and more to the point where I kind of know that my next project is maybe not anymore Mac app or an iOS app. And because what I really miss again, you know, the cycle is this feeling in 2001, where I would make something in this objective C app in Project builder, I think it would be cool, I would make a zip file would upload it. And I would give you a ring and say don't use it, use it. Use it, look what I've done. And you download it, and you're like, Oh, this is amazing. But it would be cool. If it could do a and it's like, okay, hold your horses, you know? And yeah, give me a second build and run, zip file, upload and try it now. And that fit. Yeah. And that feeling that was effectively the same as building websites in 2001, right, where you would say, Hey, do you see it? I've made the made a thread reload your browser. And that was super exciting. Because yeah, and that has completely be gone. It's now all kinds of limits then have to go to app store reviews. I've seen reviews, there's no or doesn't like it or misunderstood it or whatever. And then this and then that. And can we do this maybe not the API's don't allow it, or whatever. And I miss Ole Miss that that creative freedom that I'm too good. And myself getting to the point is like, and sometimes I wonder if Apple is missing the point there is like Yeah, but Swift, the Swift UI is the future and so maybe it's by now is for me, the future is just my next project would be a web based app, I'm Onyx insurer, with a very lightweight wrapper to make it run on a Mac on iOS, maybe. But if I would start something new, I would go back to that feeling of, of, of the web and and which is really sad because I'm one of the biggest Mac persons from
Jeroen Leenarts:the age of ever just the ability to tinker with things right?
Alexander Griekspoor:Yeah, and the freedom the freedom to say I'm going to build this and and I can do that I can push it and it's instantly available to everybody without you know big discussions. For me it's never about the 30% Gods on the revenue because that for me Apple deserves that part of that what they bring they bring a lot of people to the agenda and everything but for me it's about the being put in a sandbox that is become so limited that you literally can't think outside the box because it doesn't allow you right so that's that's why I'm saying like, I like agenda, but there is still more and more this this feeling in the back of your head sometimes like Okay, what if Apple doesn't like this anymore? Or what We have all these exciting users in a super fair model. But if tomorrow Apple says, yeah, maybe it doesn't fit the App Store, or we don't think it fits rule number 18, whatever. Yeah, then what do I do? You know, and so that that, you know, I would like to, yeah, I find I find a pity that it went in a direction to be honest. All right. But I will be continuing on agenda.
Jeroen Leenarts:Okay, that's, that's good. That's a good. That's I think, yeah,
Alexander Griekspoor:let's not let's not, let's not end it alone.
Jeroen Leenarts:Speaking about agenda, where should people go to learn more about agenda? Yeah. agenda.com
Alexander Griekspoor:is the is the website. And we have a really nice community that's in the app, but also available for anybody using a web browser. Its agenda dot community. And that's where all the users are, you know, we have articles on notetaking, and all kinds of other related topics. And so and that's also where you can find out more
Jeroen Leenarts:now, what's the best way for people to try agenda for the first time?
Alexander Griekspoor:That's a good question, actually. Because we see a lot of people actually seeing that there's only click second time. It's filled, I haven't got my finger behind why that is, I have
Jeroen Leenarts:one tip for people who start and who have installed and start agenda for the first time, make sure that you're in a quiet area, that you have to follow him off your Mac turned up just a little bit. And luckily, I can sit back and just see what happens.
Alexander Griekspoor:Especially in your library. Now. Yeah, there is, it comes with some very nice and funny sample documents, that gives you already a good idea, I think you do have to give it a bit of a chance to play around. And but yeah, or check the YouTube videos that I've started making, maybe that helps as well, to get a better feel of what what the idea is. But it's really a notetaking to where at least I keep everything that's going on in my life effectively, that I want to put on paper and preserve. I put everything in it from I keep track of the development of agenda, all its features, its bugs. When I have chats with people, when I meet people, you know, everything really literally. But it is yeah, you have to find the right set up a little bit imperfectly, it's actually like Lego to come back to that story. It's, it's a notetaking app that I'm purposely gives you a box of Lego, where ultimately after a while, you will build your own system. And it takes a little bit of tinkering, a little bit of trying a little bit of re organizing sometimes if you if you notice, but it also doesn't mean that it's Yeah, it doesn't come with a whole ton of one use parts. You see what I mean? It's the same analogy. You build your own system after a while. And the nice thing is that that might look different for everybody. And in your community, you see a lot of people then sharing what works for them. So that's also where you can get a lot of ideas. If you feel that, why don't I grind away? Why doesn't click for me, maybe it's because you haven't yet find the right setup. And
Jeroen Leenarts:also, if you're in some sort of process with agenda for your day to day, you can always adjust and tinker with it and change it a little bit down the line. I think that's exactly what your agenda is really a tool that that you adjust and integrate to your life instead of making sure you adjust to the tool. And yeah, that's that's one of the that's one of the biggest barriers to entries. But I also think it's one of the biggest exactly because it ties to the to
Alexander Griekspoor:Yeah, because it gives a bit this blank page problem, by definition, right the year ago. So how do I start this exactly this setup because you haven't got that set up yet. But you know, that's the nice thing. It gives you the flexibility to start building it out. And after a while you kind of nicely it kind of Yeah, continuous, you know, iteration is kind of part of it, I think.
Jeroen Leenarts:All right. I will make sure to link those things in the show notes. Great just in case you you start developing some wild ideas about something after agenda where people will follow you to stay up to date.
Alexander Griekspoor:Normally, I would say Macintosh at Twitter. That's how long the Zabbix is. Yeah, got the agenda community. Like I said, That's it. That's where we're very active. So you will see us around. And again, yeah, Twitter is still my kind of newspaper in check. So that's another one and agenda.com if you if you go to your fine Neil ventually. I
Jeroen Leenarts:will I will take up some some links for people to follow What to do cool all right Alex I'm gonna thank you for your time and we'll talk to you soon
Alexander Griekspoor:yeah cheers you
Jeroen Leenarts:bye bye