This week we’re taking you to the hallway track of the final Strange Loop conference. First up is AnnMarie Thomas — an engineering, business, and education professor. AnnMarie gave one of the opening keynotes titled “Playing with Engineering.” We also caught up with many first-time and multi-time attendees who shared their favorite moments from Strange Loop over the years. You’ll hear from Richard Feldman, Colin Dean, and Taylor Troesh. Last up we talk with Pokey Rule. He gave a talk about his project called Cursorless which is a spoken language for structural code editing.
Changelog++ subscribers get a super extended version of this episode which includes everything we recorded at Strange Loop. Become a Changelog++ subscriber
- AnnMarie Thomas – Twitter, LinkedIn, Website
- Richard Feldman – Twitter, GitHub
- Taylor Troesh – GitHub, LinkedIn, Website
- Colin Dean – Mastodon, Twitter, GitHub, LinkedIn, Website
- Pokey Rule – Twitter, GitHub, LinkedIn
- Adam Stacoviak – Mastodon, Twitter, GitHub, LinkedIn, Website
- Jerod Santo – Mastodon, Twitter, GitHub, LinkedIn
Neo4j – NODES 2023 is coming in October!
Also, a huge thanks to Alex Miller (the organizer of Strange Loop) for being so kind to us and getting us there for the final Strange Loop. It was quite the experience.
|Chapter Number||Chapter Start Time||Chapter Title|
|1||00:00||This week on The Changelog|
|3||03:54||It's AnnMarie Thomas|
|4||04:44||Rolling with glitches|
|6||07:52||We learn better when we play|
|7||09:21||Playing to learn|
|8||11:02||Simple Kinetic energy moment|
|9||12:33||How did you connect with OK Go?|
|10||14:28||The story of "Art Together Now"|
|11||16:19||Will there be a museum?|
|12||18:52||Supporting OK Go Sandbox|
|13||19:34||Invited to speak at Strange Loop|
|15||21:40||It's all physics|
|17||24:17||It's Richard Feldman|
|18||25:14||Has it changed a lot?|
|19||26:41||What will you miss most?|
|20||27:09||From Elm to Roc|
|21||29:55||Question from Nikolia Vazquez|
|22||31:35||It's THAT Colin Dean|
|23||32:46||Bring the dogs|
|24||33:33||It's been a journey to here|
|25||35:22||Where's your top hat?|
|26||36:16||We have a similar story|
|27||36:56||We're a bit of an inspiration|
|28||37:29||A request for 'Request for Commits'|
|29||38:57||Thanks for listening all these years|
|30||39:38||It's Taylor Troesh|
|31||39:44||My first Strange Loop|
|32||40:09||Is this your Airbnb?|
|35||42:14||The next night|
|37||43:36||I escorted them out|
|39||44:19||Last year at Strange Loop|
|40||44:44||I'm gonna send you a Magician|
|41||45:14||It's a magic battle!|
|42||45:42||How do I get outta this?|
|43||46:06||I'm a very bad magician|
|44||46:26||The ring leaders|
|45||46:52||Clowns are the best worst|
|47||51:36||It's Pokey Rule|
|48||52:50||Let's talk Cursorless|
|49||54:41||Coding without your hands|
|50||55:35||Spike every func err past bat|
|51||57:03||International phonetic alphabet|
|53||58:15||There's a large mental load|
|54||59:33||Is it forgiving?|
|55||1:01:07||Canceling a command|
|56||1:02:05||Is this your daily driver?|
|57||1:02:28||Signing is a superpower|
|58||1:03:12||Nope all the things|
|59||1:04:06||What's the UI?|
|60||1:06:25||Did you live demo?|
|61||1:07:20||Is this hard to learn?|
|62||1:07:57||How does a stall out work?|
|63||1:10:17||In the real world|
|64||1:11:01||Adam has an idea|
|65||1:12:38||It's OK for things to end|
|66||1:13:47||Thank you Strange Loop|
Play the audio to listen along while you enjoy the transcript. 🎧
Alright, so we have AnnMarie Thomas. Is that how you say your name?
Who just gave an amazing keynote this morning.
“Play with engineering”, is that the title?
“Playing with engineering.” That was close.
“Playing with engineering.” Going off memory here… I would call it a multimedia presentation. Many of our audience have probably been to conferences, have probably given talks… There’s a lot that goes into a talk, especially a keynote. It’s in a beautiful auditorium…
Is that right?
Thousands of people in the audience… And off to a smashing start… And then a little audio/video snafu…
You did so well though.
…which was gonna become a much bigger snafu later on, because you had some audio that needed to be played…
And then –
Yeah. Someone thought I set it up, because we’ve realized the sound didn’t work, and the first one was about a project with deaf kids… So actually, it was perfectly accessible without sound. But that wasn’t true for the later stuff.
But later on it was gonna get required. What were you thinking in that moment, like when the audio wasn’t working? First of all, you handle it so well.
Oh, thank you.
I want to pull up the Slack, because somebody gave you a very nice compliment, better than I can, about that… But what were you feeling and thinking?
Well, I knew it could work… Because we had tested it before when I went up; so when the sound wasn’t working, I realized how lucky I was that it was perfect for what the topic was at that moment, the Playful Learning Lab’s work in the deaf community. But I also – yeah, I did know that the later stuff, which was that I work at OK Go, and also some music visualization stuff wouldn’t work without it… But I also know that the audience – it’s the first day, so you can’t like stop… So I think what I did, and [unintelligible 00:05:50.10] was kind of go to the front and make it clear that I need someone to come help with the tech. In the back of my head though I don’t remember what I said, because I was making some joke about it, but I was thinking “Alright, if they don’t fix it, I need to change the talk.” So I was mentally prepping that we couldn’t have done OK Go… So I would have tried to flub my way through a talk on magic and sleight of hand.
I couldn’t even tell that you were in the back of your mind thinking a Plan B, really. I mean, we all kind of do that, to some degree, when things go wrong… But your presence didn’t at all reflect the internal “Oh, my gosh. Should I have a plan B? Could I just change my talk, basically?” which was – that’s a big deal.
Thank you. I mean, it was a talk on play, and process, and how it’s about process and not product…
Right. It really played to your strengths.
Yeah, someone did ask if it was actually intentional.
I’m curious about the Slack message, because I remember what she said. It was so good what she said, too.
Yeah, so this was Mike English in the Strange Loop Slack… He said “This is the most gracefully I’ve ever seen someone handle such a major A/V issue mid-presentation.”
Well, that was really sweet.
Elliot Cable quoted that, and then like 38 clap emojis, eight plus ones, and then seven 100 emojis.
See, I never end up doing the thing I’m meant to do… So maybe my talk was about how to handle tech issues, but that wasn’t what I prepped for. And if you learn anything from my talk, it’s that things always go wrong in our stuff, and it’s what you do with it.
Do you remember what you said though? You said something about “When we play, we have to expect something or other…” I’m paraphrasing, but you said –
Yeah, I must have said that things never go the way you expect, because if it’s about process, not outcome… How can you do something new if you already know the outcome?
But I will confess that yes, in the back of my mind I was like “It’s been a while, they’re still standing there… We’re not gonna go to OK Go… I think we’re gonna do a talk about magicians, and magic, and attention… Where are my cards?” [laughter]
“Where’s my magic?”
“Where are my cards? I have cards in my backpack.” So I don’t know what I was saying, and I hope it was sensical, because I was –
No, it totally made – and that hit me, because I was… So we – it’s on hiatus right now, but we have a podcast called Brain Science.
And obviously, you learn much better in the state of play.
Oh yeah, absolutely.
[00:07:59.24] You know this probably, as a professor; so you know this. But to me, I’m like hanging on to your talk, because I am a curious person who pays attention to brain sciency things. So neuroscience, those kind of things… And so to me, it’s like, I’m hearing from somebody who’s like steeped in literally educating and playing at the same time, and engineering, and all that fun stuff… So just exactly what you said was on point, because it wasn’t going perfectly AV-wise; talk-wise, great.
It was good.
I want to learn more about your brain science stuff. Currently, I’m totally geeking out on magic. My daughter is a sleight of hand artist, and I can do a few tricks… But I’m on sabbatical, and originally, my whole sabbatical was going to focus on magic… And so I’ve been reading lots of books on magic theory. But it’s interesting, because a big part of my lab’s model of play is surprise. Because when you’re surprised, you’re off-kilter, and often you do good things when that happens, because you have to be fully engaged in the moment. So when you’re surprised, you’re engaged. So if you can surprise your students when teaching, you get them in that moment. And it’s something that magicians are really good at it.
Also, if you go younger - and I work with kids, too - a lot of magic and sleight of hand is based on the idea of object permanence. Like, if it was there, it stays there. But it’s also what magic is based a lot on. So I find it, as someone who wants to teach, better, always. I think there’s a lot to learn there, plus the engineering behind a lot of magic’s quite cool.
Have you ever found that your playful aspects of your teaching - so like if you’re teaching physics stuff, you’re going to… You gave the example –
Of a circus.
Yeah, of a circus, or somebody spinning a ring… These things that are very visual, very interactive, and fun, and kind of whimsy, to use your word…
Do you ever find that in that moment, or after that moment, when it comes time to actually then go apply the principle or the – “Now let’s do the math.” Do you ever find there’s like a come-down, where it’s like “Ah, I’m kind of liking the play part, but not the learning part”?
I mean, hopefully not. I mean, that class was opt-in, and the math and physics was always there, because they were doing experiments. I mean, they were the pendulum; they were the bungee. I think the point for it is we’re trying to use play as a leverage tool for learning. So in that case, you really have to know the theory of what are your learning outcomes, how do you map it to this? And it’s not for everyone. That class would have been awful for a lot of people, and it was elective. And that’s one of my favorite things to do with companies, is ask people “What was your favorite learning experience?” And I’ve done that at workshops, and everyone does it, and people want to like interrupt. I’m like “No, no, we’re just listening.” And a lot of people will say these really big, like, “We went to the circus to learn physics”, or “We did this art thing.” But some people will say – I will never forget, a very well-known programmer said “I love going into large lecture halls, and a professor would lecture at the chalkboard, and I’d learn that way.” And that’s not what you think is gonna be the most meaningful learning for many people, but for quite a few people it is. And it’s so personal, that I think with learning that’s one of the key things, is that there’s not one right answer. It’s the opposite of like calculus; there is not a right answer, and we can’t pretend there’s a right way to do it… So it’s very messy.
Yeah. My son to this day knows – he’s seven years old, by the way. I think I taught him this at least two years ago, maybe three, about kinetic energy. And the way I taught him was because we have a swingset in our backyard, and I pulled him up – and we call him Smoochy. So I held him close to my face, and I’m like “Okay, I’m gonna let you go, and you see if you can smooch me on your way back.” So kinetic energy in that stance will – I don’t know how to describe it, but…
Oh yeah, absolutely.
…the person wouldn’t swing any further forward than they were dropped, and that’s the way it works. And so I taught him about “I’m holding you, there’s energy pent up, and that’s kinetic energy.” So he learned that in a state of play. It was a swing set. So just the fact that you can inject play, and inject learning into a concept like kinetic energy to a five-year-old, and he still understands it, and we talk about it to this day… That to me is like the ultimate of learning and play.
When we did that class at the circus, the final exam was doing a circus about physics for sixth graders. But then we created a music video later, and the song that the music video plays to - and you can find it online - was done by a band called Mighty Fairly, and they took my course notes… And it’s beautiful, like in a nerdy way. One of the lines they [unintelligible 00:12:08.12] Which is lovely. They weren’t just randomly using the words; like, we were doing cross-products, we were doing potential to kinetic, and it was just beautiful, their ability to turn it into this catchy song, that is like totally geeky-correct.
[00:12:30.22] Right. How did OK Go happen for you? The whole sandbox… How did that relationship happen? Do you know somebody? Are you in music? How did the relationship spawn and the partnership form?
Yeah, I went to a conference… I drink too much coffee, and I got in line for a coffee before heading to the airport, literally the last minute of the conference… And the person in front of me was the lead singer for OK Go. And I introduced myself and said they’d given a great talk at the conference, and I love their work, and I use them in classrooms. And they asked what I did, and I said “I teach, I’m an engineering and education professor”, and he said, “Oh, we should do something together.” He didn’t know me, and then I was like “Well, I’m gonna be in L.A. in a few weeks”, and he’s like “Why?” I’m like “I’m giving a talk. Hey, do you wanna give a talk with me?” This is truly like in coffee line, at a conference. And he’s like “Sure.” So my second conversation with Damien was us giving a talk to 1,500 people. And then we chatted over meal and said “Alright, how can we work together?” And we got a grant the next week; a few months later they were on our campus, filming our test content… And yeah, that was April of 2017, so we’ve done a lot since then.
Wow. And in your talk, you mentioned that OK Go’s music videos are very playful. It’s not something that they kind of recognize… Is that what I heard?
Oh, they recognize they’re playful. They don’t recognize they’re – they recognize that they’re using education settings, like classrooms, but that was never something I worked on. And they have a model for how they do things, and they call it playing in a sandbox. That’s why they say they play in a sandbox of an idea. But their play is hard work. I mean, most of those videos take over 100 takes, and…
Oh, yeah, I’m sure.
Yeah. So again, in play, who is it going to be playful for? Maybe it’s playful for the audience. That doesn’t necessarily mean it’s fun or playful for you if you’re facilitating the play… Which we spend a lot of time talking about in our lab - how do you make things fun for teachers? And then how do I make it fun for my team? And then what do I do? I have to go with a way that I can still do something fun, because…
So you told the story of this amazing set of songs and videos that came out of this collaboration during the pandemic, with OK Go, yourselves, your students and like tens of thousands of individuals…? 15,000?
Yes, we say about 15,000.
15,000 people around the world who send in themselves singing, or…
Or clapping or [unintelligible 00:14:49.16] we broke up five animated films in the individual frames, so we had about 15,000 coloring sheets… Or maybe less; we need to do the math. Thousands and thousands of coloring sheets… Which is a non-trivial software challenge it turns out, to then turn those into coherent film if you’re not getting the frames back. So my students had to write instructions on how to use your camera to take a picture, but they still weren’t all great… So then there was some really good software wizardry among my 19-year-old students to make those into non-nausea-inducing, mostly registered animations…
Right. I noticed the edge moved around a little bit, and I thought it was either artistically done, or that’s just what you had to work with.
I’ll be honest, you were seeing two videos. So what you saw was an animation where we cut the square with the coloring on each sheet; digitally we cut those out and turned that into a rectangular film. We then had another set of footage that was the animation pegs, that we actually used, but just not – and those sheets, as they flipped… So one was superimposed on the other. So this was really hard for people when they were watching, and I got some people to – I know what my number was, and that’s not there, and like actually, if you flip forward four frames, the number’s not gonna match, but your frame is there. So that one had two; the one you saw two different –
We had to do that, because for that one – because of COVID, a lot of people couldn’t mail back their stuff. So some of them were digital and some were filmed. And so to make it so they were seamless, we had to do both, and then combine.
That’s right. The five songs you can find on Spotify, and then the six music videos and the documentary about how the whole project happened you can find on OK Go’s sandbox.
Right. What about all the drawings and things like that? Should it be like a mini museum, or something like that?
Yeah, I mean, I have cases of drawings, and we’ve been talking about what to do with them. We’ll see.
Well, I think about that stuff. I have a hard time letting that stuff go from projects…
We save it all. And the band saves a lot of their stuff. So we have artifacts. And one of them we’ve done postcards that were put in a giant praxinoscope for Yuri’s Night. And then those postcards were launched on when one of Blue Origin’s New Shepard launches. Those postcards that went back to the schools, that did them, and they had their own displays. So the kids who did postcards with their classes, they got theirs into space. And then Blue Origin offered to fly anyone who wanted to send theirs, they could be flown. But we arranged to fly the postcards.
So their postcards went to space and back…
And then back to them, to the school.
And back to them.
Yeah. And were used in a video… Yeah, not bad.
That’s pretty cool. I’d be just totally geeked out if I was a kid in school and that happened to my postcard, right?
Yeah, like “This has been to space…!”
“This thing went to space and came back to me.”
We had done a project too where we had his design and art experiment. Because OK Go does a video that looks like they’re in zero gravity, but they’re not. They’re in microgravity on a vomit comet, so a plane flying parabolas. We did art in space, which was – OK Go didn’t actually send their stuff to space, but what would you send for an art project? And we had kids around the world design art projects they’d send to space, and then two were picked. Then my research students built them. One involved a lot of glitter; that was hard to get safe enough to fly, and then one of them was basically a little guitar kind of thing. And those actually flew on December 2019, Blue Origin flight. So Blue Origin was a fun collaborator for a lot of that stuff. Out of this world projects…
That’s cool. Yeah. Any more projects like this in the work with OK Go’s sandbox, or OK Go directly?
I mean, OK Go - yeah, they’ll have some stuff coming. They just released a great new song. Damien and his wife had a movie that they directed, the Vini Bubble, and they did a song for that. There’s a visualizer. So OK Go sandbox should put something out about that… So yeah, a little thing will come soon.
In terms of big new things, there’s definitely discussions. The band - they have new music coming out, so we’ll see where that goes… I’m on sabbatical this year, so I’m working on some children’s museum exhibits, and then doing a lot of work in the deaf community has been a big focus, and working with a company in Denmark that does a lot of playful things…
This OK Go sandbox, is it a 501(C)3? Can people give to it? If they care about what you’re doing, how can they support it?
Yeah, no, it’s a project. My university is a nonprofit. So it’s a project of the University of St. Thomas, Playful Learning Lab, in collaboration with OK Go. So yeah, funds that come to us – so we could do it thanks to amazing corporate sponsors and individuals… And yeah, we never knew where that project was going. We thought it’d be a little thing, and it has spiraled way beyond our imagination, but… I’m slowly learning that’s kind of how a lot of things work with the band. I can say, hands down, their lead singer and that whole team of four guys - they’re the most creative people I’ve ever worked with. And for Strange Loop, I’d say - their guitarist, Andy, is a computer scientist, so they think that way.
What did you think when you got invited to do a software conference keynote?
I was so nervous. I’ve been so nervous. I’ve heard of this conference before, and if you read the rules, it’s all like your talk should not be about process, it should be… And I was panicking. Like non-stop panicking about it. I was talking to some programmer friends, I’m like “I think they asked the wrong person.” But yeah, I’ve heard about Strange Loop for years, and how cool it is, so it’s delightful to be here, and I’m sad I come just as attending… But better last than never.
[00:20:00.03] How did you like how Alex introduced you? His process to find keynoters, and how he found someone like you.
That was lovely. I was so delighted when I got Alex’s email. So that was… Yup.
So sabbatical… You said a little bit about what you’re working on now, but what’s next, or what’s coming?
You know, a couple of things. We’re finishing up some papers… We’ve just finished a huge computer science project; well, we’re still in the middle of it, with the deaf community… So we’ve been working for over 10 years at Metro Deaf School, which is a PK through 12 charter – actually, a birth through 21 charter school in Twin Cities, where all the kids are deaf, and about 13% are deaf-blind… And so we’re working with them on engineering projects, and during the pandemic like an online camp, with boxes, and delivered… And we have been working on their after-school. We did an engineering class for all their middle schoolers, a 20-day engineering class that actually my students are presenting at Princeton next week, I think…
But we also, this summer, thanks to Google, we had a grant to look at computer science the past year, and so we’ve been working on videos that are interpreted in American Sign Language by an amazing deaf woman… So deaf interpreted as well, on programming with the Scratch language, so that this fantastic curriculum out of Harvard, out of Karen Brennan’s lab can be a little more accessible in the deaf community. So we’ve been working hard on that, and getting some papers out on that.
I’m trying to learn some new things… So I’ve been deep-diving into magic. I’ve been doing a lot of work on that. I am working on some children’s museum exhibits, which is always a blast…
…and I’m doing some work with Lego as a consultant. So I fly to Denmark once a month and hang out with the team over in Billund…
Yup. And then my personal goal is trapeze, so just this weekend I got asked to join my first flying trapeze team, so I’m training for a show…
No way. Oh, my gosh.
Yeah. Middle-aged mom on the trapeze.
So a magician wasn’t enough… You’re like “You know what, I’m more of a trapeze artist/magician…”
It’s all physics…
Did you say sabbatical from, or just sabbatical in general?
Okay. Because your version of sabbatical sounds like a lot of work to me…
Well, a sabbatical for an academic is – well, you’re paid half your salary for the year, basically, and you’re doing things that further you as a professor. But you don’t have to go to all the faculty meetings, or teach. And I usually teach between six and nine courses a year, and I’m actually a business professor and an engineering professor. So there’s a lot of faculty meetings when you’re a dual appointee, so I get to skip most of those.
Yeah. I still have my advisees, but…
Some people mean sabbatical differently, like they’re searching for their next thing… I think that’s why you probably asked that, Jerod, like what’s next for you. I didn’t know that’s how it works for –
Oh yeah, academics, like every eight years we can…
Is that a whole year?
Mine is. I’ve never done a whole year. So I’m doing a whole year.
Well, you seem very excited about what you do, and passionate about the people you work with… So taking the actual time off seems to be a challenge.
Oh, and I’m not good at that.
But that’s okay.
We need more folks like you in education, that just – you seem to eke out every connection and possibility, based on what I know from you.
We aspire to do that.
Well, we appreciate you talking to us today.
Thank you guys for asking me to. It was fun.
It’s been awesome. It’s all physics…
It’s all physics.
It’s all physics.
Cool, thank you, guys.
Yeah, so I’m Richard Feldman. This is my 10th Strange Loop. I was in St. Louis when they started, so I’ve been to the first several… My best memory’s actually from just before the pandemic. Every year we’d have ElmCon right before Strange Loop, in like the same venue… And that was awesome, because that was really about community, and we’d just go and have an all-day Elm fest, and then followed by that immediately Strange Loop. So it was just great having like both of those back to back. And then we’d have a lot of overlap, where people came out to Strange Loop, and they’d be trying out Elm for the first time, and they just kind of wandered over to Elm Conf… It was just awesome. It was a great time, and I’m gonna miss it.
Has it changed a lot over the years?
Definitely. Yeah. I mean, I would say what hasn’t changed is kind of the theme of the conference, which I’ve always kind of thought of as stuff Alex Miller likes… But it’s kind of like cross-pollination; it’s like a little bit of art, a little bit of miscellaneous biology stuff, a little bit of practical stuff, functional programming… It’s kind of like a good mix, and like interesting speakers… Whereas a lot of conferences are like very enterprise-focused, or very language-focused, something like that. It’s always been kind of a nice mix.
I think the main thing that’s changed is that it’s gotten bigger and better and more ambitious over the years. The first year, it was in a theater, and there were two tracks, each one in front of a movie screen, and that was it. And I remember one of the talks was on this new thing called GitHub…
Yeah. I was like “What is this?” We were using Subversion at work at the time; not even Git yet. So I was like “Alright, this is an interesting pitch. It looks kind of like a neat tool.”
Was that 2009 then, or…?
I think that was 2009.
- If it was 2010, that would have been behind.
Yeah. So Alex was telling me that he was pulling up some pictures from then and he saw me in one of the 2009 photos… So I guess I’ll be in a slideshow later.
But yeah, I’ve spoken here three times, I did all the Elm conferences, I spoke at all those… So I have a lot of memories as a speaker, as well as as a participant.
What will you miss most?
Oh, definitely just all the people coming together in one place. Since I got here, I’ve just been going from one interruption to another. I’ll run into someone I know, start having a conversation, and then I’ll see somebody else, like “Hey! Let’s go–” And it’s just nonstop, back to back, since I’ve set foot in the building. Actually, before that; since the hotel, when I left my hotel room, and then we walked over together… It’s just nonstop. It’s really hard to find such a great collection of awesome people.
So you’ve also changed over the years…
We’ve had you on the show years ago.
Yeah. For Elm stuff.
You were like the Elm guy. You were like Elm’s unofficial official representative…
[laughs] I gave a lot of Elm talk, that’s for sure.
A lot of Elm, and now you’re not doing Elm.
Yeah, so I’m working on an Elm-inspired programming language. It gives you an Elm-like experience, but in other use cases. So Elm is really like browser-based UIs, and Roc is the language I’ve been working on, and it’s very focused on other use cases. Like command line apps, servers… I like to think of it as like the long tail of use cases. Theoretically, you could even use it to write like a Vim plugin, or something like that. Nobody’s done that yet, but… Literally, pretty much anything you want.
Well, tell me about servers, and TUIs. How does that work?
Very simple. I mean, if you want to build a server in Roc, we have this – we’re not going into a lot of detail on it, but…
So you could build a TUI and a server in the same language?
If you wanted to, yeah.
[00:28:04.05] So we have this concept called platforms and applications. The basic idea is whatever you’re about to build, you’re saying, “I’m gonna build an application in Roc”, you always have to pick a platform to build on. Exactly one. And a platform feels to you as a user kind of like a framework, but actually under the hood it’s doing a lot more than a framework would. It’s doing stuff like providing all the IO primitives, and also memory management. So that’s how you can have something, for example, like a database extension. In a lot of languages if you’re doing a database extension, it’s like “Okay, so in this database extension I’ve got HTTP, and like multi-threading, and file IO… Am I allowed to do all that stuff in a database extension? Maybe not.”
So the idea is that on the Roc platform, the platform says “I’m gonna be both a framework, and also like, here’s just the primitives that makes sense in this use case.” So if you’re doing like a TUI, then somebody can make a platform for just that, that’s got APIs that makes sense for that. And a server - same thing, just APIs that makes sense for that.
So is Roc a platform to make money?
It’s just for fun?
Yeah. I mean, well, I’m doing it at work now, so I guess I’m getting paid to do Roc stuff…
The goal is not to make money. The goal is to make a language that I want it to exist in the world.
Okay. Awesome. And it exists.
It does. Yeah. You can try it out right now.
But it’s not finished, is it?
roc-lang.org. Definitely not finished, yeah.
Like Rocafella Records.
Yeah. It’s a mythical bird.
Is that what it is? Like Run DMC Roc? No. Who was that? Beastie Boys.
Jay Z. But no relation.
Jay Z I think, yeah.
Sorry about that.
No relations. [laughs]
Rocafella Records has no affiliation that I’m aware of with Roc the programming language.
Not yet, but future sponsorship…
He’s open to an affiliation.
[laughs] You know, I haven’t talked to him. I haven’t seen him ever, so…
Oh, you could put Roc on the blockchain.
That’s alright –
We’re podcasting here. Come on my microphone.
Yeah, it’s recording, but here, come over and say it in the microphone so we can hear it.
This is Nikolai. He’s got a question for our friend here, Richard Feldman.
Go for it.
Hi, I’m Nikolai Vasquez. Why the focus on WebAssembly? What do you want to enable by having Roc work with Web Assembly?
See you later, Adam.
I would say there isn’t a focus on Web Assembly. So Roc compiles to either machine code or to Web Assembly. Actually, almost all the use cases today are not Web Assembly. The one that’s on the website is we have a web REPL. So you can try out the language right in the browser. And actually, the entire REPL is running in the browser, so you can like turn off your network connection and it still works. And that’s basically like – we have a little stripped-down version of the Roc compiler compile to WebAssembly, running in the browser. And then we also have, obviously, it compiles your Roc code to WebAssembly and then it runs it in the browser. So that’s like the main use case for it. But there’s plenty of stuff people can use WebAssembly for, so if people want to, they can do that.
Do we have a follow-up?
Oh, no. I’m very involved in the Rust community…
Oh, yeah. Well, Roc’s compiler was written in Rust, so I’m very familiar with [unintelligible 00:31:07.20]
A lot of WASM love going on around here…
I should have had a fourth mic.
Good point. Well, Richard, thanks for stopping by, man.
Yeah. Thanks for having me. That’s it?
I appreciate you, man.
I listen to you guys all the time…
I love it.
Glad to get you on the mic then, man.
So I’m Colin Dean. I run Code & Supply up in Pittsburgh, a community of software professionals. We’ve run our own conferences for a long time too, and I’ve wanted to come to Strange Loop for a long time. About 10 years or so since the first time I heard about it. Strange Loop has influenced our conferences through people’s feedback, as well as people who are in the coding supply sphere going to Strange Loop and telling us all the good things that they’ve experienced here… And so I had to come and see it myself. And finally, this year, after 10 years, I’m able to come.
My girlfriend, longtime partner, about 15 years, has usually had a dog show on this weekend. She’s a semi-professional handler and breeder, and it just so happens that on this particular year, two shows swapped weekends. So for the first time I haven’t had to stay home and take care of our many, many dogs…
How many dogs have you got?
We’ve got eight.
Question for you… As strange as this conference can be - because it’s called Strange Loop - could you have brought the dogs?
I probably could have gotten a beagle here. We breed beagles and vizslas. I probably could have gotten a beagle here, especially one of our smaller beagles. The vizslas don’t travel super-well, especially on planes… Well, they travel just fine in cars, but they’re too big for planes. I’d have to put them in a crate, and that never goes well for shipping dogs.
Could you get a bunch of seats for your dogs on the plane? Or dogs have to be in the stowing area, or whatever it’s called?
For the most part, they have to be – if they’re in a crate, they have to be in cargo.
Could you have gotten a private jet, with just you and the dogs…?
Oh, then we’d just load them up.
Load them up, right?
Get some cuddles in the cabin, you know… [laughter]
Bring your girlfriend with you…
But either way, it’s been a journey getting here, right? You’ve tried a couple times, and to no avail, schedules didn’t align… And finally, shows swapped schedules, and here you are. How’s it feel to make it to the first and final for you?
It’s great so far. I’ve had some great interactions with random people, and met some people… Seen people that have come to my conferences, and that I’ve met at other conferences over the years… I look a lot different; I’ve put on a little bit of weight since the last time I’ve put on a conference, and I don’t have my signature top hat, which is really throwing people off…
There’s a signature top hat?
We didn’t even know about the signature top hat.
Yeah. If you go in the Changelog Slack, you’ll see the picture of me and it. And I use that picture everywhere. People are always like “Oh, you’re the top hat guy.”
That makes more sense now, because if you would have said you were that Colin Dean, I would know. You didn’t see that Colin Dean in Slack, with the top hat? I’ve seen that Colin Dean. So you’re that Colin Dean?
I’m that Colin Dean.
Oh, my gosh! Do you see how this works in the world?
The real world is so weird… [laughter]
It’s weird to interact with people online, and then you meet them in-person…
Yeah, it is.
The team that I worked on for work - I got moved on to in like early 2021… Literally, none of us had ever met each other in-person, because we’d all started at Target like during the pandemic, or we had been working on completely different teams prior to the pandemic. And then suddenly, I don’t know, when it was it - October of last year, we all got together at the first place, and they were like “Colin, you’re a lot taller than we thought…”
I’m like “Yeah…” I had my hat on, and they’re like “Oh, but the hat’s real. That’s how I knew you.”
And it adds some interest too, I’m sure; at least to the assumption of the height. So why no top hat? What made you leave it at home?
I forgot it…
You forgot it?
Yeah, I thought I had loaded it in the car the night before, and it wasn’t until I was already onto the parkway. And I probably could have had time to double-back and get it, but it would have been really close. By the time I got to my gate, I only had about five minutes, 10 minutes wait before the boarding.
No way… You’re that kind of person?
Is that normal for you?
[00:35:51.02] Pretty much. There are times – if it’s like a later afternoon flight, yeah, I’ll show up three hours early and I’ll just sit there and compute a bit. But if it’s like a morning flight like mine – not an early morning flight, but if it’s a morning flight…
What time was your flight?
It was like 10 o’clock.
Okay. I’d probably have been early for that one. What I also find cool about this story, going back to getting to Strange Loop finally, is that this is – you know, in terms of us, we have a similar story; we’ve wanted to be here many years as well. And it wasn’t so much scheduled, it was just… Things. Somehow we weren’t able to make it. And so not only is it your first, it’s our first… But then you’re also in Changelog Slack, and you’re also an avid listener of the podcast. And this is the first time you’re meeting us too, so…
I know, right?
So… First time to Strange Loop, first time meeting us… It’s wild how that works.
Yeah. And I have seen pictures of you guys, but it’s always just been like your…
…your avatars. And interacted a little bit, and… But yeah, it’s always cool to meet people who are doing awesome content generation. You guys are a little bit of an inspiration for me continuing to do the stuff that I do.
I don’t do podcasts, but Code & Supply records our meetups, and publishes them online for people to see… And you guys serve as an awesome model of how to do a podcast right.
Well, thank you.
We appreciate that, very much so.
And several of them. I think I’ve listened to all of them… I can’t remember the name of the one that Nadia did…
Request for Commits.
Yeah, Request for Commits. That was like –
There’s a big request for that to come back… I’m just kidding. There’s no requests.
I’m on the board of Homebrew, and one of the things that I always have to think about is “Okay, how are we going to fund the things that we’re doing?” And I think having requests for commits be like – it’s not actively in the front of my brain, but it’s a basis for thought. And the knowledge that Nadia and guests were able to share kind of formed a basis for how I approach trying to find ways to get people who are doing open source money. I used to be on the Gratipay staff, and trying to get people to just give money in that way…
Wow, okay. More lines crossed over there. Chad Whitaker…
Yeah, that’s true. Pennsylvania, Pittsburgh area…
So Request for Commits is still available to listen to, for those listening… Changelog.com/rfc. Is it still – did we ever get rfc.fm?
I think we gave it up.
I think we did. It might still be there… I don’t think it is though. That was a cool name. rfc.fm.
Seinfeld right there. They seinfelded that one.
They did. Leave them wanting more…
They really did.
Well, Colin, thanks for listening all these years, thanks for –
He’s that Colin Dean.
He’s that Colin Dean. Top hat Colin Dean.
Nice to meet you, man. Nice to see you face to face.
Yeah, and hopefully when next I get to finally throw another conference in Pittsburgh, we’ll get you guys up there.
We’ll come, man. We’ll be there.
I’ve never been.
Take me to the mansion. Take me to the river.
Take me to the river house.
PyCon is next year and the following year, and then we’ll see what happens after that.
We might do Uptime or Hartifacts in 2024.
Cool. Thanks, guys.
Hello. I am Taylor Troesh, from good old taylor.town. I’d like to tell the story of my first Strange Loop, many, many years ago. This is my sixth or seventh. So this had to be like 2012, or something like that.
[00:39:53.00] So I got this Airbnb out by the river… And it took me like an hour or two to find it in the middle of the night, because it was just this old, abandoned building. And I was very scared, and nobody was texting me back, and I had nowhere to go. I’m totally alone. And so finally, finally, these guys say “Hey, are you in the Airbnb?” I was like “Yeah.” They’re like “Oh yeah, come on in. We’re in here. You’re in with us.” So I was like “Oh, do you guys own the Airbnb?” I’m walking in, there’s a guy passed out on the couch with some illicit substances on his chest… And they say “Oh, that’s the host. That’s the guy that owns the Airbnb.”
They look at me, and they’re like “Do you want a drink? Here’s a shot.” He poured me a shot. I was like “What do you guys do?” He’s like “I’m a regional manager for McDonald’s.” And the other guy’s like “I own a car salesmen place”, something like that. And so we’re just chatting, and then a commotion starts. This is like two in the morning… And like nine girls walk in, and they’re pulling each other’s hair, and they’re hitting each other in the face… This is 100% all true. I promise. This happened.
So they were on vacation in St. Louis, on a bachelorette party, and literally half an hour before, they all just found out that one of the people in the bride’s party slept with the groom.
So this was the situation. We have the Airbnb host passed out on the couch, we have these two guys that I’m talking to, and they’re there kind of creepy… I’ll get that in a bit. And then we have this bridesmaid party where they’re literally punching each other in the face. That is when I make my move out to go upstairs… This place is still a rundown building; there’s, literally on the second floor, you can see down into the first. There’s a giant chasm in the floor that you have to walk around, because you can fall down into the first floor. This place is like three stories… It’s like this old brick building.
I wake up the next morning, because there was a motorcycle show outside… And so at 5am there was motorcycles lining up. Okay.
And they’re loud.
Okay, so I want to come back to the next night. These guys… I come back from Strange Loop, and all the girls have made up at this point. The wedding’s back on.
These two guys that I was talking to, they went out into town and brought some girls back from the bar. And so I get back, and we’re all chatting… And the girls are like “Oh yeah, these guys say that they work in investment banking.” I was like “Oh, that’s not what they told me.”
You outed them.
Well, I was thinking this…
It was an internal thought.
Oh, you were thinking that. You didn’t say that.
Yeah, I’m thinking this.
Okay. It’s a big difference.
So then one of the girls pulls me aside and says “I’m uncomfortable. Can you escort me out?”
The girl they brought back, you mean?
Yeah, the girls they brought back.
So I essentially had to – so I left with them, helped them get an Uber and stuff, and kind of kept the… It was just such a weird situation, because you can’t say no [unintelligible 00:43:14.29]
And you took your stuff with you, or you had to go back and get your stuff?
No, that’s the problem. This is urgent, and it’s in the middle of the night… And so my stuff is at this Airbnb, with these guys, and I don’t know what they’re doing… And all they know is that I’m like trying to – I’m in this weird position where they said “Hey, we’re good…” But they didn’t want them to leave.
Right. You took their girl and left…
So I escorted them out, and I had to leave my stuff at the Airbnb. Luckily, they didn’t touch my stuff. I didn’t see them again until the next day, in which I was like “Yo, what’s the deal?” And they’re like “Oh yeah, we just lie a lot.” And that was it.
[laughs] And that was it.
Like, that was such an unsatisfactory ending, but…
It could have been so bad.
I think they were so drunk the night before, they didn’t remember anything.
“We just lie a lot.
So the moral of the story is, if you ever stay in St. Louis, the Grand Union Station Hotel is an amazing hotel to stay at.
Oh, the conference was amazing. [laughter] That’s the story…
That’s the ending point right there. That’s his ending right there.
If you have to…
I do have one more from last year.
See, he’s got more. He’s got more.
A Strange Loop memory from last year. I’ve been coming for a long time, but last year was a highlight, for sure. I am somebody who likes to give gifts out. I carry a little bag of trinkets. And I gave one to somebody, and he said “Oh, hey. Thank you. My daughter is gonna love this little hair clip. I’m gonna send a magician after you later.” I’m like “Well, okay… I don’t know what that means, but… I’ve got a magician on my tail.”
So I’m in the middle of a conversation with somebody the next day, and somebody taps me on the shoulder and says “Are you Taylor?” I’m like “Yeah.” He’s like “I’ve got some card tricks to show you.” And so he started showing me card tricks. It was pretty good. And he’s like “Yeah, I’m the magician that so-and-so sent after you.” Again, he’s like showing me tricks… And somebody comes to him and pulls out a deck of cards and says “Is that the such and such shuffle? Let me show you.” And so they start having a magic battle…
…like doing card tricks. And I think at this point they’d both exhausted their very comfortable tricks, and they keep on messing up. And it’s just – it’s getting sloppier and sloppier, because they’re going further into their repertoire in this magic-off…
So I kind of am like “Hm… How do I get out of this?” Because I was stuck in the crossfire. So I said “So how long have you been into magic?” and he’s like “Oh, I’m a microbiologist.” [laughter] He’s like “Magic is a new thing.” I’m like “Oh, okay. This makes a lot more sense.”
Did you feel compelled to like keep watching, despite them messing up, and…?
So the thing is, I’m a very bad magician myself, so I tried to enter the fray. I was not even worthy of being looked at in their eyes. I do coin magic, so it’s way inferior to card magic.
I like this idea that there’s an upper and lower echelon of magicians.
Oh there is, for sure.
Yeah, card magic I think is near the top. The people with the rings… Those are the ringleaders.
It’s kind of like the comedians that do ventriloquism, or any sort of props… They’re just –
Prop people are at the bottom.
So coin magic is bottom. Is that what you’re saying?
Coin magic I would say is near the bottom.
Who are you better than?
Let’s see… Who’s lower than me? Oh, clowns, dude.
They’re kind of at the bottom of comedy, too.
They’re at the top of comedy.
No way… Clowns?!
They’re at the top of comedy, but at the bottom of magic.
I’m not sure I like your spectrum.
Alright, well, we’re here with Pokey Rule, the guy whose name I will never forget… It’s a unique name.
Some of it is self-given, some of it inherited.
Yeah. Well, it was given to me by my parents, but I was quite young when I got it… But not unborn.
It’s not on your birth certificate.
Not on my birth certificate.
Pokey, you’re talking about.
Why do they call you that?
When I was a baby, I was really fat, so my parents called me Porky… And then they sent me to school, and obviously, their friends told them they couldn’t call a little fat kid Porky, and so they did the only natural thing that two strange hippie parents would do and dropped the r. And here I am today.
I was gonna say, I thought that you slimmed down and they took the pork out… [laughs]
No, no, no, no… Yeah, yeah…
Did I bring up a wound at all…?
No, no. It’s fine. It was years ago, I’ve recovered.
I mean, he literally goes by this name, so he probably talked to a lot of people about it.
That’s true. You do wear it with somewhat honor, I guess. Is it honor you wear it with?
Yeah, I like it. I mean, I could have dropped it…
Yeah, he had the choice. It’s his name.
Yeah, it was a choice. Yeah.
When I saw your talk title on the schedule, I was like “Cursorless. That’s interesting.” Spoken language, editing stuff… You’re gonna have to tell us about it. But I was like “Okay, spoken language. That’s cool for a podcast.” And then I was like “Pokey Rule. Who is this person? I’ve gotta find pokey Rule.” So we’ve found you, thankfully. We met you yesterday.
We wouldn’t let you talk to us…
We were like “No! Go Away!”
…because we wanted to talk to you on these microphones, so…
“Don’t waste tape!”
We’re happy to have you here. You just finished your talk…
The pressure is off…
The pressure is off.
Tell us about Cursorless, because I didn’t get much further than your talk title.
Yeah, no worries. So Cursorless is a spoken programming language for editing code in text.
Okay. Why editing and not writing?
Yeah, it’s a good question. So because 90% of what you do when you are coding is editing. You copy and paste it off of a Stack Overflow, and then you edit it. Or like Copilot writes it and you edit it. Actual straightline coding is maybe five, ten percent. You find it somewhere else in your codebase, you copy it, and you change it. So like editing code is coding. And when I first arrived on the scene with voice coding, it was great for writing code in a straight line. So for that 5% of the time, I was cruising. But for the 90% of the time when I was editing code, it was really painful.
I see. So why did you start voice-coding in the first place?
So I had repetitive strain injury. So basically, I spent too much time hunched over a computer… And it was painful to use a keyboard. And so I tried all kinds of stuff. I hired a guy off TaskRabbit and I dictated him shortcuts, and that was pretty brutal… And then eventually started – I found this amazing software called Talon Voice, which allows you to build custom grammars for whatever you want… There was a community grammar. I found some limitations and I built Cursorless on top of it.
So that’s cool. So we talked to Josh – was it Comeau a couple years back? He also did that – he had RSI, and his was more like “Here’s how I do it.” I don’t think he built anything on top, like you did with Cursorless, right?
No. No, no, no. Yeah.
But similar situation, I guess.
Yeah, exactly. Yeah. And his blog post is a great resource for people starting. It’s like one of the type things that pops up when you search for voice coding.
Yeah. But you’ve taken it a whole step further. You’re like “I’m gonna create a language around this.”
That’s right. Yeah.
Are you doing the pop sound, too?
It’s harder for you.
It might not translate so well in this somewhat loud room, but… You’re popping.
Yeah. I hope you don’t have a pop filter on this thing. [laughter]
“I can’t write an E, because they keep pop-filtering my E.”
Oh, my gosh… Get the pop filter away!
What’s a typical command look – or sound like, I guess?
Yeah, so an example is “Spike every func air past bat.”
“Spike every func air past bat”?
I feel like we need to get a loop of that, and some great master beats behind it…
Do it again.
“Spike every func air past bat.”
Do you make it musical on purpose, or is it just a side effect?
Yeah, the second time I did. Yeah.
That was good. Let’s loop that sucker. Put a beat behind it. This could be a new form of music. Okay, so what does that do?
[00:56:01.11] Right. So what that does is it inserts a new line before every function, in a particular range of function defined by two particular endpoints, air and bat. So spike every func, air past bat. We’re spiking, putting a new line before every function, in the range between the air function and the bat function. Now, what are the air functions in the bat functions, you probably are going to ask… So air, this is where we get into – and this on a podcast is gonna be tough, but there’s hats all over the little tokens on your screen. There’s these little hats that we put right over certain letters. And so if there’s a hat over an A, then that token is called air. Because air is the word we use for a. And if there’s a hat over a b, then we call that token bat. And so func air is the function which has a hat over an a somewhere in it, and func bat is the function that has a hat over a b somewhere in it. So that’s spike every funk air past bat.
So do you have basically a codeword per letter?
So this is a lot like CB radio stuff, right?
Yeah, exactly. Like the international, like, alpha, bravo, charlie, delta, that kind of thing?
Yeah. So it’s like that, except that’s way to slow. That’s like two syllables per letter.
Because alpha is longer than air…
I have no time for that, right? If I’m coding all day –
It’s challenging too, I would say… I mean, Lima, Victor, Mike… Well, Mike’s not bad.
Mike’s good. Mike I can – yeah.
So a single syllable… Have you ever thought of going zero-syllabic?
I mean, so that’s what the pops are.
Yeah, exactly. Even faster.
So what do you map a pop to then? Space?
So pop doe two things. Pop wakes up Talon, which is the software that Cursorless is built on. So if it’s sleeping and I’m talking to someone, I can pop and that will make it start listening. And then once it’s listening, pop will repeat the most recent phrase that I issued. So if I said “spike every func air past bat” and I popped, it would do that again.
Okay. That’s super-useful, I’m sure.
Yeah. And it’s great, because you can make these kind of on-the-fly macros… Because a phrase can be like multiple commands in a row… So you can be like “Delete this”, and then go to the next function, and then you just pop, and it just keeps doing it over and over again.
So I guess since you had this injury, you don’t have a lot of choice.
So at the time I started, I did not have a lot of choice.
You were sort of forced to figure out a way, if you wanted to keep programming.
Yeah, exactly. Exactly.
Is it any more mentally taxing to do this method of editing, not coding? Is it dramatically different? Does your voice get strained? Like, what other side effects come from having to speak your coding?
Totally. So initially, absolutely. There’s a large mental load. And that’s because – I mean, you can kind of think of it as brain one, brain two… We have this more modern brain which can think intelligently about code. And it’s our language center, and it does all this sort of stuff. And then there’s our lizard brain, our brain one, which – system one I think it’s called in this nomenclature, which is basically like the thing that’s like muscle memory, and like doesn’t require thinking. And you only have one brain two. So at the start, when you’re trying to voice code, I have to remember, spike, every, func, like what are the words… And it leaves no space for actually thinking about code. But what happens is like anything, it moves into system one, and leaves system two free as you practice. And so now - no, it’s easier than a keyboard, and it’s faster. But at the start, absolutely.
Is it forgiving? I know when I talk to Siri – this is my interpretation of how it might be to do this… Because when I talk to Siri - you know, I’m not the perfect speaking every single time. I might slur something, or I might whif something, and Jerod things I’m saying [unintelligible 00:59:47.08]
What happened earlier, yeah.
[00:59:50.21] Yeah. Like, is there room for error in your speech pattern? Do you have to be precise? How challenging is that?
Yeah. So I guess there’s kind of two ways in which you could define forgiving. One is forgiving in how you enunciate, and the other is forgiving in what you say. So you could very clearly say a command that’s not real. On the other hand, you could slur a perfectly normal command. And so there’s sort of two questions there.
And so in terms of is it forgiving with just slurring speech, speaking fast, but it’s the right command - it has gotten much, much better. The recognition engine has gotten quite good, because it was trained on millions and millions of hours of speech, and it’s gotten to the point where it’s fairly accurate. In terms of is it forgiving if you just kind of like do something that’s not quite right? Not at all. And that’s a double-edged sword. The problem with Siri is you don’t necessarily know what you are allowed to say. Whereas with this, it’s an extremely precise grammar. And so on the one hand, that means that you know exactly what you’re allowed to say. But on the other hand, if you go outside of that, it’s not gonna work.
So it just cancels it? It just ignores the –
If you’re lucky, it cancels it. But oftentimes, what it’ll do is it’ll find the closest thing that sounds like it, and then, you know, your computer explodes. [laughs]
You’re like “Oh, my gosh…”
What’s your undo sound?
So if I’m in the middle of a command and it’s going South, [unintelligible 01:01:10.00] Like you’re calling a horse. And that’ll cancel the in-flight command.
Yeah, exactly. So if I do that, that’ll cancel it in-flight. If it’s after it’s already run, then I basically I say “Nope”, and that’s undo, and then I just pop to repeat the Undo.
Speaking of Nope, have you seen that movie? It’s a good movie.
It’s a great one. I love that one.
That’s cool, though… I mean, that’s the hard part - if you mess up, how do you get out of it, and how do you –
There’s times I’m talking to Siri, I’m like “This is going south.” I just say “Cancel, cancel, cancel.” For whatever reason, I’ve gotta say it three times. That’s my thing.
No, it’s funny… Actually, in the built-in community grammar, instead of making a sound to cancel, you actually do have to say cancel twice.
Yeah. So you’re onto something there.
I’m a maximizer, so I’ll always add one more for the requirement, in most cases…
Okay. That might be too much… [laughs]
So yeah, cancel, cancel, cancel.
So do you still use this day to day then?
But optional. You don’t have to.
Exactly. So I’m comfortable using a keyboard, I can. Occasionally, I will use a keyboard, if for whatever reason my voice is tired, or if – maybe it’s a superduper loud cafe, then I can use a keyboard… But yeah, my preference nowadays is to code by voice, and I do most of my coding by voice.
Yeah. I was watching two folks last night at the party sign, and they were like furiously signing. They were emotionally signing… And I was like “That is so cool, because they can communicate –” This has a loud space. To communicate clearly in a loud space, you have to elevate your voice, strain it, struggle to hear somebody… All these different things. Whereas somebody who can sign, whether they’re hearing-impaired or not, is like a superpower, because they can talk in scenarios where you cannot.
100% And that’s why I think every medium has its advantages and its disadvantages. So in certain situations, voice as a medium has disadvantages that signing and using your hands don’t. But on the other hand, if I’m eating Cheetos and my fingers are completely orange, I don’t want to use a keyboard, right?
So they both have advantages.
I was thinking of something more dramatic, where maybe –
More dramatic than that…? [laughs]
I’m stuck on the Cheetos thing; this is a really good point. Go ahead.
Where you have to pull the kill switch. Like, somebody came to your house, and you need to wipe your drive, and you’ve got a command for that, or whatever…
Nope-nope. Click-click. Cancel-cancel.
They’ve got your hands tied up, and you’re like “Oh no, I can’t type!” [laughter] “Nope all the things!”
Yeah, nope it all.
Nope all the things. [laughs] That’s awesome.
I don’t have that. I can’t do that.
You could though. You could install it.
More likely you’ve just got some Cheetos on your fingers though, and you don’t want to touch the keyboard.
That’s a more day to day, yeah.
I mean, I’ll get in that situation. I won’t have Cheetos, but… Any kind of food, you’re like “This is kind of gross, but I’m really hungry, and I want to keep going.”
Exactly. That’s exactly right.
[01:04:05.16] So is this like a meta thing that sits over the top of the OS? Is it an editor deal?
Yeah, so I would say 90% of the codebase lives in a Visual Studio Code extension.
So that’s where most of the real bulk of the logic is, is in that VS Code extension. But basically, just to give you the stack, there’s Talon Voice, which is the engine that you define the grammar of “Here’s what you’re allowed to say. You can say spike”, whatever etc. In Talon you can define any grammar you want, and you tell it “Look, these are the types of things that I can say, and then here’s what should happen when I do that”, and Talon will then sit there listening.
And so basically, what we’ve defined – so Talon is something you install on your computer, and it just runs, and it uses accessibility APIs, etc. And then cursorless is basically a grammar for Talon, combined with an engine in VS Code, and basically a way to send JSON payloads describing your commands from Talon to VS Code.
So does Cursorless then add like the top hats and stuff for you to see?
Exactly. So the VS Code extension will put those little hats on everything as well.
But if you want to interact either outside of VS Code, or even like with [unintelligible 01:05:10.27] system and stuff, that’s all just Talon stuff, right?
So Talon itself – in some sense, there’s no command said that is baked into Talon. There is a community grammar, which pretty much everybody uses, and that does all that stuff. And so when you install Talon, it suggests to install the community grammar, to do things like controlling menus, and sending emails, Slack… Everything.
So does Cursorless replace that, or merge into it?
It emerges into it. Yeah, exactly. And so because Cursorless is really laser-focused on code editing, things like, for example, if I want – the community repo has things like Camel, which is a formatter. So if I say “camel Hello World”, that’s gonna type out “Hello World.” So if I wanted to change – let’s say I have a function call, like foo calling on argument is bar, and I want to change that foo to something else, call a different function, call Hello World. I could say “Change call e, camel hello, world.” So that first command, “change call e”, that’s Cursorless, which will delete foo and put your cursor there. And then Camel Hello World”, that’s the community command which will type it out.
So they integrate together, yes.
So in your talk, did you live demo, did you have any–
A bit controversial, but I did not technically have a live demo. What I did was I made a keynote presentation, with animated voice commands. So basically, Wizard of Oz voice coding.
Which made it way, way, way more visual than actually doing it. But then because I was worried there’d be a riot, I put up a QR code on my YouTube channel, so that people could see all my coding sessions.
Alright, so you’ve got some stuff out on YouTube. I’m trying to see what people can watch, because the video will be out soon… And maybe you can get it out there by the time this episode goes out. So if people can watch your talk, they can go watch it - have you got other stuff on YouTube?
Exactly. They could watch the talk to get an overview of what it is, et cetera, learn all about it, get that visual to understand it, and then if they want to see what it looks like at speed, then they can check out my YouTube channel, and I have things to teach you, and then things where I just turn on the camera, eat some Cheetos and start coding.
Is it hard to pick up, like to adopt it? I know dev environments are highly personalized, in a lot of cases. Is this like a dev environment for you? How much of this translates to any given developer?
Yeah, so it all translates to any given developer. But that being said, there is a learning curve, I’m not gonna lie. It’s not like you just all of a sudden sit down and just like [unintelligible 01:07:42.01] It’s a language you have to learn. But it took you a while to learn the keyboard too, right? So you do have to learn it, there is a learning curve, and it’s also customizable. So you can change it and make it work for you if it doesn’t really work well for you.
How does it work with like stall-outs? And we talked about slurring… But imagine if I’m looking at my code, and I say “Spike every line–” What did you say, spike what?
Spike every func air pass bat.
Spike every func, and then I look over here, it’s the c, I gotta be like cat… Is it cat?
Yeah, let’s call it cat.
No, tell me the right one. I don’t wanna be wrong.
It’s cap. You were pretty close.
[01:08:19.04] So I say cap, and then I’m like “Ehhhmmm…” and then I find an f, and I say…
So I cap…
Cap pass – see, I already screwed up. Now my computer’s blowing up. Nope, nope, nope! Cancel, cancel. Cap pass find.
And like, is it waiting for me to get to that?
Yeah, so there’s something called the speech timeout, which is basically how long it’s going to wait before it decides you’re done with the command.
So you can configure that. Mine is 400 milliseconds.
For sure. Okay, that’s good.
So it’s kind of like if you’re halfway through it and that’s when you use that horse click sound, and cancel it out…
But yeah, no, it doesn’t wait around for you. What you can do – so people have other tricks. So there’s this one buddy in Sweden who’s like one of the core contributors, and he steals the trick that airplane pilots use. So he will be like “Chuck every func ehhhhh… Cap past ehhhh… Drum.”
So he just like stalls it with a sound.
Yeah, because if you’re like “Ehhhh” - there’s what’s called the voice activity detector. And as long as you’re making that noise, it’s like, you’re still talking.
Yeah. And that doesn’t get interpreted as a word, because it’s just a noise. I’m pretty sure that’s what airplane pilots do too, to hold the airspace. I think. That’s what he tells me, so…
Does he get confused later in life, and like he’s talking to you, and he’s thinking, and his eyeing when he’s talking to you, but not the computer? Does it occur in his everyday speech?
No, this guy talks like nonstop. He’s a machine. There’s no pauses.
Well, I was wondering, a lot of us, we work to remove filler words from our language…
Yeah, and he’s adding them.
He’s adding them back in. I would use “like”.
You can actually map a command to do nothing. So if you want it, you can map like to – it’s called skip, and…
I wouldn’t want to, because then I’d say “like” way too many times.
That’s true. But it is true, you do get bleedover. For example, I was like biking along a crowded canal towpath, so there’s all these pedestrians I’ve gotta get around.
You’re like “Spike, spike!”
So I’m a polite cyclist, so I keep saying “On your left! On your left!” And there was a part of my brain… I’d just been like on a marathon coding session. I go “On your left!” I get to the next one, and I want it to pop, to repeat it.
[laughs] You should have popped in there.
I was like “Why can’t I do that?”
They’re like “Why is this guy clicking at us, or popping at us?”
“What’s wrong with this guy?” [laughter]
You’ll end up on some gal’s TikTok, where they dis guys who are hitting on them. Like “This guy is popping as he drives past us.”
Well, speaking of TikTok, I have an idea.
Oh, let’s hear it.
I think that TikTok is a prime place to blow up something like this. And I think if you took the idea that Jerod kind of gave you earlier, which was like do it in song, basically…
If you can do some TikToks where you’re like – it sounds like you’re doing it to a beat maybe even… One video is like “Guess what? I just coded.” And the next one is like the screen of you – I don’t know, I’m like designing how you do it…
It sounds like music, and then it turns out…
You can use that as a virality thing, to be like – because TikTok loves interesting.
I like that.
Strange and interesting. And this is Strange Loop, so why not, right?
That’s not a bad idea. Yeah, so I gave a talk a few months ago, at like an art conference. Basically, I took some voice commands, and I just read them out as if it was poetry, and then I had the screen come up behind me, and like gradually faded, and show like all this stuff that was flying around. So this will be like TikTok bytes of that, but music. I like it. I like it. Do I have to pay royalties, or is that idea free?
A slight credit… “Hey, listen to my friends over here, on this podcast…”
Okay, I’ll give you a shout-out.
I feel like him doing that loop to music - like, we kind of already own that, so…
Yeah, that’s fair. Alright, we’ll work something out.
Fractional penny, you know?
Awesome. Anything else, Adam?
I’m clear. I love it, man.
I kind of want to try it.
Yeah, you should. It’s Cursorless. Look it up.
Cursorless. I’ll definitely check it out.
I’m definitely saying “Cancel, cancel, cancel”, so I’m halfway there.
I mean, that’s pretty much it. That’s half the battle.
I’m gonna go home work on my clicks and my pops.
And your cats and your caps.
Well, thanks for sharing that with us. Pretty cool.
Yeah, thank you so much for having me. Cool.
That was fun.
I think it’s okay for things to end, so… Big trees in a forest sort of compete for their trunk to sky, and all that corresponding life energy… And the big trees protect some young trees under the canopy, and when that big tree falls, the sky opens up, and those young trees raise up to fill it. I hope that Strange Loop can create space in your life and mine for other things to grow. So thank you for being here with us all these years [unintelligible 01:13:06.10] [applause]
That is all we have for you. Now we enter the future, so please stick around and have a drink, and if you wanna get something signed, do that… And thank you so much.
Our transcripts are open source on GitHub. Improvements are welcome. 💚