Join us as we share what it's like to build and launch a bootstrapped startup while working for yourself full-time. Benedikt is working on Userlist, and Benedicte is establishing herself as a Gatsby expert and developer advocate for hire.
Welcome to Slow and Steady, the podcast where you get
Benedicte:to follow along as we build products in public. Each week, we'll give you an honest peek into our lives as we share our struggles, our wins, and Everything in between. I am Benedikte, and I'm feeling Halloween exhausted.
Benedikt:And I'm Benedikte. Today is November 1st. This is episode number 191, and I'm feeling a little bit stressed. But first, Congratulations on your amazing Halloween dinner.
Benedicte:I mean, I nailed it. I am mom of the year. I've been, like, a negative Halloween naysayer for years years years. It slowly warmed up. And, like, last year, I did a little bit of effort.
Benedicte:And this year, I made an even larger effort, and it was great. My sister came to visit from Sweden, And we made, like, a Halloween themed dinner, and we had scary drinks for the kids. They got I mean, they were so happy. They The drinks were, like, you know, just like regular, like, clear soda with, like, candy in it, like, scary candy in it. Then there was even, like, candy on little And umbrellas, and then candy on these little sticks are actually swords that were on the, on the glasses.
Benedicte:And, Yeah. And then we went out trick and treating in our neighborhood, which it's pretty amazing other than it snowed, and I got so cold. And I already had, like, almost Beginning of a cold, so I just been exhausted today and just kind of hibernated at home and took, like, half a day off to just, Yeah. Catch my breath after after Halloweening really hard. I don't know if that is a word.
Benedicte:But
Benedikt:Definitely. Yes. Yes. You can definitely Halloween too hard.
Benedicte:Yes. So check out the tweet and, like, hashtag sponsored by HelloFresh. No. I'm just kidding. But, it was a HelloFresh inspired dinner.
Benedicte:We had to, like, add to it, and my colleague at the bank job called me out of it out of it, Out on it. I was like, oh my god. Look at what I made. And I showed them the picture while we were waiting for some people to join the meeting, and I got so many compliments. The last one who joined, he was like, yeah.
Benedicte:I made that too. Was that HelloFresh? I'm like
Benedikt:You spoiled it.
Benedicte:But then he showed me the pictures of his, and I felt
Benedikt:good again. Did you, like, Make it way nicer, or what what happened?
Benedicte:Mine like, at least some of mine were standing. So they were little for people who haven't seen the picture. They were little like, Bell peppers that were cut to look like, pumpkin, you know, like how you carve a pumpkin. So they were, like, carved bell peppers, I guess, stuffed with, filling. So, yeah, so most of mine were, like, still standing, but his were, like, all just falling over, and you can really see their face.
Benedicte:Yeah.
Benedikt:Got it. Nice. Mhmm.
Benedicte:So a little win there. But why are you stressed? Maybe you work, you know, and and not create Halloween dinners?
Benedikt:Yeah. That's mostly the problem. I totally forgot about Halloween. So, last night, we had, Like, some kids were coming over. And I was like, oh, crap.
Benedikt:I don't have anything. Like, no sweets or nothing. But I guess they did not quite get the concept of Halloween. So they were like, okay. Well, that's fine.
Benedikt:Bye. So, no tricks. No. No.
Benedicte:That's good.
Benedikt:So, yeah, that that was my Halloween experience yesterday. Other than that, super busy lately. We are Polishing up our workflow builder. Like, that's the next big feature we're going to launch, I guess. And it's becoming really nice.
Benedikt:Like, it's super solid. It's super polished at this point. Well, not super polished, but it's Decently polished, and it's very it feels very robust. Like, Jane was that was one of her first comments was like, it does not feel flimsy at all. Like, because it's just just works and it doesn't break in weird ways.
Benedikt:So, like, have, like, weird UI glitches and stuff like that. So we're super happy how it turned out. And because of that, we decided to start launching it to early access customers next week, we're probably going to announce it tomorrow or today when this episode comes out. And then hopefully, we get some people who are interested in in using it, and, we will Start shipping it, to those people. And then we set a public launch date for I think it's the 1st week of December Where we were planning to properly launch this to everyone.
Benedikt:But we made a deliberate choice to Really, like, ship the bare minimum of features around this? So we have Oh,
Benedicte:oh, oh, oh, oh, I had the marketing idea. Sorry. I'm breaking in. You should launch it with a workflow showcasing how you could do an advent calendar in user list.
Benedikt:Maybe that's not available. Maybe maybe
Benedicte:you have to, like, launch it last week of November so they can actually use it. But it's like it could be Christmas themed that way where you're like anyway, that was my idea.
Benedikt:Not a bad idea. I keep it in mind.
Benedicte:12 days of Christmas. That's after Christmas, I think. Because then you could, like, launch it then December, and then people could have 12 days of Christmas Themed, like a campaign ready to go.
Benedikt:Not a bad idea. I keep it in mind.
Benedicte:Keep it in mind.
Benedikt:Let's see how let's see how far we are. Like, how far we got, and we have a couple of things that we still want to add before the public launch. We also have a large list of things we wanna add after the public launch to be able to, like, do another launch and another launch and another launch.
Benedicte:Well, then you can do a 12 day Christmas lunch With the 12 day of Christmas campaign that you created as the 1st marketing effort.
Benedikt:Maybe. Yeah. Something like that.
Benedicte:This is so much more fun than making stuff. No. Just kidding. Just having ideas and then let other and then you guys implement it if you want. I mean, if you don't, like,
Benedikt:Yeah. I mean, I appreciate it because I feel like we are so, so deep into work mode that we like we are out of ideas at this point. We're just like so much in execution that In execution mode that is, it's hard to take late, take a step back and like, think about stuff like that. Because I'm mostly worried about, like, shipping everything. But yeah.
Benedikt:Overall, All of that just makes the current phase super stressful. I've been Not sleeping well lately. I've been working way too much. Our, like, our kitchen and our house looks like A mess because instead of cleaning up, I'm working. So, yeah, overall it's stressful, but I feel like Setting those deadlines is also important for us.
Benedikt:So we we actually start thinking about shipping it and not like Mhmm. Polishing and polishing and adding and adding and adding. Because the list of things we want to add and the things we want to do and the things that could be a cool idea It's endless, basically. But if we don't start setting up deadlines and dates, we just keep building and building and building and have a launch. So, yeah, that's, that's why things are stressful over here.
Benedicte:But it's okay to have phases like that where you do focus and you think, okay. The house is gonna you know, the house and the kitchen takes 2nd priority, and, like, I'm gonna focus on this. But it but you have to make sure it doesn't Go over too long of a time period, you know, because that's that's when you hit that inevitable wall in the end. Yeah. And, Also, it's a time period where maybe you consciously spend a little bit more on takeout Or, like, help run the house or, like, you know, some things so that when you emerge on the other side, you're not, like you know, The house isn't too much of a mess, and you haven't stopped eating.
Benedicte:You know? I'm just speaking from experience here.
Benedikt:It's not as bad, to be honest. I used to to like, the time every evening she'd like to cook dinner as a a a time to wind down, Exploit explicitly wind down because these days have been, have been intense. Well, yeah. It It has effects on other stuff though. Like, my email inbox SMS as well.
Benedikt:I I'm neglecting a lot of emails in there. So if If you've been emailing me and waiting for a reply, sorry. I'll get to it eventually, but, priorities are just Totally elsewhere right now. Yeah. But Things are overall super exciting, because again, like, it's looking good.
Benedikt:The feature's super solid, and we've been doing a lot of rings in the process. So the especially, like, on the front end stuff. We, for example, reflected our reflected our form builder to be more flexible and, like, be usable in more situations. We reflected all of our, like, pop ups and, like, drop downs and all of it to properly respect the boundaries they're in. So they, When they're at the edge of the screen, they flip and resize and stuff like that.
Benedikt:And we changed all our models into dialogue, like native dialogue text, which was also a fun project.
Benedicte:Is that working well? I haven't been able to test that yet.
Benedikt:It's working well enough, I guess. There's still some there's still some things that I don't particularly like. Like, one of them is, so one of one of the features with the new native dialogue text is that can open them as a modal. So they get, like, rendered in a separate layer. It's called the top layer.
Benedikt:It's not connected to anything else inside the window. And they get the backdrop that you can also style with CSS. So previously, you had to come up with your own solution and and stuff like that, but it's all built in. The only problem with that is that only works if you explicitly call show modal on the element note. So there's no way to just to just render it in the DOM and have it open as a model.
Benedikt:You can run it as open, but you cannot get the backdrop unless you call that method,
Benedicte:Which
Benedikt:is a bit annoying. I feel like it would be better if there's just a modal attribute or something on the element that will trigger this. And the same thing with the popovers. There's a new API coming out with, like, The popover API, basically, which is very similar, which also allows you to render those, like, pop ups and fly outs and stuff like that on the The so called top layer. But it also only happens when you call explicitly call show pop over on the element.
Benedicte:But do you have do you have to open them in JavaScript? You there's, like, no way to just give it oh. Because I was just working on a demo for Azeta because we we kinda have, like, a missing UI piece. We have these, modals that let you log in and sign up and that kind of thing. And then we have a profile.
Benedicte:We call them embeds that you can, like, drop into your into your interfaces. But the more kind of common, common UI pattern, once you're logged in, is to have that little image avatar of, like, your account image. And then you click on that, and that's where kinda your profile link is and your logout, button this. So I've been working on, like, creating a a very minified version or, like, a very easy version of that that people can copy. And I did that using just CSS and HTML with, a toggle button.
Benedicte:So when you toggle the button, You know, you can check if a button is toggled by doing checked, if it's checked or not in CSS. And then if it's checked, I will open I will display the sibling, which is then the popover. And I haven't checked with, like, people who are more knowledgeable than me about, like, accessibility and stuff, but it was a fun exercise because it actually works pretty well. What you don't then get is so if you click outside of the popover, you you don't get that close, but I could add that with JavaScript. But I just, in my mind, assumed, like, the new dialogue in popover that I haven't been able look at.
Benedicte:I didn't know about the popover, but I've looked I've heard about the dialogue that it would work in a similar way, like you were saying. Like, you that you could, like, toggle it without having to write any JavaScript.
Benedikt:I think I think there's a way with the popover API to do this.
Benedicte:Because
Benedikt:you can define a pop over target or something like that. So there's some of this open close target behavior built into that, but, Like, the pop over API is, like, super, super new. I think it's not supported in Firefox just yet, and It's just landed in fire, in Safari with, like, the latest release from, like, 2 weeks ago when it was, was released. So It's not quite
Benedicte:there yet. To my home homemade one, and then I'm gonna check with some accessibility experts on because somebody was chiming in. I I showed it on Twitter that You can do, like, an ARIA expanded type Mhmm. Attribute to to kind of make sure that this toggle button and the the menu kind of are connected, so that it makes sense that when you toggle, you open. But other than that, it seems to work pretty well.
Benedicte:And then I thought about adding just a little bit of JavaScript. So if you click anywhere else on the page and it's open, like, we'll toggle that button again.
Benedikt:Makes sense. Yeah.
Benedicte:Yeah. But it's a fun exercise. It was fun going back to, like I don't know. It just like It smells, Cesar, some of the basics and just how powerful the basics actually are. And especially now with all the new CSS stuff coming out, We have, like, the has attribute.
Benedicte:And, of course, you have all the things that we've had for a while. You know, like I said, we checked, and there's so many things that have been existing for a while. And I think I mentioned it before on the podcast, but I've never really I've learned CSS through the times by making things, and I haven't really Gone deep, and learned it on its own. And so much has happened since I started learning CSS until now, But I haven't kept up. So there are things that I'm like, oh, you can't do that.
Benedicte:And then I'm seeing, you know, these tweets. There's 1 guy, I think, is called Jae Hey. Jae We'll put that link in the description. And he does these, like, really cool HTML CSS demos. We're like, oh, you can do that now.
Benedicte:Like, I remember there being talks about it, But then I haven't, like, looked at it so closely. So when I code myself, I'm like, oh, I'll do that in JavaScript or, like, you know, that you can't do that in CSS. But then, like, oh, it's already dropped because it's it's been 20 years. Like, it's there's a lot that has happened since I did my My most kinda intense CSS exploration, I I would imagine that's like it's not even it's like 30 years ago when I started learning CSS. And there's just some things that are stuck.
Benedicte:Like, I haven't kept up with the times.
Benedikt:Wait. 30 years? I think CSS was not invented 30 years ago.
Benedicte:I mean, I was I am 4 I will turn 41, and I was 13 when I took my 1st HTML CSS class. So not 30, 28 then.
Benedikt:I feel like when I, when I started doing this, like, 2000 something like that. I think CSS was did just land. I, like, I learned doing styling without CSS first, and then I added like, I learned like, CSS was this new hot thing that came out. But I'm I mean, I might wrong. Maybe I was just lazy.
Benedicte:Had to remember that CSS was invented by Norwegian guy.
Benedikt:Oh, yeah.
Benedicte:So When did CSS come out? On December 17, 1996.
Benedikt:Nice. 26 years ago. Okay. Fair enough.
Benedicte:Yeah. Fair enough. So not 30 then. So let's say 25. Still a long time.
Benedicte:Yes. Yeah. Because I went to I went to America in 98, and I had this class. It was the last class I had before going to America. So yes.
Benedicte:So not 30. So 25 then. 90 8. The yeah. The spring of 98 maybe or the fall of 97.
Benedikt:Yeah. Roughly around the same time when I Started doing this. I remember I bought a book on how to build websites in 1999.
Benedicte:So I I found books I mean, Long times listener. I've been cleaning and cleaning and cleaning. I have found so many great books. I need to take photos of them. But there is One, which is the one I actually learned JavaScript from the 1st time around.
Benedicte:And I have it, and I've saved it. And I also have one that's called it was like a classic, like, how to make killer or something. Like, I remember it coming. It was, like, mind blowing. It was kinda like showing off all the tricks and things that you could do way back when.
Benedicte:And that's where I'm stuck with CSS. Not
Benedikt:Nah. That's not true.
Benedicte:No. I will I picked up some things along the way, but, but it's just weird. Like, some things like like, oh, you can't do that, and then you just kind of forget that You should go back and check and see see where the so thank you for reminding me about dialogue. I'll have a I'll have a look at that. But,
Benedikt:There's so much cool stuff happening with CSS and HTML these days. So yeah.
Benedicte:So much cool stuff. And I guess that brings me around to one of my notes is that I am just so sick of this, like, framework nonsense That is going around. And now that I'm, like, in developer relations, we have to make demos for all kinds of things. And it's really hard For me to see people jumping on things that they, like, really don't understand and know why they're making. And then I have to learn next To demo how it should be done properly because some of the the things that are coming in, I mean, a lot of it is lack on our parts documentation wise and stuff like that, but we we serve our things through an external script.
Benedicte:And Just that fact. Like, that is you know, that's not part of the new world. Right? You just you would download something from NPM, And some of these framework make it kinda hard. And like I've complained about before with my gray hair is that, they are removing the separation between client and server.
Benedicte:And and, like, I'll tell you, The senior developers are like, well, it's, you know, it's so clever, and now you can do everything in 1 file. And, like, well, they understand it. Barely, but they understand I think they understand it. But me just going into next now, like, I'm having such a hard time Figuring out, like, what is happening in the client, what is happening on the server, and, like, the questions we are getting coming in, like, people are confused. And it's it's gonna be a hard challenge for for us who are kind of first first responders towards, developers who are learning or testing out things.
Benedicte:Yeah. Because I, like, I and it's so hard to explain when it's all muddled together. Because I'm like, well, you know, we have an external script, and it gets loaded in the client or, like, loaded on the browser. And then they're like, Why isn't it accessible on the server? And it's like, well, it's an external script.
Benedicte:Like, it doesn't it's not. Yep. You're like, put it as grip tag in your head. It's never gonna be on the server. So, yeah, that's just me complaining a little bit and people fighting, and I'm just like, I just wanna write some old HTML and CSS again.
Benedicte:I think I finally caught the fatigue.
Benedikt:Yep. Yep. Yep. Can totally relate to that.
Benedicte:Mhmm. Well, you've stayed thoroughly in that side of tech where you have a separation between server and client, It's even 2 different languages.
Benedikt:Yes. But that's just how it is, I guess. Yep. It comes with the zone challenges. Like, it's not it's also not super easy, but at least the boundaries are super obvious.
Benedicte:Well, you know, it's because I found this tweet tweet. Somebody tweeted, like, a year ago or something about a Paper from the eighties, I think maybe from 84, something like that that that showed how, not having clear boundaries between client and server. I obviously was a different client back then. Messed up mental models and made it really hard developers to reason. And I remember seeing that, and I remember retweeting it because I thought it was, like, really cool, you know, that we always come full circle, and, and also that the paper was, like, almost my age, but I can't find it.
Benedicte:So I've been trying to, like, search my own Twitter history, and I can't find it. If you dare listen, June if you know what I'm talking about, please please please send me this research paper, because I would love to have it now and actually read it in full to formulate help formulate some of my own thoughts around, around this.
Benedikt:Yeah. Yeah. Totally agree. I remember this weird phase where, I think it was shortly before I started working with Ruby on Rails. I was exploring a couple of other frameworks.
Benedikt:And there was this weird phase where, people thought it would be fun to make HTTP requests stateful by, like, having, like, A session object on it. That's but that's not, like, just a session ID with a user ID, but, like, the proper application state Serialize in a session. So every single request would be dependent on the current state that Was shared
Benedicte:Of the whole applicate.
Benedikt:Of the whole application. And it sounded like super clever back then, but it was A nightmare to work with because you would visit the page, and depending on the state you were in, like, Last week, it would look totally different. I feel like, yeah, We're making these stupid mistakes over and over again.
Benedicte:Well, the thing is, like, you know and let's not talk about the world, But the world is also making some of its same mistakes over and over again, and it feels like it's the, you know, it's the nature of humans or whatever. Like, you you You wanna, like, fix this problem that you seem or you deem a problem. And and I I have these conversations a lot with Lillian about things that you should just, like, let be. You know? She will come up with, like, well, that's stupid.
Benedicte:We should optimize or we should do we would, like, we should fix this. And I'm like, yes. But maybe also it's like, maybe it's as good as it should be. Like, it being I don't know. I can't remember an example, but just, like, imagine, you're, like, walking to the bus.
Benedicte:It's like, oh, it would be faster if you could, like, teleport to the bus or, like, maybe we should, like you know? And she'll come up with crazy ideas about how we can the bus faster. But then it's like, okay. If we if we remove the walk what we should kinda have done with scooters. If you remove the walk from home to the bus, like, you remove the little exercise that is left in the mother in the mother life.
Benedicte:Yep. And and these scooters, which I love in practice, but I hate in theory, these scooters you can rent in towns now, It has turned out, and they've started looking at it, that they actually lower, you know, the the the health or, like, the exercise level of the the population because you are then taking away that, like, little friction of walking to the bus.
Benedikt:Yeah.
Benedicte:So I have these conversations with because she's like she's a problem solver. She's like, let's, you know, let's fix this. And, like, Faye and is like, well and, also, there's so many edge cases trying to, like, think about edge case, and she's like, well, we can do so. And I'm like, well, if you're gonna make a rule for it's often rules. So you wanna make a rule for all of that?
Benedicte:Like, it defeats the whole like, it's It's not fun anymore. It's like it it ruins the thing by doing all of these things. But it's a very, like, human thing. So if you're sitting there and you have, like, a front end problem, mean, you're like, what if I could just do like, that would be clever. And then we do it, and then we realize, like, this is chaos.
Benedicte:Mental models are gone. It's gonna be super hard to maintain, and then we we stop and, like, we go back or we, like, figure out something new that turns out to be where we were 10 years ago, we end up going in these cycles.
Benedikt:Yep.
Benedicte:And I think it's really hard that it for it not to happen, but it's also annoying to be grown enough to see it happen. I'm like, no. And sometimes, you know, us older people get, You know, proved wrong. Like, maybe this time, like this version or this thing will actually be a lot better. But then oftentimes, it's just like, Yeah.
Benedicte:We told you it was never gonna be good. Like, this is not the right mental model or the right anyway. So it's gonna be interesting to see where we are in 2, 3 years in the world of React especially where Who even owns React. I don't know why, or who's responsible for React, which is kind of the world I'm in. And, Yeah.
Benedicte:Excited to, like, play around a little bit more with just vanilla JS and HTML and CSS and see how far that can take us, Especially with simpler apps. Yeah.
Benedikt:Yep. Yep. So this
Benedicte:is what I'm bringing to mix Pod, the 1st live stream on Saturday. It's Saturday, 11 o'clock. Saturday, 11 o'clock, CET. So if you're European, do Watch us and have your brunch.
Benedikt:Nice. So it's happening. Doing brunch. What are you starting with? Just planning?
Benedicte:So 1st episode, we call it episode 0. We're gonna plan the app. So my idea is that we'll use tldraw and just kinda draw out everything that needs to be in place for this app to come to fruition and then start planning in what order we should do it. I often like to test some of the hardest or some of the things I'm unsure about. I like to kinda test, can I make this search API that I found work so that you can search for podcasts?
Benedicte:Like, if you can't do that, like, a lot of the app kind of falls apart. So we're just gonna plan out in what order we're gonna do that, and then we're gonna slot that in to kind of the episodes going forward. And we're thinking about having 12 no. Not 12. 6 Six streams at least.
Benedicte:So that would be 12 weeks because we're doing them every other week, and then we'll do them, like, thematically. And then I'm also hoping that this kind of The drawing we're making, the diagram we're making, that that can be, like, something that we go back to through all of the streams to be like, okay. Now we're working on this piece, And then we can make notes if, like, something comes up. We can make a note of that on on, like, something we're gonna make in the future. Like, a note and, like, have this be a living document that we can share with people to follow along and see kinda where where we're headed.
Benedicte:I mean, with this app, like, we could definitely hit a hard over. It's like it's we can't make it. Like you know? And you wanna know those things sooner rather than later. So we're just gonna go ahead.
Benedicte:We don't have Any kind like or we have 1 official sponsor, which is. You know? The company I work for. So we're gonna be, you know, one of the first episode will obviously be to create the landing page to capture emails. So we're gonna make just a regular old HTML form, and we're gonna post it.
Benedicte:Then you're gonna get a response back on a HTML page and, just try to to just do it the old fashioned way. And then we're just gonna take it from there. We have some very cool meetings lined up that I can't share yet, but Maybe, we're getting cool sponsors. And if we don't, like, we're just gonna do this anyway because I realized I just wanna stream. I wanna create Stuff.
Benedicte:I wanna spread some joy around web again and, like, not yeah. And not to, like, think content content, but just, like, have fun, creating stuff.
Benedikt:Sounds good. I'm excited to see what
Benedicte:I was supposed to do. I am excited. I am excited. I am excited. If we can get, like, at least some people watching, that would be nice.
Benedicte:Yeah. And also one of the the the persons we stream with back in the day, in 20 twenties, You know, back in those days, to reach out on LinkedIn, and she was like, oh, could I come, like, join your streams again? And and we had a meeting with her yesterday. So she's gonna be coming and kind of being, like, a little not the outsider because she's gonna be part of the gang, but, like, she won't be part of the All the work that goes into the app between the streams so she can kinda, like, ask the questions that, we forget to ask ourselves or, like, share because we are too into it. So she's gonna join and then have, eye on the chat and, also kinda, like, have questions prepared and, like, ask us about things so that we we share things that other people who are outside the the project can Would would probably wanna ask.
Benedikt:Makes sense. Nice.
Benedicte:It's all coming together very nicely.
Benedikt:Very cool. That's that's super nice. Yeah. Yeah. Same here.
Benedikt:It's just a lot of work.
Benedicte:I know. Life is a lot of work.
Benedikt:Yes.
Benedicte:Last weekend, I went to the cabin to close it up and had to clean 2 sewage pumps. So
Benedikt:Lovely.
Benedicte:Lovely. I mean, it wasn't as bad as it sounds. It sounds much worse, but It was just, you know, very, like
Benedikt:A very adult thing to do.
Benedicte:Very adult thing to do. A very, you know, you Things need maintenance. Like, houses need maintenance. Software need maintenance. Mhmm.
Benedikt:Yes.
Benedicte:Kind of If you put things out there, you have to keep keep it up as well. Or Yeah. Yeah. Cool. I guess that's it.
Benedikt:Yeah. That's it. I actually have to run, so we better wrap it.
Benedicte:And make sure you sleep well. Have you gotten your sun lamp?
Benedikt:I have not set up the sun lamp, but, so far so good. Like,
Benedicte:not
Benedikt:not depressed yet.
Benedicte:Good. It's all I need to hear.
Benedikt:Yep. All good. So well, Have a nice week, and, see you around the interwebs.
Benedicte:Interwebs. Bye bye.
Benedikt:Bye.