Future of Coding - Making Your Own Tools: Devine Lu Linvega

Episode Date: February 4, 2020

We live in a world that is gradually becoming more closed off, more controlled, more regional. Our relationship with technology is now primarily one of consumption, buying new hardware on a regular cy...cle, using software conceptualized to meet a market need and fulfill promises made to venture capitalists. It's common to hear people talk about both computing hardware and software as though they were appliances, not meant to be user-serviced, not meant to be modified. The tools we use are being designed for the 80% who live in a city, use grid electricity, want to keep up with the industry, and have an unacknowledged learned helplessness about the limitations of their tools. Devine Lu Linvega and his partner Rekka live on a sailboat. He makes art, music, software, and other cultural artifacts. When Photoshop's DRM required that he maintain a connection to the internet, he wrote his own creative suite. When his MacBook died in the middle of the ocean, he switched to Linux with hardware he could service. His electricity comes from solar panels, and every joule counts — so that's out with Chrome and Electron and in with Scheme, C, assembly, and maybe someday Forth. I wanted to interview Devine with a main focus on just one of the dozens of tools he's created over the past few years — Orca, a spatial programming environment for generating synchronized realtime events. It's ostensibly a tool for music, but has been applied to all sorts of other disciplines in wildly creative ways. Devine and I ended up talking for over three hours, and after editing out everything superfluous there was still too much matter for just one episode. So we're going to take this in two pieces. Today, you'll hear the bits of our conversation that covered everything other than Orca — Devine's philosophy, the stories of his other tools, the ways in which boat life have forced certain technology choices on him. On the next episode we'll have the rest — a deep dive into Orca, covering the thinking and story behind the design of the tool, the community that has picked it up and run with it in all sorts of wild directions, and lots of little nooks and crannies in the space around this fascinating project. My hope is that the topics discussed today will let you see from Devine's perspective, so that when we look at Orca in detail you can appreciate exactly why it is the way it is, and take away valuable lessons for your own projects. Given that his most recent explorations have been making art and programming tools that run on the NES, the best quote of the show has to be: "I never want to have a stronger computer than the one I have today." Links Devine Lu Linvega is our guest. He and his partner Rekka funnel their lives and creativity into Hundred Rabbits. Devine has created countless tools, but Orca, Ronin, Left, Dotgrid, the 1-bit drawing tool Noodle and it's 3D scene layout tool Poodle are particularly fascinating. His website is like a wiki, a time tracking tool, and an alternate universe. Devine released a series of beautiful illustrations for Inktober. Repl.it is our Sponsor. Email jobs@repl.it if you'd like to work on the future of coding. Folks interested in energy-efficient spatial programming should watch this Strange Loop talk by Chuck Moore about the Forth programming language. Potentially similar projects include Inferno and ChrysaLisp. The resilient, living systems of Dave Ackley are also fascinating. The transcript for this episode was sponsored by Repl.it and can be found at https://futureofcoding.org/episodes/044#full-transcriptSupport us on Patreon: https://www.patreon.com/futureofcodingSee omnystudio.com/listener for privacy information.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to the Future of Coding. I'm Ivan Rees. We've been on hiatus for the last half year, and I am pleased to announce that the podcast is back. I've spent the last two months planning, recording, and editing a slate of new interviews, and I'm very excited to share them with you. That's the good news, but you might be wondering why you're hearing from me and not your regular host, Steve Krause. Well, that's the bad news. Steve decided to step back from his role as chief podcaster and organizer of our community, and he appointed me as his successor. I'm sad to see him go, humbled that he asked me to take over, and hopeful that you'll stick with me as I find my footing. The backbone of the show
Starting point is 00:00:46 is the guests with interviews that dig deep into their thought processes, how they see the world, and how that manifests in their work. I want to continue the tradition of highly technical discussions about computer science and toolmaking and broad exploration of things people do with these tools, whether that's science, the arts, or education. I also want to create a new space for some of the people in our future of coding community to share what they're working on, and you'll hear more about that a little later this spring. One area where I will be investing a lot of effort is the production values, like the audio quality, the show notes, transcript, and the sonic identity of the podcast. You'll notice a new sound at the beginning of
Starting point is 00:01:31 episodes, which I'm calling the startup chime. I think it's a fun way to aurally invite you to the episode. It also opens up the possibility space a bit, allowing other sounds than just the voice to be a part of the show, and you'll see what I mean by that in the next episode. My goal is to release at least one new episode every month, or more if time and my life allow it. And now, on with the show. My guest today is Devine Liu-Linvega, an artist, musician, and programmer from, well, everywhere. Devine has spent much of the past few years living on a sailboat, and as you'll see in the interview,
Starting point is 00:02:17 this gives him a very unusual perspective on software that feels both decades behind and decades ahead of our contemporary practice. My conversation with Devine lasted more than three hours, so I've decided to split the interview into two pieces. Today, you'll hear about the large ecosystem of tools Devine has created, how they're a reflection of his personal values, how he decides when to build a new tool, and how these custom tools let him make decides when to build a new tool, and how these custom tools let him make very unique art, music, websites, and more. On the next episode, we'll do a deep dive into just one tool, Orca, a wildly unique visual programming environment that is ostensibly a tool for music, but has also been used for
Starting point is 00:03:02 things like procedural animation and robotics, with an aesthetic that feels like a video game from an alternate history where the Macintosh was never created and DOS terminals ruled the earth. Devine and I talk about the history of the project, picking apart a number of nuanced design decisions along the way. We also hear how Devine found a user community that embraced Orca and pushed it in all sorts of new directions, how he landed a massive breaking change to the syntax of the language, and of course, lots of technical details about how the tool works. To start the discussion today, I asked Devine to explain how his work relates to his view of the world, and he responded that it's all about context.
Starting point is 00:03:46 Throughout our conversation, you realize that while all of these little projects that I'm working on seem like different things, they're really not that different. Like the connecting thread that you'll find in one and the other, it's what I usually call context. I spend quite a lot of time just building tools that would allow me to share context. In most cases, in the work that other peoples do, if they had dedicated a tiny bit of time to share the context, that would make the things more understandable and exist as a part of something bigger. Because I hate consuming things as separate little planets. What I like is to get a better sense of the whole ecosystem of someone's reflection and also you know like your favorite musician you look at you listen to their music
Starting point is 00:04:29 and you're like wow what kind of person could be behind this and even if the artist didn't decide to be truthful about who they are and what they do even building some sort of narrative around their work I find is a way that communicates some context that makes the work more enjoyable and also long lasting. I mean, we're people who think in stories, especially today with Twitter and Facebook and all these things that just try to take the context away from people's own personal websites into their own silos. It's harder and harder to kind of like appreciate the full picture of the work. I'm glad that you mentioned people having their own websites because your website is fascinating as opposed to a lot of people who are doing work on the internet where these days for programmers, the norm seems to be that you have a GitHub pages website that has a couple
Starting point is 00:05:16 of pages on it or a blog or something like that. Your website is more like a wiki, but a wiki that only you get to edit, which is a really interesting feeling for being invited to explore somebody's work. It's something that I'd love to see more of where like you're saying context, each of your projects is presented as here's what this is, here's why I made it. And then links to other projects that are used by this project or vice versa. You try to make the connective tissue between your work really visible. One of the things that you've made is your own system for, um, uh, like how do you say this? Your own encoding of time, like your own sort of calendar and your own clock and that sort of thing. I, I, I, I was like, I know where this is going.
Starting point is 00:06:03 Yeah. Yeah. Yeah. I think a lot of people see them and they was like i know where this is going yeah yeah i think a lot of people see them and they're like oh this is too complicated you know like your mind just kind of like erases them but um it's actually pretty pretty clever it's not a system i made up um for for so it's just a system i i found which i was like wow somebody found something that is like made this some this thing that is just brilliant. I think it's, it's maybe like 400 years old. Huh? Well, so I have two systems,
Starting point is 00:06:28 right? I have a time system and a date system. So the date system is the alphanumeric thing. So it's like, it breaks down the year in 26 periods, 26 months, I guess, of 14 days.
Starting point is 00:06:42 So what you end up with is that you have from a to z and every letter of the alphabet is a month and you have 14 like days yeah that you can and i just found that it was like the best scrum period or something like like you can start a project prototype it in two weeks you have some a working copy and at the end of the letter you can decide well is it still worth you know bringing bringing onto the next month i find just you can expect this month to be equally the same amount of days is a good way to to do work basically that makes a lot of sense um i i wouldn't have thought that it had that practical merit to it. Because here I am thinking like, if I were going to adopt a system like that, it would be purely for the aesthetic reasons. It has a very different
Starting point is 00:07:31 feeling from the Gregorian calendar. Yeah, that's usually not a good approach. The aesthetics of it can take you in, but you have to find a reason that would make sense in your workflow. For me, counting on my knuckles for the number of days in a month, I didn't find that super practical. And I'm not super tied to the lunar phases. So I guess I was like, well, maybe something more predictable would be neat, especially in the kind of work that I do, which I don't have. Like weekends are not any different than weekdays.
Starting point is 00:08:03 I just found that was a really elegant system to work with. For the time, I think it's called the swatch time or something. You know, like there's a company, like they make your watches and... Yeah, swatch. Yeah, so the swatch made a time system that is decimal. It's just very simple. Noon is 500 and 999 is midnight. It gives you a tiny bit more granularity during your day
Starting point is 00:08:28 and just working with this i found it was really nice i usually work with pomodoro systems and i have a pomodoro of 30 beats which is the swatch time i preferred 30 beats over 25 minutes it's easier to break down in shorter periods. That's just a personal preference. From the way you've described both the date system and the time system, you've emphasized that it helps you organize your rhythm of work. How serious are you about organizing the time that you spend working? Is it something where if you don't have those sorts of structures, you feel a bit rudderless, um, to make a terrible pun? Was that a bold pun? Yes. Yes. Um, or is it, uh, is it the sort of thing where you find it adds cohesion? What is it for you that, uh, that draws you to those sorts of ways of organizing your time? Well, it's multiple things.
Starting point is 00:09:28 So one thing is that I'm terrible with time. So let's say, you know, like during these past four years, I made like, let's say, one or two games, and you'd ask me like, oh, so how many time did you spend working on those games? And I would say, I don't know, I would just make up a number that sounds like it would make sense but but I would I would actually have the data so usually when I look at the data and after like just putting out a random number I
Starting point is 00:09:52 realize that I have no sense of time like my my understanding of how something takes is terrible and also even like how enjoyable something is like I have a way of tracking that gives me a bit of an of an idea of how focused i was doing something and that's kind of correlating a little bit with how invested i was in doing that thing at the time and sometimes i'm like oh yeah that project was had a blast it was great and i was like really into it and but then i realized that actually i had other projects that were way more appealing at the time and i would in which I was way more invested and keeping track of these little things, understanding that I am terrible with remembering how much time things took and
Starting point is 00:10:30 how I appreciate doing these things. Now at least I have some like some data I can rely on. So I, well, if anything, I can use that to plan. So if I want to start something new, I'm like, well, there's no way I can do this in 200 hours because last time it took 400. I might have a sense that it's doable, but the data that I have clearly says that that's impossible. Do you feel like the data that you're collecting is helping you make more accurate predictions about how you're going to work and how you're going to feel? No. Yeah. Interesting. no yeah interesting so it sounds like it's um it's enjoyable to have that data because it helps you reflect it would be interesting to look back on a project that you'd worked on and think right
Starting point is 00:11:15 now i feel like that project was a blast and it was wonderful and then you look at the data and go oh but i actually felt terrible while i was working on it like i could see that being interesting but it doesn't help you look at a new project and say, I think I'm going to feel good about doing this one. Not really. So that's the whole thing about tracking. I think it might help in subtle ways. It definitely has worth that I can't really explain. And it's worth is definitely not that it helps me not make mistakes. Like the whole quantifiable self and that kind of way of doing things. I absolutely, I do rigorously every day,
Starting point is 00:11:53 but I know that it doesn't really work that well. For instance, these kinds of systems are really bad at looking ahead. Let's say like, okay, so you discovered like 16 new music album and you watched 13 movies and you read three books and like a book correlates in like 16 hours of output and movie like seven and a video game like 12 well the thing is that these systems always look backward i made tools that would make prediction but the only thing that it can tell me is that it can look back really well but it has a really hard time figuring out where i'm going and what i should be doing which is fair i mean so basically the way i did it is like well you know like these past few weeks i have a sort of trend in my productivity and i can decide to
Starting point is 00:12:45 do the thing that the system thinks would bring me back to my average productivity in a specific sector so let's say like i usually have you know 16 hours of music per week well if i'm under this more than the under under the amount of hours i do in visual sector then it will say like well tomorrow if you're doing audio by your average productivity and the way you do output would be your best, your most productive sector or like domain of, I guess, work. So I can decide to follow it
Starting point is 00:13:17 and that would reinforce that pattern and I can choose to not follow it and create new patterns. The statistics from following or not following is not so far from 50%. So like, it's not that much better than doing whatever the hell I want. So just, just to get clear on this, you're also tracking whether or not you follow the predictions that your tool is giving you based on the data of what you've done in the past. Yes. That's amazing. That's very cool. It's neat to hear that it's 50-50. Yeah. And I mean, I look at other tracking system and I'm always kind of looking at ways that they might, I might have overlooked something, but yeah, it's, it's, I mean, we're fluid like creatures and sometimes
Starting point is 00:14:03 like the Inktober. Inktober is an annual event that happens in October where people create a new work of art every day and post it to social media. I decided to do Inktober this year and that just breaks all patterns. This is just, I'm going to pay for this for the next few months. I decided that I would invest four hours a day for a whole month well for like for two uh so so for four weeks i would um i would do this one sector even though the system would increasingly shout louder in my ear that i should do something else i i went through this but what's going to happen is that's going to create a precedent
Starting point is 00:14:43 that just raised the number of hours that i can physically invest in in visual arts like but but that was totally enjoyable like i didn't i mean i don't feel bad at all of having broken that pattern and that kind of served as a sort of experiment that i might be able to use in the future anyways but there was no way that the system would have predicted that would have done that and not having done this i think might have been more costly in my general output. There's no way of knowing where you're going and why you're doing anything. So you might as well just, whatever,
Starting point is 00:15:12 like you can have a look and make a decision and play along or just follow your own intuition. But for Inktober, I feel like I did the right choice of not listening to my system. This is interesting to me because it gives me another way to look at your work. You make a lot of tools, and those tools are all very small and very focused, and they sort of interact with one another in interesting ways.
Starting point is 00:15:37 It sort of feels like these tools are collaborators of yours. Hearing you talk about your relationship with the way you're tracking your use of your time, building tools to make predictions for it that tell you how you should spend your time. To me, that sounds a little bit like you're creating like another agent that you're collaborating with. And that agent is very rudimentary and it's based sort of on like an echo of,
Starting point is 00:16:05 of what you've done in the past, but it's still fulfilling some of the roles that you would get from say, you know, if you're in a band, your bandmates are going to impose similar sort of constraints on how you should spend your time. Like they might say, you know, we have a gig coming up in a week and our set is terrible. We need to book a lot more time rehearsing over the next week. Or somebody might say, I'm going away to live in South America process, like that feels sort of similar to this. Is that how you relate to it? Is that what it feels like for you? Or is it something else? Well, the wiki is a completely different tool
Starting point is 00:16:53 than every other tool that I made. But that one tool is kind of like a project manager, like what you're describing. Like it's like, oh yeah, you think you can do this in 200 hours well you have no antecedent of having being able to do that in this amount of hours so like why would you even and and and in this it has a sort of like prescriptive uh i don't know like a reminder the other tools that i make usually i don't see them as collaborators they're more like
Starting point is 00:17:22 you know they're just like tools they're're just there to get me someplace with the least amount of friction imaginable. And you don't relate to them in a way that sort of, earlier in our conversation, when I sort of said like the reason I would adopt an alternative system for dates and times would first of all be about the aesthetics of it. You sort of scoffed at that. Is it that you don't really like imprinting agency or imprinting sort of like a humanity on inanimate things? Oh, no, no, no. I absolutely love anthropomorphizing things,
Starting point is 00:17:56 especially the ecosystem that we created as Underrabbits. We've given like little character faces to all the apps that we made, and that just reinforced this sort of like personality that the software might have when i look at ronin i i see the character that's kind of like a bit dreamy and lost and kind of like hazy little creature but the orca is more like a trickster and also like a sharper kind of thing and but but but my website I don't have this sort of attachment to it. It's more, I guess I'm part of it and of me kind of thing. So it doesn't feel like an external force. It's more like a mirror.
Starting point is 00:18:36 Yeah, like maybe the mirror in Snow White, I guess. I do my own sorts of time tracking just for tracking my hours for my job. And when I look at how I've spent my time, it feels a little bit like looking in a compost bucket. Like these are all the, you know, the remnants of the things that I've been eating over the last day or two. with the computer where it's telling you what to do because you told it to tell you what to do. But at the same time, you have to look at that and say, no, but like you said, when, when doing inktober that you were going to pay for this over the next couple of months. And I'm wondering like, what does that mean? Where does that come from? Like, why would you think like you're going to pay for this? Like that sounds, that sounds punitive. Where's that mean where does that come from like why would you think like you're gonna pay for this like that sounds that sounds punitive where's that where's that feeling of punishment coming from all right so if we look okay so for audio for instance so let's say well you'd write music as well i think so you know for me music is like the best music i get from
Starting point is 00:19:40 holding off making music like the like the it has a sort of like a really strong, like the best music I've written, I've written after not making music for as long as I could. So like if I gave in every single day to writing music, I would have a poor output, poor general output compared to if I, I have an idea, but I just let it ferment in my head for as long as I could.
Starting point is 00:20:08 And then when I just feel like I'm ready to burst, then I actually do it. And then I found the most focused, productive periods that I had, especially for music, because this sector for me is kind of unique in that sense, has been after like holding out for as long as I could. Visual, so for the inktober usually I usually draw a little a few times a year and that is it but I still like so my impression of visual arts is that you don't really explicitly need to be doing it every single
Starting point is 00:20:38 day to get better I might not draw for two months but the next time two months later I draw surprisingly I feel like I have improved. It could be for my eye having gotten worse and my appreciation of things gotten more accessible. But no, like after a while, just looking back, I feel like, no, there definitely was an improvement. But I feel like it came from other sources than actual direct drawing. And if I start to cheat these patterns that I have like if I just decided you know like let's forget that I need to hold off writing music to actually get good work out and I'll just spend an hour making music every single day which I tried it took me a while to recover
Starting point is 00:21:16 to be able to write music of a good enough quality again and and for Inktober my fear is that this would extinguish the already small flame that i have that makes me draw in the first place by just like draining it dry i feel exactly the same way about the music that i make and also the programming that i do when i need to do programming that is not just bugs that need to be fixed or features that need to be implemented, but, you know, difficult design work that needs to be done or abstractions are not what they should be. And I need to come up with a unifying concept. That kind of work is very similar to how I feel about making music, which is exactly what you've described. There's only so much of a flame that I have for it. It's very easy to extinguish that.
Starting point is 00:22:05 And it takes a while to rekindle. Do you also feel that about your programming? Or is the way that you relate to programming different yet again? Yeah, the way I relate to programming is different. I can do endless maintenance. So I use that. Actually, I found that a good way to hack music writing. Okay, actually, I guess that's a good way of hacking anything.
Starting point is 00:22:27 I noticed that I have endless patience for maintenance. So the more I can offload into the maintenance sphere, the more I can sneak in a bit of music, a bit of visual arts into my things. And that's a fancy way of saying that somehow automating boring things is actually efficient like I don't think I would have been able to get through Inktober by sheer investment of time in drawing after five days I was already done I was like that's it there's no way I'm going to be able to keep moving forward with drawing I had to offload a bit of the visual tasks into the maintenance thing so what I started to do is I made a tiny tool to do the Inktober.
Starting point is 00:23:08 It was just a drawing tool. And like, you don't need much, right, for a drawing tool. It was just like 100 lines of code. But every single day I found when I went to bed, I thought of both my illustration and a technique that I would want to use. What I did is usually I would make a tool designed specifically for that technique so I could draw that picture and just the shifting the sort of like the mindset from maintenance to drawing and back and forth allowed me to survive throughout the
Starting point is 00:23:37 months because otherwise from just drawing I would have run out of the juice from the beginning. That's something I've been kind of testing with recently. So Orca was a good way of hacking back into music. So what happened a few years ago is that I completely extinguished the flame that I had for audio. There was, you know, like a subsequent show that I was playing and then I started to write more music than I could afford. And what happened is that I just ran out of ideas. And when that happened, I thought maybe I'll never be able to write music again. But Orca was a way of gradually rekindling that flame by just sneaking audio tasks via programming. So I would create little programs that would inspire music, that would inspire the audio mindset. And gradually that came back and i've
Starting point is 00:24:25 orca basically revived the flame that i had for for sound and music and all this just just by hacking tapping into the sort of like maintenance little low hanging fruit programming things that i had in mind i think i get the the feeling you're describing and the and the drive that you're describing but i wouldn't use the word maintenance i want to drill into that slightly to see if we're feeling the same thing okay so you know like the the time tracking system that i have that it has three three numbers so every single day for as for output i track using three numbers like a little code you know like 345 and 127 the first number is is the sector, so either audio-visual or programming. The second number is
Starting point is 00:25:07 the vector of extroversion and introversion of the task. Showing something would be an extroverted task, and watching something is an introverted task. Maintenance, when I say maintenance, basically it's the shorthand that I use
Starting point is 00:25:23 for saying something that is introverted so like something that doesn't really change like let's say if if we if we looked at that vector from like you know plus 10 and minus 10 where it's at near zero you get these tasks that don't really move the project forward i am very comfortable at in this space i can spend countless amount of time doing tasks that are basically just maintenance, just improving, reflecting on how the thing is built or even generally building tools instead of building an actual game. You know, like it's like the easiest way of procrastination. You could directly attack a problem or you could spend an endless amount of time making an engine for getting the thing. So in the sense of getting an end product that is a game making an engine is like a super kind
Starting point is 00:26:09 of introverted task because this is not going to be front-facing and i am i could do that's where i could act in that space forever so when i'm out of juice basically of like direct action juice basically i just try to like exist in that space and be productive in this sort of maintenance stuff and usually it's good for kick-starting a new project or just getting myself back into a state where i can do finished projects are there kinds of programming that you have to do that don't feel like maintenance and if so what kinds of programming are that i I find game design, level design, uh, animation, like a assets animation, right. In a game, this sort of programming is, I find it's like a very, very direct, like you tell the computer what you want, like you and how to do it. I think I find it's very,
Starting point is 00:26:58 very extrovert. And I have a hard time sometimes tackling, um, these sort of tasks, like repeatedly the kind of programming I hate the most is animating assets. I i have a hard time sometimes tackling um these sort of tasks like repeatedly the kind of programming i hate the most is animating assets i have a really hard time putting days of that sort of programming one after the other but i can do endless amount of tasks of relinting my code and adding comments and you know yeah and and you know fixing up names or exactly reorganizing things yeah and so you say animating and other asset creation. Is that something you're doing by writing code, you know, like writing new systems? Or is it where you're using the tools you've built to sort of create the data for those animations? Well, in an ideal world, I would already have libraries that I made to do this, but I haven't really.
Starting point is 00:27:45 I'm fairly new to, well, I guess I'll be fairly new to programming forever, but even though I've been doing that for years now, I feel like I'm only starting to grasp the basics of how I can be efficient with programming. Recently, I've been compartmentalizing a lot of the things that I do repeatedly. It hasn't really reached that kind of stuff yet. I still do all the animation by hand for moving assets around, and that kills me. But right now I'm refactoring two games that I want to release, and this is the last time I'm doing this.
Starting point is 00:28:23 It's the last time I'm doing this by hand. That means then you now have the impulse to make better tools so that you don't have to do as much of it by hand the next time you're doing this. Yeah, I didn't really understand the problem at first, so I could not have done it sooner. I'm usually 10 years behind common practices. So I don't know, I guess I would be like 2009.
Starting point is 00:28:42 I don't know where JavaScript was at the time, but that's pretty much where I am at now. Yeah. You have good company there in me, because I've sort of looked at what JavaScript has done over the past decade and said, no, thanks. So glasses, really, you can do that. Like my code still looks like, I don't know. It hasn't really changed much, I guess. At this point in the interview, Devine's internet connection died. And rather than just edit around that technical hiccup,
Starting point is 00:29:16 I figured this would be a good place to put a sponsor break. Repl.it is an online REPL for over 30 different languages. It started out as a code playground, but now scales up to a full development environment where you can do everything from deploying web servers to training ML models, all driven by the REPL. They are a small startup in San Francisco, but they reach millions of programmers, students, and teachers.
Starting point is 00:29:39 They're looking for hackers interested in the future of coding and making software tools more accessible and enjoyable. Email jobs at repl.it if you're interested in learning more. Thanks to Repl.it for sponsoring the transcript of the podcast, which you can find at futureofcoding.org slash episodes slash 44. And now back to the interview. Can you name all of the software tools that you've made and give like a 10 second description of what they do? So the ecosystem, which is how I call it,
Starting point is 00:30:18 that we create at 100 Rabbits is basically one called Left, which is the tool that we use to write. It's a very simple writing tool, except imagine Word, but with auto-completion. Maybe Word does it now, but we wanted something that was cross-platform, that worked on Chrome OS, because we live on a boat and we don't have that much power. And one of the devices that we use for writing is a Chromebook, which only has Chrome, so it had to work in the browser. But it has some interesting auto-completion things,
Starting point is 00:30:50 and it's the thing that we use for long-form writing, usually. How does it derive the auto-completions? Where do they come from? It builds a dictionary from everything that you write. Oh, okay. So over time, it just has a good idea of what you're trying to write. So it's that classic using a database to do a perfectly good job of things
Starting point is 00:31:08 that everybody's trying to do with machine learning nowadays. Oh my god, don't get me started on that. Yeah. But yes, all the problems that we make are very, very simple. So this one is the simplest. Dot grid is the thing that we use to make vectors. So we do a lot of typographyography or iconography and i'm not a super fan of gimp and inkscape no me neither so i was like you know sometimes you just want to have
Starting point is 00:31:33 a freaking circle with a cross in the middle and then you're fighting with like 0.005 decimals on inkscape and i was like i just want something simple to make SVG files or something that can laser cut or whatever. So I just made a program. It's almost a single file. It's a very simple thing. It works in a browser. Anybody out there, if you need to make a logo for your project, go use DotGrid.
Starting point is 00:31:56 It's very cool for that. Super simple, all keyboard operated. Well, actually, with DotGrid, I created all the iconography for Rokka. The other one is is ronin which is what i used for doing batch resizing it does a whole bunch of stuff now but the idea was that you know you take a bunch of pictures and you want to resize all the pictures to after size and export them into jpeg with a new name there's all sorts of ways of doing this with
Starting point is 00:32:19 the terminal which i find super complicated i just wanted a simple way of scripting this sort of actions in Lisp and just getting the result. So I made a sort of like, I guess a little engine to do that, like a little interpreter, a little library, and you can do all sorts of photo manipulation and export files.
Starting point is 00:32:38 But people added a whole bunch of functions to do processing type things. So basically now it's basically like Canvas using Lisp in the browser that can do all the processing things that are visual. Also even like audio related now, it's becoming a bit of a monster. So I'm going to have to take the ax out then.
Starting point is 00:32:58 So for Ronan, just to go a little bit further on that one, because that one's another really interesting one. It's a two pane window. And on the left side, there's a text editor. It works just like a Lisp REPL that, you know, you've all seen a thousand times. You type in your Lisp code and then invoke it. And it does something on the right pane, which is your graphical preview. Imagine Photoshop with Emacs on the left side. There are all sorts of nice things you can put in, like there's a little special syntax you can enter that says,
Starting point is 00:33:30 replace this spot with whatever position the mouse is in. And so you can use that to, in a DIY sort of way, like build a drawing tool right there in the program. And there are people using it to do animations and there's people who have written strange attractors that rotate around. Yes, it's just so simple. But I wanted that in my life and I couldn't find it. Yeah. You also have tons and tons and tons and tons of little things that you've built. I think my recent favorite was for Inktober. You made a one bit drawing tool. Yeah, well, I had just transitioned to Linux from OSX. And, well, I had been using Photoshop in a while, for quite a while now, because when you're sailing
Starting point is 00:34:13 and you don't have access to internet, when your drawing tool and resizing tool breaks because you don't have internet access, that becomes kind of a problem. So we decided to ditch all DRM bullshit but then I was like okay so I have to draw I just want to draw like something really simple so I was looking up online you know like something that is web-based that just lets me draw something kind of like paint basically because I didn't really need much more but I really wanted halftone so that was like
Starting point is 00:34:39 that's where I started I was like well I don't want colors but i do want different weights of halftone and well there wasn't really much out there i'm not super comfortable with opengl or sdl and and i was like well i know canvas so i'm just gonna build in canvas and and i was afraid that it would take a lot of memory you know like sometimes web tools like it's gonna kill my battery or whatever but the way i've implemented it turns out it takes less power than using GIMP. So that was a win. So I did my whole month using this little tool that I made that is a single file. I think it's like 180 lines of code.
Starting point is 00:35:15 And just to help people picture it, the aesthetic of the images that it creates is very similar to what you'd get using something like Mac Paint on an old black and white Mac from the 80s. Yes. It's a white canvas, and your only operations are to turn individual pixels black. There's no anti-aliasing. There are tools for drawing straight lines. There's an eraser, and then there's a tool for putting in just individual black pixels.
Starting point is 00:35:40 What else do you need? Yeah, well, but then the thing that i loved is you you built that tool and you started doing some drawings with it and then you thought you know what i need is i need to build a little 3d engine for like like laying out the scene of the thing i'm gonna draw and so it's like on the one hand it's this throwback to the black and white 80s drawing apps of yore but on the other hand it's like i'm I'm going to make a 3D engine. When I saw that, I just like almost fell out of my chair because it's such a beautiful synthesis of simplicity that takes you back to some of the roots of computing. But at the same time,
Starting point is 00:36:18 you have everything that's happened since the 80s to draw on and so you know when something like a 3d engine is the right tool for the job by this point it's not hard to make something like that yeah how lucky are we that we can do this you know like yeah while i was working on this every day i was like surprised i was like how is this possible that i can you know like in the morning i'm like i really want to do this i really want to do x and you can actually do it like if if you if you live in on osx and windows your whole life you kind of missed you you missed this whole way of doing computing where actually building the thing that you need a specific thing that will that will get the job done with absolutely no friction it's not that far out of reach yeah i i lived outside of this sphere for
Starting point is 00:37:06 the longest time but now i'm like if something gives me any kind of friction i know i can turn and just rebuild it because there's a massive amount of really clever people that addressed these problems before so you can kind of draw on this and pick and choose the parts that you want and actually begin to experience modular computing. And not to derail it, but I think that's where the people who are the staunchest critics of JavaScript are kind of missing the bigger picture. Like a lot of these tools you build, you build them in JavaScript to run in the browser. What you get in exchange for doing that is, sure, you have to use JavaScript javascript which is you know it has some storied history to it and it's it's not the most elegant language by a long stretch but you get the whole web platform you get canvas you get css if you need that you have webgl if you need that you have web audio midi vr Now those standards are created to be portable. The browser vendors
Starting point is 00:38:09 are pulling just insane levels of optimization to make sure that you can write all sorts of malformed, badly organized code and have it not destroy the battery on the computer of everybody who's running it. So with a little bit of know-how, you can build yourself exactly the tool that you want using this web platform. And it's such a tremendously powerful point of leverage that if you turn your nose up at JavaScript, you are also missing out on that leverage. Yes, I think JavaScript is the perfect way to invite you in that sort of place where you can feel empowered by the tools. On the other hand, I mean, I absolutely love JavaScript and I am on the side of the people who, I mean, I find the language is beautiful. What you can do with it is great. Sure, people will always raise the what video and be like, oh like oh like how can you work with things like
Starting point is 00:39:05 this this doesn't apply to my everyday life like doing these edge case and you have to actually actively look for them especially in my case since i build really simple things or you can use a transpiler like if you need types use pure script use you know type script something like that yeah but but all of this is something that i'm i'm trying to phase out of my like i mean i have no problem with javascript as a language and i wish it was easier to spin outside of the browser ecosystems i have friends who work at google on the canvas implementation and when you go there you realize that my ease of being able to tap into all this sort of these different different technologies to make this these tools really quickly
Starting point is 00:39:50 relies on incredibly powerful machines that i don't have access to and i'm basically at the mercy of google for anything web midi and firefox and these handful of browsers to create the things that i do now which is something i don't really like you know like building chrome is a massive yeah thing i don't have the hardware here to do this and in the future i'm hoping to actually like one of my the things that i'm really thinking about these days is like i never want to have a stronger computer than what i have today there's no reason i shouldn't be able to do what i want with the things that i have today walking that treadmill of like thinking that i need stronger computer to do more things i think computing kind of like
Starting point is 00:40:32 capped in the 80s and we're like just like nothing really improved so there's no reason to for me right now and for the few basic things that i need computers for, I don't see why I should want to keep getting more processing power. So what I want to do now is like gradually learn how to go a little bit deeper and build the things on this smaller stack of technologies. One of my big hobby right now is just how can I make everything run on Scheme or run on Vanilla C?
Starting point is 00:41:03 Yeah, just kind of like get away from this thing that invited me in and that taught me about programming a little bit and that taught me about how I can feel empowered by computers. But now, I also want to be independent from a lot of the things that I find are destroying the environment right now, or like the sort of treadmill of disposable electronics.
Starting point is 00:41:20 I would love to be able to just keep on using disused or like second-hand computers and just keep doing the things I like to do with them without having to constantly keep up with the updates of Chrome and so on. I feel that in a big way, especially you said that you feel like computing sort of capped in the 80s. And my go-to example of that is a measure of latency called motion to photon. Yeah. my go-to example of that is a measure of latency called motion to photon yeah if you push a key on your keyboard how long does it take for photons to be emitted from your display and that's something that in some cases has improved since the 80s but in a lot of cases has regressed it's the sort of thing where the industry has made choices that prioritize things other than latency. And the motion to photon latency
Starting point is 00:42:05 in most computing systems is at the point where it is slower than the threshold that you need in order to deal with things in a musical way. So for instance, the granularity of music is at like 10 milliseconds, you know, 15 milliseconds, 20 milliseconds, somewhere somewhere in there if you are more than that amount of time out of sync you will hear the difference and the motion to photon on most computers is like 30 milliseconds 40 milliseconds 50 60 so one area that we could have spent the benefits of moore's law would have been to improve latency but that's not where we went. We went with improving how many pixels of video can you decode per unit of time. I really feel you when you say you're not feeling the benefit of the treadmill of new disposable computing hardware. I'm very familiar with that feeling. I feel like I'm 10 years behind because this is, it's something like
Starting point is 00:43:02 it's a whole culture that i'm kind of discovering but that hasn't been active for a long time it's just it was completely in my blind spot just a few years ago i was building apps for ios and people were warning me about yeah well i would get this sort of like i would i would the only part i remember of these comments was the cynicism but i didn't really quite understand and now i'm kind of like oh that's what people are warning me against the platform locking that yeah the grip that apple is gradually closing and like just the january thing like in a few weeks what the all the apps are not code signs are not going to work on osx and that that's like half our market because we inspired all our friends to migrate
Starting point is 00:43:42 on the apple ecosystem and i feel so bad for this. This is probably one of the... Yeah, I totally regret that. I didn't know better. And I was not surrounded by people who could have showed me. But nowadays, it's kind of like, oh, how can I make up for that sort of ignorance? The web standards people have always sort of held the mantra, don't break the web.
Starting point is 00:44:04 If you're introducing a new standard, do it in a way that's backwards compatible. Don't rename existing functions. Don't, you know, remove features. And yet it happens. Like there was a change earlier this year where Chrome changed the autoplay behavior so that things that use audio won't be allowed to emit any audio until the user interacts with the page. And that was a breaking change because previously, if you wanted audio on the page, you could make that auto play as soon
Starting point is 00:44:31 as the page started running. And so a bunch of independent artists and game developers had made video games that run in the browser that relied on that behavior and the change in Chrome broke that. And I think that was a really big wake-up call to a lot of independent creators that the web is not a platform where you can make something and expect it to continue to run indefinitely. Even though there's all the counter examples of like the Space Jam website from 1995 still runs today the way it did back then. That's sort of like survivorship bias. Like there are a lot of cases where you can make something, it will run for a while and then it will stop. You're responding to this by moving more towards C and scheme. What other sort of changes are you making to try and avoid being herded in the
Starting point is 00:45:18 direction of perpetually upgrading? Well, I feel like this occupies my mind constantly right now. A lot of the time I spend doing research, I'm absolutely enamored by the sort of like romantic idea of that someday I could just, you know, just spend a whole year in free BSD and just like, I could build every single tool that I, that I need and not rely on more. It's like a road. I'm not really sure what the ultimate point is or where exactly I'm going, but I'm trying to explore the idea of modular computing as far as I can and on as little resource as possible. Our studio runs 100% on solar,
Starting point is 00:46:02 so that means that it makes us very conscious and where the cycles of our computers are being spent you know like if i had the choice between two apps i'll usually my first question is you know the one that takes the last amount of cpu and nobody thinks like this anymore or nowadays like i was giving a talk in portland and every single day i would have startups coming up to me introducing me to their product but the first thing i would say is like does it work offline and then oh no sorry it's some kind of web service so i don't feel like i am a demographic anymore for anything that is computer related so i figured i might as well just experiment in that space where some people in their 50s now are exploring how to keep Plan 9 running on their Raspberry Pi or just keep their favorite bits and pieces of what's around and live off that and experiment with computing in a way that is not super common. common like recently for fun i just started using gopher it's the best way of getting
Starting point is 00:47:06 access to like long form content or database of things that doesn't need to blinks and play music and play videos at the same time and ads and all that kind of stuff like if you're looking for one thing i feel like one third of the web could be just gopher databases and you're looking for something you don't need bells and whistles well most of the time i browse i'm in reader mode and gopher gives you that with like 100th of the processing power they're required and that's a form of computing that is not the norm but i'm all for efficiency and and when there's an efficient way of doing something i'll try to gun for it if i was for convenience i wouldn't be living on a sailboat and solar yeah but i found that this way of life advised the way i interact with the computer and even though there's less and less
Starting point is 00:47:56 people that maybe are interested in that kind of stuff i think i could still try to live in that space and build things for that space because I'm pretty sure it's completely sort of like forgotten demographics. From my perspective, you know, like I look at old people, you know, like, oh, the new Xbox is coming and they're all jumping on that sort of garbage. And they're not really seeing, you know, like how xbox came into being and how long it's going to be on earth and how they're going to get rid of it and i find it's completely a tone deaf to look to these kind of technologies and seeing them as they're better they're really not better yeah or they're better if you only look at certain kinds of measurements that are very selective they're not holistically better yeah not. Not better in ways that I value things. Yeah. You say that this puts you in sort of scarce company, but I would say that there's
Starting point is 00:48:54 actually some places where I've seen a lot of sympathy for this move towards being very conscious of energy efficiency and being very conscious of the upgrade treadmill. For instance, the programming language Forth, which is another sort of, I think it was from the 70s originally, but it's a sort of a spatial language where you're creating little units of code that exist on a kind of a two-dimensional space and each unit can communicate with the units side to side or above and below and they sort of pass data around. Like I remember seeing a strange loop talk
Starting point is 00:49:31 by the creator of the language. You have to put that in the podcast links. I would love to watch this. Oh yeah, it'll be in the podcast links, yeah. You know what, actually I'll just Google it now and then edit out the sound of me Googling it. Forth programming language fourth yeah so fourth um created by chuck moore it's a language that he created with energy efficiency very much in mind not only is it an interesting language because of the spatial character of it and the influential role it played in the development of later languages,
Starting point is 00:50:09 but he created it thinking that this spatial character would be useful because perhaps one thing that might have happened in the development of computers would be little tiny independent like micro computers that would communicate in sort of instead of having like one big single core processor that would do a whole bunch of work in order you'd have something more like a gpu where you had lots of little independent units of computation but that they would be arranged spatially and they'd be able to communicate with their neighbors which in a gpu you can't do in a gpu each core is independent yeah i think inferno works like that right what is inferno oh it's um well it's an operating system but i think inferno has some ties with plan nine but also i've seen this sort of like physical computing models also like there's a lisp os called chrysalis and also i think it's designed
Starting point is 00:51:06 to work on multiple cores that are spatially organized because on this documentation there's like matrix of computers talking to each other and the os kind of like takes that for granted to take that in consideration yeah or there's like um i think his name's Dave Adley. His name is Dave Ackley. He had a programming model that was designed for resiliency, and it was also spatial. And it was sort of like each unit in the program would try and build up the units around it. And so if some of the units were destroyed, because this is executing in an environment where that might happen, there might be some physical damage or something like that. This is a programming model that would sort of work around that because part of the model is you're not just sending data
Starting point is 00:51:56 over to your neighbor expecting it to be there, but you're handling the case where your neighbor doesn't exist and you need to sort of build them from nothing and so it sort of makes the code into like this sort of self-replicating self-perpetuating model that's so cool i love i i actually i'm really excited to look up for it and how they plan for efficiency of energy and i'm also interested in how these other languages plan for resilience actually that's things i'm not really seeing a lot or exposed to i'll put that strange loop talk in the show notes because he goes into a good explanation of like i think he was aiming for something like uh what was it like he wanted the execution to be like so many picojoules per clock cycle or something like that like the idea was to make computing happen at many thousandths of
Starting point is 00:52:45 the amount of energy that it would take to run a can x86 CPU or something like that. And unfortunately, I don't think it works. You know, if you execute it on top of our current hardware, it would require the hardware that it was being designed with in mind. But it's definitely one of the shining examples of people looking at energy efficiency as part of the design of their their programming model oh well i mean you know when i said i was i felt alone i i think i mean there's so many people in that space doing amazing things that i'm just not aware of i'm kind of like just new stumbling that kind of stuff i don't want to say that i've you know covered the whole area there's definitely all that kind of stuff i don't want to say that i've you know covered the whole area there's definitely all that
Starting point is 00:53:26 kind of stuff i still have to find it's just me myself my own experience in that sphere i found that i mean there's a few people here and there and when i look on their website it really feel like it's really hard to reach them outside of the mainstream yeah It's definitely not something that Microsoft or Google are saying, like, this is our vision for the future. Yeah, that's what I mean. They're being left out of where things are going. And that brings us to the end of the interview for today. Be sure to stay tuned for part two of my discussion with Devine Liu Linvega,
Starting point is 00:54:08 where we go very, very deep into his ORCA spatial programming environment. It's super weird and very interesting. I've got a couple of quick things to point you to before I conclude the episode today. First of all, the Future of Coding community is running a survey to collect information about the interests of our audience and to set the roadmap for what sorts of new projects we're going to be working on this year. The survey is pretty quick and fun. If you'd like to take a couple minutes to fill it out, I would greatly appreciate that. You can find the survey at the convenient, radio-friendly link bit.ly forward slash foc2020. Yes, the implication is that we will probably do another one of these surveys in about a year, just to see how things change over time.
Starting point is 00:55:06 Thanks again to our sponsor, REPLIT. The transcript is available at futureofcoding.org slash episodes slash 44, and you'll find links to everything that Devine and I mentioned in the show today on that page. That's it for this time. Thanks for listening, and I'll see you in the future.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.