The Changelog: Software Development, Open Source - Tedit, JS-Git, Jack (Interview)

Episode Date: July 16, 2014

Adam and Jerod talk with Tim Caswell about getting started in open source, exploring new frontiers, and his latest project Tedit -- a development platform that makes programming JavaScript easy and mo...re accessible.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back everyone. This is the changelog where our members supported blog podcast and weekly email come up fresh and what's new and open source. Check out the blog at the changelog.com or past shows at five by five dot TV slash changelog. And you're listening to episode 124. Jared and I talked to Tim Caswell about getting started in open source, exploring new frontiers, and his project, T-Edit, a Git-based development environment. Today's show is sponsored by DigitalOcean, TopTile, and SnapCI. We'll talk to you a bit more about Top Tile and SnapCI later in the show, but our friends at DigitalOcean are a simple
Starting point is 00:00:48 cloud hosting provider built for developers. In just 55 seconds, you can join over 150,000 developers who deploy to DigitalOcean's SSD cloud. DigitalOcean offers a fantastic user experience handcrafted by developers. Enjoy the ease of use
Starting point is 00:01:04 and speed of an SSD-only cloud, create droplets, manage your DNS, build a new server from a snapshot, save a ton of time installing Rails, Docker, GitLab, and more with one-click installs. You can even scale your infrastructure with the intuitive API. Sign up today and use the code CHANGELOGJULY to get a $10 credit when you sign up. Head to digitalocean.com to get started. And now, on to the show. We're joined today with Tim Kaz. We'll also have the managing editor, my sidekick in crime, Jared Santo on the call too. So Tim and Jared, say hello.
Starting point is 00:01:41 Hey. Hello. So Tim, you're no stranger to the changelog. You used to be a contributor to the changelog back in the day when we were still on Tumblr. And it's a different changelog probably, but still the same mission. But you've been on the show before. You started How to Node and several other things. You're prolific and open source. You speak at many conferences. So you're not a stranger to the world. But for those who may be coming to this podcast brand new that don't know who you are, can you kind of tee up whom Tim Caswell is?
Starting point is 00:02:14 Okay. So I guess the best way to describe me is I like to invent things. I love open source, and I love enabling other programmers. A quick background is I programmed in Commodores and Cubasic for a long time without internet, without help. And I was blocked by limitations of the platform. Nowadays, we have incredible amounts of technology and ability. And the main thing blocking people is just they think things aren't possible. So I basically spend every free moment I have finding something that is impossible and making it possible. So I author a lot of libraries,
Starting point is 00:02:51 a lot of infrastructure code, and a lot of educational content. So pretty much anything related to that. I've worked a ton with the Node.js project since the very beginning in 2009. I've worked on WebOS. I worked at Cloud9 IDE. Of course, we're going to talk about my recent work on the show. I mean, basically, I've done web development since there was a web, and I like enabling people. What do you, just I guess pausing on that for a second,
Starting point is 00:03:19 considering that you've been developing for the web since there has been a web, what do you think, what kind of, I guess, quick advice would you give about open source to some of the newer people that are coming to open source, let's say, in the last five to six years? That's still kind of older but new in comparison to your time frame. What do you think has changed, I guess, to the degree of access to information? So, yeah, I mean, first of all, there was the the internet which made a world of difference and then for a long time it was central systems like w3 schools was actually where i learned a lot of web tech and as much as we make fun of them it was the content i had and so it worked but nowadays we have all sorts of blogs and podcasts and videos and we have better documentation sites.
Starting point is 00:04:09 Microsoft has a good one. Mozilla has a good one. There's lots of stuff out there. I mean, you can learn from anywhere from individuals to large companies and there's just a ton of stuff as far as learning goes. Now, as far as the community involvement, that's where it really gets interesting. What I, what I tell people is I'm just a guy from a small town in Texas. I was nobody until I started writing a blog. And once I started writing a blog and people found out what I write, it was right. It was interesting. Suddenly I started getting these job offers. I ended up in California working for HP and, and all sorts of things happened.
Starting point is 00:04:52 Anybody can be successful in web development if they have passion and if they're willing to volunteer a lot of free time and to help in open source. It pays back hugely. I'd like to help us navigate that conversation because the, you know, I guess the word free can scare some people, but open source is maybe an easy way to say free and make it cool. I guess, at least today, like open source is becoming more and more cool to be a part of. And obviously it has its own gains and benefits, which you can definitely allude to, but you know, it can be a scary word to say free. So open source time, definitely giving back to the community. Plus a lot of what people are jumping into these days are frameworks or platforms that have been, you know, getting the tires kicked for years by the community and, and it's freely accessible to them. So why not give back? Right?
Starting point is 00:05:37 Right. Yeah. I mean, some people like to work on frameworks. Some people are more like me and just want to make things from scratch. I mean, there there's a place for all types of people in open source communities at which point did you feel like you had like quality content to give back because i think a lot of the the lack of confidence for people just getting started is i have a lot to learn maybe it's a little bit of the imposter syndrome like what could my blog possibly provide to the community that's of value? Did you have a certain point where you're like, you just hit a confidence bump and you're like, all right, I'm just gonna start writing online. I'm willing to put yourself out there.
Starting point is 00:06:17 Or, you know, did you do it too late, too early? What's what's advice for people getting get into that point? I think I'm I'm not normal in that regard. I mean, I started out programming when I was, I don't know, seven. And so by the time I graduated high school, I'd already tried and failed at a web startup. And I was pretty confident in my abilities, probably too confident. I look back at that code and I'm like, oh my gosh, did I actually think that was good code? So I didn't have that problem.
Starting point is 00:06:46 I thought I was really good. And now as far as the social aspect, I mean, I have mild Asperger's. And when I was in high school, I would literally be the kid who runs to the front of the school line with my long sleeve winter coat and shorts, eat my lunch, and then run to the library
Starting point is 00:07:02 and read books about building catapults. Like that was me. And then somewhere in there, I changed from that to I joined a sports team, got good at swim. And then what really helped is I went on a mission for my church where you spend all day going door to door asking people questions about their life and religion. Now, if that won't break you out of your bubble, I don't know what will. So, I mean, I don't know.
Starting point is 00:07:27 So at that point, writing your thoughts online was nothing in context. I mean, I still get a little stage fright. My first conference talk was in this movie theater in Stockholm, Sweden. And I just remember being on stage with spotlights in this room of hundreds of people, and I can't see them.
Starting point is 00:07:43 And it was a little nerve wracking. Wow. But what helped me a lot actually was meeting with the Dallas RB user group and doing lightning talks and just starting there. Like that did wonders. I've been to that group once or twice. I work at a nonprofit called Pure Charity. It's my very passionate day job and
Starting point is 00:08:06 every once in a while we'd be in Dallas hanging out and we'd be there with Karthik and Wynn and Jesse who are probably names you know
Starting point is 00:08:14 that go to Dallas RB so that's a good meetup too. It is. They do really well and yeah, I mean,
Starting point is 00:08:20 that helped me. That helped ease me in because there's a big step between I'm giving a lightning talk to 10 guys I know and I'm on a stage with hundreds of people in a foreign country. I couldn't imagine that stage. So, you know, a little confession on my side, I would probably not be very happy at all being in front of that many people with stage lights on me. I would probably just rather be in the the crowd as odd as it might seem running a podcast that's like yeah it's it's easier to be behind the mic in the seclusion of my comfortable office than in front of hundreds and hundreds of people it's just
Starting point is 00:08:55 not my place you can you can always edit it too so yes yeah let's to some degree we try to as best we can we try to put this one down from from live to tape, as they say in recording. Nice. I was going to say, you're obviously doing a lot of JavaScript nowadays. Could you take us through your language progression through the years? Sure. Yeah, I don't want to spend too much time on it, but basically, I did BASIC for a long time. A long, long time.
Starting point is 00:09:23 Like I said, I started on Commodore on commodore 64 basic which is awesome because that thing had no memory management at all you could just poke random spots in memory and things would happen and then and then i got a dos computer i had this this lovely little 386 with 16 megahertz and 16 megs of ram and i programmed on that thing for about 10 years just that and the cubase agreed me was my entire world so like age 7 to 17 ish yeah and then the internet came out yeah exactly and that changed everything i think it's important to mention too just um just from a a passionate standpoint i guess maybe some inspiration or some encouragement is that you attacked this passion for programming when there was no information.
Starting point is 00:10:08 So you had no choice but to hit the brick walls and hit the hurdles and find ways yourself to get over them. We live in a world now where if you hit a hurdle, you Google it, you likely land on Stack Overflow to some degree, maybe somebody's blog or a doc somewhere, maybe. There's a lot of information accessible to people to get over those hurdles. So it's building that confidence, I think, is a lot harder today
Starting point is 00:10:34 because you're always second-guessing yourself. And maybe to some degree, could you quickly touch on maybe that for you, like gaining confidence on your own? Okay, I think. So there are always unsolved problems. I tend to do things that haven't been done before because that's what interests me.
Starting point is 00:10:55 And I hit a lot of roadblocks, even in today's world. I will be, for example, today I was trying to figure out how to store binary data in Safari. And a few people have tried this. The Lawnchair and PouchDB people have worked on this. They're like, yeah, you can't do that.
Starting point is 00:11:12 You've got to base64 encode it and use WebSQL and crazy stuff. But sometimes I'm doing things like a Chrome packaged app, and I'm testing these APIs that no one has really used before, or has used much. Or the GitHub REST API because I can't do real Git protocol to GitHub. And I find bugs everywhere. I find bugs in Chrome. I find bugs in GitHub.
Starting point is 00:11:38 And there's nothing on Stack Overflow about it because no one's really tried this yet. So there's still plenty of frontier out there. You just have to do things that haven't been done before. So I would imagine you're probably on the happy but yet sad list. Oh, another support request from Tim. He found another bug. Gosh. I have no idea. So since you're an inventor and you like to hit the unknown, it probably tees up what i think is the meat of the conversation so um just to quickly touch on js get get browser t edit or some might call it tedit which was me prior to listening to your super awesome youtube demo of that which blew my mind so i mean what's the best way to tee up what you've what you're doing now with t edit and the kickstarter you did for js get and the like you said the infrastructure tools you need to actually pull this project off.
Starting point is 00:12:27 Right. I'd like to start with the goal. And the goal is a very ambitious but simple goal. I want to make programming accessible. And what I mean by that is we have all these devices in the world that kids and teenagers have access to that are consumption devices. We have iPads and Android tablets and Chromebooks and who knows what else. Maybe you're on a school computer or a library computer or something and it's a lockdown environment. But they all have JavaScript. They
Starting point is 00:12:57 all have a web platform. All of them. And so my goal is to build a full professional developer environment with everything, with dependency management, with build systems, with Git, check-in, check-out, clone, merge, all of that, to work in this restricted environment. And I want to do that so that more people can get into programming without having to go out and buy a MacBook Pro or a Windows PC or something. So that's the goal. Now, with that goal, there's a whole lot of subparts. I am inventing a new language. I'm implementing Git and JavaScript. I'm making a prototype of this developer environment. And so that's what all these projects are.
Starting point is 00:13:38 One of the biggest technical ones was some sort of version control and interacting with the outside world. And nowadays by far the most popular version control system for open source is Git. And so I've been working on implementing Git in JavaScript because then I can use it anywhere. And so,
Starting point is 00:13:57 yeah. Well, that brings us to the, I guess the first hurdle you hit was you couldn't do T edit unless you had JS Git. Can you talk about, I guess, the exploration, the inventor side of you to know? I mean, there's obviously a lot of wisdom and discernment in your choices too. I mean, you can see that given your path. You crowdfunded JS Git
Starting point is 00:14:16 twice. So maybe take us back to, you know, you said you have a goal. How did you begin to think about that goal and figure out what you needed to get in place to actually meet it? Well, the way you eat an elephant is one bite at a time. And it's very easy to get overwhelmed when you have large goals like this. And so I figured, what is a large, substantial thing that I need for this that just needs to get done? And I decided about a little over a year ago that I needed Git. And if I had Git, that would enable so many things. And so I tried working on my free time and didn't make any progress. I looked for existing code and there was nothing
Starting point is 00:14:57 that had what I needed. I mean, there were several attempts. I'm not the first person to try Git in JavaScript. There were many, many attempts. But nothing had what I wanted. And so one day I just came to the conclusion that I have to do this full-time, and I have to find a way to fund that. And Kickstarter was a little new and still pretty exciting back then, so I thought I'd give it a try.
Starting point is 00:15:20 And that's where that started. So there were two Kickstarters for JSKit? There was a Kickstarter, and I didn't ask for near enough money because I misunderstood how it works. I wanted to ask you about that goal, because I've heard some kind of behind-the-scenes horror stories from some people like, I didn't ask for enough, or...
Starting point is 00:15:43 Yeah, so... So, I mean, obviously, implementing Git in JavaScript is, with my skill set, roughly didn't ask for enough or yeah. So, so I mean, obviously implementing get in JavaScript is with my skillset, roughly a year full-time work. I mean, it's not easy at all. And I asked for what I asked for 12,000. That's not a year of salary. I have three kids in a house. I mean, that's not going to work. Right. So what I did was I calculated, okay, I have these consulting projects and if I cancel them, then it'll take me a month or two to get new consulting things. If the Kickstarter doesn't work out or whatever. And so in Kickstarter,
Starting point is 00:16:15 they say, what's your minimum? What's the least you're willing to accept to make it worth your time? And I said, well, I'll do 12,000. That'll give me enough that I can live on a reduced budget for a few months. And that makes it worth it to fire my clients. And so I put that as my minimum. And here's the problem. Everyone who was funding it thought that was all I needed. And so it hit the minimum overnight. Like overnight it hit.
Starting point is 00:16:40 It was because it was very exciting. People love the idea. But as soon as I hit that, it just crawled to a halt. And I set stretch goals. I explained to people, no, that's the minimum. If you want all these things implemented, I need a lot more. And it didn't work. So I worked on that.
Starting point is 00:16:56 I stretched it for as many months as I could until it was endangering my family. And then Bounty Source came to me and says, hey, we're like Kickstarter, but specifically for open source projects, we will help you. And they did. They went out and helped find funding from corporations. They handled all the stickers and T-shirts and everything. Wow. They just charge a fee for the service, which I thought was well worth my time. Because when I was doing the Kickstarter, I spent an entire month and a half full-time fundraising.
Starting point is 00:17:21 And that was half the money because I barely got enough. So that was almost a waste of time. So the JS Git one in Bounty Source raised $34,000, just a little over $34,000 of your $30,000 goal. That's neat. I knew about Bounty Source, obviously.
Starting point is 00:17:41 I think we've had Michael Peace on the show before. He had an RVM fundraiser there. I'm not really sure how you term it. A bounty source there, I guess, because you would use the brand name of the platform like a Kickstarter. I don't know. And then you got your $12,000 goal that you even over exceeded. You had four or five backers on Kickstarter kickstarter which uh looking at the time frames
Starting point is 00:18:05 trying to figure out what the time frames were between the two was it about five months between or a few months between kickstarter and bounty source something like that that sounds right so i mean you got twenty thousand dollars so what happened when you got when you first get your first crowdfunding from kickstarter did you you fired your your clients and went to work for two months? And then what did you do? Yeah, I worked and spent most of the months just trying to solve the cross-platform issue, which was the first thing. Because
Starting point is 00:18:34 the JavaScript module ecosystem is terribly fragmented. And the goal of JSGit was to have this platform that runs anywhere. So I had to run on the Chrome app platform, on the web platform, on the Firefox app platform, on the Chrome app platform, on the web platform, on the Firefox app platform, on the Windows app platform, on Cordova,
Starting point is 00:18:47 on pretty much any JavaScript platform you can think of. And so I spent the first several months mostly figuring that out. I mean, I did some get specific code here and there, and a lot of it was finding out what existed and how I could use it.
Starting point is 00:19:01 But I'm going to admit, a lot of that time was spent trying to find a flexible way to work with all these systems. What's the biggest hurdle between all of them? Just the fact that they're just different, they make different choices, or how they store data, how they deal with databases? I mean, that kind of stuff you can abstract away. The trick was, how was the best way to abstract that?
Starting point is 00:19:27 What kind of dependency injection do I want to use? What kind of module system do I want to invent? Because I can't use anything existing. A lot of people told me to just use Browserify, which I understand if you're on a desktop platform, that's a great choice. But I'm specifically targeting platforms that don't have a command line, that don't have Node. node right and so I want to be able to develop on these machines not just
Starting point is 00:19:50 consume on these machines that was the entire point and so I can't depend on a tool chains that need a desktop machine so basically there was nothing existing I could use yeah it's like all these you might be able to learn something from some of them or at least see what their what their goods and bads are, I guess. You know, what their fails and successes were to maybe learn from that. But otherwise, you're kind of hanging out in uncharted territory. Right. I mean, I use browser-fi-style transforms.
Starting point is 00:20:16 I write all my code as common JS modules, and then they're compiled to whatever I need for the target. But all these transforms run in WebWorkers, or if I'm a node, they run in something else, but it's all implemented in the T-Edit platform. Let's pause the show for a minute and give a shout out to our sponsors Snap. Snap is a hosted CI and continuous delivery service that goes far beyond letting you do continuous deployment. Don't waste your time and set up your own CI box under your desk. Use Snap. Snap has first class support for deployment pipelines. With Snap, you can push any healthy build to multiple environments automatically or on demand.
Starting point is 00:20:51 This means with Snap, you can do things like deploy to your staging environment today, verify it works, and later deploy the exact same build to production. Snap integrates deeply with GitHub, has great support for lots of languages, databases, and testing frameworks. Snap deploys your application to cloud services like DigitalOcean, Heroku, OpenShift, AWS, and many more. You can also use Snap to push your Ruby gem to Ruby gems. And Snap is always free for open source projects. Try Snap for free for 30 days today. Sign up at snapci.com slash the changelog. Well, since you teed up T-Edit, you know, you did JSGit. I guess out of the box, I'm,
Starting point is 00:21:35 you know, I want you to explain what it is for one. And then I guess a follow-up question to that would be why no crowdfunding for T-Edit, but there was crowdfunding for JSGit? Okay, so on the crowdfunding, it did not go so well the second time. The bounty source, I set a much higher goal. I set a much longer time frame because I learned that the companies can't get from idea to approval within a couple weeks. They just don't work that fast. Like Brian LaRue and some other people at Adobe were trying to help me get Adobe funding. And they're like, look, if you give us a week of warning, we're got a really hard time getting you that money. So I set the goal longer.
Starting point is 00:22:15 I set the money higher and I traveled. I went to California. I talked to people at all the big companies and I was getting nothing. I was several weeks in, and I think I just had a few thousand dollars, mostly from individuals who funded me the first time around and just liked me so much they wanted to do it again. That's not sustainable. At the last second, Mozilla bailed me out and paid the bulk of it with a grant. Wow. But I learned from that that I can can't live longterm on crown funding.
Starting point is 00:22:46 It helps you get an idea off the ground. It helps you discover if people like it, but I don't believe it works longterm. So what was the feedback from the individual companies on T edit? Did it just not align with their particular goals like JS get did, or did you have a hard time delivering the vision? Well, I didn't even try to fundraise to
Starting point is 00:23:05 get it so i don't know oh okay the bounty source was still js get gotcha but the the feedback i got from several of them and one of them just just bluntly told me he's like look my generation of managers does not understand giving money to an open source project if we give you money we want a contract in place and we want exclusive ownership. And I was telling them, no, this code is open. This code is freely available to anyone. And they're like, so you want me to give you money so my competitors can benefit?
Starting point is 00:23:36 I'm like, yes, because if you don't, it won't exist and it benefits you too. And they're like, nope. You think there might just be a generational gap there, or maybe it's just case by case? I think so. I mean, Mozilla obviously donated the most twice, but they're a non-profit whose goal is the open web. Right. And I'm doing something cool with JavaScript.
Starting point is 00:23:55 Like, they don't actually need JS Git. They just thought it was cool that I'm doing something with JavaScript. I think Adobe was the only company who actually had a use for it that donated, because they were thinking of using it in brackets and something with some other stuff. That's tough. I mean, Jared, you asked, is it a generational gap or is it something else? I think, yeah, if you don't have the right person who cares and really understands, and I think that's kind of what we try to do with this show is to not just talk about the projects, but also the people behind them and the motivations and their aspirations. And like you had said before, the goal behind this project is pretty audacious and it's uncharted territories. And shining a light on that is important because
Starting point is 00:24:36 there's a lot of benefit that can come down the way from all this learning that you're doing and what it gives back. But we have a passion for open source. We understand the community and it's a lot harder to sell that to someone who just doesn't get it, just doesn't care. Maybe they, maybe they get it. They just don't care. And given a lot of money to something and not seeing in quotes, the ROI is, is really tough. We, we face that battle here and there too, ourselves. Yeah, it's tough. I mean, there were companies which I know benefit a lot from what I'm doing and I couldn't get them to fund because that's just not their policy.
Starting point is 00:25:11 That's not how they work. So is T-Edit totally nice on weekends and you're just full-time somewhere? At the moment, yes. So around New Year's, the JSKit money almost dried up. And so I made one last sprint i was going to try to make a product that used js get and i could sell that product i was going for the
Starting point is 00:25:30 business route maybe like maybe i could fund it that way and so if you look at my github history you'll see i worked insane over time the first couple months of this year and i was basically just building t-edit from the ground up. I tried a web version. I tried a portable version. I got stressed and just focused on a Chrome app only version. I just threw away all the cross-platform stuff. I got pretty far in the Chrome app version until I finally was really out of money. Right now, I'm doing consulting work. I work on T-Edit when I have time, but the progress is way
Starting point is 00:26:05 slow because I had to stop. See, I was going to ask you about the, the Chrome app piece, because you talk about, you know, open cross platform. And then I look at it, it's a Chrome app. And I thought this doesn't seem to line up with his goals, but it seems like it's just a, just a time and money decision for now. Well, and there's many versions of it this week actually i i made i made a little time and t-edit now runs on chrome and web nice so if you go to t-edit.creationx.com that's the web
Starting point is 00:26:34 version and if you look in the source tree it's the exact same code there's just a few parts where it swaps in some platform primitives and turns off some features. So for example, in the Chrome app, I can access the file system. So I can read and write files. I can, there's one feature where you can export your T-Edit build system final files, like the built files to the file system. And so you can use a Chrome app to make Chrome apps.
Starting point is 00:26:59 Or I've used it for node development before. I also say before we dive deep in, I know that T-Edit is probably a rough concept for most anyways. Maybe you could tee it off by, you know, you mentioned the goal of programming being accessible to everybody, but can you kind of give us what exactly is TED? Kind of give us the high-level overview. Let's start diving into some of the details around what it does
Starting point is 00:27:23 and how it works and where you see it going. Sure. So yeah, JS gets just a library. It was just a means to an end. And then T-Edit itself is the developer environment. And the goal there is, is I want to, I'm thinking of two main use cases. One is me. I like being a random machines, like my Chromebook pixel, for example, or who knows what else, Maybe my Android tablet. And I want to be able to do work there. And then kids in my programming class or just anywhere who are learning, I want them to be able to use any machine they have. I chose Chrome app for now because it's everywhere nearly.
Starting point is 00:28:00 If the machine has Chrome, it can run Chrome apps. So that's all laptops, including Chromebooks and desktops. And there's a lot of Chromebooks in schools. I thought lots of kids had them. Maybe that's not true. I don't know. And then two, the platform is very powerful. It gives you primitives the web doesn't have. I can access the file system. I can make a web server. I can get around the cores restriction and talk cross domain. You have all these extra primitives that the browser doesn't have. So the Chrome app that's in the store right now is basically an IDE that edits Git repositories directly. It does not edit files on disk.
Starting point is 00:28:41 And this is a very important distinction between T-Edit and all the other editors in the world. In everything else, Git is a tool you use on the side that creates a working directory, and then your editor works with those files on the hard drive. And then when you go back to Git, you pull those files back into the Git database. Whereas in T-Edit, you never have a working directory, ever. You always work directly on the Git database. So it's a slightly different way of working. Hmm. Does that make for a better user experience or more approachable than the traditional way?
Starting point is 00:29:16 I'm still exploring that. One of the things that I've found that I really like so far is I found a way to make submodules not suck. Really? Yeah, because the concept is not wrong. The UX in the real Git client is terrible. It is horribly
Starting point is 00:29:32 terrible. And this is why people don't use submodules, because they'll bite you. Yeah, I mean, I've personally given up on them a while ago, so I don't even know what the current state of submodules is. Nothing's changed. No, nothing's changed. It's the same.
Starting point is 00:29:47 No one works on it as far as I know. Okay. But the main issues were, one, it doesn't record the branch you're working on. The way it's actually implemented is very simple. In the tree blob for that file listing, it's just type commit, and then the hash is the hash in the other repo. That's it. No other context. It just points to the hash in another repo.
Starting point is 00:30:10 And then in the root of your project, there's a get modules file that maps that path to a remote URL. And that's it. So by default, in the normal client, if you change anything, you get thrown in a detached head state. And then if you move some stuff right in the parent repo
Starting point is 00:30:26 it'll revert your code without even warning you and your changes are gone. And if you forget to push the submodule and then push the main one it'll point to a commit that doesn't exist on GitHub and it's a nightmare. So how do you fix it? So with T-Edit, everything
Starting point is 00:30:42 is one big continuous virtual file system. And sub-modules are just mapped in like you do in NFS or Samba Mount, and you can just browse them as if they were local files. And depending on which backend you're using, it works really well. I have a GitHub backend
Starting point is 00:30:57 that actually mounts the repos using GitHub's REST API and uses GitHub as the data store instead of a local data store. I have a local cache to make it faster, but all the real actions happen directly on GitHub. And so suppose I edit a file in a submodule. I will then save that blob to GitHub,
Starting point is 00:31:19 which gives me back a hash. And then I modify the parent tree to say, hey, it points to this new hash, and then I save that and it gets a new hash for the parent tree, and I do this all the way up to the root tree. And then once the root tree has a new hash, I create a temporary commit pointing to that root tree. And then
Starting point is 00:31:35 in the parent repository, I update the submodule entry to point to that new temporary commit, and then this prop gets all the way up to the root. So anytime you change anything in a t-edit tree, it's saved all the way up to the root. So anytime you change anything in a T edit tree it's saved all the way up in all the parent
Starting point is 00:31:49 repos. And so if you knew the hash to the temporary commit you could see all these temporary state of your files in GitHub. But that's all in the background.
Starting point is 00:32:02 You don't actually see that temporary commit. Right. Since I don't actually move the reference, I don't actually move head, none of it's visible. And in fact, if you don't commit it within two weeks, it'll probably get garbage collected by GitHub's backend.
Starting point is 00:32:15 So you don't want to be in this state for a long time. I commit my code every day just because I don't trust my local machine and not eat my code. Is this keying off of the... Just watching, we'll link out to this too, so if you're listening, we'll have this YouTube video. We're going to mention, we mentioned earlier
Starting point is 00:32:33 Tim's awesome demo of this, which was very enlightening and mind-blowing, but you said in the video it's always committing. Is that kind of like committing to your local Git repository and then finally doing a final push whenever you want to do a commit of that code? Is that kind of like a rebase of that or whatever to kind of munch it into one commit?
Starting point is 00:32:55 Is that what you're doing or is that something more unique than that? No. So like I said, when I'm using the GitHub backend, your JS Git instance is a proxy to GitHub. There is no local database. There is no clone. There is no pool.
Starting point is 00:33:09 There is no fetch. There is no push. You are literally modifying your data on GitHub directly. Like, if you open up the terminal, you can see REST calls just flying back and forth. But it actually performs pretty well. So how does that handle offline? Does it just queue them up and wait? It doesn't.
Starting point is 00:33:26 Or it doesn't. Okay. I have a task for that. Okay. Because I want offline. Well, some of this is offline, though, right? I mean, you've got a lot of this that's offline and secure. I heard that a couple times in a video.
Starting point is 00:33:35 Can you talk about that? Is that a good time to talk about that? Sure. So the backends, there's lots of backends for JSGit. There is no one backend. The JSGitHub backend is the one that live mounts GitHub repos. it's the one i use the most because i don't have push and pull implemented and so i can't sync and so i just use that one but once i implement the network protocols the other backends will work great there's an index db backend i was working on a web sql backend this
Starting point is 00:34:01 morning there's i had a local storage one, but I don't know if it's still maintained because there were some issues there, mostly with just limited space. If you're a node, I have a backend that can read and write real Git repos off disk. So it implements that format, that.git folder. I have the same thing for Chrome apps
Starting point is 00:34:23 because Chrome apps can access the native file system. So you can mount a native get repository using a Chrome app, edit it and T edit, and then push it from the command line. If you have note or if you have get, so there's lots of backends and it's very flexible. There was, I had people talking to me.
Starting point is 00:34:40 One company thought about using S3 as a backend And all I really need is a key value store. That's the bulk of what Git needs for its storage. So it depends on what performance you want. You can use anything as the backend. But yeah, I haven't implemented push and pull fully yet. I haven't implemented merge or diff. And those will be on the JSGit side, right?
Starting point is 00:35:04 Not on the T8it teta side yeah they're part of js get but teta will use them it'll it'll expose interfaces for them and yeah that's that's where i was when i ran out of money i was i was implementing that stuff and then i couldn't get done so you mentioned your you ran out of money where what is the state of this project right now i guess from uh obviously you're passionate about it. So that, that kind of goes without saying, but you know, are you out of money? What's the next step to giving yourself the necessary time to keep building this? And I guess, what is your direction? So I've got some consulting work till end of June. And after that, I'm going to take another run at it, see how much I can get done, and see if I can find more novel ways to fund it.
Starting point is 00:35:48 I don't know yet how I'm going to do that. I'm just trying to survive and get there. Some ideas I had was T-Edit consulting, where people would want to use JSGit or T-Edit in their product, and they could pay me to integrate it into their platform. And I found some interest there from a few companies. I could do one. One thing I really want to do back to my original goal is I want to make games. I want to make simple games, make them open source and then write docs about how to write games. So these kids can get into programming. And I was thinking about maybe selling podcasts or tutorials because people seem to want to pay for that.
Starting point is 00:36:28 What I don't want to do is I don't want to charge for the code because I'm essentially writing infrastructure and infrastructure should not be for pay. It should be freely available because it's just code. It's not going to cost me anything to copy it. So I want T-Edit and JSKit
Starting point is 00:36:43 and all the code itself to stay open-sourced, MIT or Apache, something very liberal, and find other ways. I've considered another fundraiser, but like I said before, I don't think that's sustainable. Well, especially if you've been through two
Starting point is 00:36:58 and the second one even had the help of BountySource, still had to be the final bit taken care of by Mozilla. And big shout out to Mozilla, too. I'll give them a thanks. I know you already have, but on the show, that's awesome to support Tim like that. Yeah, they're awesome.
Starting point is 00:37:16 Tim, you mentioned in the video that we keep mentioning your demo, a pro version. Is that on the horizon? Is that something that you're thinking about? You just mentioned free code and no charge for infrastructure. So does a pro version fit into that? I don't know. I've sort of scrapped that idea.
Starting point is 00:37:34 I do still have a hosting platform I've been developing, and that's actually my only private repo on GitHub. And we haven't talked about the T-Edit build system yet, but... Yes, that was pretty neat. Who? High level, it's a build system like Grunt or Gulp or whatever,
Starting point is 00:37:51 but it works completely different, and you don't need a command line. But this same build system I've implemented in a Node web service where I can host your T-Edit-based web apps, and it's basically GitHub pages, but with a bunch of smarts baked in. So one idea is I could charge for that hosting,
Starting point is 00:38:11 because it's a service. I don't mind charging for services. I just don't want to charge for the infrastructure code. But hosting's a hard thing to make money from. The build system that you mentioned, is that where you were piping into, like, AppCache and the other tools that are available to build something? Because you used T-Edit to rebuild another version of T-Edit. Right, right.
Starting point is 00:38:38 So let me go into that. So the original goal was I wanted a full development environment. So once I have Git done and I've implemented push and pull and merge and diff and all that fun stuff, I have version control, I have sharing, and I've done dependencies with the easy submodules. I can add a package manager on top of that that just eases setting up these submodules. But you still need a way to build files. In modern web development, maybe some people use CoffeeScript. Maybe you like writing CommonJS, but you're running in a browser. You need build steps. And so the T-Edit build system is kind of unique. The way it works is you create these rule files.
Starting point is 00:39:17 I think there were some links in the video. But now they're rule files,.rule. They're actually written in John, which is a subset of Jack. JSON is a subset of JavaScript. They look like JSON. They're just a little more flexible. You basically say, you take the file that you want to exist. I need an app cache
Starting point is 00:39:37 manifest, or manifest app cache. Then you add.rule to the file name. Mark it as executable because you can do that cross-platforming Git, because I'm not using real files. And what the system will do is when it sees an executable.rule file, when it's serving over the web or exporting to disk or going through anything that needs the built version of the files, it will execute that rule.
Starting point is 00:40:01 And the rule itself will be an arbitrary program that user writes. And I'm going to maintain a library of some useful things. And so these are the equivalent of your, your Gulp or Grunt plugins. And so I have one called AppCache and you give it a listing of files. And what it will do is it will search the Git tree, the built version, find the E tag of all those files and append them as comments in the AppCache. And if you've worked with AppCache before, you know that the file needs to change every time find the E tag of all those files, and append them as comments in the app cache. And if you've worked with app cache before, you know that the file needs to change every time any file, it depends on changes.
Starting point is 00:40:31 And so that way, you don't have to constantly go update some timestamp in your app cache. So when you refresh in the browser, it automatically grabs the new app cache, and you always have the latest code. And there's other compilers. There's the one I just built for my cross-platform stuff.
Starting point is 00:40:48 I called, what did I call it? JS compiler, something really, really plain. But what it does is it takes a tree of source code that's in common JS node style and then builds it as a bunch of AMD modules. And then I have a really, really minimal AMD loader that injects those as script tags in the web page and loads them on demand.
Starting point is 00:41:12 And I'm going to add another version that builds a single concatenated file for websites that want to work offline. And so what you'll do is you'll have all your JavaScript in the one big concatenated file, and then your app cache manifest will point to that file. And then anytime anything changes, the tag of the big file will change, which will then cause the app cache to change.
Starting point is 00:41:32 And so you'll have automatic concatenation. We can throw in minification. You can have any other filters you want. We could do CoffeeScript. I have a, I've put Facebook's Regenerator in there because I really like using generators. So now I can use generators in any web app or Chrome app I want. And all of this works without a command line, without Node, without anything. Let's pause the show for just a minute and give a shout out to our sponsor, TopTile.
Starting point is 00:41:59 Now we've been working with TopTile for about a year now, almost a year now. And we thought it would make sense to circle back and talk to some of our listeners who have applied to TopTile and have been accepted. Because only about 2-3% of the engineers who apply make it past their strict elite engineering process. And Daniel Lauzon, a long-time listener and fan of the changelog, is now living the dream. He's an elite engineer at TopTile, and I say living the dream because he's now able to have 100% control of the types of projects and technologies he's working on, as well as the rate he wants to charge. Daniel earns 100% of his income as a TopTile engineer, and he wanted me to pass on his
Starting point is 00:42:41 seal of approval of the TopTile experience. For those of you out there who are freelancing or would like to test out freelancing, you've got to check out TopTile. If you think you have what it takes, head to toptile.com slash developers. That's T-O-P-T-A-L dot com slash developers to get started. Tell them that ChangeLog sent you. You mentioned in the video, too, since you're mentioning Node and NPM, I think you mentioned earlier, on a Chromebook.
Starting point is 00:43:08 So this is, just to kind of recap, this is pointed, right now it's a Chrome app. And I think it seems like, if I'm hearing you correctly, it seems like it's a Chrome app now, not because you don't want to be cross-platform, but because you have limited time and you need to make progress. Is that accurate to say? Well, I need the extra primitives. The web version has serious limitations. Right. I can't get GitHub or Bitbucket to turn on cores. I have asked them multiple times,
Starting point is 00:43:34 and I don't know if they have security concerns or what, but a web page cannot clone from GitHub because it's cross-domain. Yeah, right. Now, there is the REST API, which I use extensively, but it's much slower, and it's proprietary to them, and it's not the same. So with the Chrome app, I have full access to everything.
Starting point is 00:43:53 And also, I can access the file system. I can create a local HTTP server. And so you can write a web app in the Chrome app, host it, start the web server in the Chrome app, and then another tab in your Chromebook, you can then run your web app. And all of the build files will be built by T-Edit in the Chrome app, and everything works end-to-end. And then like you mentioned, you can also self-host the T-Edit itself. So I can build a Chrome app with a Chrome app.
Starting point is 00:44:19 That's awesome. Let me just stop you for a second and say, you're doing some really cool stuff. When I watched that, Jared, I was like, I seriously almost fell over. I had to catch myself. I feel like there are certain people out there that like everybody should, they should just be given a bunch of money and be like, just go do your thing and we're all going to be better off. And I got a feeling you're one of those guys.
Starting point is 00:44:40 Sounds good to me. Well, we're offline. I mean, what I think, I think what Jared's trying to say is you have our full support. Whatever we can ever do to help you, we're going to be there for you. And I'd like to talk to you more about some ways we can be a part of that and just help make your life a little easier if we can. So you touched on the web server part of it. Is there any more we can mention about that? I think it's just kind of unique that it's all-encompassing T-Edit.
Starting point is 00:45:08 It not only is it a full-on IDE, it's headed straight from Git. I mean, this is some pretty amazing stuff. You can run the app itself with it. And I think one other quote you had said, you're not building an editor, you're building a workflow. And it seems like this is, you know,
Starting point is 00:45:30 not only is it, it's got all these complex backend pieces, but you're also able to serve up whatever you've built. And then the offline part that I think you touched on in the video that I'm not sure how accurate it is now, because that was in February, but you were able to kill the current web server and still serve up the game from the
Starting point is 00:45:47 AppCache. Right, so AppCache lets apps work offline. And when I get the web version of T-Edit done, it's going to have its own AppCache. So you can go on an Android tablet, go to t-edit.creationx.com. It'll run today, but you have to be online. But once I
Starting point is 00:46:03 get all of that done and I've implemented offline sync, then you'll be able to add this to home screen. It'll run today, but you have to be online. But once I get all of that done and I've implemented offline sync, then you'll be able to add this to home screen. It'll work offline just like any native app, which I'm very excited about. How has mounting a GitHub repo changed? I couldn't tell from the video how it seemed like you had to like manually type in you couldn't just like what maybe some users at least i was thinking that you might just be able to choose um you know from the repo versus like hand typing in creation x slash t edit i have an app for
Starting point is 00:46:36 example to to kind of and then you also had to point back i think a sha one code can you talk about mounting a github repo maybe how that's's changed since February, if it's changed at all? So that UX hasn't changed much. What that is is it's a GitHub token, and I'm not sure you can GitHub OAuth from anything that doesn't have server assistance, because the
Starting point is 00:46:58 way they've set up their OAuth, but you can go to GitHub and request an app token and then paste that token in. And you only have to do it once to set up your machine and it remembers it. Now, the other part, the paste in the URL, is just me being lazy. There's no reason I couldn't have a smarter UI that, using the
Starting point is 00:47:13 REST API, queries all of your Git repos and gives you a dropdown or some smart selector or whatever. That's a nice to have, not a need to have, right? Yeah, I'm focusing on the things that other people can't do or other people think they can't do. There's nothing I'm doing other people can't do. And just to kind of key off one more thing, I'm not sure if we touched on it, I think, slightly, but it uses Ace Editor.
Starting point is 00:47:38 And it kind of goes back to what I just said, which is what you said, actually, which is I'm not building an editor. I'm building a workflow. So you didn't actually build the editor part of it. This is from an existing open source project that's out there. I think I was going to ask about your Cloud9 experience. I'm assuming you had some part in Ace Editor as well. I didn't actually work on Ace a lot while I was there.
Starting point is 00:47:57 It was pretty much Fabian's work. At Cloud9, I was doing a bunch of infrastructure, backend stuff, making the, like the big thing I did there was I made the terminal run in the browser over a web socket with the lowest latency possible. Ace is amazing. I used CodeMirror for a while, and then I switched to Ace because I prefer it personally. It's a lot more full-featured out of the box, but it's also a lot bigger. So it's a trade-off i liked your your comments too about working late at night near children in low light levels and being able to
Starting point is 00:48:30 easily swap out the various um oh right the various syntax highlighting colors that was pretty neat too so when you open up t-edit you're going to see a nice window at a tree view the tree view is all my code and that's all custom code that's the bulk of the code actually everything's inside that tree and using tj holloway chuck's css parser i parse out the ace theme when you change themes and then apply the same colors to the tree so your entire screen is the same color scheme because like you said i am i am all often working in the dark in a bedroom next to children helping them sleep. And I hate having this bright white tree here next to this dark code here, and it just doesn't work. Yeah, I like that, too. I think those who primarily work maybe in Vim or something like that are used to it because it's all whatever they set for their theme in their terminal. But for those who maybe work in Sublime Text or other, I guess, IDEs,
Starting point is 00:49:27 you generally have syntax highlighting and colors for your code, but then it doesn't really apply to your sidebar, your file system like you just mentioned. So it was neat how those played a part too, and just even easy too how you can swap from one color to another. I think it makes it a little harder in other editors. And for some reason, you just made it so easy. Right.
Starting point is 00:49:50 Like I said, my focus is accessibility. Yeah. And part of accessibility is vision. So one of the first things I did for T-Edit was you can change the font size and the color scheme with keyboard shortcuts. You can change them very easily. So if I'm presented at a conference and I'm live demoing,
Starting point is 00:50:09 I can change it to a white background if it's not a very good projector. I can bump up the font or shrink it down. I want all these things to be extremely easy because I don't want them to get in the way. So those were some of the first things I did. Well, we didn't talk at all about ChromeFS. Maybe you mentioned it, NodeFS. I'm just looking at some of our notes we had for this call.
Starting point is 00:50:33 Before we begin to close out the show, what other things can we mention that you haven't done enough, Tim? So what else is there to mention that's really important to close off, I guess, talking about T-Edit and I guess the direction you're taking with that? Right. We should probably talk about the current state of the project and what people can use now. Okay.
Starting point is 00:50:52 Well, it's not done. And the biggest missing pieces are network and diff and merge. But what is done is a lot. The JS GitHub backend is quite mature. You can use it in Node or WebApp or Chrome. It works anywhere. And that's the JS GitHub project. There's two new ones.
Starting point is 00:51:13 There is Git ChromeFS and Git NodeFS. And what those do is those use the built-in mixin and JS Git, the FSDB, and they let you mount real Git repos using JS Git, either from a Chrome app or through Node. And so the hosting project I was talking about, what it does is it GitHub mounts the projects,
Starting point is 00:51:34 but then it caches them locally using a real Git repo using the Git NodeFS. And when I'm doing my consulting work, what I'll do is using T-Edit, I will mount my local Git repo on my MacBook. And that way I can edit the do is using T-Edit, I will mount my local Git repo on my MacBook, and that way I can edit the Git tree in T-Edit, and I need the files back on the hard drive for Node, and so I live export the whole thing to the hard drive. And so anytime I change a file, it writes it out first to the Git repo and then to the working directory, so I can test my code. There's a few weird things about it, because I now have two copies of everything, but some nice reverts or git resets fix that pretty quickly.
Starting point is 00:52:13 So you can use jsgit today for a lot of things. You can, since you can read and write existing git repos, if you're on a server where you have real Git, then you can clone using normal Git. And then using JS Git, you can mount that repo and use this nice JavaScript API to walk the tree and walk the commits and do code analysis or custom builds or whatever you want. So this could be used for JavaScript package managers or build systems or continuous integration systems.
Starting point is 00:52:45 I want to be able to eventually use it for mobile apps that want a syncable offline storage. And so I have two tasks there that I'm going to work on soon. One is I'm adding sync to the GitHub backend so it can actually work offline and then sync with GitHub using the REST API. And then another one is I'm going to implement the full pack protocol that everyone else uses, that real Git uses, for the platforms that actually have that network primitive. Since you were talking about the, I guess, location of where things like mounting from GitHub, it seems like it's got some deep GitHub integrations.
Starting point is 00:53:20 At one point during your demo, you talked about owning your own code and you feel very passionate about that. Is it where you store your code? What did you mean by that? I couldn't quite understand what you were trying to emphasize with owning your own code in the editor. Is that keying off of where you mount your repos from, like your own private repos or GitHub or Bitbucket? Is it that or is it something else?
Starting point is 00:53:47 So I worked with cloud IDs. I mean, I've worked at Cloud9 for a while. And the biggest issue I had with them is your entire workspace lives on some cloud server. Right. Which, I mean, first of all, that's a practicality issue. You have to be online. And that's a non-starter for me.
Starting point is 00:54:03 I have flaky internet. I travel a lot. And then it's on their cloud server. They can read it. They can write it. They have full access to your code. They have your GitHub token. They can write to your GitHub. I don't think any of these companies are malicious, but just from a security standpoint, you don't want anybody with that much power. They could be corrupted. They could be hacked. They are now a hacking target. Whereas if everything lives locally in your device, and you just push to GitHub or Bitbucket as a public mirror, then it's different.
Starting point is 00:54:31 You are now in control of it, and you control who has access. And also with JS Git, it's not hard at all to write your own services and your own hosting. As soon as I get some of this network syncing stuff done, it'll be trivial for people to host their own Git repos and even mount them off their own servers. Because the live mount is really convenient if you have large repos with lots of sub-dependencies.
Starting point is 00:54:56 You don't have to do recursive clone. You just instantly mount and everything's available. I was going to say, it seems like for the most part, GitHub is very popular because of its collaboration around open source. Not so much for being a Git hosting platform. That's how they started, but they popularized social coding, so to speak, and obviously are responsible for a lot of the big push and adoption for open source and maybe even some growth. Maybe somebody's going to punch me in the face for saying this, but just growth in the developer ecosystem.
Starting point is 00:55:27 You can't not recognize their power and their push for this. So I just kind of wondered. It seems like because TI is so easy to use in this respect by mounting a repo, it doesn't really have to live on GitHub. It's just that's your means right now. Right, and you can use the web version today, mount a GitHub repo, it doesn't really have to live on GitHub. It's just that's your means right now. You can use the web version today, mount a GitHub repo and edit it. So if you just want a quick way to edit your Git repos,
Starting point is 00:55:51 just go to tedit.creationx.com, paste in your token and edit anything at will. We've got several links that this will be a link-filled show notes episode. So if you're listening to this, go back to the changelog find the episode i think this is 124 if i remember correctly um uh and are also on five by five the
Starting point is 00:56:12 the links will be there or even in your podcast catcher so we'll we'll share tons of links so if you can't hear us or you weren't sure uh check the links we'll we'll have a bunch of show notes for this but uh jared is there anything else you want to mention before we start closing off the show? Well, I did want to ask about Jack, but I'm not sure if we have time to even do that. We might have to have him back just for a whole entire show. Maybe you can do a quick overview,
Starting point is 00:56:37 and we'll have you back to talk about Jack. All right. Jack is a fun project. My goal there is to make a language that's easy to learn, yet powerful. It's basically a mix of JavaScript and Lua. And I'm really excited to actually use it someday. I haven't had time for it yet.
Starting point is 00:56:55 So is it backburnered because of T-Edit at this point? It's way backburnered. I've been working on it since before CoffeeScript. Wow. That's a long time. Yeah. And then you also mentioned John, which is, I guess, a sub-brother?
Starting point is 00:57:10 Sub-sister? I guess sub-brother, right? Sub-set. Sub-set, yeah. It's Jack object notation. Okay. So John is to Jack as JSON is to JavaScript. So in T-Edit, all the config files
Starting point is 00:57:23 and that one file that opens up with the instructions, those are all basically John format. So it's just a subset of Jack that's the data format. And it's a strict superset of JSON. So you could write JSON and that would work, but the quotes are optional, the commas at the end are optional, you can have comments inline. It's a little more flexible than JSON.
Starting point is 00:57:42 You decided against Jill on that one, huh? Yeah. Didn't fit the acronym. No. Yeah, that's neat, though. So I guess, for one, I mean, I just, I'm not even kidding. When I said I almost fell over with watching your videos, I was like, wow, this is insane what you're doing.
Starting point is 00:58:00 And you're definitely leading the charge in that. That's for sure. So one way we close the show off is we have a couple questions. you're doing and you're definitely leading the charge in that that's that's for sure so um one way we close the show off is we have a couple questions i don't think we had these questions whenever you first came on the show back when you're talking about lua i think in the early 20s of the changelog um but one one question we ask and you may have already asked or answered this during the call but to be blatantly clear what is a call to arms for your projects you know js get i think that's pretty much complete, but obviously you're probably still
Starting point is 00:58:28 accepting code to that. But how can the general public listening to this either step up and help you code-wise, issues-wise? How can the community step up and help you? So it's to the point where other people can code without getting in the way. I have a lot of issues. What I really need is, starting in July, if your company is interested in using this, you can hire me to integrate it. And I promise that almost every company that involves data or dev tools can use this in some way.
Starting point is 00:59:00 So if you can get your company to hire me to help integrate this to add the features you want, I want it to kind of work like the CMirror or LuaJet projects where they have corporate sponsors who add features and then everyone can use the code. And what's the best way to get in touch with you? You got creationx.com is your homepage. We'll have that in the show notes. Is there a contact button on there? What's the best way to reach out to you? I hope there's a contact button. I don't know. I mean, my email is probably the best. My email is public on my GitHub. It's tim.creationx.com.
Starting point is 00:59:43 Gotcha. Yeah, that works. And I guess the next question, which is usually a fun question. So, I mean, it doesn't have, considering your background, I'm assuming you'll be talking about programming to some degree, but what would you be doing if you weren't doing what you're doing? Good question. If I wasn't doing the JS Get To Edit stuff? Yeah, this mission we're talking about on this show, like, if you wasn't doing the js get to edit stuff yeah this mission we're talking about on this show like if you weren't trying to put all your passion all of your effort and all of your time into that either through your own free time or supported time you know if you weren't doing that what would you be doing i would probably be oh i don't know if i wasn't programming i'd be
Starting point is 01:00:23 making things that's for sure. I make things with paper, with wood, with whatever. If it was computer-related, I'd probably be writing libraries, template engines, compilers. That's still pretty much related to this. I'd be making something for sure. I am always making things. I'm always creating. That's why my handle, the creationix, is the word creation and then IX from Linux from Unix.
Starting point is 01:00:50 I create open things. That's what I do. I was thinking that. The X part kind of gave it away, but I wasn't sure for sure. Yep. I create things and then I open them up. That's what I do. And I guess our last question we ask is,
Starting point is 01:01:06 I don't know if you answered this your first time around, but who's your programming hero? Like who's inspired you? Who's helped lead you? Who's encouraged you? Anybody. It can be one person, could be a couple of people, whomever. Oh, I got lots of heroes. Name them all, that's fine. All right. There's a couple language designers I like. I like Mats from Ruby. He's a really cool guy. I've met him in person. I like Brendan Eich from JavaScript. They're very different people, but I like them both. I'm impressed
Starting point is 01:01:36 with Mike Paul for the way he gets paid to work on LuaJet, even though I know very little about his actual person. He's quite cryptic. I'm going to butcher his name, but the Codemirror guy, is it Merine? How do you say his name?
Starting point is 01:01:51 I don't know. I'll have to look it up. The author of Codemirror and TurnJS and the Eloquent JavaScript book. He is amazing. I love what he's done. Let me look behind me. I have it on my shelf. Yeah, the big yellow book. That book is great. I love what he's done. Let me look behind me. I have it on my shelf. Yeah, the big yellow book.
Starting point is 01:02:06 That book is great. Let's see. I'll try and... I've been meaning to reach out to him, too. I'm going to say Marijan Haverbeck. Haverbeck. Yeah, I'm sure I butchered the name. Yeah, I probably did, too. Sorry about that.
Starting point is 01:02:18 I think he's awesome. So, yeah. I like those people. I think they're cool. Awesome. We'll do our best to do some digging, too, and make sure we get some links in the show notes. I know one reason I like asking that question on the show is just it kind of gives some insight to who inspires you. And they're not always people that are very public, like you had mentioned.
Starting point is 01:02:38 You don't know so much about one particular person just because they're sort of just not very public about what they do. So, but their work is, and that's what inspires you. Yeah, I think that's, that's, this has been a fun show, man. I know that T-Edit, I, again, I'm glad you said T-Edit because I was going to call it Tedit, just based on the, the, the phonetic sounding of it, I suppose. I was going to sound it out versus thinking just T-edit. But Tim, thanks so much for joining us on today's show. I know that we'll definitely help you out if we can.
Starting point is 01:03:14 We'll do whatever we can to also, in the future now or in the future, just promote ways that the community can support you, whether it's through funding or whatever. So if ever you need a friend to help you out, we'll be there for you. But before we close the call, I want to give another shout out to our sponsors, DigitalOcean, TopTow, and SnapCI for supporting the show. Thank you so much for your support. And if you're a listener and you haven't yet done this, subscribe to the ChangeLog Weekly. It's been on a small hiatus, but there's no reason not to sign up because we are bringing it back. We get death threats
Starting point is 01:03:47 and emails daily about where's this awesome email I've been getting and why'd you stop doing it? So we can't stop shipping that. So the changelog.com slash weekly to sign up. Jared, thanks so much
Starting point is 01:03:57 for joining me on the call today and Tim, you as well and the listeners for listening. So until the next time we speak, maybe about Jack, let's say goodbye. See all right see you next time.

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