The Changelog: Software Development, Open Source - The terminal as a platform (Interview)

Episode Date: October 21, 2022

This week we're talking with Will McGugan about using the terminal to not just build software, but also to deliver software. Will is a few months into his journey of building Textualize, a company he ...started around his open source projects Textual and Rich. When combined Textual and Rich give you a Python framework to build beautiful full-featured TUIs for the Terminal. We talk with Will about his big idea of the terminal as a platform, how he got here from first principles, what it takes to build Textual apps and whether or not they can replace not so good web admins, building, launching, and distributing Textual apps, why Python was his choiice of language, the big picture and business model behind Textualize, and why he's building this as open source and in public.

Transcript
Discussion (0)
Starting point is 00:00:00 This week on The Change Law, we're talking to Will McGugan about using the terminal to not just build software, but to also deliver software. Will is a few months into his journey of building Textualize, a company he started around his open source projects, Textual and Rich. When combined, Rich and Textual give you a Python framework to build beautiful full feature two ways for the terminal. We talk a little about his big idea of the terminal as a platform, how he got here from first principles, what it takes to build textual apps and whether or not they can replace not so good web admins building, launching and distributing textual apps.
Starting point is 00:00:40 Why Python was his choice of language, the big picture and business model behind textualize and why he's building this as open source and in public. A massive thank you to our partners and friends at Fastly and Fly. Bandwidth for ChangeLog is provided by Fastly. Learn more at Fastly.com. And our friends at Fly let you deploy your apps and your databases closer to users. Check them out at fly.io. This episode is brought to you by our friends at Square. Develop on the platform that sellers trust. Here's what you can do with Square. You can bridge more experiences. You can build online,
Starting point is 00:01:20 mobile, and in-person commerce experiences that connect more customers and sellers. You can build custom booking solutions. You can create and track orders. You can accept payments. You can manage and curate inventory. You can organize customers. You can manage employees. You can extend Square gift cards to your app.
Starting point is 00:01:36 You can use Afterpay. And all this is powered by the world-class Square APIs and SDKs that enable you to build full-feature business apps for yourself or millions of Square sellers. So much is available as a Square Solutions Partner. Learn more and get started at changelog.com. Again, changelog.com. so will one of the things that you say right on the website textualize.io is what motivates you is the realization that the terminal is a platform.
Starting point is 00:02:33 Can you just take that sentence and launch off from there and tell us more about what it means? So I did some research a while back about developers' attitude to terminal. And what I found was that it was 90% of people had a terminal open at least half of the day. 90% of developers, rather. Many developers get up in the morning and they open up a browser,
Starting point is 00:02:56 and they open up a terminal, and both those apps stay open the entire day. So all these developers have this window staring at them in front of them, and often they're using it. But people haven't seen it as a tool for delivering software. They see it as a tool for building software, as kind of an archaic tool for doing things to create the software, but they haven't seen it as a delivery mechanism for the software itself. And I think we can do a lot more with it. And I've been experimenting over the years to see what you can do with a terminal,
Starting point is 00:03:40 and things have moved on so much. Terminals can do 16.7 million colors. They've got lots of Unicode characters, which you can use to build various kind of graphics. And they're remarkably fast. Most terminals will use your GPU, so it can deliver fast updates at 60 frames a second, which is crazy to me. You know, it's because 20 years ago it was just simple green text that you typed into and then you got a few lines of text back. But now it's using the same technology as video games.
Starting point is 00:04:11 So there's very little code and projects out there to build sophisticated applications. You know, Curses is the most popular one. It's been around for decades. But that looks very rudimentary. I mean, it's very much rooted in technology of 20 years ago. So I figured, what can I do to use all this power that's available in the terminal
Starting point is 00:04:34 and maybe bring some of the improvements which have occurred in the web world, see if I can bring it to the terminal and then build applications inside the terminal. And it turns out that you can do quite a lot. And what we built is Textual, which is a Python framework, which creates these applications inside of a terminal and they look a lot more like web applications.
Starting point is 00:05:00 So when you say that it's a tool to build software, but it could become a tool to deliver software, are you speaking to the same people? Meaning, do you think it could be a tool to deliver software to developers, or do you think it could be a tool to deliver software to the general population? Initially, developers, because it's kind of strange
Starting point is 00:05:25 and it's a piece of software which is installed on virtually all desktop computers. And almost exclusively, it's only developers and maybe some other technical people that are aware of it. So initially, we deliver software to other developers. But another thing we want to do at Textualize is have a bit of magic where you can flick a switch and you can take those applications,
Starting point is 00:05:50 which were running inside the terminal, and put them in a browser. So now you can build these applications and regular people, not just developers, can use them. When did you have this realization? How long have you been working on this stuff? I started working on a library called Rich. That was nearly three years,
Starting point is 00:06:10 about two and a half years ago now. It started off from first principles. I just wanted to get colored text on the screen. And then I kept adding various other types of data and formats where I could display, I could render tables and progress bars. And I started tinkering with various other ways of rendering more sophisticated content than you're used to in a terminal.
Starting point is 00:06:34 So it kind of built up from there. I realized that there's lots more you can do in a terminal, but it does require a bit of work up front. It's not like a browser where you can just say, you know, give me a table, a browser render table. You've got to build it up from all the individual characters. But once the tools are there, you can do so much more with a terminal. When you talk about these rich applications, for the web, in the browser, you have HTML, you got CSS, and you got JavaScript. What is behind the scenes of rich and textual that is similar? Is there a similarity in terms of a markup language,
Starting point is 00:07:11 a style language, and some sort of smarts like JavaScript is? A little. So most of the code is Python, and that's one of our selling points, because there's so many people coming to Python these days whose background isn't software development exclusively, or they don't have any web development experience or desktop experience. So we want them to build apps that are exclusively within Python.
Starting point is 00:07:39 But the type of Python I've created is inspired a lot by JavaScript frameworks, like React and Vue, and it borrows some of their techniques. So you can write applications using fairly web-like technologies. And we've also built in CSS, because that's one thing that I don't think you can replicate with pure Python. So you can have a CSS file which affects how the terminal application is rendered. So you can set colors and background borders.
Starting point is 00:08:10 You can set animation and layout just via CSS. So it's a very hybrid approach of Python plus web technologies plus CSS. It's interesting to consider this as a delivery vehicle for software. Because I mean, I guess the first thing that comes to mind is like, one, how do you build it? Because we talk to builders, right? That's the show we talk to developers.
Starting point is 00:08:35 But then the same people are the consumers, potentially, as Jared said before, like who's the end user of these things? I just think about how do you launch these applications? And maybe this is sort of part of the bigger story. Maybe you're just sort of, how do you build them right now? And how do you display them and make them rich and usable? But I think about how do you, like a browser, if you're similar to a browser, what a browser might do for delivering applications, that's pretty easy. You type in URLs and you get to applications
Starting point is 00:09:03 via the web. How do you you get to applications via the web. How do you get to the applications via the terminal if it's going to take some of the market share away from browsers, for example? Yeah, so eventually the first stage is just to build a framework where they can build these applications. Initially people would probably distribute them like they do other Python libraries, through PyPy or possibly on Brew, etc.
Starting point is 00:09:28 But pretty soon we want to build this web technology where you can serve up a text application from another box. So it's just like typing URL, there'd be some sort of command. Text will run, you give it a URL or a URL-like string, and then it would serve up that application. So you can have access to all these applications that run within the terminal, as if they were locally installed,
Starting point is 00:09:52 but they wouldn't be, they'd actually be running somewhere else. Are you there yet, though? Are you still at the building stage? How do you get access to them stage? Yeah, we're still at the building textual stage. We've got a release coming up in a couple of weeks. 24th of October. A couple of days.
Starting point is 00:10:11 Yeah, not very far away. I'm hoping that that will take off and people will start creating applications. So the time when we do have this web service available, they'll be able to flick a switch and those applications that they've built will suddenly be able to be shared amongst other people
Starting point is 00:10:28 without actually having to install the software. I'd assume that would serve as well as distribution mechanism, but also discovery mechanism. Because one of the things that every good platform usually has is some aspect of a marketplace or a community or a way of discovering tooling or marketing your tooling. And so is that part of this long-term plan?
Starting point is 00:10:55 Because if the terminal's going to be a platform, it has to have more than just execution of apps, right? Yeah, so I guess it would have some kind of store, ideally a 2E of its own. Like an app store. Like an app store. I wouldn't call it that though. You might end up in litigation. I'd probably get sued.
Starting point is 00:11:13 But in principle, same idea. You can call it the terminal store. Yeah. Probably a landing. The 2E store. I've been perusing your Twitter feed, and I got to say that the things I'm seeing are very interactive, very browser-like even, very similar to a web application.
Starting point is 00:11:33 There was one where you were showing off the design system behind, I think it was behind Textual's design system. And it's got a sidebar, and you can click, and this is not normal terminal behavior. Terminal is more like key commands and things like that. Keyboard related things, not so much mouse related things. But you're clicking a sidebar and you're scrolling fast and you mentioned 60 frames a second.
Starting point is 00:11:57 When you think about the underutilized power that is in terminal, what kind of applications do you envision? What kind of things do you think will come about with that kind of frame rate available? So there's animation in there and I think that just can make the user experience a bit nicer. There's kind of a range of animation.
Starting point is 00:12:18 There's animation from helpful to gratuitous. So some of the stuff I post on Twitter is deliberately in the gratuitous side in that it doesn't really add much usability but it looks kind of cool. But the other end, you've got things like smooth scrolling which does aid usability. If you scroll
Starting point is 00:12:36 it's nice to animate that so that your eye can track position. It can go from the bottom to the top. So there's all sorts of other kinds of animation you can do. You can do blending, so you can fade something in to show it's more important, and then fade it out. So various other usability things you can do with animation
Starting point is 00:12:56 that people have been doing in the web for years have brought to the terminal. So you're obviously a fan of the terminal, as are we. So we're all here enjoying terminals. I'm one of these people, I have a terminal open right now. I didn't even realize I did because it's just always open on my computer all day long for whenever I need it. So I'm curious from your perspective, Will, what's virtuous about the terminal? What makes it so special or interesting?
Starting point is 00:13:25 Why do people love it so much? And then on the flip side, once you do that list, what's lacking, what could be better, et cetera? I think you're in a kind of a context where you have all this power at your fingertips and it's very focused. There's no extraneous details you've got to worry about. Like the browser.
Starting point is 00:13:44 I mean, I love the browser, I love the desktop. I come from a web development background. But I don't think that switching and moving windows about and hunting for things to click is always the most productive. But in a terminal, everything's there at your fingertips. When you get good at it, you can power everything with a keyboard. Which is what we want to do with Textual, even though it can look a lot like a web application
Starting point is 00:14:07 which makes it accessible and explorable and you can find things ultimately that want these applications to be keyboard powered so you could be in the terminal, stay in the terminal but launch this app, operate it with a keyboard and then return back to the terminal and you never have to context switch. I think you can be more productive doing it like that.
Starting point is 00:14:30 No distractions of Twitter or Hacker News or Reddit. Well, we might have a Twitter client one day, I don't know. Yeah, I mean, won't you just put Twitter in the terminal then? And then our context will be just as fractured. Because we won't have a browser tab, we'll have a terminal tab. I think people go to Twitter because in that case you do want to be context switched. I do it to get my head out of the code.
Starting point is 00:14:55 Sometimes you're switching to your browser because you need to Google something. And you have Twitter in the open tab and you're like, oh, what's this? Oh, this cat is stuck upside down on a thing. And then all of a sudden you start scrolling. That's not coffee, that's a cat. But yeah, so a lot of times we're doing it
Starting point is 00:15:11 because we would like the distraction. But other times I feel that just getting out of the terminal and into the browser, there are so many tabs there that just grab my eye. Yeah, but the terminal's like your old little world that you have control over, and you can be more focused. At least that's my experience.
Starting point is 00:15:32 Well, it is one, you know, command W away, at least in terminal app on my Mac, it's command W, similar to a tab in Chrome, so similar experience, at least, in terms of how it tabs and stuff like that. But, you know, this is something that should be obvious to some degree, but I'd imagine that the terminal has a different
Starting point is 00:15:52 kind of access to the file system, you know, control mechanisms, operating system APIs, etc. than the browser does. What are some of the trade-offs and differences when it comes to the platform itself and its access? Yeah, so on the terminal it's kind of native code,
Starting point is 00:16:12 so you can do anything that any other application can. You don't have to go through a JavaScript API that someone's decided that you can have access to. So obviously terminal apps, they may look like the browser, but they can do more system-related tasks. Anything that involves editing configuration files, you can run them with sudo if you wanted to.
Starting point is 00:16:36 You could do any sort of tooling and configuration type of things. The ultimate power. Yeah. Given you have sudo access or administrative access, configuration type of things. The ultimate power. Yeah, yeah. Given you have pseudo access or administrative access, if you're not a guest user of sorts, then obviously you have limited powers. But if you have the power, then you have the power.
Starting point is 00:16:55 Exactly, and that brings me to a segue that you can run these applications on SSH, over SSH, so that you can get a full GUI, even though you're connected to a web server somewhere, which would be harder to get up and running with a web application. You would have to install lots of software, configure firewalls and routers, etc.
Starting point is 00:17:20 But these terminal-based applications can just be launched very easily, and they can be served over SSH. You know, there's a lot of explosion happening in home labs. I think the Raspberry Pis really helped this, Arduino has helped this. People that have not typically been curious on a developer or terminal or kind of like geekery
Starting point is 00:17:45 that developers, software developers tend to be in. Like people who are not typically a software developer are tinkering and being more and more curious. Do you see how this kind of platform can aid in, say, PyHole, for example, rather than going to PyHole on the web or PyHole.lan or whatever it might be, going to some sort of SSH application to tinker with PyHole or do different things that home labbers tend to do. Mess with home automation, for example.
Starting point is 00:18:10 Rather than a crappy browser, maybe a more powerful terminal GUI. Yeah, so it can serve up a nice GUI that you can explore. They tend to be more accessible to people who aren't experts. We all use a whole bunch of command line apps where we've used a lot, and then we can become very proficient in them. But it takes quite a while to get there. But a good textual user interface,
Starting point is 00:18:36 you can explore it quite easily. So yeah, you can run it on a Raspberry Pi. We test on that, and it runs very well, actually, because it's a low footprint type of thing, so you can serve up a nice GUI from a tiny little Raspberry Pi to do whatever you want it to do. What about forms? Are forms easy to do in Textual?
Starting point is 00:19:01 Is it, for example, a password change form for example if i wanted to do you know profile stuff i'm just thinking like rather than like some of these things like uh portainer or different things that home labbers tend to kind of mess with with virtual machines or doc or whatever rather than going to you know a web application could you do these things in in textual in a tui change your password do different things like security related stuff to a web application, could you do these things in Textual and a TUI, change your password, do different things like security-related stuff, 2FA stuff, even can you render a QR code, for example, in Textual?
Starting point is 00:19:34 Yeah, absolutely. We've got a text input that does passwords. We've also got a checkbox control and buttons, and scrolling windows. So yeah, you could easily do a password change type dialogue. That's interesting because a lot of self-hosted client server
Starting point is 00:19:52 software has web UIs. Going all the way back to PHP My Admin or AWStats. I'm showing my age now. Great Perl scripts with a web admin that was ridiculous to use. Even to today's things, like I've been setting my pie hole,
Starting point is 00:20:10 thanks to Adam and his beating of the pie hole drum. I got a Raspberry Pi now and I've got it. And so you set it up, you get it going, it launches itself and it's like, hey, go hit our web admin. And you have a local host, not local host, but a local network IP address you navigate to. And it's fine. It's a web browser.
Starting point is 00:20:33 It does the trick. It's got cool little charts and stuff. It's got all the configs and blah, blah, blah, blah. And yet, I'm like, this thing has to have a separate web server. It has to have an open port listing on 80 and 443. And all because we can't have like a cool, I mean, I can SSH and do all the same things via config files. I can't do the charts and stuff.
Starting point is 00:20:56 I can probably find a way to get at the raw data. But how cool would it be if like PyHole shipped with a 2E that was like full featuredd like their web admin, didn't have to have a separate little part of their infrastructure that's probably not their expertise, is probably building web apps. I don't know the Piehole folks, but they seem like they're firewall people.
Starting point is 00:21:17 They probably have IP tables memorized and stuff. And so now they've got to build a web admin, which could be a security problem. A lot of times their interfaces are poorly made just because of the mismatch of skills it would be so cool if there could be a terminal based fully featured admin for PyHole that you just SSH in and run it
Starting point is 00:21:38 yeah, I think that's a very good use case for it, because you can run it you can run textual apps anywhere and it'd be quite sophisticated. And for things like an admin portal, it can do almost anything you would need. You can even do some kind of graphs. You can have sparklines and some basic plots.
Starting point is 00:22:00 The only thing that I think 2Es can't do very well is images or video. But for most admin interfaces, you don't need glossy images or videos. You want text inputs, you want text, you might have sparklines and checkboxes, other kind of things. That could cover 99% of what you need. You have that software running on a router or a tiny box or Raspberry Pi. Hey friends, this episode is brought to you by my friends and potentially your friends too at Fire Hydrant. And I'm here with Robert Ross, founder and CEO of Fire Hydrant. And Robert,
Starting point is 00:22:58 there are several options out there for incident management, but what is it that makes Fire Hydrant different? The reason that we think that FireHydrant is on to something is because we're meeting companies really where they are. We face the same problems that every company in the industry that is building and releasing software is also facing. So where you want people to be able to sign up for FireHydrant and immediately be able to kick off an incident using the best practices that we've built and we've experienced and have gathered through the other amazing customers that use our tool. It really is a very quick time to value. And we want people to have a long jump from where they are to where they want to be in incident management. I love it.
Starting point is 00:23:41 Thank you, Robert. Small teams up to 10 people can get started for free with all Fire Hydrant features included. There's no credit card required to sign up. They are making it too easy to get started. So check them out at firehydrant.com. Again, firehydrant.com. so well you got my attention but what's step one if i'm let's say i'm on the piehole team right i i don't mind the web admin, maybe I don't like it, maybe I like it, whatever. What's step one? If I'm, just to use them as an example,
Starting point is 00:24:31 what would be step one for someone like them to take up Textual, to build a 2E4 or an admin for PyHole? How does it work? So from the development side, it's a Python API. It should be quite familiar to Python developers. To create an app, you import textual.app and you extend the app class.
Starting point is 00:24:53 And that's your two-way there. It won't do much at that point. But then you implement a compose method, which returns widgets. And widgets are like self-contained components. If you're a web guy, essentially it's a div with some elements in it. You can nest these widgets, so you can have containers and put widgets inside them and create a hierarchy, which is very much like the DOM, the document object model
Starting point is 00:25:19 in web development. So you can build up your interface with these widgets that contain other widgets and then have leaf nodes for controls like text and checkbox and text input. And then you create a style sheet. And that style sheet applies styles to these individual widgets. And that works just the same way as the web does.
Starting point is 00:25:44 It's kind of like a simplified dialect of CSS. So you can create quite really beautiful looking interfaces with maybe a page or two of CSS. So that'll create something which looks very nice, looks like an app. And then you write event handlers. Event handling, again, is quite similar to JavaScript because I do come from a web background. So you write these event handlers for things like clicking, for text input, and you can update the state of the app accordingly. So the code to generate a fairly complicated app, I think, is very readable.
Starting point is 00:26:20 And it's also quite terse. I don't know if you've ever written any Curses applications, but they're quite verbose and somewhat technical. The textual is kind of like, it's quite high level. You kind of stand back and you just say what you want on screen, what you want it to look like, and then you connect up buttons and things. There's plenty of docs. We've been working quite hard on the docs for the last few months. So if you do want to get started, all the information's up there. So you've got to know Python, or you've got to be willing to write some Python. And I think that's a great choice of a language in terms of trying to reach more people. You mentioned earlier in the show
Starting point is 00:27:00 that there's a lot of people who know some Python but aren't like capital S software, capital D developer on their job titles. But I'm just curious about Python as a choice, both for yourself personally and in your work and then also for Textual. We don't talk Python too much here on the podcast, so talk some Python to us, Will. Why Python? I came to Python through video games. I was a video games developer.
Starting point is 00:27:28 And a while back I was writing a game engine. That's a long time ago. I was looking for scripting languages. And I looked at all the scripting languages at the time. I didn't know much about them. I looked at Ruby, I looked at Python, and I looked at Lua. I don't know if you guys have heard of Lua.
Starting point is 00:27:43 It's quite popular in video games. And at the time I at Lua. I don't know if you guys have heard of Lua. It's quite popular in video games. And at the time, I chose Lua because it was perfect for video games. But I found myself dipping into Python a lot for tools and for small scripts. And I also found it influenced the way I wrote C++. I was writing C++ and making it look more and more like Python. And at some point, I figured, well well why don't I just work with Python
Starting point is 00:28:07 because clearly that fits my brain better. So I kind of engineered my career to be more focused on Python. And my first 100% Python job was working for the Internet Chess Club. I was writing a chess interface for them. So I got to write Python all day. And that was a long, long time ago. And since then, that's what I've been doing in my career. Well, it makes a great choice for you then, for Textual. The one question that I would have about it, we had Toby Padilla from Charm on the show about eight months ago now. They're doing some similar stuff to you all. I'd love to hear your thoughts on their work
Starting point is 00:28:45 and your work and some of the overlap. Definitely spiritually aligned efforts. They're doing it in the Go space. And one thing that Go has going for it, pun not intended, is that distribution is really nice and straightforward. And I've never found that with Python as an outsider who uses Python tools.
Starting point is 00:29:07 I just am using stable diffusion command line last week, and so I had to dip my toe back into pip and all these things. It worked out just fine. It was good. But it wasn't like, hey, here's a binary. Throw it in your path and execute it. Curious your thoughts on Python from that perspective, just distribution, et cetera. Yeah, that is a problem in the Python world.
Starting point is 00:29:30 It's kind of strange because Python itself is such a very accessible language, but the answer to distribution isn't that great. It's not so easy to send your code to a non-developer and expect them to be able to run it. There are some solutions these days which are much better than they used to be and you can take a Python project and bundle it up
Starting point is 00:29:50 and turn it into an executable and then for all platforms and send that around. So there are solutions. And one of the things we want to look at is that model of distribution where you can bundle things up and just send when executable. Something like, I forgot the name of it,
Starting point is 00:30:09 the popular app framework where you can bundle JavaScript apps with a browser. You're talking about Webpack? You're talking about bundling JavaScript for the browser? Browser-based applications. I forget what the framework is. Electron. Electron, yes. I think we can build an Electron-like solution
Starting point is 00:30:27 because you can embed a terminal in a browser and then you can bundle that with the Python code and then you could actually send a terminal app to someone who might not even have a good terminal installed but you could just send it to them and they wouldn't have to know it was a terminal app if they're a non-technical developer. To them, it would just look like a web
Starting point is 00:30:50 app that's maybe got a slight retro appeal. Okay, that'd be interesting. What about the pre-installation of Python, say on Linux or Mac OS or Windows? Is there any sort of uphill battle with the pre-installation choices?
Starting point is 00:31:07 For example, I think it's 2.7 for Python on macOS. And they suggest Python 3, but you have to install it yourself. So this is back to non-developers, developers, and software distribution. Is Python 3 now on macOS, I think? A recent update. I think there's two different executables. I think they're both there.
Starting point is 00:31:25 There's a Python bareword, and there's a Python 3 command. It has its own... Either that or Homebrew did that for me, but that's how it's on my machine. So that's either stock or Homebrew installed Python 3 separately. I don't know. I think they're either both there. Python 3 is definitely there. It may not be
Starting point is 00:31:41 just the Python command, though. When I wish Python 3 on my terminal, I get a Homebrew path, so I don't know. Okay, so Homebrew might have done that. It is a problem getting started, especially for complete beginners. There's quite a lot of hurdles before you can even write Python. I mean, the Python interpreter is just the first one. There's lots of software you've got to download to get up and running.
Starting point is 00:32:06 So that is a big problem. And I think as far as textual is concerned, we have to overcome that. You can't distribute this stuff to your mother. Maybe your mother isn't a software developer, but maybe you could send her an installer.
Starting point is 00:32:21 So I think if we can solve that problem that will make these type of applications accessible to just the general public. Well, the good thing is that it's not a today problem for you. It's a maybe problem. It's successful, then it's a problem, right?
Starting point is 00:32:37 Because initial audience is developers, and I think developers are willing to deal with those hurdles. That's right, but if it's just developers, it's a fairly big niche, to be fair. But a far bigger niche is everyone else. Yeah, I mean, we're probably like 1% or something. I don't even know the general population. 8 billion people, how many are developers?
Starting point is 00:33:00 Probably not 1%. Small percentage. Back to building the, I guess, the TUI, the initial textual application. You know, I'm familiar with, you know, index.html. I'm familiar with, you know, some of the paths that you can have in an application. How does that work with textual? Is there an index? Is there a path that you can, you know, traverse, so to speak, when you move around the application?
Starting point is 00:33:25 How does it work? There isn't. You mean like a URL where you could... Right, like you've got a route for a website, for example, and then slash new is creating a new user, slash sign in is sign in, slash admin is the admin, for example. Is there a path interface, so to speak,
Starting point is 00:33:43 to a textual application? How does it work? There isn't that kind of speak, to a textual application? How does it work? There isn't that kind of similar concept to a textual application. It's more like a mobile app. So you might have modal dialogues where you can go back and possibly forward, but there's no URL layer yet because they're not truly web applications. They're stateful,
Starting point is 00:34:08 so they don't have a URL as such. But when we have the version which does run in the browser, maybe we would want to respect the URL so you could pop in the URL and return to a particular state. It's more like one-page applications, you know, view and react in that respect.
Starting point is 00:34:30 Right, so this text will have its own state management tooling for you? There's kind of, there's reactive variables. So you define a reactive attribute on your class and then you just modify that state and then the UI updates accordingly. Okay. But in terms of persisting that state
Starting point is 00:34:53 through different sessions or I don't know, like you just plug I mean you're a Python programmer so you just plug in SQLite and some Python stuff or is there actual inbuilt or even plans to provide some state management stuff for people using Textual?
Starting point is 00:35:09 Or is that like, get another package for that? No, I think we should have an answer to that. We've got a very basic layer of reactive variables, but we'd like to have a state object, almost like JSON, where you could just modify a dict or a list and then have the whole interface update accordingly. I think it would be a really good thing if we had an answer to that. Yeah, I think so.
Starting point is 00:35:37 I mean, so there's two sides to that. And what we see in the web world has been like a thousand state management libraries blossom, you know? And then it's kind of like, well, we try this one. Is that one? What's this idea? How's that idea? There's a redux, there's flow, there's blah, blah, blah. And then finally like over time, like something starts to shake out. It's kind of like, well, everyone's pretty much doing it this way right now and here's why it has, why it's virtuous on the other side of that is like, well, the vendor,
Starting point is 00:36:06 in your case, Textual, just provides state management for everybody and it's just a solved problem. Maybe we can mumble and grumble about Textuals. Maybe we can swap it out and say, well, I brought my own. But then you have something there that everyone uses and it kind of standardizes around that. Yeah, there's both approaches. There's the batteries included approach
Starting point is 00:36:29 and then there's the approach where you can just slot in your bit of technology. I'm not keen on the approach where you can just plug in lots of little bits of technology because they tend not to work harmoniously together. So at the moment, we're building all the widgets. We call it a large widget library. But we do want third parties to build
Starting point is 00:36:49 widgets. But I think for something like a core bit of technology like managing the state, if we do that at all, I kind of suspect that we should do it. Hopefully after we got feedback regarding how people actually want to use it
Starting point is 00:37:07 because these are they're not web apps they're kind of web app like um but they're more like desktop apps in the way you operate them so i'm not sure that that's um that's something i'd you know revisit in the future after people have a chance to to play with it well if you look at desktop apps and we just focus it on macOS because that's just the platform that I know the best, you have the core frameworks and they provide their own layers
Starting point is 00:37:34 like core data for instance. I'm sure there's newer ones that Apple provides. And then they're also like, man, you can just have a SQLite database. And so then you can just manage it yourself. Plug this one in, plug that one in. This one provides two-way data binding or whatever. This is the textual way of doing it. But of course, since it's in the spirit of open
Starting point is 00:37:51 and open source and stuff, making it batteries included, but swap those batteries if you want, or here's a different place to come in, I think is a nice balance where it's like you don't have to bring your own, but you can bring your own if you are just disgusted by what Will and his team has come up with. It is a Python application and you do have all these
Starting point is 00:38:14 Python libraries at your disposal. Oh yeah, there's this huge community. You could attempt to plug anything in and some of these things will fit in very nicely. Python has a built-in SQLite interface, so I can imagine people wanting to use that. So we have a launch of sorts coming up for October 24th, a couple days away.
Starting point is 00:38:36 But is there any textual applications in the wild that are not built by you? Who's using this currently? What's out there that we may have seen? What's the state of usage so far? Okay, so the version that's in master has been in there for quite a while.
Starting point is 00:38:52 And I started building the CSS technology, but I had to leave the version master for people to use. I didn't want to break it and people have been using it. There is a lot of applications out there. We created a gallery which you can find on textualize.io. And there's lots of apps already.
Starting point is 00:39:14 And they're using a much earlier version of Textual. We've got things for managing Apache Kafka. We've got a to-do app. A static website generator. We've got a to-do app, a static website generator. We've got a machine learning monitor. Yeah, there's quite a lot of applications out there and they're growing already. But we hope that once the CSS stuff is in there,
Starting point is 00:39:37 then that'll really explode. So the CSS stuff is what's dropping on October 24th or is that a new project? What's going on with that? That's the big feature of the next version. Once that merges, you'll be able to use CSS and all the other features we've been working on. We've got tree control, we've got a nice data table,
Starting point is 00:39:58 we've got text input, checkboxes. So already there's quite a number of widgets that you could use to build some sophisticated apps. And we're really excited about that. So let's say I'm browsing your gallery and I'm like, you know what? TipTop looks pretty cool. It's a version of Top, but it's not Top. How do I go there and be like, I like that thing. How do I use that thing? What's step one for that? Is it like a developer where you have to develop textual applications? How do you differentiate between creating and using?
Starting point is 00:40:30 If I want to just use TipTop, for example, do I have to do the developer steps to build textual applications, or can I just use? It depends whether the developer has gone to the effort of packaging it already. I mean, at the very basic level, if it's on there, then yes, you could go to the repo, you could check it out,
Starting point is 00:40:48 and you could follow the instructions and run it. For this one, in the readme, it's pip install tiptop. Yeah, and if you have Python, then that'll put the tiptop command in the path for you. Other projects might use brew or Chocolaty or one of these other package managers, which puts a command away. Gotcha. Okay.
Starting point is 00:41:11 So in most cases, there can be some sort of readme, either in the future gallery that might get more sophisticated if this becomes a not app store app store, a textual store, something like that, to instruct the user on how to get the thing, essentially. And in most cases, it's probably pip or homebrew or some sort of package manager that's pretty familiar, pretty well known.
Starting point is 00:41:37 Yeah, familiar to Python devs, certainly. Hopefully in the future we'll have an answer to a much simpler way of getting access to all these apps that doesn't require you to go into the repo and read the instructions. And doesn't require you to have the right version of Python and sort of dependencies and all that. It would be cool to have some sort of universal package binary
Starting point is 00:41:59 in this way that you talk about that could be the textual platform. Similar to Homebrew, where it's like, like once i have homebrew it unlocks for me a whole list of other things i can do right so you the first step is you get textual and then textual is a 2e which is a way of discovering and installing other 2e apps like wouldn't that be that would be beautiful now beautiful. Now you could also sideload. I don't know, maybe we'll get that into the business model. There's no sideloading, no. You can also sideload and just install them with pip or whatever,
Starting point is 00:42:32 but that would be a really cool way of providing that right there in your terminal. And so people would just say, oh, do you have textual install? Yes, well then just pop it open and find TipTop. Textual install, yeah. Hit enter on it, it installs it for you, manages all your Python dependencies,
Starting point is 00:42:49 makes sure your environment's all set up and blah, blah, blah. If not, then you got to do your own Python. Pip install also works. But that would be a really cool end goal, realizing, Will, that you're like 10 yards off the starting line of this sucker. And building the foundation is like 80% of the work. And then there's the other 80%.
Starting point is 00:43:06 But that would be neat. Yeah, that would be fantastic, yeah. I like that, Jared. It's similar to like homebrew lists. You know, you list the things you've installed with homebrew. Why couldn't you do the same thing with textual list or textual install? Homebrew could have a really sweet TUI if it used something like this. That's better than just Homebrew list
Starting point is 00:43:25 where it's like, here's a vertical list of things. You could actually write a textual TUI for Homebrew. That would be cool. They have a GitHub repo where you've got all the Homebrew projects and it's open source so you could write a TUI
Starting point is 00:43:41 which just basically browsed that repo. Yeah. I have a hard time with Homebrew sometimes because BrewSearch basically is your interface into, unless you already know the package exists, sometimes, for instance, we've been
Starting point is 00:43:56 building some ID3 based stuff and I'm like I need some ID3 tooling out there. I'm just going to BrewSearch ID3 and then there's casts and there's these and maybe it wasn brew search ID3. And then there's like casts and there's these, and like, maybe it wasn't called ID3. So like, it's literally just searching the title of the packages, right? In homebrew. It would be cool to have a homebrew portal or discovery platform where you could actually browse, you could type in ID3 and these people could provide non title
Starting point is 00:44:23 based tags or whatever topics that allow you to just find things and discover better. That would be a cool standalone textual app. It would be like Homebrew Browser or something like that. I'm just describing that, Will, because maybe somebody will build it for us. That's why. That's kind of what formula.brew.sh is
Starting point is 00:44:42 because you've got search there and a lot of the data is in a web application. I'm almost like thinking like will the, you know, if textual does take off and become you know, really usable, easy to distribute, easy to install, you know, will
Starting point is 00:44:57 packages like Homebrew migrate to TUIs rather than this web-based version? They can maybe, you know, have the database and an API maybe or something like that where the data can live in both places. And I think, Will, you said that you'd have textual on the web. Did you say that? Yeah, definitely, yeah.
Starting point is 00:45:15 Okay. So the web will eat you and you will eat the web, right? It does seem like a more natural place to be able to search for the software that you're going to install in the command line. If the interface for searching had a button that said install and you just clicked that and it ran a process that would be nice wouldn't it?
Starting point is 00:45:36 Right, and another one that says rate and review and then the other one says in-app purchases and then I'm getting ahead of myself. And I get 10% off the top. That'd be amazing. We're just trying to come up with business models for you. No, it's 30%. Well, it's 30%. Come on. You have to be
Starting point is 00:45:53 an oil baron. An app baron. What's up, friends? This episode is brought to you by Sourcegraph. With the release of Sourcegraph 4.0 and the Starship event just a few weeks behind us, it is super clear that Sourcegraph is becoming not just code search, but a full-on code intelligence platform. And I'm here with Joel Kortler, product manager of Code Insights for Sourcegraph. Joel, this move from code search to code intelligence
Starting point is 00:46:33 is a really big deal. How would you explain this feature, Code Insights, if you're just talking to folks in the hallway track of your favorite conference? I would really start with the technical because before I was product manager, I used to be an engineer as well. And it's really cool and exciting just to be able to say, we're going to turn your code base into a database. And the structured language that you
Starting point is 00:46:53 need to interact is just the ability to write a code search, you know, literal search, that's totally fine. Regular expression, you know, that'll give you a few more advanced options, even a structural search. But the number of long tail possibilities that unlocks truly the journey of building this product was just saying, well, we've just unlocked, you know, an infinite number of possibilities. We got to figure out some immediate use cases so we can start to, you know, invest in this product, build it and sell it. But we're only getting started in terms of the number of uses that we're uncovering for
Starting point is 00:47:21 it. The story I told you about discovering like version tracking turned out to be a really important use case that wasn't even on our roadmap six months prior to discovering that as we were already planning to launch this product until we talked to enough folks, realized this was a problem and then found, well, oh, that's like a simple regular expression capture group that you can just plug right in because we really built this system to not limit the power of what we built. We don't want to give you like three out of the box templates and you can only change like one character or something. It's truly like the templates are there to hold your hand and get you started.
Starting point is 00:47:48 But if you can come up with anything you want to track in your code base, you can do that with Code Insights. I love it. Thank you, Joel. So right now there is a treasure trove of insights just waiting for you. Living inside your code base, your code base is now a queryable database thanks to Sourcegraph. This opens up a world of possibilities for your code and the intelligence you can gain from it. A good next step is to go to about.sourcegraph.com slash code dash insights.
Starting point is 00:48:14 The link will be in the show notes. See how the teams are using this awesome feature. Again, about.sourcegraph.com slash code dash insights. Again, this link is in the show notes. So well, I've been pitching you business ideas. We just won. I've just been repitching you an app store idea over and over again until you launch it.
Starting point is 00:48:50 But we are curious because you have raised money. You're making a real go at this thing. And whenever you convince somebody to part with their hard-earned money, they have some sort of an idea of what that money could turn into in the future, which is more than what it is. So surely you've put some thought into what Textual could be, not just as an open source platform framework, whatever you're calling it, for building these 2Es, but also so much more. So can you give us some version of that pitch? Like what's the big picture idea? Yeah, okay. So I'm in the business of what you call openCore. It's where you've got an open source project
Starting point is 00:49:27 and then you have a commercial add-on to it. So textual will always be open source and you use it like you would any other open source project. But then we're building this web interface where you can flick a switch and then you can take those applications which you'd built for the terminal and all of a sudden they're web applications. And from there you can send a URL around and people that are not
Starting point is 00:49:52 particularly technical could use it and they might not even know that it's a terminal application. So once we have this service there'll be a very generous free tier, but if you're an organization you might want to have authentication built on top of that. And that would be a service that we could charge for. And also if you have a lot of users, at some point, you know, you'd be using a lot of bandwidth, and then that would go into a tier where we could charge you.
Starting point is 00:50:21 And there'd be additional services on top of that. Payment gateways, file serving, anything, the kind of services which web developers will pay money for. We'll carve out this little niche where we're building these 2Es and
Starting point is 00:50:39 other people are building these 2Es and we provide various services which they will need if they want to use their apps for some kind of critical infrastructure. They might want to install it on all their servers for some sort of web application and then they can use a TUI to configure and monitor it. So there's a fairly broad market there for people that want an interface, they want to build it quickly, and then they want for us to take over the managing, that kind of thing.
Starting point is 00:51:13 It's different than what your initial pitch is, which is long live the terminal, essentially. It seems like it's the backwards version of that, which is long live the terminal, but also the web. Yeah, if you imagine it, it's kind of like a Kindle. People think that would kill books, but for me the book isn't the device which is running on. It's the words. So these twoies, they may not be running in a terminal, but they may be running in the web,
Starting point is 00:51:40 but they're still twoies. They still work like the web. They still have the similar kind of keyboard-focused interfaces. I guess I'm just surprised that you're, if I'm being completely honest, I'm surprised, I guess, that your business model is built on the other side of it, which is going to be an uphill battle to get people to build TUIs. I think people want them, but whether or not textual is the best way to get there remains to be seen.
Starting point is 00:52:08 And that your business model is built on taking those TUIs that people might build and turning them into web applications that have services. That's a surprise to me. Well, if you think of it, I'm enabling people to build TUIs, but the TUI part is almost incidental. I'm enabling people to build 2Es, but the 2E part is almost incidental. I'm enabling people to build user interfaces with Python without requiring web development skills.
Starting point is 00:52:32 I'm a web developer by trade, and I know that to do even an adequate job for a web application can take some time. There's quite a big maintenance burden and it requires quite a lot of skills to do. But I'm saying you can be a Python developer, know nothing about web apps, know nothing about desktop apps,
Starting point is 00:52:58 and you can use just your Python skills to build sophisticated user interfaces. And the fact that they run in the terminal is almost incidental. Because you might want to run them in the terminal and the web and desktop. You can install them as PWAs. So the pitch is, I'm going to let all Python developers
Starting point is 00:53:19 build user interfaces by lowering the barriers. So it's as if Textual will have two rendering destinations. It's not like you're putting a terminal UI into the web. You're actually having the web
Starting point is 00:53:35 as a separate deployment target. Is that what you're saying? Yeah. So you can distribute, you can build an application and distribute it through PyPy
Starting point is 00:53:42 or Brew. That's fine. If that's all you want, that's terrific. We're doing a lot of work with that. But you can serve it so that it runs in the browser and you can distribute it to other people. And they won't even know that it's a terminal-based application. I think they look so good now.
Starting point is 00:54:02 You might notice it's a bit retro. They do have a distinctive look about them, but in general, they've got scroll bars, buttons, check boxes. If you're not a developer, you could be forgiven for thinking it just actually was a web application. So you're letting developers who know Python build terminal apps, and then later you're going to say, this is also a web app. Surprise.
Starting point is 00:54:25 Yeah, pretty much. Well, we're talking about it now so hopefully people will know that in the future. Well, you know what I mean. Yeah, they'll have an idea of that future, but the surprise was just kind of like the it's not a flip of a switch but it's like a happy ending. I don't know what you call it, Adam.
Starting point is 00:54:41 I don't know. A curveball. Yeah, a curveball. There you go. A curveball is a surprise unless you know it's coming. It's like you yell at him, hey, I'm throwing a curveball, but then you still throw the curveball. Well, you know the pitcher's throwing the ball. That's interesting.
Starting point is 00:54:55 That was a curveball for me. I didn't see that one coming. Yeah. Well, I guess instead of letting my inability to see your vision be the conversation, why is that the best business model for Textual? Why is that route the way you build the empire? It's quite difficult. It started off, I didn't have a business model.
Starting point is 00:55:19 I was just building some technology that I wanted to build because it was cool. Right. some technology that I wanted to build because it was cool. I had to come up with a commercial add-on. For me, I was a web developer and I often wished I had a UI which I could use to navigate the file system, click a file, edit configuration, and have a button to restart a server or something. So that's what I was thinking of right at the start,
Starting point is 00:55:48 that I could build that and distribute it. And I realized that those type of applications are going to be useful to quite a lot of people. So I wanted to come up with a way of not just building tools, but also getting them into the hands of non-technical people, which is where this web service comes in. Yeah, that was my initial question, I think, in section two, which is how do you distribute these applications?
Starting point is 00:56:09 And I said it's okay to punt that for a while because we don't have that problem now, but your business model assumes the problem and that's the solve for the problem. Well, I think that people will really start building applications with textual. I did a poll on Twitter about what people would use Tuis for if they existed.
Starting point is 00:56:30 It was for everyone's little pet project, pet problem that they want to solve. When they build it, they're going to want other people to use it. That is the problem with TuEs and these kind of packages in general, and that they're only for developers. But I'm hoping that there'll be a market out there for non-developers. What's the size of this market? What's the total market for this? I know it can be big, but how...
Starting point is 00:57:02 8 billion. Well, I suppose, yeah. I mean, everybody who's not a developer could be using this. Well, I guess every internet-connected person. Well, I guess, how will 2Es, or how will this play into mobile? Because mobile, for the non-developer, mobile devices obliterate a desktop for the most part. Yeah, I mean, they will be able to run on mobile devices obliterate a desktop for the most part. Yeah, I mean, they will be able to run on mobile devices.
Starting point is 00:57:28 You can't have terminal-like experiences running on mobile. You could put it on a tablet, and you'd still have touch and gestures and things. We can build an interface for that, so it would run quite well, I think, on a tablet. So if you're enabling developers to build user interfaces with Python and not have to deal with the difficulty of web app development, but then you're building in CSS,
Starting point is 00:57:56 wouldn't they also have to know web app development then? Or is it just some basic CSS stuff, it's not that much? It's a much reduced dialect of CSS. I mean, CSS in the web is enormous. You have to know a lot of skill to wield it. It's much more reduced because the rules are much simpler. You've got color and border and some other styles, link colors, et cetera.
Starting point is 00:58:21 So it's much easier to learn than it would the entire of web CSS. There's a lot to be embraced, I would say, from the web platform and even what it uses to get built. Did you consider, I know that you said widgets and containers or I can't recall the exact terminology you used were similar to divs and you have CSS and whatnot. Did you, because I'm thinking there's a lot of front-end web developers out there
Starting point is 00:58:49 that know HTML, CSS, and JavaScript and can build full-feature web applications, but would also love to build TUIs. And now they have to essentially abandon a lot of that direct skill set and learn Python and unlearn web to build TUIs in Textual's world. I don't think, well, the thing is the people whose job it is to write web applications,
Starting point is 00:59:16 I'm not worried. They shouldn't be worried about losing their job or being forced to work on Textual. It's for the people that... Well, I mean to use it. I think it's really cool. I think more people want to build with it. And I think a captive audience
Starting point is 00:59:27 would be the ones who are most fluent with interface building, and that's front-enders. They're going to know those skills, but you can't take HTML, CSS, and JavaScript and apply it to Terminal. Well, I think they have options. Because I know there's a tool that builds,
Starting point is 00:59:45 Inc maybe, builds Terminal apps I think they have options. I know there's a tool that builds Ink maybe, builds Terminal apps with React and stuff. I think that market has people building tooling for them to do, to take their front-end skills over. I think there's another large, large community that Will is a part of, which knows Python and doesn't know Web and would love to build some UIs. I think of these textual applications not as replacing
Starting point is 01:00:10 what people use web applications for, but I think because it lowers the barrier, there's applications which simply weren't being built because it would take too long with a web application or they didn't have the skills. I think a lot of these could be built with textual because you just need Python skills, which a lot of people have,
Starting point is 01:00:31 and it's just easier and quicker to build them. So I think they'll be not cutting off a part of the market, but creating a new market for applications which just were never built in the first place. I wrote Python for about six months a decade ago and I had never written any before. And it took like six to 12 hours of just dinking around to where I could do some basic,
Starting point is 01:00:55 having already known how to program, right? Like I was a Ruby programmer. Moving from JavaScript over to Python is not a leap. Of course Python has this huge breadth of things you can do, but we're talking about just core functionality. I don't think it'd be a big leap for somebody if they wanted to make that leap. But like I said, you probably don't have to.
Starting point is 01:01:15 There's probably JavaScript tooling for this exact kind of thing. But to get into the textual world, if you wanted to, Python is a very, Will was talking about earlier on, it's a very approachable programming language, which is kind of a weird, ironic thing with it not being approachable from a distribution perspective, historically. So I don't think Python's going to hold him back.
Starting point is 01:01:38 I think, yeah, getting people interested in text applications in general is probably a bigger selling point. How long do you have, Will? Do you have a runway calculated out with your current burn rate? Startup stuff. We can work on this for
Starting point is 01:01:57 N years or N months before I need to have some sort of income? We've got five employees, including myself. Assuming that level of staffing, we could keep going for three plus years, which is great, yeah. Nice.
Starting point is 01:02:13 Because Scottish people don't like to spend money. So I'm using that money wisely. So they're all Scottish, the whole team? One's Portuguese. Okay. He works remotely. Okay. Are the rest of you all co-located? Hanging out in the same office and stuff?
Starting point is 01:02:30 Yeah, we're all in Edinburgh apart from the Portuguese guys. That's cool. We probably will be more remote in the future but I kind of like having people in the same office that you can bounce ideas off of. I find things move a bit quicker if you've got a
Starting point is 01:02:45 core that is physically near each other. Are you still hiring? Are you capped? Not right now, but probably will in six months. What kind of skill set do you think you'll be looking for in six months? What kind of ideal candidate
Starting point is 01:03:01 comes to your table? At the moment we've hired some very technical people, the type of people that can get involved in nitty-gritty and design APIs. I think the next phase will be developer relations. So we want to sell textual as a serious proposition for building interfaces. So I imagine it would be people that are particularly good communicators. People that could produce videos,
Starting point is 01:03:28 could write blog posts, that kind of thing. So I think they call that developer relations. That would probably be the next hires we'd have. Very cool. Speaking of public relations, we should mention a thank you to our
Starting point is 01:03:44 friend Simon Wilson who gave us your name, Will, and said that you're a person we should definitely talk to. One of the things he was praising was how you're building everything out there in public. You're probably the lead dev rel at this point for a tech school. Do you want to speak to your philosophy around that, maybe even the way you go about it or anything with regards to your constant stream of output? Sure, yeah. So I mean, when I started doing this kind of thing nearly three years ago, I had no idea that it would turn into a funded startup.
Starting point is 01:04:18 I just wanted to share what I was working on and it turned out it was quite visual. Rich was quite visual, you know, so I could create a screenshot and I could post that and I could discuss it. Initially I didn't have many followers, I might get a few likes here and there, but people did seem to appreciate that kind of content. So I kept it up. Well before the funding I was already posting videos and screenshots and that's probably what got me noticed um by the venture capital firm that i went with and was the fact that i had built up an audience these projects got a lot of stars and that was in part due to me just sharing what i was working on you know i'd share
Starting point is 01:04:56 successes if i was really proud of something i'd post a screenshot and i'd share fails um if something didn't work out and it was all garbled. I'd share that as well. And I'd share technical information. Just whenever it came to my mind, it's kind of cathartic. Software development can be kind of like a solo activity, especially if I wasn't working with a team at that point. It's just me.
Starting point is 01:05:23 And I liked the idea that people were interested in following along um so I kept doing that and built up uh an audience that way and it seems to be beneficial I mean we're still a small company I haven't got an advertising budget I'm not going to take out adverts on buses or the news or anything. So this is how I reach my audience and potentially customers in the future. And I quite enjoy doing it. Yeah, I think obviously what you've done has worked so far to reach an audience. You've got the attention of folks with money and have a shared vision, obviously,
Starting point is 01:06:03 because you wouldn't have taken their money otherwise. And you got Simon's attention, because I think Simon's a pretty smart fella. He's terrific. I always appreciate his perspective and his take on software. He's got a good eye for what good software is and who's building good software.
Starting point is 01:06:17 So we took his suggestion of having you on the show very highly, of course. I appreciate Simon doing that. I love his content. He shares everything he learns. He puts it on Twitter or on his website. He's got a huge corpus of various articles on little technical details and big issues.
Starting point is 01:06:37 So yeah, there's lots of terrific stuff on his website. Is there anything that we haven't asked you as part of the show today? I know Jared and I had a couple different angles that we came to the show with and some investigation, but what may we have not asked you that you want to share here as we close out? I guess I could share, I don't know if I said, but this is my plan B. So plan A, I was working on Textual and realized it was got a bit of a following. And I had this idea for the web application.
Starting point is 01:07:09 And at the time, I was a bit down on my day job. And I figured what I'd do is I'd take a year off. I've got some savings. I would just live frugally, live off my savings and some income from sponsorship, which I was getting at the time. And, you know, that would have happened if it was this point. It would have been like running low on money. But that's when the venture capital firm got in touch with me. And we discussed it and I discussed my plans and came up with a business plan and a pitch
Starting point is 01:07:42 deck and turned everything around. So it was as much of a surprise to me as anyone else. So your current trajectory was a plan B. You were just expecting to take some time off, live off of savings, and just enjoy your craft, essentially. Yeah, it was just going to be me. And I would be happy to tinker, write some code over the year.
Starting point is 01:08:03 And then if I did come up with something at the end of the year, which was, which is good enough, I could take that and then try and build a company or income out of that worst case scenario. Um, I would just return to my regular day job. Um,
Starting point is 01:08:19 but things turned out quite differently. What's the most exciting thing and most scary thing, I guess, of this unexpected turn for you? I guess I'm excited by what people are going to build with it. If I can enable people to build things which they weren't building before, that's exciting to me. You know, if there's a lot of applications that exist in the future, which wouldn't have existed without Textual um i get quite a lot of buzz about
Starting point is 01:08:45 that um scary i guess is the amount of work you know um plan a um was to allow me to reduce my stress levels um i could just you know focus on myself and write some code catch up on my reading get a bit of exercise but now we've got so much going on. Life's a bit crazy. I'm working quite a lot and my stress level's a bit higher, but also I'm enjoying things a lot more, so it kind of balances out. Yeah, the unexpected plan B of venture capital and the possibility of building something
Starting point is 01:09:21 that can be a business around this, it does have the struggle because you're the one with the idea, you're the one with the vision, you're the one with the responsibility in a lot of the cases here. So you are carrying almost, if not all, the burden. Yeah, and having employees, that's not something I'd thought a great deal about in the past um i want to build a company um which works for them which you know they enjoy working
Starting point is 01:09:53 for and can help them meet their goals and i can kind of build the company that i would have want to have worked for earlier in my career um so that's you's a whole load of things which I hadn't thought about even a year ago. So that's all kind of exciting. Yeah. Well, Will, thank you for sharing that part of your journey and that part of your story as well as all the details around TechShule, how you got there, what the future might be.
Starting point is 01:10:21 Really appreciate you being courageous to take that step. It's one thing to be able to create and then one thing to put it out there like you have. Building in public is, you know this because you see it every day. You put something out there that's a bad or a good thing. It's hard. That's hard to be vulnerable with the world and you've done that. Yeah, it's also quite cathartic.
Starting point is 01:10:44 I would actually recommend it to people. If you can get over that phase where nobody seems to be paying attention to you and just post things, eventually people will actually find your content and hopefully follow along. So it does kind of lay yourself bare. Sometimes you get criticized sometimes,
Starting point is 01:11:01 but most times you don't. People appreciate your content. So yeah, I'd recommend it to anyone who's building something to just tell other people about it. There you go. All right, well, thanks so much. Thank you. Yep, thanks.
Starting point is 01:11:16 It's been great. Cheers. This show is done. Thank you for tuning in. Hey, what do you think about the terminal as a platform? What do you think about TUIs? What do you think about building TUIs instead of web admins? Was Python a wise choice of language?
Starting point is 01:11:32 What about the big picture and business model? What do you think about that? Let us know in the comments. The link is in the show notes. Once again, thank you to our friends and our partners at Fastly and Fly. And those beats are banging. Thank you, Breakmaster Cylinder. You are awesome. And, of course, thank you breakmaster cylinder you are awesome and of
Starting point is 01:11:46 course thank you to you our listeners thank you so much for tuning in we appreciate you but that's it for this week we will see you on monday Thank you. Outro Music

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