Welcome to The Orthogonal Bet, an ongoing mini-series that explores the unconventional ideas and delightful patterns that shape our world. Hosted by Samuel Arbesman.
In this conversation, he speaks with Omar Rizwan, a programmer currently working on Folk Computer. Omar has a longstanding interest in user interfaces in computing and is now focused on creating physical interfaces that enable computing in a more communal and tangible way—think of moving sheets of paper in the real world and projecting images onto surfaces. Folk Computer is an open-source project that explores a new type of computing in this vein.
Samuel engages with Omar on a range of topics, from Folk Computer and the broader space of user interfaces, to the challenges of building computer systems and R&D organizations. Their conversation covers how Omar thinks about code and artificial intelligence, the world of physical computing, and his childhood experiences with programming, including the significance of meeting another programmer in person for the first time.
Produced by CRG Consulting
Music by George Ko & Suno
Transcript
Samuel Arbesman:
Hello and welcome to the Orthogonal Bet. I'm your host, Samuel Arbesman. In this episode, I speak with Omar Rizwan, a programmer who is currently working on Folk Computer. Omar has long been interested in user interfaces in computing and is currently focused on creating physical interfaces to allow for computing more communally and tangibly. Think moving sheets of paper around in the real world and projecting images onto surfaces. Folk Computer is an open source, new type of computer in this vein. I wanted to speak with Omar about Folk Computer and this broader space, user interfaces more generally, and even building computer systems and R&D organizations.
Omar and I had a chance to discuss a lot, including how he thinks about code and artificial intelligence, the world of physical computing, as well as his childhood experience of programming and what it meant to first meet another programmer in real life. Let's jump in. Omar, great to chat with you, and welcome to the Orthogonal Bet. Your work, it touches on a lot of different ideas, and so perhaps the best way to start might actually be for you to spend a little bit of time sharing your background and your career path and kind of how you explore all these different ideas.
Omar Rizwan:
Thanks, Sam. Yeah. I always like to describe myself as a programmer in some sense because I think a lot of my work does come out of having this very long-standing background programming. A lot of people, I learned to program actually when I was pretty small and I was just on the computer all the time. I was actually just looking at this this morning and I found this newsgroup post for me when I was a little kid asking, how do I do this one thing in Visual Basic? How do I put double quotes inside double quotes?
Samuel Arbesman:
Oh, that's amazing.
Omar Rizwan:
And so there's something actually very important there, which is that even as a little kid learning to program, it was not just like me and the computer. I was embedded in this sort of universe of I'm on the newsgroup, I'm asking people questions. There's people that I'm copying, there's people that I'm trying to publish software that they'll see, so they'll think I'm cool. There's books I'm reading, even though it's me in my bedroom, in my parents' house in real life, there is this sense that a lot of learning and a lot of computing is tied up in these broader social questions and social contexts.
Samuel Arbesman:
Were you part of any in-person programming communities or was it all through the internet and other online communities?
Omar Rizwan:
Yeah, I actually remember very distinctly that when I was 16 or 17 there was this like, "Oh, I've met somebody else who's a programmer." And there was nothing before then. And then there was a rapid, I moved to Silicon Valley and San Francisco, and at first it was very novel that you'd be in a coffee shop and you'd overhear people talking about computers, and then it became normalized and then I became tired of it maybe. But yeah, there was a kid at my high school who was also into computers. There were a couple of people, but it was very much me on the internet for a long time, and then eventually meeting other people when I was a teenager, basically. And now the preponderance of people I know who are doing interesting programming work I've met in real life or know in real life.
Samuel Arbesman:
That's amazing. And so what kind of programming first got you interested in the world of code and computing? Was it specific types of games? Was it little tools that you want to just build for yourself? What really drew you into that world?
Omar Rizwan:
Yeah, it's a really good question because I do think there are actually different cultures of some people who are programming to get into making games, some people learn programming to customize their website. And sometimes people from different backgrounds end up in these sort of different programming subcultures. Sometimes they don't even think of it as programming, but really what they're doing is programming if you're making a spreadsheet or something. But I was making these little tools and eventually there was a community of people in the early 2000s who were basically trying to make their Windows computers look like a Mac. There was this whole prestige of like, "Oh, the Mac is really cool looking. Let's make all our Windows look like Mac windows, let's make a doc, all this stuff." Most people, almost everybody had Windows.
Samuel Arbesman:
I remember I was one of the few with a Mac from those days, but I recognized that. Yeah.
Omar Rizwan:
Yeah, I definitely, I did not have a Mac. And so there were these communities of people making skins, and I was in this specific group of, I learned on Visual Basic 6, which was really interesting. You could basically just drag and drop and make something that looks like a normal Windows program. It didn't look any different from the other programs on your Windows computer, which I think is actually very important for a little kid. Because it's like you don't want to be doing the little kid stuff. There's something very attractive about doing the adult stuff or the stuff that's like what you see.
Samuel Arbesman:
Right. Like if you're making software that requires you to download some other thing and put it in this special category or kind of bin, you're like, "This is... It doesn't feel real, yeah.
Omar Rizwan:
And it doesn't look the same, or it's like it's a sandbox.
Samuel Arbesman:
Right. It's professional, which is very powerful. Yeah.
Omar Rizwan:
Yeah, exactly. Professional. And I was doing a lot of these little tools. I mean, there were people making a Mac Finder that runs on Windows. It looks like a Mac Finder, and so I was kind of participating in that, I guess conversation. There was somebody in Australia, there was somebody in Turkey, there were all these kind of random people that I would just be online all day with and we would be making different weird little pieces of software. And then when I was a little bit older, middle school, or early high school, there was these various communities of people doing new UI stuff. So there was this guy, Johnny Chung Lee, who is I think now with Google and was at Carnegie Mellon at the time, who did all these experiments with Wii Remotes where you could make a white board with a Wii Remote, you could do projection mapping with the IR camera and the Wii Remote.
So I played with some of that stuff, and there was also a group of people doing multi-touch tables. This was kind of before the iPad. So multi-touch was this extreme novelty that people were very excited about, and there are all these new gestures and interactions. So I built this multi-touch table. And this was all stuff that had been floating around, this was not stuff I invented. But these were definitely things that I was very aware of and very excited about. Those were the first, okay, what are new, interesting ways to interact with computing that I think I was exposed to.
Samuel Arbesman:
That's amazing. I definitely see a clear line from skinning certain user interfaces to trying to build new types of user interfaces. And this community, I mean, because obviously there's a whole research-based user interface, UX community. But it also sounds like there's this much more almost like tinkering based, recombining things that are already out there, playing with them, actually playing with them and building them in the real world as opposed to just making them for research paper. Were you engaged, and you mentioned that you were talking to someone who was a research student. Was there this clear interaction between the research community, the tinkering community? And you were just a kid, how did you think about, and were these worlds separate? Were they very porous boundaries and you didn't really think of them as different?
Omar Rizwan:
Yeah, that's a really interesting question. I mean, it's something that I think about a lot now, but maybe didn't perceive as much back then. I think a lot of this work, you would have an initial prototype, open source project, something like that, that maybe came from a research community. I think the multi-touch work was similar. There was even a TED Talk about it, I think, if I remember right. And then once it's out there, you get these, there's a forum online, and then there are all these tinkers who are messing around, making different variations, different designs. And then a little kid can come on and just be like, "Okay, these are the parts I need. This is the software I can download. I'll run it on my computer and try it out." I mean, there are interesting constraints there, where you already have a Wii or "These are parts that I can get easily." Or "I already have a computer." You can do this for a very specific subset of research stuff where you don't need special hardware, the software is available. Yeah, it's an interesting question.
Samuel Arbesman:
So you mentioned at one point you moved out to Silicon Valley. Was that after you had started been playing with some of these multi-touch interfaces? What kind of led you to that world?
Omar Rizwan:
So the first thing that brought me out to the Bay Area was, I had seen Khan Academy, which is this online. I'm sure people are familiar with this online sort of video, YouTube education website. But it kind of just appeared back then, and I started following the project and then I sent them some patches when I was, I don't remember, sophomore or junior in high school. And I was told I was the first person to submit a patch.
Samuel Arbesman:
Oh, wow.
Omar Rizwan:
And then eventually, it kind of became more of a thing. They got some funding and then they were like, "Oh, do you want to come out and do an internship?" So I was 16 or 17 in high school. I'm from New Jersey, so I was on the other side of the country and it was like, "Okay, great. I'll go for the summer and I'll do an internship in Mountain View." That was really, I would say the beginning of really being in the in-person community of people doing computer stuff and beginning also of a long period in which I was in and out of the Bay Area.
Samuel Arbesman:
So when you finally got to the Bay Area and began interacting with other programmers in real life, was it one of these things, and you mentioned it was kind of a weird experience finally meeting some of these programmers in real life, but was it one of these situations where you felt, "Oh my God, I have so much to learn. The things I thought I was good at, there's now this kind of much bigger pond that I'm playing in?" Or was it the kind of thing of, "I'm so focused and I've had this deep long period of experimentation even though I'm relatively young?" That you were able to play even at this level? How did you of first think about all that?
Omar Rizwan:
There were elements of both. There were definitely things that I was exposed to or people I met where I was like, "Okay, there's a lot more for me to learn as far as programming goes." But there are also contexts where we're like, "Okay, these people have worked at all these fancy companies or went to all these fancy schools, but I feel like I can [inaudible 00:09:42]."
Samuel Arbesman:
"They're still people just like me."
Omar Rizwan:
Right. Which I think is something that everybody learns as they get older. It's maybe one of the big advantages of being in these contexts, is that you learn, "Oh, people are basically just kind of normal people."
Samuel Arbesman:
Right. And is that, the user interface component of computing, do you feel like that's one of the major themes that's continued through your work? And we can talk about, I spent some time in Dynamicland, you're now kind of building Folk Computer. I'd love to hear more about those, but are there other themes as well that have been woven through some of the different projects and things you're working on?
Omar Rizwan:
The user interface theme has been one of the strongest ones. It's woven in and out for a long time. I think I was more interested in education stuff, when I was a teenager, I also worked on this game a little bit, which was also this sort of online community of people where we were all hanging out and in IRC, and there have been other things I've worked on. I'm also very interested, I would say in the social context around programming. I mean, programming and user faces are kind of very related to each other. They're both ways to get the computer to do stuff. And so I would say, I have some interest in both of them, some interest in this sort of social context and historical context around all this. Why is it the way it is? What are the social and emotional factors that lead people to interact with computers in certain ways? But yeah, I think these are all themes that have come in and out of my work.
Samuel Arbesman:
And related to the historical context, do you feel as if there's been this narrowing of the kinds of paths we could have gone on? There's almost this overly narrow path dependence of computing where maybe early on there were a lot of different paths people were trying out, lots of different user interfaces, lots of different approaches for programming, and we kind of got stuck? I've heard people talk about these kinds of things, we almost need to expand the scope of the different kinds of things. Is that one of the things when you think about historical context, is it to both understand why we kind of got where we are as well as to almost rediscover some of the things that we forgotten about?
Omar Rizwan:
If you're a practitioner, I feel like that's one of the most important things you learn from the historical context, is there's this very intense historical contingency of like, "Oh, we have this very particular way in which we interact with computers, but that doesn't necessarily follow from the technology." It's just like, "Oh, well, we had the Xerox PARC system and then we had the Macintosh and then we had the iPhone and these all kind of locked in specific ways of directing and specific ways of organizing software." Yeah, it's a question that I think about a lot. And I think if you look at almost any old 1970s, 1980s computing research, you're always struck by the fact that they have to basically build their own computer, build their own operating system. There's none of this, there are no default platforms that you're building on. You have to build your own network protocols.
And almost inevitably from that, you end up getting more diversity in what kinds of systems people are building because there's no default platform that you're building on. Whereas now, I was describing to my friend Rasmus a couple of weeks ago, there was a time when if you were building a toaster or some other gadget, you would use analog circuits for control, right? Because that's what you got. And then, okay, that's kind of hard. So let's use digital circuits for control instead. And then, okay, that's kind of hard. Let's use a microcontroller instead of using the raw logic gates and then we can program it. It's a little bit easier.
And then it's like, oh, using the microcontroller is kind of hard, what I actually want to do is have a full computer that runs Linux and then I can write in Python and have normal software and it'll be easier to get engineers because a lot more programmers know how to use that. And then it was like, oh, that's kind of hard. Now I'm going to use Android and I'm going to have people who can program in Android. And there's this sort of just continued and you have more and more of the system is fixed and just inherited from what's popular in the world, and it imposes these very weird constraints maybe on what you can do and how you think about computing.
Samuel Arbesman:
And related to that though, it's not always a totally bad, I mean perhaps putting Linux in your toaster might be not the ideal thing, but at the same time though, creating some sort of mechanism for programmers, a wider variety of programmers to kind of build something like it does lower the barrier in certain ways, but you're right, it also narrows the possibility space. How do you think about the balance between those things?
Omar Rizwan:
One way to put it is, maybe this is an argument that we've gone too far in one direction or that there's value in at least shifting a little bit in the other direction and reevaluating some of these lower levels of the system. It is true though, and I see this a lot when programming is, if you program in C or in Forth or whatever, you quickly realize you can't actually build the same kinds of systems that you would in a higher level language where you have a lot of libraries available. And sometimes that's okay and you can just change the problem definition so that you can actually solve it. But sometimes it's not. It is very context dependent, and I'm not saying that that stuff should all be thrown out, but I do think there's value in looking at how does this thing actually work? What do we actually need? What are all these layers of the system doing? And having somebody who can evaluate all those and not just take them for granted.
Samuel Arbesman:
Right. Being deliberate about, okay, why are these things in here as opposed to just going this path of least resistance/most layers. Maybe that would be a great way to hear a little bit about your current work with Folk Computer. And what are the paths that led you to that point? What are the themes that help you decide to build a computing space like that?
Omar Rizwan:
So Folk Computer is a physical computing system that my collaborator, Andres Cuervo and also a few other people we've worked with in different capacities are building. It's open source, so you can go on GitHub and get it. And then we have a few systems and a space set up here in New York City. The basic idea as I would put it is, rather than interacting with your computer through a laptop or a phone where you have a mouse and keyboard or screen or touch screen, you have physical objects that the Folk Computer system is tracking and the way you interact with the computers by moving or interacting with these physical objects. And concretely, usually a Folk system is like a projector and camera and it's pointed down at a table. It's monitoring what's on the table and running stuff. But it's really a very general system that could interface with any number of sensors and actuators.
I mean, often you'll see keyboards, so you can reprogram it, you'll see printers, people have tried other stuff like building little sliders and stuff like that. And importantly, this is not just a front end for interacting with software that other people have written, it's actually programming system. So the idea is that ultimately you're able to program the entire system from the table without needing to break out a laptop or phone. That I would say is almost like what constitutes a computer and why it's Folk Computer is that you can reprogram it. It has this sort of unbounded possibility space of a programmable computer. Which is unlike most VR systems where you need a laptop to program it or even your phone, you can't really program your phone at least to the level of most of the things that are already on your phone.
Samuel Arbesman:
Who are the target audience for this?
Omar Rizwan:
Yeah.
Samuel Arbesman:
Is it programmers who want to be thinking about the physical space? Is it people who are not necessarily programmers, but this is a means for more physically interacting with the stuff of computing? Is it for specific use cases? And presumably, it's open-ended and you mentioned this reprogramming computer.
Omar Rizwan:
It is pretty open-ended. I mean, I would compare it to the early personal computers. There's an interesting paper by historian, Melanie Swalwell that talks about how 1970s, 1980s, the first personal computers, the Apple II or the Commodore 64, whatever, were basically useless. The main purpose of them was to program them, but somehow that generates this sort of like, "Oh, we have this new access point to this new space of things that we can build." And then actually compelling use cases appear. And the internet I think was very similar, where [inaudible 00:17:16] is basically like, "Okay, we need to network all the computers in the world. We don't have a particular use for this in mind. It seems like it would be a good thing to do and it will generate interesting work." We think about it in a similar way. I mean, there are use cases, demos, specific audiences that we think about to anchor our work, but we think of it as a general purpose computer just like your laptop or your phone is not necessarily built with a particular purpose in mind.
I think the question about, is it for programmers? Is it for non-programmers? It is for both. We have talked to people with both backgrounds and had them come in and shown them the stuff. I think a lot of our current work is actually very programmer focused. This feels very important in a way because there's a common, I would say, fallacy when people look at this kind of work where they say, "Oh, this is really good for education." Or "This would be really good for getting people to learn programming." And I think that's kind of a trap. That's not how you get a programming system or a computer system that can really do serious things.
Whereas if you have one that can do serious things, and obviously people want to learn it. In a way, the system is kind of right now programmer first, where a lot of the people who have set it up and who are really deeply familiar with it, including us, are actually pretty proficient programmers. And we still feel that it's a useful system and that extends our capabilities. I think that's a higher bar than trying to build a system that's interesting for people who are not familiar with programming. We are more interested in, can we raise the ceiling of capability even for someone who's a really good programmer and get them to build more stuff that interfaces with the physical world rather than right now, can we lower the floor to get more people who don't know to program to program?
Samuel Arbesman:
And related to that, I mean you can kind of mentioned this is a general purpose thing. It should have a certain amount of open-endedness. Presumably the hallmark of any good kind of system like that will have certain use cases where the creators of the system are completely surprised that they even exist.
Omar Rizwan:
Yes, totally.
Samuel Arbesman:
I assume you've had certain situations like that. What are kind of use cases that surprised you or startled you or took the system in directions you didn't expect?
Omar Rizwan:
One is, we had a colleague, Ian Clester, who's a computer music grad student at Georgia Tech, and he built this whole music system with individual cards that represent tracks that you put down and they play. And so you can kind of build a song live this way. We have had a few friends who've set it up in their house and then they'll play with it with their kid. And sometimes those systems look very strange, very different from the one that we have. Jacob Hype in Boston built a panel with physical buttons where his kid can press them to play different songs. He built a laser based version of the Folk system where there's no pieces of paper that you move around. Because usually we use pieces of paper with markers on them, but he instead mapped a wall and then you can point a laser pointer at things to activate them. Someone else, Vedran in Vancouver set up a system that was mounted on a toy train set, so the train will drive around the track and then it'll play sounds as it passes through different areas.
Samuel Arbesman:
Oh, wow. That's amazing. And so, one, I was just wondering how easy is it to actually set up one of these systems? And you mentioned you're not necessarily at this point lowering the floor, but what is the barrier to entry? It's not entirely software, there's obviously some hardware components. How easy is it to build one of these?
Omar Rizwan:
I would say a lot of it is actually the hardware in terms of what is the barrier to entry. It's not that difficult. We have worked on making it easier to set up. A lot of that is not even programming expertise, it's just very annoying specific Linux stuff or yeah, mounting things I think is actually often the barrier. How do you mount a projector overhead? Do you have mounting rods in the ceiling, all this kind of stuff. But yeah, I mean I can set up a new system in probably an hour, maybe less. Actually, a very fun story is that, there's a whole community of people who use projectors for sewing, where they'll project a pattern that they will cut the fabric to follow.
Samuel Arbesman:
Oh, wow.
Omar Rizwan:
And so they have learned many techniques for mounting projectors above tables, and so we've learned a lot from that particular community.
Samuel Arbesman:
Was that someone who was using Folk and then realized I'm already kind of embedded in this community? Or did you stumble upon this community? How did that kind of interaction between these communities come about?
Omar Rizwan:
We haven't gotten to chat with them, but yeah, someone who we don't know personally but who set up Folk pointed us to them and was like, "This is a thing you all should look into that there's this projector sewing community that's figured out all these projector mounting questions."
Samuel Arbesman:
That's amazing. No, I love that. Where you discover this community that has gone down that path.
Omar Rizwan:
Right. And they're from a completely different, a lot of these people are kind of at home doing crafts, and they've converged on a lot of the same questions.
Samuel Arbesman:
That's fantastic. For me, I just find, again, going back to historical context of the fact that there is this deep historical connection between weaving and looms and early computing with punch cards. It's almost this nice closing the circle of like, "Oh, we're getting back to this in some other ways." But before physical computing. I love that.
Omar Rizwan:
Right.
Samuel Arbesman:
So with the idea of physically embedded computing or manipulating things in physical space, what sort of led you to that? I mean, and obviously in retrospect it's not surprisingly. Rather than kind of just interacting in a screen, we as humans are physical creatures, we're embedded spatially, so it makes sense we should be involved in this kind of thing. But what are of the ideas that led you to thinking about computing that way?
Omar Rizwan:
I mean, I had always had some interest in this area, the multi-touch, the Wii Remote stuff. A lot of these things I would say are about if not physically manipulating objects, at least larger spatial environments that the computer can live inside. But a lot of the inspiration for Folk does come out of the Dynamicland project, which started by Brett Victor a few years ago, which is in some ways similar, in some ways different this sort of spatial physical programming environment, which came up with a lot of the techniques that we use in Folk. Some of the specifics of the implementation have changed a lot, but some of the broad outlines are similar. And it was interesting, I worked with Dynamicland for a couple of years. I was first exposed to the system probably in 2017, and I remember not being very impressed with it at the time actually.
Samuel Arbesman:
It's interesting,
Omar Rizwan:
Which is funny given what I'm working on now. And I think this is actually a lot of the motivation for what we're doing with Folk, is I think it actually took several months of coming by, sitting in the Dynamicland system programming stuff, sometimes showing other people this stuff to eventually be like, "Okay, the first demos are not that interesting. But there's actually something really interesting here after sitting with it for a while." And it's very hard to articulate it without actually gaining fluency in the system first and knowing the concrete details of this. At least for me. I think there are other people who are more excited by the long-term vision and some of the philosophy behind that project, but I found that I really need to get in and make some stuff and feel what the grain of that programming system was like. And I found there were a lot of still open questions and problems that I encountered and research questions that I wanted to continue to pursue. And a lot of the focus of Folk is around some of these things that are not worked out yet.
Samuel Arbesman:
Was there a specific moment when working with the Dynamicland system where it clicked or was it kind of just this slow accretion of experiences of like, "Okay, now I kind of understand the power of this kind of thing?"
Omar Rizwan:
I would say it was mostly a slow accretion. The most famous project that I worked on was this map system called Geokit, which I have a long blog post about on my website. And I think making that and then articulating it in a blog post did crystallize a lot of this understanding. But I think there's a phenomenon both with Dynamicland and with Folk where if you're a programmer and you show up and you try to make something in the system, you can make stuff. You can write many of the same stuff that you would write in a normal programming language, but what you're writing is not idiomatic and it's not really using the unique properties of the new programming system. Often you're using the screen as a monitor instead of making multiple different objects, you just have one big object that has a lot of code on it.
Often you're implementing menus and virtual state and all kinds of specific virtual interactions when really you should just be trying to map your domain objects to the physical objects. I mean, these are also all things you still won't really get unless you actually try to make something. I don't think it's even a problem. I think it's just a phase that you have to move through when you're using these systems to think that you're learning them but not to actually understand the idioms of the system. And if you don't get that much time with the system to dismiss it for that reason because you think there's not much new there.
Samuel Arbesman:
Are some of the design decisions behind Folk designed to make that sort of like "aha" moment or even if it's not just a specific moment, to make that faster to allow you to see some of these idioms or techniques or just really understanding the way the system works for that to happen a little bit more rapidly?
Omar Rizwan:
It's definitely something we think about with the demos that we show people, the examples that we want to write, how we talk about the system, and also the level of publicness that we have around writing about what we're doing around giving access to the source code of Folk. Because I think we do feel that it's important to expose as many concrete details of the system and what we were thinking about as possible so that after it's been reiterated 10 or 20 times and you've seen the actual source code and you've set it up, maybe it has a better chance of clicking than if you just get to visit a space and you don't really get exposed as deeply.
Samuel Arbesman:
And I guess, I mean related to that, what is the process like building a community around Folk Computer? Because it sounds like you're trying to get people to experiment with lots of different aspects of it, really imbibe the source code and understand the system. These are the things that take a certain amount of time, but then once people are bought in, then they really want to do lots of different things. How is building that kind of community work?
Omar Rizwan:
It's been really interesting. I don't know if this should have surprised me, but I've been surprised at how many people who are really excited are people, they just show up and they've already done all this stuff. And then there are people on the other side who they'll come to you and they'll be super excited and then they won't do anything. So it's been very hard to predict, which I think is in some ways part of the power of being more public, more online, is that it does give more of a chance for these sort of wild card like, okay, somebody in Milan is interested in this thing, somebody in South Carolina is interested in this thing for these kind of wild card interactions to happen.
One thesis we have is that the nature of the system can do a lot of cultural transfer to people who set it up on its own or in conjunction with examples. And so even people who are random people who get it from online can actually learn it. Because that was my experience, is that I did learn a lot just from sitting down and programming in it. That is a mode which I think is necessary and which is useful.
Samuel Arbesman:
One of the things I wonder about, I mean you mentioned that there's this community and you're building in the open allow people to interact with in lots of different ways. One of the things when I think about computing is, there's been this deeper history, but also more modern, there's tradition of weird in between organizations. They're not quite researched, they're kind of researchy, they're open source projects or there's halfway between academia and startups. You have Folk Computer, there's Dynamicland and Ink & Switch is another example playing in the sort of user interface space. I'm not really sure how you would describe Folk Computer. Is it just like a project that happens to be open source and also has a community? But how do you think about these less legible organizations as the ones that are driving how people think about computing or user interfaces or new ways of playing with computation?
Omar Rizwan:
It's a really good question. So if you go on our website, I think we don't actually say what Folk Computer is. I think on the GitHub project we say, okay, this GitHub project does these things. We don't necessarily on our website say what we are. I think that's partly because we could figure out what exactly to say.
Samuel Arbesman:
Totally fair. I like that.
Omar Rizwan:
Yeah, there is an open source project which you can kind of think of as a Linux or a Gudu project or one of these projects where it's like, okay, can we collaborate in the open? Can we build up a certain kind of system online in public? And then Andres and I, we are sort of a consulting company around the system, which is also long-standing model around open source projects, and we are also just building the system, doing research, thinking about new problems that maybe haven't been encountered before in the process of constructing the system. So I think those are all kind of valid lenses. And then there's also an online community. There's a Discord, and there's a physical space also. I wouldn't call the physical space Folk, but there is a system called Folk Zero and it lives in our office basically.
Samuel Arbesman:
That's amazing. And so when other people presumably come to you about, "Okay, I'm thinking of building this thing or doing some research." Presumably, and it's not a one size fits all, it's not like, "Oh, everyone should build exactly what they're doing, modeling it on what you build with Folk." But presumably there's a suite of possibilities. It's not just like, "Oh, this needs to be a startup." Or "you should go off into academia and do this kind of within the university structures." What are the space of organizational structures or the ways in which people can do these sort of in-between things that you think have the most potential?
Omar Rizwan:
One of the big questions in this area is, okay, who is the audience or what is the peer group that you're trying to communicate with? I was fortunate in that I had already done a bunch of different work. I was on Twitter a lot, I had written all these things, and so I feel like there was almost some peer group or audience that I already knew that I wanted to communicate with, and I still know if I post something, people would probably see it.
Not a huge audience, but I feel like it's very concentrated and I don't feel like I would've trouble getting interesting work out there. But I think there are people who maybe don't have that audience and maybe in that case it's valuable. If you go into academia, you can get one kind of audience and you can have one kind of peer group. If you're posting stuff to Hacker News all the time or tweeting all the time, you can maybe get a different peer group. But I think that's one of the key questions, is who is your audience? Who's your peer group? How do you evaluate? What does it mean to establish knowledge in the area? What does it mean to do new research? What does it mean to prove something? And these things do differ a lot between fields and between organizational structures.
Samuel Arbesman:
Do you have a personal feeling of what kinds of communities or what kinds of audiences are actually, and better might be a strong statement, but I feel like there's certain, if you want to build certain things that get taken up by community of users, there might be certain ways of doing this that are actually more valuable. Is there a hierarchy in your mind of what are the right type of users or communities that are more appealing for this kind of thing?
Omar Rizwan:
There is a trend of, okay, stuff that's taken up by very excited hackers, early adopters, people who are both willing and able to invest the time to then create very interesting projects of their own on top of the system. That is what you see with personal computer, with the web. If you can become that kind of playground for people, then they can produce really compelling stuff and then that kind of produces this feedback loop. It's actually, it's a very small group of people, but I think it can really move things ultimately, I mean, everybody in the world is now using their smartphone that runs Android or iOS and Linux and they're all on the web and shopping, and this was all stuff that was completely early adopter, obscure, there was no commercial case for it 40 years ago.
Samuel Arbesman:
Related to what you're saying of these kind of open-ended things that allow people to experiment and play and you're not really sure how they're going to be used, if it's going to be commercially viable. It's just like it's this playground that you're trying to create, whether it's the web or now with Folk, things like that. You co-authored this little essay about the computer is a feeling, this idea that computers, they're more than just the laptop, that when done right, they evoke a certain emotional touchstone. And I feel like that maybe this is also connecting with some of your experiences of computing as a child and this open-endedness. Is there something broader there?
Omar Rizwan:
One of the arguments that, I don't remember if it was implicit or explicit in that piece, my friend Tim Huang and I, is that there's a lot of stuff that has computer hardware. Your phone has computer hardware, your watch has computer hardware, your toaster probably has computer hardware. But I wouldn't say that most of those are computers because to sort of round down, you can't really program them. And there's a sense in which, especially early on, especially when I was a kid, especially in the early web, whatever, that most people or a lot of people using computer, there's this sense of possibility. Where it's like, "Oh, I have this new tool set. I can make new stuff." A lot of what we're trying to do with Folk and a lot of the other projects I've done, they're trying to create this feeling of like, "Oh, I have this new tool set. There's all these things that I can do that are just natural combinations of what this new thing makes available to me."
That's something that's always very exciting to me because it's like, "Oh, I don't have to implement all this. I can make these tools and people will see that you can combine them a million different ways and get all this stuff for free." And it creates this enormous sense of, "Oh, maybe I can combine these new things with the things I already have and I can make all kinds of stuff, even stuff that I didn't necessarily expect when I built it." Another thing I wanted to say with respect to how I think about audiences, early adopters, computing, maybe this is also a general comment about how I think about Folk and how I think about a lot of my other work. I think that the charismatic demo is very important.
I think that it's a mistake to just give out abstract philosophy, I think it's a mistake to just give out a system description. I think people are really, really anchored by like, "Oh, there's this very specific demo that surprised me." Maybe it surprised me because it's a cool interaction, maybe it's these multi-touch things or whatever. Maybe surprised me because it's combining like, "Oh, I can manipulate the file system." With like, "Oh, these are the tabs I already have, and I didn't realize they could be combined before." But I think those demos are very, very important for getting people excited about a new project or a new system.
Samuel Arbesman:
No, I love that. And I think that also goes back to what you were saying in terms of this open-endedness. When I was thinking about what you were describing, there's a great deal of power and often it's much more powerful to be given a box of Lego bricks versus okay, purchasing a pre-assembled Lego set. And the Lego set is cool, but you want to have lots of the bricks. But at the same time though, you still need a little bit of guidance at least initially of, okay, how to put these things together, here's some things you can kind of build. And you kind of need that balance of yeah, the demo, the charismatic demo, here's all the primitives, let's put them together. And I guess, maybe this was a good final question. Obviously, there's a lot of excitement right now around AI enhanced coding. Do you feel that these tools, it allows for even more primitives and more people to play with these kinds of things? Does it actually limit certain abilities to think very broadly about this? I mean, going back to like we were talking about with toasters-
Omar Rizwan:
The layers, yeah.
Samuel Arbesman:
Yeah, all the layers. When you have one extra layer, you're kind missing, it kind of limits you even more. How do you think about that?
Omar Rizwan:
There is a kind of inherent conservatism to the technology in the sense that it is really good at generating stuff that a lot of other people have written. And so I think that is a concern. On the other hand, well, I guess I would broaden it from AI assisted coding to AI more broadly first because I think there are a lot of exciting things happening with perception segmenting, I think a lot of that stuff is very, very useful and very interesting for what we're interested in. There's a discussion of using AI to generate code, and there's a discussion of AI as a whole, and I think those are maybe different discussions.
Samuel Arbesman:
Completely. Yeah.
Omar Rizwan:
I think for generating code, I actually wonder if other system builders are also in this position. We're in a funny position as system builders, because I think if people are constantly using AI to generate some type of code, it kind of feels like we should just make that easier to do in the system, right? Because we control the system. Whereas, if you're building purely applications, I think it makes sense from the application writer's point of view to use AI to make it easier to build individual features or build your user interface or whatever. But as an operating system builder, if a lot of people are using AI to generate something that feels like it's an anti-pattern, it feels like something we should fix.
Samuel Arbesman:
That's fascinating. That might be a great place to end. This was fantastic. Thank you, Omar. I really appreciate it. And yeah, this gave me a lot of things to think about in terms of computing and all these patterns and historical context, so thank you.
Omar Rizwan:
Yeah, for sure. Thanks, Sam.