Design and engineering polymath Rasmus Andersson joins Mark and Adam to talk about his new project, Playbit. Play as a means of discovery and learning; virtualization as an underexploited technology for making safe playspaces for programming; and whether macOS will still exist in ten years.
00:00:00 - Speaker 1: What I think happened was that you got people who knew how to bend and to mold computers and software in the same place as people who were very efficient and effective and curious and playful around things like design and getting things done, and had real needs, right? And sort of that’s some biases there, I think is what drove Mac OS to become such a successful platform.
00:00:29 - Speaker 2: Hello and welcome to Meta Muse. Use as a tool for thought on iPad. This podcast isn’t about Muse product, it’s about Muse’s company and the small team behind it. I’m Adam Wiggins here with Mark McGranaghan. Hey, Adam. And joined today by Rasmus Anderson.
00:00:45 - Speaker 1: Hello, hello.
00:00:48 - Speaker 2: And Rasmus, I understand you’re an amateur gardener.
00:00:51 - Speaker 1: Yeah, that wouldn’t be very far from a lie. I do have a little front yard, tiny tiny one, and a tiny backyard, and it is a constant fight with nature, but, you know, it’s kind of fun.
00:01:07 - Speaker 2: And I always find it funny, weeds are not particularly a thing that there’s no like clear definition other than just a plant that you don’t want to be growing there. So one man’s weed is another person’s desired plant, is that about right?
00:01:22 - Speaker 1: I think that’s right, yeah. I mean, I grew up in Sweden and I remember my parents playing this like really smart game on me and my brother, where we would have these, they’re called mscruso, which are kind of pretty, but they’re definitely weed. There’s these beautiful kind of yellow flowers, and they can break through asphalt. They’re like really strong growers. You know, and as a kid, you know, parents would be like, hey, let’s do like an adventure thing, and like you find all these in the yard, and like for each of them, we line them up and count them and we would just like, Wow, this is cool. And we would go and pick them and light them up.
And our parents would be like, you know, behind the corner, that would be like, we totally fooled them.
So yeah, they' weeding as a kid without really knowing that I was doing that.
00:02:07 - Speaker 2: Nice one. We lived on a farm just for a little while, while my dad was stationed at a naval station that was kind of in the boonies, you might say, and my mom was a pretty serious gardener growing her own vegetables and fruits, and we had fruit trees and stuff like that.
But I certainly remember that some things, the tomato plants grew fast and easy. There was the watermelon plants that we got one summer with me and my brother just ate watermelon and spit the seeds into a nearby garden bed, and then there were some others that were endless frustration for my mom trying to coax out of the ground.
So yeah, I think my strategy if I’m ever in the position of being a yard owner, will be to just identify all of the hardiest plants that grow, even if you don’t want them to, and just say these are what I’m specifically cultivating.
00:02:51 - Speaker 1: I like this strategy. This someone once said this. I’m sure that there are like children books and stuff written around this. I’m not sure, but someone said this and I thought it was kind of interesting that there’s a gardening approach to like steering a system, right? And there’s sort of like more of the plan and design approach to steering a system, meaning that if you have this sort of like organic type of system, like a garden, right? Or maybe software. It’s going to just keep changing, and the gardener’s approach is that by doing something like Adam, what you were saying, you kind of identify the things that you want to cultivate, and you give them a better opportunities. And then you look at things like weed or things that you want to move, and you sort of like give them worse opportunities, right? You sort of steer the system like that and see where it goes, whereas the I don’t know if there’s a better word for it, but the planning and the signing of the system from scratch, you’re like constantly trying to hope that it evolves in the direction you want to, which is, I think, never really the case, right?
00:03:52 - Speaker 2: Yeah, I think that is I use gardening as a metaphor often for those kinds of organic growth things for something like a community where you just can’t directly direct what’s going to happen, what you can do is encourage and nurture and create opportunities, as you said, for the kinds of things you want to see and and discourage the kinds of things you don’t want to see.
But that’s part of the joy maybe is you don’t know exactly how it’s going to turn out. If you come at it from a kind of a builder, engineer, architect perspective that I’m gonna plan down to every last little detail in the blueprint, and then I’ll make reality match that exactly, you’re likely to be frustrated and disappointed.
00:04:33 - Speaker 1: Yeah, that’s right. I think this somehow we just kind of slipped into this, and that’s interesting in itself, but this is kind of what I’m trying to do with my project Playbit.
See, we can get into it a little bit more in detail in a few minutes, but I think that there’s this opportunity to encourage, sort of like a different way of building software, not like radically different, but sort of like somewhere in between big scale and tiny tiny scale software, kind of like personal software.
But anyhow, I think that a cultural change, right? Sort of like creating this garden where interesting like plants and stuff can grow to kind of spin off this metaphor. It’s a really interesting idea, and that’s sort of like the core of playbit. That is the idea around it. That’s what I’m trying to do with it, rather than to build on a specific type of technology. Now, software is like part of, you know, my strategy to make the change happen, or at least I hope I can. But the goal of play but this is sort of like cultural change or really like offering and, you know, a different or a slightly different at least culture to software building.
00:05:39 - Speaker 2: Culture is so important, certainly for programming communities, but more broadly just creation of any end artifact comes not just from the tools and the materials and the intentions of the creators, but also this ineffable thing we call culture.
Yeah, well, I’m really excited to hear more about Playbit, which is a brand new project you’re working on, just for the listener’s sake. It would be great to briefly touch on your background.
You’ve got a very impressive resume fresh off of working at FIMA.
Before that you did Dropbox. You were early at Spotify, and just looking down that list, you know, I find myself thinking, well, if you were an investor, that would be pretty impressive, and I would assume you’re just sort of leaving the things out that were misses. But as someone that goes to work for companies, you don’t have the ability to do such a portfolio strategy. I’m wondering if you feel like you have a particular knack for spotting high potential companies early on, or is it more a spot of luck or some combination?
00:06:35 - Speaker 1: That’s a good question. I think it’s probably the latter. It’s a little bit of a combination.
Really, it’s this kind of idea of intuition, right? You have a lot of experience. I do have quite a lot of experience at this point, and I think that has put up these neurons in such a way that I have some sense at least, at least within this particular kind of industry that I’m in.
Someone was asking me this the other day actually, this little Twitter like texting back and forth, but I think that there’s a couple of things you can do that don’t require experience to build up intuition.
And one thing is just to like really understand what you like to do, right? And so this is not specifically around, you know, successful technology companies, but I think it’s like a foundational sort of like a cornerstone.
To being successful with like, really anything, is to understand like what you really want, right? Not what your parents told you that you should want, or not what like your peers tell you that you should want, but what you really want. No, no, that’s really hard, and maybe that’s the hardest thing in life actually to know what you really want.
00:07:37 - Speaker 2: I’ll echo that as well, which is for me, I had this experience of growing up with video games and that being my passion, and I was just convinced I would go into the game industry, and that was my path, and I actually did that and then I was miserable and I didn’t like it and I what on paper you might say, or hypothetically, I thought I wanted to do in practice didn’t actually work for me. And then when I had an opportunity to join a company. Making basically from my perspective, pretty boring business software. I jumped into that and discovered I loved it and I was much better at a thing that I loved to do or fit with my natural passion somehow.
So I think it’s also a maybe coming back to our gardening metaphor, a bit of a discovery and looking for opportunities and noticing what’s growing, what’s sprouting really naturally, and then encouraging. that rather than having some preconceived notion of what you think you should do, which might come from parents, certainly could come from, you know, the tech industry, which lionizes certain kinds of companies or certain kinds of people and instead kind of paying attention to your own internal compass for this is a thing that I could really see myself spending every minute thinking about for the next 5 years, 10 years, or career.
00:08:47 - Speaker 1: That’s just so interesting to hear you say that, but you had that experience, which I think a lot of us have, right? If we had this idea, maybe we want to be a chef or an astronaut, or, you know, a fire person or whatever when we’re kids, right? And like most of us end up not doing that, right? We end up doing something else. And I think that happens a few times in life where, like you, you know, We see this thing, it’s like very exciting, we pursue it, and then we stumble upon something else, and that just, you know, we stumble upon probably 100 different things, right? But one of those things where like, whoa, damn, this is really fun, and this is really interesting.
Yeah, so getting back to your question a few minutes ago, I think that if you have that sort of like cornerstone idea of the learning about myself, it’s just something that I should always work on. Then on top of that, I think what you can do is To try to learn about the people that are working at various different companies or like looking for passion in people, like finding out what incentives are driving them to make a change. And with a change, I mean like a technology startup, right, usually exists for one of two reasons, and the first reason is that people want to make a change or want to see a change in the world, right? It can be a very small scale, a very big scale.
And the second thing, I think that often you have these ulterior motives, you have power, fortune, you know, impressing other people, like all those things. There’s nothing bad about those things, right? But they are usually then hidden away that there’s this facade of like, no, we’re really trying to make a machine here with this YouTube for cats or whatever. And really like someone just wanted to like build a really cool thing so they can sell it and get rich, right? And again, there’s no judgment here if that’s your thing, that’s cool, but that’s not what I’m interested in.
So that’s one of the things that I tried to see and figure out and really spend time on understanding when speaking with a company or a few people who want to make a change, right? Like, are they driven by passion for this change? Like, can they see this world and like, you know, in 3 years, if we have this thing, and people are using it, like, this is how their lives are different. This is how they can like do things that they can’t do before. Like that’s the sort of thing. To me it’s like, kind of rare. It might be surprisingly rare, actually, which is kind of weird. And to find that out, I think the easiest way is just to spend a little bit of time with a lot of different people. So if you’re interviewing for a company, ask if you can spend a few hours with 1 or 2 people on the team, rather than, can I spend half an hour with like 10 different people.
00:11:20 - Speaker 2: Interesting. So it sounds like you’re, you know, come back to that investor kind of analogy I made before where going to work for a company, you’re investing your time rather than your money, which in many ways is even a more scarce and valuable resource. You think of it as less in terms of let me a value. I don’t know, the market opportunity here, whether I think this has the potential to be something good or big or what have you, and instead more is kind of looking into the souls of the people who are working on it to understand their motivation and their drive and their passion.
00:11:52 - Speaker 1: For sure, yeah. This is probably a cliche at this point, but If you have a group of good people that you’re working on, it’s not that important what you’re working on. Right, I think that’s a very extreme way of looking at it. I think in reality it’s not as clear cut as that. It’s not as true as that.
But I do think that it does hold true to some extent, right, that if you flip it around, right, if you do some sort of kind of Greek philosophy approach then, you know, you say sort of like, what if everything is good, right? So you start out in like ideal scenario. So it’s every person is amazing on the team. The business is doing great. The mission is something that is so close to my heart, like, I’m just thinking about it day and night, right? And so on.
And now you start like taking things away, right? You have this kind of little thing in front of you, and now you start thinking that, OK, let’s see if I take away the mission, right? And I have all the other things still, like, does this feel like something I want to do for 4 years, right? Not in day, right? It’s like, oh maybe, you know, you start taking things away, and I think If you start out in the ideal case, right, you play these different stories out, and you take away the group of people, right? So you replace that with like, people who you would consider, like, not being good, right? Like, maybe they had a bad influence on you, maybe they create a lot of stress for you, maybe they’re just not good at the craft and so on, whatever that means to you.
I think for most people, like, it stops pretty early in terms of like, yeah, I would still do this. Like you would be like, well, you know. With making such a big change, and I’m really involved emotionally in this mission and everything, but like the people I work with are paying, it’s like, I don’t wanna do that, right? Life is so tiny, it’s so short, and you look back in the past and the things you remember, it’s not the bugs you squashed in code or like the pixels you made. It’s gonna be the people and like. The change that the company is trying to make and the group of people are trying to make, I think it is very important, right? And this is where it really loops back the first thing that I was talking about a few minutes ago about like learning about yourself and knowing yourself. I have a few friends who are very concerned about the environment of Earth and stuff like that, and choose to leave their traditional tech jobs to go work for, you know, uh renewable energy companies and stuff like that. And for them, you know, the mission is very important, right? And the people are very important. So, I think you want to really like look at all of these different things, like, a group of people who are amazing, who are very unsuccessful at doing what they do, is not gonna be a fun experience anyways, right? So yeah, I don’t think there’s a magic bullet, there’s no sort of golden arrow or whatever metaphor here, but I think one really good thing to look for is this sort of like passionate people, and what drives them to make that change.
00:14:39 - Speaker 2: Yeah, I’m a fan of that. Seeking opportunities in my own career and when I’m in the position of giving career advice to others, I usually say something like optimize for the people, find the team that you have that collaboration magic with, and that will be just far greater return than the exact perfect mission. Um, I do think, you know, those things related, probably because if you share values and you share passions around a particular mission, that’s likely to be a team that you work really well with. But yeah, given the choice between a thing that’s slightly off from what I might actually be my ideal, the perfect team, and the other way around, I always go for the team.
00:15:16 - Speaker 1: I’m curious here, Adam and Mark, how you’re looking at this as well. You’re both experienced in the software industry, yes I am, like, kind of flipping the question back to you. What are some of the things you might do or look for in order to understand if this, you know, company group of people are gonna be successful. It’s just gonna be like a fun ride for me, so to speak.
00:15:38 - Speaker 2: Yeah, I’d love to hear from Mark on that since he’s actually, now that I think of it, picked some pretty good ones, including for Muse, he was at Stripe. And so, yeah, I guess I never asked, did you see that as, oh, these guys are gonna be huge, I really want to be on board early. My stock will be worth a lot, or was it more, this is an interesting domain, and I want to work with these people who knows the company will be successful, or that wasn’t part of your calculation.
00:16:00 - Speaker 3: Yeah, it’s tough for me to give an answer to that, because to my mind, there’s a lot of, you know, it, when you see it, and to your point about having experience and neurons and pattern matching.
I feel like I’ve been lucky enough to work in the industry for a while, so I now I’m able to have perhaps some judgment of that.
I do think as a tactical matter, if people actually want to have a better chance of working at a high potential company in the classic sense, you can get a lot of information by asking people whose job it is to know these things.
So, Investors and hiring managers will often have a lot of data about companies that will do well. And then it kind of becomes like investors will always say, oh, it’s, it’s actually not hard to pick the company, it’s hard to get the deals. I think there’s a similar dynamic with joining companies where often a big part of it is actually getting hired.
But yeah, I think it’s a tactical matter, if you do ask around, you can get a lot of good data points.
But I also have similar sentiment in terms of, at a more personal level, what I look for in a company, and I would also say it’s about the people and the mission.
And I always go back to this idea of You know, we don’t have a whole lot of mortal life, and it would be a shame to spend the next 2 to 4 years of it working with people you didn’t care for. And when you say it like that, oh wow, you know, really should, uh, make sure that the people that you trust and look up to and want to become more alike, because as you spend 124 years with this team, you are going to basically become more like them. So is that something that you would be proud and excited to do, or that you would be afraid and ashamed of?
00:17:18 - Speaker 2: There’s a great patio. I think it’s even in an article writing about the culture at Stripe. He says, when you’re choosing your colleagues, these are people you’re essentially giving right access in your consciousness to. We don’t realize it, but just the people you’re around all the time, you become like them, whether you like it or not. So surround yourself with people you admire and you want to become more like, and that will come true.
00:17:42 - Speaker 1: Absolutely, I really like that.
00:17:44 - Speaker 3: This also might connect a little bit to our topic of playful software, because to my mind, one aspect of playfulness is sort of undertaking the process and the work for its own sake, without a lot of accountability to the end result and just kind of enjoying the process, you know, doing it for the memes, if you will. And I feel like you can only do that well if you actually really love what you’re working on and the discipline, but I’m curious to hear Rasmus, what your perspective on playful software is.
00:18:11 - Speaker 1: Well, I think for most people playful software, the first that comes to mind is probably games, right? And games, they’re sort of like almost the purest type of playful software. That is their primary and often only goal, right? To just be playful, to just entertain.
And so I think playful software that is not games have some amount of that sort of like entertainment that, you know, a privy guest of yours that Jason was saying sort of like fidget ability, you know, the idea that There’s some quality to the software that makes you want to just like, kind of toy around and play around with the software itself, not to produce something necessarily, although that might be the main reason for the software to exist. So I think if we’re looking for a definition of playful software, it’s probably something in the realms of game like entertainment like qualities that are kind of intertwined with some sort of utility.
00:19:09 - Speaker 3: Yeah, this is really interesting, this nexus of entertainment versus playfulness versus utility.
So I feel like actually there’s some relations certainly between entertainment and playfulness, but I feel like they’re also somewhat separable.
Like you can have a game where it’s sort of a mindless game where you just plan to get really good at it, like a competitive game. And the flip side, you can have playfulness that is more just about exploring and seeing what you can do and what you can make and perhaps the stuff in the middle, like Minecraft is kind of in the middle there, it’s both entertaining and it’s playful, and I do think people tend to go towards games, but I think there’s another important element around what we’re calling playfulness that’s really important.
00:19:42 - Speaker 1: Yeah, that’s good points.
00:19:44 - Speaker 2: I’m suddenly reminded of a book by one of my favorite authors, Virginia Postrell.
And in there is a chapter where it asks the question of what actually is the difference between work and play. And it’s one of those things where you go, oh well, it’s obvious, and then when you try to come up with a definition like, well, you get paid to work and you don’t get paid to play, and really quickly, especially if you’re someone that’s, you know, in the tech industry, a designer, a developer, whatever, you find yourself doing things that look very, very similar, maybe in your free time that you do at your work, but it’s hard to pin down really what the difference is and She ends up defining it exactly as you said there, Mark, which is play is something that’s open ended, you don’t have a specific goal in mind, you can start out with, I’m gonna paint the painting of the sunset, and by the time you get to the end, you’ve decided instead to fold the canvas into an origami. Swan and, you know, you could do that if you want, whereas work you have this specific end goal that you need to get to, often in a particular time frame, and even if you find some interesting detour along the way, you kind of have to ignore that because you have made this commitment to deliver some specific result.
00:20:54 - Speaker 1: And I’d say that as a designer, like playing is often a very important part of the understanding part of design, which I think is like a really big chunk of design work, right? You know, you have this opportunity or this kind of problem, like there’s something you’re pursuing, right, with your design project and Before you can make any decisions and any changes, right, in terms of like getting closer to solving it or changing it, you have to understand it, right? And so you take things apart, you put them back together, right? You’ll learn about things as you take things apart, you’ll find new parts so you didn’t see before, right? You’ll find new constraints of the project, you’re like, oh shoot, oh I guess this material is different, right? And so, I think, as you were saying, Adam, if you take a step back and you think about like, well, this kind of looks like play, doesn’t it? And I think in many ways it is straight up play. But it is sort of a semi open ended, closed ended play, right? It’s sort of like play for the purpose of learning. And I think this is where most of us in the tech industry, like, Can relate to playfulness in like the way we use software. So maybe on a weekend you’re like, oh, I’ve heard about this new like rust thing. Maybe I should like take the first bit, right? And you put together a whole world thing and you find a rust compiler and you write some code and you’re like, oh, what is, why can’t I borrow this thing, right, whatever. And the goal here, right, is play. You might not call it play, but unless your goal is to actually like get an output in the end or make a change or something like that, really what you’re doing, right, is learning. And I think that is often the reward, so to speak, the outcome. The product of play is to learn something.
00:22:35 - Speaker 3: Absolutely. I think it’s a great point. And just to reiterate, I think it’s really important to have this play access be separate from work versus entertainment. So that is, you can play in a domain that we typically think of as work, whether that’s design, engineering. Another example that I might throw in there is Elon Musk sending the roadster to space. It’s like, why are you doing that? I don’t know, it’d be fun, I guess. That’s also in a very serious domain where he is in fact learning a lot by undertaking that activity.
00:23:02 - Speaker 2: Also connects a bit to just our humanity, which is, of course, we’re trying to achieve things, be productive in the broad sense of the word, in our pursuits in our work life, but at the same time, we’re all people, we like stuff that’s fun, we like stuff that’s playful, and if you can find ways to do that, that fit in with the work and fit in with accomplishing your ends, I think it makes it more fun and engaging and enjoyable for everyone who’s involved.
00:23:31 - Speaker 1: Yeah, there’s something naturally even about play for sure. We can’t imagine our like ancestors running around naked in the woods with clubs, you know, kind of finding a pine cone or something on the ground or a stick and be like, oh, this kind of looks like a goat, you know, and you start playing with those things, and there’s something I think is very interesting, like when I was a kid, so I grew up in the countryside and Me and, you know, the other like 5 neighbors or whatever, and the kids, we would, you know, go into the woods and that’s how we would play, we, you know, build a little like imaginary little airplanes out of a pine cone and stick through it and stuff like that, right? And as a kid, you see a stick, and the stick is like anything. It can be anything you want, it can be an airplane, it can be a rocket, right? It can be a person, right? And as an adult we lose that, and I don’t know why, but I see a stick today and I’m like, oh, that’s a stick, right? And I’m like, damn it. You know, I wanna see the stick and I wanna feel like, whoa, this could be a weird sort of creature, you know, from a different planet that has like multiple heads, that kind of looks like a stick, but it’s not a stick. At some point I listened to someone who was trying to make a point of the educational system, at least in sort of like most of the world. Takes in one end of a machine, right? Imagine people walking in one end of the machine and they come out in the other end and like, in the end you walk in, there’s all these color and difference and, you know, different voices and stuff. And the other end is like this marching uniformed people, right? School kind of prints this pattern onto us, right? This is real, that is not real. This is play, that is not play, this is serious, right? And I’m not sure that’s like good for us, especially not for people in sort of the creative industry. Which I think is like a growing industry generally.
00:25:15 - Speaker 3: Yeah, I think that’s a great point. Another way to articulate this might be as we get older and as we go through institutional education, we tend to get annealed, that is kind of solidified, optimized, focused, structured, and play in addition to a way to learn, is a way to kind of foam roll your mind, you know, get some plasticity, break up some connective tissue so you can think of some new stuff. And so now that you make that point, I see that as a second key outcome. You know, you learn some stuff and you have some more flexibility in your head.
00:25:46 - Speaker 2: It also occurs to me that that means that play and imagination have a strong relationship and maybe this, as you said earlier, Erasmus, that like, when you talk about in design, play is very important. You might even say, this isn’t quite solved yet, let me play with it and try some stuff. And that’s connected to a little bit of an open-ended divergent thinking, imagination, out of the box, you know, looking at the stick and seeing the person of the rocket ship, and that actually is what could potentially lead you to the more practical breakthrough in doing your work.
00:26:17 - Speaker 1: It’s so true, so true, I think. If you think about cool stuff that people have made, right, like art or tools or anything, what have you, that you think it’s like, wow, this is brilliant, you know, this is so fun, or this is really smart, whatever. And you start digging into like the history of that in pretty much every single case, you’ll find that it’s a remix of other things, right? And so I think imagination and playfulness. is sort of like at least partially a practice of just exploring things, right? It’s maybe that’s a play part, right? You explore stuff, you see new things, right? And then here comes the imagination part, which is like, oh, out of all these different things, there’s like a new thing that can emerge, right? Like the iPod is a remix of this like brawn handheld radio, right? And then the iPhone is a remix of the iPod. You know, those things are very obviously remixes, because they’re, you know, visually very similar, but I think that there’s also conceptual remixes, and there’s like straight up like the word I’m using a remix, right, like from audio, there’s like, that is a very common practice.
00:27:24 - Speaker 3: This is also reminding me that there’s an important element of intellectual humility in play.
So we said perhaps play is when you don’t have accountability for the end work product, but wait a second, we’re in creative fields, our entire purpose is to come up with novel ideas by definition.
You don’t know how to get to that work product yet. If you did, you just go right there. So really it’s taking away some of your constraints and preconceptions about what it takes to create a novel work product and and exploring for a bit and saying, you know, press on the other side, it’ll be clear that what you were calling play was in fact work or fed into work, but you don’t know what that path is yet, so who are you to say what is or isn’t gonna have a good result eventually.
00:28:01 - Speaker 1: That is really interesting.
So Mark, what level of constraints, or what level of sort of like boundaries do you think you need to define in order for that to not be like this totally open ended sort of quick detour of what I’m talking about is to make sure this makes sense.
So like, I’ve seen this happening a couple of times in tech companies where you have a couple of interesting smart people who are playful, and the company recognizes that, and it recognizes the value and innovation and stuff, right? So they say, hey, you know, Lisa and Robin. Would you be interested in sitting in this corner just coming up with crazy shit, right? Maybe we’ll ship it. And I think in most cases that is like a failure, right? That will come up with all these incredible stuff, but there’s never any sort of traction around it. Maybe the constraints are way too vague, similarly to an art class, you know, if you ask someone to just paint anything they want, there’s just this paralysis, right, of like where they even start. So within that framework, like looping back to my question to you, Mark, what and how do you think about like setting up the right amount of constraints to be able to play around within there?
00:29:01 - Speaker 3: Yeah, that’s a great question. I I don’t think there’s an easy answer, but One strategy that I like a lot is to follow the energy. So if you’re undertaking this project, let’s say we’re going to relax the constraint about classically measured business output, but we’re gonna maintain the constraint around there needs to be some energy here, which could be, you’re able to get other people excited about it, you’re able to get customers excited about it, you’re able to create something that’s aesthetically interesting. That to me is an important Source of energy.
And so we’re not gonna kind of constantly inorganically add energy to the system. We’re gonna give you a little bit of spark and some initial fuel, but then you need to build it up from there and kind of find your own path.
But you’re free to not go directly to this end destination. It could be that you go through basically an art project, or a recruiting project or a publication project, and then you go from there.
That helps a lot with kind of the mechanics of keeping the project going but again people are living their short moral lives and not gonna want to work on something that doesn’t have a lot of energy on it. So as you have more success, you tend to attract more people and it goes from there.
00:29:59 - Speaker 1: So energy that makes a lot of sense, kind of sense of urgency in different words, the sort of like things are happening. Do you think that Results or milestones, or even just celebrating like discrete moments of success or progress are important as well.
00:30:15 - Speaker 3: So this is a classic atomism back from the Hiroki days to make it real. We can link to the full list of atomisms. But it’s this idea of, even if it’s just a prototype or even a CLI session mockup, something that makes it real and makes it concrete for people, really helps people understand what it is and again build that energy. I also, I mentioned it briefly, but I think this idea of aesthetics is really important. There are good threads to pull when you have an idea that’s aesthetically exciting or appealing. That’s the way that I often draw energy on projects, even like programming type projects.
00:30:45 - Speaker 1: There’s this thing I’m thinking about now, which is And this varies in different parts of the world, but I think the same thing is sort of the financial thing is true.
Like, you look at a particular industry, like hairdressers, right, or pizza joints, and you look at like the topography and the colors and sort of like styling they put on their storefronts.
And there seems to be these sort of like pretty tight clusters of style, right? You’re like, why are all the pizza joints in this town using hobo for the typeface, right? It will be so much more interesting if like someone used copper Gothic, you know, or comic sense or any of the other sort of, you know, funky typefaces or something, you know, stern like Helvetica.
And I think what’s going on is this recognition or this thing to like make it real, right? Imagine that we were starting a pizza joint, right? And we have ambition, right? We want this to be like the freaking best pizza in our town, right? So, you know, we look at other pizza places, and we have this intuition that we talked about before, right? Of what is like a real pizza place, right? We have our heroes, right? And chances are that they use hobo, right? We might not be aware of this, this might be unconscious.
So we go to, you know, our local printing press who make a sign for us, and they show us, you know, a bunch of different typefaces, they have an option, and we see the hobo one and we’re like, oh, that just feels right, you know. So you go with that and you reinforce this idea at a real pizza place to use hobo for a typeface.
And so I think this connects directly to what we’re talking about with a static being important and to make it real and a good atimus, which I’m gonna start saying now, by the way, so you’re all kind of wow, is that same thing, right? Let’s say you’re building like a MacOS app. And you have this idea for it.
If you create a design, just a picture, that’s like a fake screenshot that looks real, I think that there is a similar quality to that pizza you want.
People are gonna look at it and they’re gonna feel like, oh damn, this can be real, you know, we can make this happen. That looks like a real thing. I didn’t think of that, right? So yeah, I think aesthetics and presentation, and that mapping that to like your heroes and your ambitions, I think it’s super important for people to feel that this is possible, you know, and to drive the energy you were talking about, Mark.
00:32:58 - Speaker 3: This reminds me of another quick story here of kind of aesthetic and emotionally driven play session.
A long time ago at Hiroku, we had an issue with the command line client being very slow, and I was very frustrated with it, and I wanted to have a faster client.
So I undertook this playful project of just trying to make a very fast Hoku client that kind of only does Hello World, like it just lists your apps, but does it fast.
And that ended up not really going anywhere, but by undertaking that project, I discovered Go, and then eventually will go by example, and now we use Go for some of our server stuff, and that’s a whole world that I never would have been introduced to if I hadn’t just kind of followed my nose up. It would be cool if even with relaxing the constraint that eventually needs to shift to production.
00:33:36 - Speaker 1: Wait, are you behind Gobi sample? Oh yeah, man, I love that. Oh, that’s funny. Oh, that’s brilliant. Yeah. Oh, that’s fantastic, yeah.
00:33:44 - Speaker 2: Yeah, we actually use this as a bit of, I think of it as the mark publishing style, which is static HTML, maybe a little bit of, I don’t know, did you even have some kind of like template or build script for the basic site, but otherwise it’s this very almost I call brutalist HTML but a very effective design in the sense that it has the side by side code and description, if I’m remembering correctly.
And yeah, it’s this very kind of sleek, it loads fast because it’s a static site, it probably still works fine now with zero maintenance, and we were certainly inspired by that, both for the you can switch articles and later all the muse stuff. I’m just basically seeing the way that Mark does kind of HTML publishing of these essentially kind of a mini book on the web, was very influential for me and everything I’ve done subsequently.
00:34:35 - Speaker 1: Hm. In an interesting way, I think go by example is playful, right? It seems to be very uniform, right? And I think that uniformity creates this, rather than create, I think it removes some anxiety around navigation.
A lot of the web, I think, has this problem of creating anxiety around like, The user interface because everything is different, right? It’s like you you jumping between different planets. Anyhow, I think what makes go by example playful is that I’m guessing here and I’m extrapolating mostly from my own experience with using it. Like, when you’re in the mode of using it or visiting it, you are exploring, right? Otherwise you probably wouldn’t be visiting it, or you are there for entertainment, right, which is kind of playful too, as we talked about. So I think that there’s this category of things that They look and smell like pure utilities. They’re very uniform, they might seem boring, but they really are these like enablers or pieces of a puzzle for playfulness.
00:35:29 - Speaker 3: Yeah, and I also think that’s often an origin story, so maybe we can use this as a way to learn more about your project where, you know, one lens on these projects is, you know, it’s a way to learn a programming language.
That doesn’t sound very interesting. But the other lens is it’s the result of a path that someone walked down around the change they wanted to see in the world.
So likewise for your project Playbi, you could describe it as someone’s building a new operating system, another one of those, right? But there’s much more to it in terms of where you’re coming from and why you’re building this and how you’re approaching it. So maybe you can tell us a little bit about Playbit.
00:35:59 - Speaker 1: Yeah, so this, like many things, there was no eureka moments, which is interesting, I think you guys have talked about that on the show previously.
The slow hunch, the slow hunch, yeah, exactly.
So this very much is what happened with Playbit. So for years and years, probably over 10 years, you know, I’ve been interested in operating systems and systems. This is one of these things that I’ve learned about myself that what I find really fun and exciting to work on in terms of software are things that enable a lot of people to make things with them, right? So tools, in other words, I mean, you guys are there with me. And so I started thinking about MacO 9, it’s so tight, you know, it’s so nice. Windows 2000 came around, I was like, wow, it’s so snappy. Anyhow, fast forwarding a little bit.
MacOS 10, I think is just like this wonderful amazing operating system. And this very interesting point in time in 2001 or 2002 or so, when Mac was 10.1 or so is the first kind of usable version of it, started getting some traction.
I think what happened was that this is probably mostly accidental, but You got these people who were really interested in kind of moldable, malleable software and like poking at things, hacking at things, and they were using BSD and Linux and stuff, right? And they had to give up a good user experience and sure people have different opinions about this, but this is my opinion.
00:37:19 - Speaker 2: I was a Linux on the desktop user for many years and Many things I really loved about it, but I do not miss fighting with getting the Wi Fi chip working or wake from sleep or editing. I spent so many hours of my life editing XOg.com trying to get the resolution to match the refresh rate of my monitor or whatever. And that’s the kind of pain you’re willing to go through for this hackable interface. And yet, my experience was the same. I landed on Mac OS eventually because it gave me so much of that Unix underpinning that’s very kind of powerful and moldable uh with also good hardware integration.
00:37:57 - Speaker 1: Yeah, I think that’s right, that Linux traditionally and still today at least the Linux kernel is most distributions, right, is configuration over convention, whereas Mark, you were talking about Go briefly and Go is sort of like the opposite of that.
I’m, I’m a huge fan of Go, like the way it’s designed as a programming language too, but in particular the way it went about the design, where it’s convention over configuration, and we can talk more about that later. But I think what happened was that you have that one part, right, of people who are really interested like you had um of the moldability of software and like the ability to fully customize your computing experience. And then on the other hand, you have people who want to use a computer and be efficient as users of a computer, right? And before MacOS 10, I think you had to make a choice. You had to say, I’m gonna use Windows or Mac OS 9. I’m not gonna be able to do this like multiple hackable stuff. I can do some basic programming or whatever, or I’m gonna do that stuff, but I’m gonna live with all this pain, right? And that quiz 10 came around and it’s like, hey, you know what, you can have both, right? And so, what I think happened was that you got people who knew how to bend and to mold computers and software in the same place as people who were very efficient and effective, and curious and playful around things like design and getting things done, and had real needs, right? And sort of that’s some biases there, I think is what drove Mac OS to become such a successful platform in terms of application quality, right? You just go and look at evidence of this, right? You go and look at a lot of web apps that are trying to mimic desktop apps. In most cases you will find them using metaphors and sometimes even a statics from Macan. It’s pretty rare that you find these things that are in the absence of a native host to mimic Windows, right? Anyhow, so that happened. I think that was very interesting.
It’s clear to me now that that is a slowly dying thing, right? Macco is 10:15, you can’t use the VM Nets thing unless you have a special signed certificate from Apple that you can. To get if you’re like become a partner with them, right? You actually cannot run it, even as the owner of the computer, you cannot use it, right? Sure, you can be roots, right? You can pseudo and use it, whatever, but you can’t make any apps using it. And Mac OS 11, takes that to the next step, right? And that’s fine. Anyhow.
So, in the context of all of these things, I think that there is going to be a need, right, in terms of like allowing people to keep being playful and exploring. Software at this sort of like more, I own a desktop computer. I want to be able to like do crazy shit with it, even if that means breaking it, right? And so I started thinking a few years ago, I was saying to myself that I’m gonna put a bet that in the next 10 years, there’s not gonna be a Mac OS 10 more, and Apple is just gonna be about iOS. And I think that’s, I’m still believing that. And what then, right? Is there gonna be sort of a Linux based desktop thing that emerges? Is Windows kind of like, finally. Start like a skunkworks team somewhere. They’re just like, let’s throw out like 95% of all the crap and build that. I don’t know. So I was like, should I try to do something about this? It’s really hard to build a business, I think, around the idea of an operating system, especially replacing Windows MacOs, which are just so good, right? They’re just so good and asking someone to just replace that with something is a big ask.
00:41:24 - Speaker 2: Well, maybe the way I would characterize it actually is less about good or not and more just the amount of stuff that needs to go into what people would consider a modern operating system today ranging from hardware support to networking to languages and various kinds of input devices and so on and APIs and the ability to run software and browse the web. and so on is just so huge that it is not something that an individual or even a startup can easily undertake.
Hence, it’s only within reach of these incumbents that have these large existing platforms and the rare case of maybe something like Google and ChromoS being able to come in and throw quite a lot of resources and quite a lot of time at the problem.
00:42:09 - Speaker 1: But I think even in the case of Chromois, you would end up in the same place, I think, right? You would have business and money driving the main incentives, right, of like, well, if we make this work for everyone and anyone, we can just make a ton of money and then You have these competing incentives, and more importantly, competing sort of like constraints on those, right? You’re gonna need sandboxing, you’re gonna need all of these safety features, right? You’re not gonna allow people to like mess around with the OS because then most people are not gonna like know what they’re doing, right? And so I think the only way to go about this is to not trying to build an operating system or computing environment that fulfills all the expectations we have.
But rather to just change our expectations or offer sort of like a, imagine like a picture on the wall, right? It’s a big picture is very complicated. And you’re very familiar with this picture, and now you’re putting a smaller picture, a much simpler picture next to it on the wall. And you say, you know, you can walk around, you can look at the simple picture, still have this big picture. And I think like, offering this idea of like, what if we shift our expectations a little bit, right? Maybe we do that just in the mode of playful software.
So where Playbit started out was as more of an ambitious idea of an actual operating system.
And ideas of, you know, I have like a GPU and stuff like that on a remote computer and people has time shared this because GPUs, there’s a kind of, I think a very important slightly concerning environmental impact. And right now we’ve seen this with all the foundry issues, right? And, you know, TSM and stuff like that, right? Like having issues creating ships, right? Because rare earth’s limitations, and this is mostly, you know, impacted by COVID and stuff like that, to my understanding, but still, you buy like an Nvidia high-end GPU today, and it’s very possible that a year from now, you’re gonna have to replace it with a new one, right? Because that industry has moved so quickly. And how often are you gonna use all that power, right? Probably not all the time, right? You’re gonna use that in virt a little here and there. So there’s this crazy shirt on hardware, especially if you’re in the PC world, right? Macs tend to have a longer lifetime, I think.
And now I’m talking about like high end kind of high-end hardware. So this is kind of where I started and I got a lot of feedback from a lot of people who I was speaking with to try to understand, you know, and try to navigate what this would mean, and if this was crazy, and I think it was kind of like, it’s probably a little too early, and I think the approach to making this kind of change needs to happen differently. And so, through a pretty slow boil and slow process of just doing a lot of iteration, what is playbit sort of like just came out of this. So the very concretely, I think that Playbit is probably more similar to a web browser or Flash, technologically speaking. And, you know, jump in here if I’m taking this too far or there’s any curiosities to it, but I think the web is successful for a couple of different reasons, right? But one of the reasons is this uniform programming environment, this uniform runtime environment. You know, if I make this little like web program, right, and I tossed it over to you, you can use pretty much any OS, any web browser, and I have a pretty good idea that C is gonna run the same way for you. And this wasn’t always true. I think in the last 10 years this is kind of solidified to be like pretty much true. And I think that’s really remarkable, right?
00:45:32 - Speaker 2: I’ll add on to that, that, yeah, not only does it fulfill the right ones run anywhere, it was a dream of a lot of platform technologies including Flash and Java and so on, but it does it in a way that is sort of instantaneous to download and run.
And then, by far the most important part of it, I think, is the sandboxing. It really gets that right. I can completely trust my program to download a program from a website. A website is a program now, a very sophisticated one potentially with all the JavaScript can do. And I can trust that I can just point my browser to URL that I don’t know who’s on the other side of that, and it will download and run that because the sandboxing is essentially perfect within that tab. It can’t go out and access the rest of my computing device. As far as I know, no other computing environment has achieved that.
00:46:23 - Speaker 1: Well, I’d say the Flash did achieve that, and I think that Flash was really brilliant in many different ways. The demise of Flash, I think, has reasons that are really unrelated to its user experience or development experience is mostly, you know, kind of a monolith owned by a single corporation, right? But the model, yeah, think about Flash or think about the web, I think it’s kind of the same thing. That model is really interesting to me and I think the one. Piece of the foundation for creating a culture where you feel empowered to play around with software and to make little fun programs is some sort of safety. And I think that’s what the sandbox does.
The good part of a sandbox that you’re talking about Adam is I’m never writing perfect code, right? I’m gonna do something and I’m gonna run it and maybe like delete all the things, right? If I run it on a sandbox, it’s just gonna delete all the things in the sandbox, not, you know, my passport from a Dropbox or something like that. So, I think that’s the good part of the sandbox. The bad part, of course, is like, when you want to do something interesting, like, let’s say you have a photo sensor or something connected to a USB and you want to access that, you can’t, and you’re be damn it. And that’s why you have to jump out of if you’re like a web developer, you have to just be, well, I can’t use web for, right? And then usually you’re outside of a sandbox and there’s no sandbox.
And in the last couple of years, there’s been this kind of advancement with virtualization, and virtualization sometimes is Mixed up or messed up with like emulation or the idea of like a virtual machine, right? It’s a virtual machine I would think of as a super set of emulation and virtualization. So emulation, when you run a program like let’s say like a Nintendo emulator, right? You have this program that appears to have the original Nest CPU and did they have a co-processor, I can’t remember. And DSP and all these like actual hardware things, right? So the program inside that you load it up things that is running on this hardware and stuff right there. Whereas virtualization is this idea of running the program in a way so that it’s environment, not necessarily it’s hardware, but it’s environment, appears to be that of a unique computer, right? And this is kind of how AWS and Google Cloud and all these things do it, right. And this has been around for quite a long time, probably about 20 years or so as a concept, and probably in the last 15 years it’s been increasingly like common to develop software doing this. Docker is like a popular kind of virtualization environment, right? And now you have these features built into Mac OS since 10.10. You have built into in Windows 10 with Hyper-V, you have it built in in Linux with KVM. And there’s similar things for a couple of other operating systems, right? And this has happened in the last few years. And so I was thinking that why not just make that the sandbox, right? So like, instead of making the sandbox be this, you know, there’s a DOM, right? And you have a JavaScript API and you have a fetch function, you have an array type, and so on, right? That’s sort of like the uniform runtime environment then, you know, you run that in Firefox or Chrome or Safari, that’s just kind of called completely different code, right? Implemented totally different ways, right? That’s sort of like the uniformity. Like what if that’s just like Linux and then, you know. So like when you run a program, instead of running it as JavaScript or something like that, you just run it as whatever programming language you want, you know, Mark can write in Go. And Adam, you can write in Ruby, and it’s like totally fine, you can interoperate.
00:50:01 - Speaker 2: Part of the appeal there is something like Flash. You have to use a very specific programming language and APIs through for the web as well. JavaScript is not a language a lot of people love and yet because you want to be on the web, you need to write things in JavaScript and using the web APIs. And so it sounds like this virtualization method lets you use more of the standard world of desktop computing or server computing tools, uh, but with some of those same benefits of the flash or web style sandbox.
00:50:32 - Speaker 1: Exactly. So you have the ability to think about it as this portable little box, right? As a zip file or whatever kind of metaphor you want to use. This little thing that you can copy, you can send to a friend, you can put it on a server, then you can suspend, and you can resume later.
That I think is a very powerful concept. Like the idea that I can open a FIMA file or a notion document or something. And I can make some changes to it, and I just close it, right? I toss it away. I evicted from my computer, right? I clean up my work desk, and a week later I go back and it’s retains most of its state, right? I can pick up where I left off.
Like, why can’t I have that on a lower level, like, in my experience on the computer? Why can’t that be like below where the windows are? Why is it just taps, right? Why is it not just entire apps or in my entire desktop? What if I had like, you know, 4 buttons on the side of my screen, right? And each button was like one of my different, this is not what I’m built, by the way, but I think this would be fun to have. What if, like, yeah, each button was mapped to one kind of VM in your computer. When you push the button, it’s instantly, like a millisecond swapped your entire computer to another one, then you have 4 computers at the reach of like a thumb, right? Yeah, so I think there now is a really good time to take this idea for a spin, and this is kind of like the technical approach to Playbit, what it is as a piece of software. And again, the goal of Playbit is not to build this piece of software. The goal of Playbit is to create and encourage like the development of small scale personal software. Maybe we can get into that more a little bit later. So like, when I’m building it right now and what I’m trying to get out in the next couple of months is kind of a Macintosh application, and I’m sure I can make a Windows app and Linux up and stuff.
So Macintosh application, you start it up, and what it does is that it uses the the hypervisor of Mac OS and it boots up a Playbit OS which is this kind of based on the Linux kernel. It takes like 2 seconds or so to start it, and once it’s started inside there. You have this feature of Linux called namespaces, which you can use to create these kind of little isolated processes, right? So you can run a program and the program thinks that it’s like ha ha, I’m the operating system, I have all the power, and it kind of appears as that and it doesn’t have to be bothered about it and stuff like that. And those would be the little products that you would build and you would kind of play around with. They can crash, they can write stuff to disk, they can mess with the network. None of that is like leaking out to your real computer and not even to like the playbi OS. So the manifestation of it in the first attempt to creating a piece of software that encourages this playful thing, is this very resumable, very sort of like, Kind of stop and go, pick it up, leave it off type of software that you can play around with like today, like on your computer. And the runtime environment that you have is not the web platform, but it’s the Linux OS. So if you want to write things in in JavaScript, you can do that, right? If you want to write things and see, you can do that too. If you want interoperate between these two different things, you can just like write shit to the file system, right? You can use it as a database or you can build around an actual database if you want to.
00:53:47 - Speaker 3: Yeah, one of the reasons I was intrigued by Playbit is it seems to share this aesthetic I have around kind of collapsing the stack down.
So I think it’s easiest to explain this in terms of its contrast. I feel like there’s this pathology with modern software systems where we keep adding layers and layers and layers, and that’s a few things.
First of all, it tends to make it slower cause you’re going through a bunch of calls.
It also tends to reduce your ability to do things because in order to have access to a feature as a programmer, that feature needs to thread through all the layers. So if any layer happens to drop or corrupt a feature, you’ve lost it.
This happens a lot with graphics APIs because the original middle layers were designed for bitmaps, and then we changed it out to GPUs underneath. But then the middle layers haven’t kind of fully caught up, so you get this weird like impedance mismatch that means you don’t have access to the full power of the GPU. Anyways.
And there’s also this element of you don’t understand what’s going on, because you’re kind of just casting the stone into 19 layers.
Of libraries and, you know, who knows what it does, and that to me really interferes with my ability to play because I don’t kind of know what’s happening. I don’t have control over my environment.
And I like these platforms, these operating system ideas where you squash that way down, you kind of start from scratch again.
OK, we got name spaces and we got the GPU. What can you do now? Well, it turns out it’s a lot if you have a clean slate like that. I’m curious if that aesthetic sense resonates with what you’re trying to do with Playbit.
00:55:07 - Speaker 1: Oh, absolutely. It’s so fun to hear you talk about this, Mark. Yeah, I think that this is very, very real, and it’s something that I care a lot about. I was really early on working and using like no JS and I thought that was very exciting.
And I think what ended up happening with MPM I think it’s still like fantastic, you know, both a fantastic group of people and culture and all of that stuff.
But by making it really easy to pile stuff on top of stuff, people are gonna do that, path of least resistance, right? That’s why you have like someone who says, oh, look at my web server, it’s just 12 lines of code, wink wink, and the wink is like this package adjacent file that says dependencies, long freaking list, and each of those have a long freaking list of dependencies.
And it’s a quick deter to the sandbox thing that we were talking about, like, isn’t it kind of bonkers that like, we don’t dare installing this program on our computer and just run it because, you know, it might just go and delete our hard drive, right? But we’re totally fine. We’re just pulling in some like random ass like MPM packages, right? One of those can just go and like delete your whole hard drive or upload all of your contacts to some remote server, you wouldn’t know, right?
00:56:17 - Speaker 3: This reminds me of a funny, so I gotta mention this, so an acquaintance back in San Francisco has the Ruby jam, I think it’s called bundle, because there’s the jam for the actual package manage for Ruby is called Bundler, or it’s 3 verse. It kind of doesn’t matter. But he got the corresponding shortened or lengthened name by one character, Bundle versus Bundler, and he very helpfully made the jam redraft, download the proper package, but there’s nothing that would have prevented someone like that from just saying, you know, I don’t know, zip up your entire hard drive and send it to the cloud. And to your point, there’s many such cases where we’re only one step away from a disaster.
00:56:48 - Speaker 1: For sure, and in some way, it’s good that people are so open with this and just be, you know, fuck it. I mean, I just wanna get some stuff done, and I think that that is one of my drives for wanting to make this change in the first place. I think software today has just become so very complex.
00:57:03 - Speaker 3: And it’s also not clear what you would do with the sandboxing. Like, I think the sandboxing problem is actually a huge open problem.
We have pretty good technical solutions for sandboxing at the resources. Hardware virtualization level. It’s not perfect, but you can kind of control how much, you know, I owe and network and disk space the process is used.
But if you think at the application layer, so say for example, you have an application that needs to reach out to a few different domains for network requests, how do you enforce a sandbox that’s like reach out to the good domains, but don’t send my data to a bad domain. And what if the data gets proxyed through a good domain to a bad domain? Like, it’s very hard in practice to control these things. And so we’ve done a combination of onerous review processes and punting it slash ignoring it, and it’s not even clear there’s a better option. I think it’s again, it’s an open research question.
00:57:50 - Speaker 1: See, the way I think about that is from the operator’s perspective, the person’s perspective, right? So like you’re sitting in front of a computer and I want you to be in full control. I want you to be educated about the opportunities and dangers, right, but I want you to be able to do anything. If you want to like, put your computer on fire, you should be able to do that. I mean, you pay your hard earned money for this computer, right? So why would it like not like to do shit with it.
Now, if you start with that perspective, and you have some idea of grouping, right, you know, a folder inside a folder kind of thing. If you can say that like this subfolder has these little doors in it, has this little openings in it, right? To the outside world. Yeah, then you’re in control of saying this thing can do that thing, right? And maybe for some people it’s gotta be like, you know, I’m gonna do asterisk or Amir is gonna do Wildcard is it can do whatever he wants, right? And it’s gonna go for it, right? And for some projects, that’s what probably what you want.
With other things maybe you intend to share it with a couple of family members who are not tech savvy. Maybe then you want to say this thing should really only be able to connect to LOLcat.com or whatnot. Yeah. So I think that they’re probably like. No solution that works in all domains, but if you narrow down your domain, I think that there are some viable solutions. This is the approach I’m taking. I can bring up an example of what you can imagine. I have a little drawing in front of me here as we’re kind of recording this. They are sort of played around with. So imagine that you want to make a program that you collect all your bookmarks together, right? Mhm. So you might create then a little sandbox called my bookmarks, right? And now you create a second sandbox called Safari Bookmarkscraper. In this sandbox, you just put this program, it’s a really simple like, think of it as it’s rather than a sandbox is a program, you call it Safari Bookmarkscraper. What it does is it goes to Safari, like on your host file system. It reads the eS file, it parses that, it removes duplicates, and then it just stores those in a local file as local file system, right? And so in the sandbox, you’re gonna say this is access to read this file on my host computer, right? from the outside.
So imagine this little box, and you can zoom into the box, you’re writing the code for your safari bookmark scraper, and you zoom out and now you look at the box and you can now give it little connections, right? So you draw a little thread to your safari bookmarks file on your computer and say it’s got access to this. And the next thing you do is you say this kind of exports, or I’m gonna mount this, again, this is kind of termin but I’m going to mount this safari bookmark scraper. In my play that environment and so my global thing as the safari bookmark scraper. Now I do a similar thing. I build a similar thing for Twitter bookmark scraper, you know, write a little program that goes to Twitter, sets up a little API thing, it puts stuff on a disk. Again, I zoom out and I say give this access to the Twitter website or API thing, mount this at safari Bookmarkscraper. So what we have now, right, is these two files, right? One is called Twitter bookmarks, the other one is called Safari bookmarks. If we read from either of these two files, we get this like really nice list of bookmarks, right? And these lists are really created by these programs, right? At this point, we have this, we have made this kind of abstraction, um, that chooses to use the file system. And now we make a third sandbox and we call this my bookmarks, right? And this program is gonna be really simple. This program just opens those two files. It opens the Twitter bookmarks file, and it opens the Safari bookmarks file, and it just sorts them together, and it draws a simple little UI, right? And now, this is the one we use, and now, on a day to day basis, we just look at this thing and we have a list of all our different bookmarks from all our different places, right? I think if you take this kind of nested approach where you can zoom out and you can zoom in, and when you zoom out, you have the ability to say allow or deny sort of thing, or and map names that make sense, right? So when you zoom in, there’s gonna be some names that make sense within that specific domain, right? If you’re working on this Twitter bookmark scraper, there’s gonna be API key has a specific meaning in that context, right? It’s the API key for Twitter, right? It’s not the API key for this course or Facebook, right? It’s for Twitter. Well, when you zoom out, you don’t care about the API key for Twitter, right? Now you just care about the fact that you have these Twitter bookmarks.
01:02:27 - Speaker 3: It’s sort of like the practice of encapsulation and programming, but for personal data instead of functions.
01:02:33 - Speaker 2: Yeah, well, another way to think of it is the two big Kind of abstractions we have for managing the system resources and all the things that are on your computer, including programs you want to run and storage you want to access is classic desktop, Mac, Windows, Linux, those that came before, which is essentially just totally open access to any program you ever run. There’s the root user concept, but that’s basically irrelevant because it’s just some system things that don’t personally matter to me, and then everything else has total access to everything. And then you have the mobile sandboxing environments, which is a very strict sandboxing per app. Each little tile on your home screen comes with its own storage, but except for some extremely limited things, it can’t really reach outside of that very easily. And so this seems like sort of a third model that gets some of the benefits of that sandboxing, but also gets you some of the benefits of the desktop ability, moldability, programming environments, PlaySpace.
01:03:35 - Speaker 1: Hopefully, we’ll see, it’s still a work in progress.
01:03:39 - Speaker 2: Erasmus earlier you mentioned sandboxing in the context of a play space where I could feel comfortable just doing stuff and I don’t need to worry about messing up the other programs and within that space I can write a little program and I can just do whatever.
And we were also talking a bit about things like the node ecosystem or that sort of thing, and there you’re running software or libraries written by other people and In that context, sandboxing has this security protect you from bad actors sort of context, but it seems to me that the goal of sandboxing as you’re talking about it within the context of the playbit vision is really about this personal software and about writing things for yourself rather than something that’s big scale for, I don’t know, tens of thousands or millions of other people.
01:04:27 - Speaker 1: Yeah, I think that’s right. No matter how you turn and twist on it, like what we’re talking about is like trust, right, and safety, but it’s trust and safety for very different purposes, right? And from and two very different types of actors. Like if you’re building software like very large scale, and you do that in such a way that you enable people to essentially run their own arbitrary like programs in your thing, right? So when we worked the Sigma, for instance, we built this plug-in feature where people can just write some plug-ins that we just do things, right? And it would be shared with other people, so we were like, well. We can’t just make this just run straight into the app, right? If someone writes a bad for a loop likeigMO will crash for everyone who visits this phone, right, runs the fuck. So that type of sandboxing and that type of trust and security, I think that’s lack of trust, right? You’re like, we cannot trust the things coming in, and it’s a lot about safety and security. It’s like, we’re gonna assume that the things coming in because we don’t trust it are bad, right? So the sandboxing here is really the safety net to make sure that shit outside is not gonna be affected. Whereas the type of sandbox that we’ve been talking about mostly today is that it creates a safety for yourself, like an emotional safety for you, right? That like, well, I know I’m gonna screw up, right? I trust myself, but I also know that I screw up sometimes, right? So, when you look at it that way, it is indeed very different, I think.
01:05:54 - Speaker 2: And I think this, you know, smaller scale software is also of great interest to me.
There’s sort of the end user programming angle that is writing stuff for yourself, but even writing for a few people, friends and family, or just a really niche piece of software, I think baked into the assumption about almost all software development is big scale, and in fact it’s almost when people talk about the economics of software, it’s the cost of developing it, you can assume is zero, because that’s true when you get to enough.
Users and customers, if you have many millions or tens of millions or hundreds of millions of customers, the upfront developer time, which is relatively fixed, you can think of as approaching zero, but that’s quite different when you’re talking about 5 users because it’s everyone in your family, or 1 user because it’s just you or 100 users because it’s everyone in your company, and I’m really interested in anything that kind of takes us in this direction of As Robin Sloan writes in his article that I’ll link in the show notes, which is the idea of apps as a home cooked meal and seeing a difference between the kind of large scale food production versus just making something at home for yourself or for a small circle.
01:07:04 - Speaker 1: Yeah, I think that is a really insightful and fun article and idea that Robin is writing about.
And he actually touches a little bit on this, which is the writing software today like has this really steep cliff, right? Meaning that you have to make all these different choices if you’re gonna make something today. If you, let’s say that you want to make this fun little thing over a Sunday, you have a couple of hours, right? And I think that today most people who don’t do this regularly, and I think that the people who do it regularly will like stop doing it for these reasons, is that you’ll be like, OK, you can stretch your knuckles a little bit, you’ll be like, nice cup of tea or coffee, and you’re like, OK, I gotta make this thing and I got several hours, so you start out and you’re gonna be like, OK, should I make this like a web thing or should I like make this a coke app or, you know, um a windows up or whatever, you’re sort of like, hm, you do a little research and take a little while and you’re like, well, maybe I should make this as like web app. And then you’re like, OK, should I write this in, you know, JavaScript, or should I maybe like write this in like this rust thing to web assembly? Should I use like this typescript thing? OK, which like bundler should I use? Roll up or this thing, which plug-in should I use? How to make these MFs work, you know, like, before you know it, you’ve spent hours just making these like choices that actually are not part of the essence of what your Sunday project is about, right? And then you’re gonna be like, well, which of these 100 different databases or ways to store data am I gonna use? And they all have very compelling kind of marketing like idea and like things like, when you read about these things, you’re like, wow, every single project has these brilliant people behind them, right? Every single project like has good reasons to exist, right? And this does not make it easier, it just makes it harder to make a choice. And I think what happens is that you end up spending most of your Sunday you just like poking at different technologies. You just read about all these different things, and you gain knowledge about, like, oh, I now know that there’s CopaScript, JavaScript, TypeScript, and like, X script, white script, and so on, right? And I know that there are these different databases and my SQL is called Maria DB these days and stuff like that. But you didn’t make your thing, right? If you want to learn about those things, maybe you would have gone about it in a different way. And I think there was a point in time when the choices were a lot fewer, right? I’m not saying that’s better, it’s just different, but for this scenario, it’s better. Like, you just end up making much fewer choices, you get started earlier.
01:09:35 - Speaker 2: I’ve noticed that in many learned programming type things, short term boot camps or online resources, they often end up telling you to use.
What’s basically just a command line program written in something like Python or Ruby and your interface is read and write, so you can type stuff in on the keyboard and you print stuff out to a text console that’s essentially identical to what I learned when I was doing programming 30 years ago.
And maybe you’ve got some more sophisticated ways to execute that, like repel it or something like that lets you run, essentially. This Python kind of CLI type thing in your browser, but I think it’s for precisely that reason that all those choices and options and infrastructure that probably do make sense for large scale software just make no sense for someone who wants to just quickly learn what is this programming thing and how can I get to a satisfying result of writing my own program that does something interesting.
01:10:34 - Speaker 3: Yeah, it’s kind of recapitulate.
I think there’s several things that conspire against the informal novice personal programmer.
There’s all of the choices, there’s the complexity of the platforms, and increasingly there’s the kind of forced hurdles of the platforms, especially on mobile, where if you want to build an iOS app, for example, I think you need like a developer account and you got to get basically permission from Apple to run the stuff on your own devices, and you got to use their language and their SDK and everything. And this also relates to the idea of ideally having a gradual ramp. So I think the Unix ecosystem for all its challenges is actually a really good example of this. So you can start by just having a series of commands that you kind of remember and you string together on the command line to do whatever, you know, cat pipe, filter, you know, whatever you’re trying to do. And then you can anneal that as a little script that you save and give an execute a little bit to, and then you can eventually perhaps it becomes more sophisticated and you rewrite it in Ruby, and then later you want it to be fast, so you write it and see, and later it becomes a bigger deal, so you want to put it in the package manager and eventually gets promoted to the OS and enshrined in the standard, right? And those are all on the same path and there’s a, there’s a clear step from one to the other. Whereas in a lot of our systems, either there’s a huge jump to get started or you hit a wall at some point and you have to Kind of change the way you’re doing it. So there’s no gradual ramp. And I think that’s important, not only because of the accessibility element of perhaps you want to just get started programming or you want to do some personal programming, but also because, again, this intellectual humility element of it can’t be the case that all of the good software ideas come from the programmer priest class, right? You know, the people who know all the incantations for setting up weback or whatever. It needs to be the case that you can write a mod and it eventually becomes a huge game and the equivalent for other domains.
01:12:10 - Speaker 1: With the video games, I think this ramp you’re talking about is pretty crucial to the experience, you experience, right? If a game is incredibly hard on the first level, you just gonna give up, right? And it’s not gonna be fun. If a game is like super easy, right? Then similarly it’s gonna be in a place where, like, why am I doing this, right? Like the perfect sort of like game has this like flight of stairs where level one, you take a small step off the first flight of the first stair, right, and you kind of feel, oh, I took a step, right? And you know, there’s there’s so much art and magic to like making a game that works well, right? But like, ideally you would take these small small steps over and over and some steps are a little higher, right? and some steps are a little lower. But the experience you have there, and I think this kind of like compliments the way you’re talking about Mark, which is, you were saying you pipe some stuff together, you put it in a shell script, right? You make a Ruby file, you make a C program, you make a real and so on. That is kind of utility and that’s the ability to grow.
And I think to complement that, there’s also this user experience that is important of like feeling that you’re making progress as you’re building things, right? Because a big reason for why a lot of us are making these things is because we enjoy it. And I don’t know about you, but I don’t enjoy spending 3 hours picking like a JavaScript bundler that can do the things I want and trying to like choose one of the 184 different services that AWS alone provides, right? Now, Google Cloud has a similar number, right?
01:13:37 - Speaker 3: Yeah, and it’s also. Reminds me, and it’s one of the reasons why I’m so excited about projects like yours, and I think they’re so important.
Suppose we want to have new and different and better computing platforms. Well, the reality is that if you want to build them outright, it’s going to cost, I don’t know, at least $100 million and probably a billion dollars plus, like just to get all of the engineer years, you need to actually build everything up from scratch. It’s As an empirical matter, it’s just a huge investment and unless you’re one of a small handful of companies, you can’t do that outright. So you need a trick. And I think the trick is making the programming game, you know, making the programmers actually want to build up the pieces around the platform over time. So you start with something that’s like a raspberry pie or a playbi. It seems like a toy, it seems like something you just play with, and perhaps over time you can build up more pieces and get a new computing platform. That’s my hope that someday we’re able to get there.
01:14:24 - Speaker 1: Yeah, I love that. It’s sort of like Dream, I think it’s called for PlayStation 4, where you kind of build these things, you share them with a shutter.
The web is very much like that, right? People kind of like building things and remixing stuff.
There’s an article, it’s kind of old, it’s titled The Cathedral and the Bazaar by this guy called Eric Raymond. Classic, and it’s kind of like a a long piece, but I’m sure Adam, you can add it in the notes link to it, but it kind of like reflects a little bit how the Linux project. So this very unique approach to software development, where you have essentially this guy in a bathrobe, you’re sort of like coordinating some emails here and there, and then you have like 1000 people around the world, just building stuff, and this is the bizarre metaphor. You have this babbling bazaar of just like, all these different little vendors, right, all these different ideas, all these little like things people are building for the Linux kernel. And somehow you look at this and you’re like, this is never gonna work, right? This is total chaos. The quality is gonna be shit, like it’s gonna be incohesive, the cathedral model is much better, which is the kind of the monolith the, the team with the leader and the sprints and all of that stuff. Right? But somehow Linux is like by far, far, far, right? The most high quality, most stable operating system in terms of global use, right? It is easily the most deployed OS, right? Like every Android phone, every server pretty much it’s all Linux. So I think it’s interesting when you think about like, if you can create a culture that is like a bazaar, that is a bazaar with like a theme, you know, like people, the vendors in this bazaar, the people who go there to shop around. To explore things, they’re they’re under this kind of shared umbrella of like, you know, we’re gonna make software for each other, you know, we’re gonna make this little program for me and my family, right? Like Robin did. Or I just want to automate this thing that I do all the time. I’m gonna make my own little note taking app, right? Like, this is the sort of play the bazaarre that I hope can exist one day, you know.
01:16:28 - Speaker 2: Well, we’ve been going a while. Before we wrap it up, I thought it would be fun to hear from each of you what is an example of software that exists today or that you’ve used in the past that you find playful or exemplifying the spirit of play.
01:16:43 - Speaker 1: For me, I think there’s a lot, it’s it’s tough to name one, but Macromedia director, or it’s called um oh gosh, I forgot now. It was called something else before it was acquired by Micromedia, but Micromedia director, I’m gonna call it that now. To me that was just this incredible software that offered me to build something that felt real.
It had a very narrow set of constraints. You had to write in this like, actually pretty bad program language called Lingo. But it had all these primitives and stuff for like making things that felt like real desktop apps, and it didn’t in a pretty approachable way at the time. And so for me, Macromedia director like it was a very interesting blend between utility and playfulness that also really inspired me.
01:17:26 - Speaker 2: Nice one. Yeah, for me, I was recently thinking about some of my youthful time with computers, and I’m kind of an 80s, 90s kid. And there’s lots of cool stuff going on then with the demoscene and BBS culture and that sort of thing, but I spent a good bit of time in these mod trackers, which are basically once computers could play back samples and could play multiple samples at a time, you could finally do something that resembled sort of real time music creation, but it was still very limited.
But these things were kind of divided into 16 sections and kind of like a drum machine, a little bit, but a little more, it created this particular aesthetic of music, which also probably connected also to the aesthetic of that time, yeah, again, like demoscene and and BBS World, but I spent far too much time playing with them. on one hand, yeah, you say it’s a tool for creating something, but on the other hand, it had a not very serious sense to it because it was this specific computer scene art. No one thought you were going to be composing an orchestral piece that people took, let’s say seriously. It was clearly for fun.
01:18:37 - Speaker 1: When I lived this stuff called Mobilities. Clubs that had all these nerds like myself perform these kind of mod music, usually on like a modified Game Boy, and it would go on stage, and it will make some little like cool like in air quotes kind of demo thing, and it would kind of play on the Game Boy, you know, this kind of like mud like bit like music and yeah, you’re totally right. I think like no one there thought there was gonna be like, you know, the next Madonna or Childish Gambino, whatever. Yeah, it was just like out of pure fun, you know.
01:19:07 - Speaker 3: Yeah, and for me, I’m a huge fan of the raspberry Pi project. I actually kind of surprised myself. I got one because basically everyone else was getting them I’m like, Mark, you should get one of these. I’m like, OK, and you know, they’re cheap, so they’re accessible and didn’t expect you to be the type to bend a peer pressure mark.
01:19:23 - Speaker 3: Yeah, yeah, I got it, and it, the amount of kind of polish and accessibility was so impressive. You know, just having this physical device that you can just start. Plugging stuff into and it does things in the real world. That sounds so simple, but in all other computing platforms that’s become so harder and indeed in many cases impossible. And having this device you have full control over, you can do whatever you want, you can reformat it, you can plug in all these wild peripherals. That was very accessible yet empowering, and it gave me a glimpse of what I think if you play it out a half dozen steps, that type of platform could become.
01:19:54 - Speaker 1: I want to share this, by the way, I was playing around with these flipped out this place. Oh yeah, yeah, I’ve seen these. So, there’s a couple of Swedish friends of mine, they have this small company called Teenage Engineering that it is really cool, like audio equipment and stuff. And there’s some kind of contracting work too. They did this like really huge display with these, they built together hundreds of these into a massive display at a hotel in Stockholm, and I got a couple of these things that I hook it up to a pie and a real little, I had to reverse engineer protocol. So I bought these from the company, it’s like a Polish company called Alpha Sea and the Protocol was like really simple, but it’s kind of like serial port thing.
But this is really fun, and I listened to what you say, Mark, about how like physical it is, like the flipped out display is like in all senses, terrible compared to anything else. It’s loud, it’s expensive, it’s low rest, blah blah blah.
01:20:49 - Speaker 3: The loud is a feature though, the flippy sound, it’s all about that.
01:20:55 - Speaker 2: Yeah, my experience with Raspberry Pi was similar. Even the hello world, which is essentially just plugging in an LED and getting it to light up.
Why is it that getting an LED you plugged in yourself to light up is more satisfying than, for example, lighting up a pixel on a screen? I don’t know, perhaps it’s that we spend so much time in the virtual environments that being somehow out in the physical environment, but then being able to access that through the power of computing and programming is something quite magical to that. Well, let’s wrap it there. Thanks everyone for listening. If you have feedback, write us on Twitter at museAppHQ or via email, hello at museapp.com. You can help us out by leaving a review on Apple Podcasts, and I’m really looking forward to playing with Playbi. Thanks for coming on, Rasmus. Thank you. See you both later.