The Changelog: Software Development, Open Source - Scripty2, Zepto.js, Vapor.js (Interview)

Episode Date: October 26, 2010

Wynn caught up with Thomas Fuchs to talk about script.aculo.us, Scripty2, Zepto.js and the future of Prototype....

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to the changelog episode 0.3.9. I'm Adam Stachowiak. And I'm Winn Nevelin. This is the changelog. We cover what's fresh and new in the world of open source. If you found us on iTunes, we're also on the web at thechangelog.com. We're also on GitHub. Head to github.com slash explore. You'll find some trending reposts, some feature reposts from our blog, as well as the audio podcast for your listening pleasure. If you're on the Twitter, follow Change Log Show.
Starting point is 00:00:40 Not the Change Log. He's pretty cool, too. And I'm Adam Stack. And I'm Penguin, P-E-N-G-W-Y-N-N. Fun episode this week. Finally getting to air our conversation with Thomas Fuchs from Scripty2, Scriptaculous, Zepto,
Starting point is 00:00:54 VaporJS, all things JavaScript. Yeah, this VaporJS framework is really, really awesome. Yeah, it's like the Uber JavaScript framework, and it's the lightest weight JavaScript framework that you'll ever find. It's been forked how many times now? I don't know, upwards of 300, I guess.
Starting point is 00:01:11 And it's got support for everything? Everything. And we also have you back from the UK. I am back stateside after seven days over in the UK, taking my life into my own hands, riding with a buddy that was driving on the wrong side of the road the whole time. So plenty of flashbacks to European vacation when he goes around the roundabout. I saw that video you posted on the roundabout, too.
Starting point is 00:01:38 Yeah, that magic roundabout. You know, that's the five-way roundabout. You know it's magic when the actual street sign says, The Magic Roundabout. I was pretty lost just watching the video. I didn't know where they were going. I have no idea how those guys do not have more traffic accidents than they do. Yeah, I was certainly amazed.
Starting point is 00:01:56 Like, insurance rates should be so high over there for sure. Oh, I know. I guess the only saving grace is the cars are so small that it's easier to dodge each other. That's probably it. That's probably why they get away with it. So I love the country. Not so much sold on some of the products they sell over there, like pourable yogurt.
Starting point is 00:02:13 This is what I guess is popular to pour on cereal and stuff. So not exactly sold on that one. And the internets are quite dodgy for the Wi-Fi. But other than that, my first time in the U.K., I really, really liked it. And you got the U.K. badge in Foursquare. Or not Foursquare, because you're anti-Foursquare. You're a Gowalla fan, right? So you got that U.K. badge.
Starting point is 00:02:33 I'm such a geek. I probably paid out the wazoo on the data plan to do a Gowalla check-in at Stonehenge. It's a shame how hard I'm laughing inside to know that, too, because we've been on road trips. We've had to stop places just so you can get a check-in going on. I know. It's who I am. That's who you are. Well, we love you anyways.
Starting point is 00:02:50 We're happy, extremely happy to have you back. So glad you made it back safe, and I'm glad you had fun. Had a ball. Fun episode this week. Should we get to it? Let's do it, man. Hi, we're joined today by Thomas Fuchs from Scriptaculous fame. Thomas, for the folks that don't know, why don't you introduce yourself and let them know who you are. Hello, I'm Thomas. Thomas Fuchs rhymes with books.
Starting point is 00:03:19 I am the author of the Scriptaculous JavaScript framework, which originated in the Ruby on Rails sphere about five years ago, together with Prototype.js. At that time, I also was a core team member of Ruby on Rails. I'm no longer a core team member, but I'm still doing a lot of JavaScript. I guess I'm here in the show today to talk about that. Yeah, we want to talk about Scripty 2. Give us the lowdown on the next evolution of Scriptaculous. Yeah, so Scripty 2, the most important thing about it, it's very slow in the making,
Starting point is 00:04:01 but we like to take our time and only implement stuff that we actually use on real-world projects. We don't want to implement really big, bigotry frameworks that no one actually uses for code. So sometimes it's coming along very slowly. But anyway, it's a complete rewrite of Scriptaculous, and if you use Scriptaculous, you know that the central part of this is the effects framework, and that's been completely rewritten to take advantage of things like prototypes,
Starting point is 00:04:34 custom events, and stuff like that. It's written for extensibility and easy-to-read code. It's a bit more for both than other code I write and other projects I have. But it's there for you to take and extend
Starting point is 00:04:51 and mess around with. And it also has really, really good documentation because this was something that was bugging me from the first version of Scriptaculous where we had a wiki and then the wiki got shut down and then the wiki, we put it on someone a wiki and then the wiki got shut down and then the wiki we put it on someone else's service and then the service was abandoned
Starting point is 00:05:09 and you know, it was quite crazy. But yeah, the main focus of Scripty 2 is a completely new effects framework with a modern one using modern JavaScript techniques very extensible. It's also usable for things that are not DOM nodes only using modern JavaScript techniques, very extensible.
Starting point is 00:05:28 It's also usable for things that are not DOM nodes only, so not only CSS-based animation, but you can use it for, for example, you can tie it into Rafa LJS and use it for SVG-based animations, or you can do animations on Canvas with it if you extend it in the proper way. But the basis of it is just a timing and a queuing framework for visual effects.
Starting point is 00:05:50 So still built on top of Prototype.js, right? Yes, it still works on top of Prototype.js. So a question from Twitter. Johnson Page asks, what's the future of Prototype in your opinion? With Prototype, we have some of the same issues where it's going quite slowly. However, it works very well.
Starting point is 00:06:09 I use it in all of my projects, basically. It still works fine. We actually just released candidate 3 of Prototype 1.7, or 1.7.1, and that brings us IE9 compatibility because IE9 now comes with finally a DOM-compatible events framework. That's the most important part about it
Starting point is 00:06:35 for prototype chess. So it's going along. We're still planning to release a prototype 2.0 at some point. Of course, no roadmap or no time on that date. But the main thing about prototype 2.0 will be that we're moving away from a prototype extension for anything that's DOM-related, because that has proven to be a bit brittle in the past and very hard to maintain.
Starting point is 00:07:04 It works, but it comes with a lot of disadvantages. So we are moving to something where we will no longer extend DOM nodes. But Prototype 2.0, for that reason, will break some compatibility with Prototype 1.0. But I think actually for Prototype, the most important part in prototype is not so much the DOM stuff,
Starting point is 00:07:28 but the language stuff. This is where prototype really shines with. If you have to do any sort of data munging or manipulate JavaScript stuff, you want the real class system, then prototype is a really good choice. It really allows you to write really, really solid JavaScript. And really allows you to write really, really solid
Starting point is 00:07:46 JavaScript, and especially if you come from Ruby, because then you feel right at home in Prototype.js. I was singing the praises of Underscore.js the other day. It's the framework that adds a lot of those features kind of based on a jQuery
Starting point is 00:08:01 model, and some guys kind of snickered and said, you know, we've had that in prototype for years. Yes, if you go to the underscore website, it actually says it's an extraction from prototype.js. So, yeah, it's pretty great. If you're using something else like jQuery or whatever other framework, and you want something for data manipulation,
Starting point is 00:08:21 and especially doing stuff with data in arrays arrays and you get some JSON data in, but you need to reformat it for something else, then Underscore.js is a really good choice. Or, of course, if you're using Prototype.js, you get all this sweetness built in right into your framework. So we've got a pretty young audience, and it's hard to believe we have a whole crop of web developers these days that have known nothing different than Prototype and jQuery. Talk a bit about the world before JavaScript frameworks and what it was like building JavaScript in the browser with IE and Netscape. Yeah, the so-called dark ages. Right. so before Prototype was really the first
Starting point is 00:09:05 like JavaScript framework that actually bundled a lot of functionality that before that you would find like very like very diverse spots on the internet you know of course there were those sites where you could download stupid things like
Starting point is 00:09:21 mousetrail scripts and stuff like that or the scripts that would run some sort of marquee in your status bar, and that sort of thing. But good quality JavaScript was really hard to find because lots of people
Starting point is 00:09:37 just thought it was this toy language and it's not really widely supported anyway, which was probably true at that point. So my first real adventures with JavaScript began when
Starting point is 00:09:54 Internet Explorer 4 came out. And that was the first browser actually that was like JavaScript and like DOM. I wouldn't call it DOM. It wasn't really DOM. It was like IE's version of DOM but that was actually really usable to
Starting point is 00:10:11 make like highly interactive apps and sites and at that point it was certainly the most advanced web browser available. Of course it was very limited from what we have today. And it was IE only and so on.
Starting point is 00:10:30 So it wasn't really usable on the web because most people used Netscape at that point. But for applications that were used internally or something, it was a great choice to use that. It was actually, in some ways, much more rapid to develop stuff with Internet Explorer than to use any sort of desktop-based native applications for lots of types of applications. So this is, I think, where it all started.
Starting point is 00:10:58 And JavaScript, at that point, wasn't really much different from the JavaScript we use today. JavaScript 1.5 has been out for ages, and JavaScript 1.3 before that, there's not so much difference between those languages. So you could have done a framework like jQuery or Prototype at that point in time, like, I don't know, 10 years ago. Have these frameworks
Starting point is 00:11:27 dumbed down the average JavaScript developer? That is a really good question. I don't think that they dumped down the existing JavaScript developers, but they certainly allowed in people that aren't really developers.
Starting point is 00:11:44 So, it's a two twofold thing, you know. It's good that the language gets more developers, but at the other hand, some of the frameworks, I think especially jQuery, have such a low level of... Barrier to entry? Yeah, barrier to entry, right? That you get people that are not programmers
Starting point is 00:12:10 and not developers, and they think they can develop, and you have to be very careful in that regard. You have to teach those people that they're actually dealing with a real language there, and there's really a complete language there. It's not only jQuery. You get a complete
Starting point is 00:12:29 object-oriented, really really nice scripting language there. And I think one thing today that is a problem is that no one really reaches those people and teaches them how to actually program. And that leads to a lot of bad codes in the end, I think.
Starting point is 00:12:48 You know, one of the things that I found rewarding is stepping out of the JavaScript frameworks and out of the least common denominator, you know, kind of facade we put across the browser differences. And if you target a certain mobile browser like WebKit or something on the iPhone, it really frees you to use the latest features of JavaScript. Yes, indeed. It's pretty awesome. But I would even step back from that.
Starting point is 00:13:14 And I would recommend just sometimes for some projects, just use pure JavaScript. If you have a little side project or something, try that. It's actually not that hard to write JavaScript code that even works cross-browser in desktop browsers. But as I say, WebKit is actually... I wouldn't even say WebKit on the iPhone is a very special browser. I would say WebKit is on most mobile browsers, actually, except for anything that's named Windows. So if you can target a framework for mobile WebKit browsers that will allow you to very, very easily replicate any bigger framework on the desktop, any bigger frameworks API, with very, very few lines of code.
Starting point is 00:14:05 And I just released something called Zepto. I mean, released. It's still in its alpha stages, baby stages. But you can still write jQuery-like code that just works on mobile WebKit browsers and desktop WebKit browsers. And the whole framework is like 2K compressed, which is like a tenfold improvement on size
Starting point is 00:14:27 over jQuery proper. It's been well received, so I guess the fundamental difference here is Zipto is kind of meant to be inlined instead of externally referenced. Yes, that's one of the ideas. I'm not quite sure if it's actually feasible because I think it will end up
Starting point is 00:14:44 with a little bit more than 2K of code, more like 3 to 4K, which is like two screenfuls maybe. But you can take the core of Zepto and just inline it if you have like a one-pager application because that will make the loading of your application really fast. Like say you have like an application that kind of mimics a native application doing some task, specifically some task,
Starting point is 00:15:12 and it also works offline and it uses local storage of some sort. Then Zepto is probably a really good choice because the user can practically instantly load it because it's so small from the code size. And then you go ahead and like load in your data and whatever, store it locally. And from that on, people will be able to use it. So the main idea behind it was like it was born when we did a site called everytimezone.com as an ad for our time tracking software Freckle.
Starting point is 00:15:51 We use that quite extensively in the changelog to schedule interviews. Awesome. That's great. It's good to hear. That site is a single HTML file. It uses, I think, one image, which is the ad. It doesn't use any other images or external CSS files or external JavaScript files. So if you go to everytimesoncom in a desktop browser
Starting point is 00:16:13 and look at the source, everything that's on the site is right there in the source. The CSS is inline, the JavaScript is inline. It uses some sort of early ancestor of the idea for Septo, like my ultra
Starting point is 00:16:29 mini pico tiny framework, which was basically five lines of code, like a dollar function, a function to set the inner HTML, a function to set CSS. That's basically it. And it was born there, because I could see,
Starting point is 00:16:46 okay, you can make a complete application with really only a few separate functions. And if you spin the idea further, if you use all the new and modern API calls and JavaScript API calls and DOM API calls in the mobile WebKit browsers, then you could work really massively safe on lines of code API calls and DOM API calls in the mobile WebKit browsers, then you could work really massively safe on lines of code while still providing a very, very useful API. And in Zepto's case, it's basically the complete core jQuery API that it provides.
Starting point is 00:17:18 You have a blog post on when you ported this to the iPad and some of the considerations for that, I found fascinating. So talk a bit about considerations for images and CSS3 and Canvas for a moment. Yeah. So CSS3 is pretty interesting because it allows you to use other things than image files for backgrounds. You can use gradients css gradients you could even use canvas elements as image backgrounds that you then can script from javascript and the thing is on mobile devices specifically the ios devices the web browser is is basically it it doesn't have much to do with
Starting point is 00:18:04 like a traditional web browser as you think of it. It's more like a high-performance 3D game engine. The elements on your page are actually textures in 3D space. And in my blog post, I didn't explain it that way in the blog post, but it basically works out like this. The more images you have on your page, the slower it will get because the more textures will be involved. However, if you have a sane amount of images and textures,
Starting point is 00:18:35 you can have very, very fast screen updates, rendering updates, because everything is rendered by the hardware. And that comes into play when you develop for mobile devices. If you have static images that are either image files or made with canvas or with gradients, and if you just move them around with WebKit Transform, for example,
Starting point is 00:19:01 then you will probably not experience any problems with rendering speed. However, if you move stuff around and at the same time change the DOM contents, for example, the inner HTML, the inner text of a DOM node, then WebKit has to re-render the element for each frame and
Starting point is 00:19:19 create a new texture and load it into the graphics memory chip and the graphics memory chip has to, and so on and so forth. So if you just move textures around fast, if you change anything about the elements, slow. We had a particular problem on every time zone. There's a slider which allows you to select the current time, and then the page updates based on that.
Starting point is 00:19:40 The slider shows the current time. So for each movement of the slider, we have to update the contents of the DOM node in there, which causes a bit of slowness. So because we couldn't change this particular aspect of the website because we wanted to have the time there, we decided
Starting point is 00:19:58 to look into what else can we optimize on the website. And it turns out that the biggest way, or the easiest way to make anything optimize on the website? And it turns out that the biggest way or the easiest way to make anything faster on the web, and this is even true for desktop web browsers, is to have as few nodes as possible on your page. We used CSS gradients and divs,
Starting point is 00:20:21 absolute deposition divs for the bars you can see on the background of the page, with each bar representing a day in some time zone. And I think there are 36 bars on the page. So 12 time zones and three bars each.
Starting point is 00:20:37 And for each bar, each of those bars, each of those 36 bars is basically a texture for the browser that the browser has to update and render and stuff. We replaced that with one big canvas element that we just now update. That turns out to be much faster because
Starting point is 00:20:53 the whole graphics chip just has to deal with this one big texture in the background instead of 36 individual textures. That brought a big speed boost into our application. There's some other CSS properties that
Starting point is 00:21:09 can cause performance issues because of the way the browser re-renders elements and has to re-render textures which is for example a box shadow causes performance problems and there's other properties,
Starting point is 00:21:27 but you can read about that in my blog post. You know, I'm convinced if you want to drive traffic to your site, you just mentioned HTML5 and Canvas in the headline. We posted an article this week about a little framework called, a little library called Jury that just provides a chainable wrapper to the Canvas object, and it's been highly popular. So are we at a point yet where adoption is to a point where we can get excited about Canvas? It just provides a chainable wrapper to the Canvas object, and it's been highly popular.
Starting point is 00:21:47 So are we at a point yet where adoption is to a point where we can get excited about Canvas? I think so. It's interesting that you mentioned it. The blog post I wrote about iPad performance, I think it has had like 100,000 page views now. So definitely there's a lot of interest in these technologies. And if you want to have really well-performing applications, mobile devices are slower than desktop browsers.
Starting point is 00:22:12 They have limited resources. So you have to understand more about how they work to make really well-performing web pages. If you just have a normal web page with some text and images on it, it doesn't matter. But if you have an application, it can start to matter very quickly if the user has a really smooth and nice experience or everything is kind of slow and jerky and lagging. So if you want to have the best experience for your user,
Starting point is 00:22:42 you have to understand how these devices work and how these mobile browsers work and how you can use all these new technologies like Canvas Elements and CSS-free goodies and also new DOM and JavaScript features. If you understand all of this, you can make web applications for mobile devices that just work so much better. You know, our industry tends to find buzzwords to rally behind. I remember it was DHTML back in the day, and then it kind of morphed into AJAX, and now the latest buzzword is HTML5. What does HTML5 mean to you?
Starting point is 00:23:19 HTML5, for me, I do know that it technically only means like this upcoming standard of HTML, but HTML5 for me is a technology of families which includes the HTML5 specification for the next generation of the HTML markup language. But it also includes for me all the improvements to JavaScript that are done, all the improvements to the DOM that are done, and also all the CSS3 improvements.
Starting point is 00:23:49 And other technologies that are extending the DOM, like local storage and geolocation and all that sort of stuff. It's a good word for defining the family of these technologies that are coming up now. You know, Canvas also. You know, I probably am not understating this. I think a little framework's come along to really change the landscape, and it really is redefining everything we thought we knew about JavaScript,
Starting point is 00:24:19 and that's VaporJS. Oh, yes. Yeah, VaporJS is pretty amazing. It's the only JavaScript framework in existence that is compatible with any browser that has ever been made and will ever be made. Even browsers that don't support JavaScript run VaporJS fine, which is a pretty amazing achievement if you think about it. We also have indefinite test coverage, which is pretty awesome. That is amazing. Yeah.
Starting point is 00:24:51 I think no other software project in history has had that. So that's quite an achievement, especially if you think that VaporJS was released after having four or five beers on the weekend of JSConf EU. I just noticed you pulled in a patch from Kenneth Reitz here on the changelog, so added XCore support. The really amazing thing about VaporJS is that it came together in just two or three hours after having lots of beer at JSConf EU last month. So that was pretty great,
Starting point is 00:25:26 all these achievements in that short a time. We also hold it like 140 forks on GitHub right now, I think. So it's been pretty popular. JSConf EU, give us a recap. Oh, JSConf EU is awesome. First of all, the organizers of the conference are just amazing people. It's like what they pull together in a completely non-profit way is amazing.
Starting point is 00:25:51 So it's really props to them for putting the show together. It was really great. Great location, lots of great people, very enthusiastic about JavaScript. You could really feel that there's something going on in the community with JavaScript. Everyone is really excited. And there was a really good mixture between server-side JavaScript
Starting point is 00:26:12 and client-side JavaScript stuff, which I find great because there's a lot of stuff people can learn from each other. As I said earlier, lots of people are drawn into to JavaScript by libraries and they don't really know what they're doing. Maybe they're designers and just
Starting point is 00:26:29 want to extend some websites a little bit. But the server-side JavaScript stuff actually draws in a lot of really, really good programmers to JavaScript. And this will help the language a lot. And you could see that at JSConfU, I thought there was a lot of great
Starting point is 00:26:44 talks there and content. My favorite talk was about that at JSConfU, I thought there was a lot of great talks there and content. My favorite talk was about FabJS, which was just a mind-blowing talk. I hope the video of that is up soon. Everyone should see that. It's like a really, really good example of
Starting point is 00:27:00 how you can take an existing language and completely rethink the way it can be used. I'm not saying I would use it next week or at any point, but it's a really, really well example of take something and just try to take a step back and rethink something. That was really, really great and awesome. And of course, I just released Chris Williams' talk on
Starting point is 00:27:25 Promote.js, which was one of the greatest talks I've ever seen in my life, I think, on a programming topic. It's so much really love went into this. You know, Chris is so enthusiastic and
Starting point is 00:27:41 excited about JavaScript as a language. And I think we all should be that. There's a lot of bashing going around. I do that a lot of the time. I really like to bash sometimes at things like IE9. I don't get Microsoft at all, I think. But there's also so much energy there.
Starting point is 00:28:03 And if you take that and channel that into something good instead of always lamenting and crying about that JavaScript documentation is so bad instead of sitting down writing JavaScript documentation or linking to good documentation so people can find the stuff and people get excited about JavaScript as much as we are excited about JavaScript
Starting point is 00:28:25 in the JavaScript community. Everyone wins. Absolutely. We're on board with that effort. So in the changelog, that's the Promote.js banner in the sidebar if you've seen that and wondered what that was. So server-side JavaScript,
Starting point is 00:28:40 does this have you excited at all or are you still slinging Ruby on the server-side? I'm slinging Ruby on the server side. I do like JavaScript a lot, but I also like Ruby a lot. And, of course, we have existing projects. There's no need for us to, like, change it over to JavaScript now because it's cool. But it definitely is a good thing that happens there because
Starting point is 00:29:05 JavaScript now as a language gets things like a common library and stuff on the server side so that's really good it's actually been around for a long time but it never really picked up until Node.js came along and I was there
Starting point is 00:29:22 when Ryan Dahl did his first Node.js talk, and it was amazing. So mind-blowing again. It's like someone sitting down and rethinking the way something works completely. It's just always amazing to watch that process, even if you do not have an immediate use for it. We might actually go ahead and use Node.js for an upcoming project where we have to deal
Starting point is 00:29:51 with a lot of real-time stuff like WebSockets and that sort of thing. And for these things, it really shines. For things where you would now use Ruby on Rails, for example, I think it might be a bit premature to just drop everything you have and just adopt Node.js. But for new projects, sure. I noticed you forked a project that we covered last week in the Chainlog, Eyeballs.js. Yes, Eyeballs is great.
Starting point is 00:30:22 It's from my friend Paul Campbell. And it's basically a clone of Ruby on Rails, but running in the browser using things like WebSQL as backend. So that's a pretty great thing to have if you have a more data-centric backend and send along JSON messages and stuff, and you want to render more in a templated way on the frontend.
Starting point is 00:30:49 That's something we have a use for in a current project, so that's why I forked it. I haven't committed back any patches yet, but I might soon. So what's your take on templating choices? Templating is interesting. It's, you know, if a developer is bored, the developer will develop either of two things.
Starting point is 00:31:11 One is a testing framework, or a second thing is a templating language. There's so many out there. It's like if you Google for JavaScript testing frameworks, I don't know, I think there's like hundreds of them. And for templating language, it's similar. And it's quite useful for a lot of things, but it won't solve all your problems.
Starting point is 00:31:33 You should never forget that you have a full-blown language at your disposal at all times if you do JavaScript. So you shouldn't try to get too meta. You know what I mean? That you try to put everything into the templating language and then you kind of have a language in the language. Not good. So it should be very basic if you use a templating language, in my opinion.
Starting point is 00:31:54 You know, one of the approaches is to start putting your templates in script tags with just an alternate language declaration. Do you follow this approach at all? I don't. I'm aware of it. And there's also things like CoffeeScript, for example, that kind of is a new implementation of JavaScript in script tags, and that gets re-evaluated. Personally, I like JavaScript too much that I'm a big fan of those other approaches,
Starting point is 00:32:21 but I can see that some people would prefer that, yes. So, templating, I guess a lot of the projects that you write, you write with Amy. So who handles the templates? So the way we work is, it's basically I'm the dumb programmer, but I'm pretty good with coming up with strategies to achieve the impossible, if you know what I mean.
Starting point is 00:32:43 But what Amy does is she has the ideas for the project and she does visual design and user interface design and user experience design. And concepts, she says from the other room. So I'm really like the dumb person in this team. So talk to us about Freckle and some of the partnerships you guys have done. Yeah, so Freckle,
Starting point is 00:33:10 that was our first big application together. And Freckle is a time tracking software. And the reason we wrote it is at the time, we did a lot of consulting. And there just was no good way to track your time with any web application or any desktop application, for that matter. They were all just too complicated,
Starting point is 00:33:31 and, you know, like a series of drop-down lists. And when you got a new client, you had to configure, like, half an hour, everything that you could actually start, logging time. With Rackle, we wanted none of that. We wanted that you can launch the application and instantly log time
Starting point is 00:33:47 because that's what the application is about. Everything else, the configuration of stuff and things that can come later. When you have time, when you sit down and look at the hours, then you can go ahead and type in a budget and that sort of thing. So it was really about the most efficient way
Starting point is 00:34:04 for the user to enter time. Nothing should get into the user's way. And this is where web applications can be really great. The browser is really a blank canvas. You can do basically everything in the browser. You're not subject to limitations that you have in native applications where widgets are not configurable and stuff
Starting point is 00:34:28 because you can just change everything around everywhere. That's the power of web applications, I think. You can really adapt and with JavaScript you can do anything you can think about in a web application. The problem that many web applications have is that people try to stay in some sort of standards-compatible mode or do not want to be too bold in doing applications. But I think that approach is not good.
Starting point is 00:34:58 That approach only leads to boring applications that look like every other application. If you sit down like this, if you look at every other time tracking application, if we would have done that at the point when we made Freckle, we would just have produced another application with drop-downs and you have to configure it before you enter time.
Starting point is 00:35:20 That's not the way great applications are made. Great applications are made by looking at what the user really needs and wants, and then you start everything from there, not looking at the other stuff. Maybe at some point in the development cycle later, you start looking at the other stuff and see what they do and what you do and compare a little bit. But when you start something, don't try to look at other stuff.
Starting point is 00:35:47 Just try to do your thing. I think that's important. And that's the important thing we do. We do not really listen to many other people. Otherwise, if I would have listened to all the people in my life that would tell me what to do, I would probably be still at university
Starting point is 00:36:03 and then I would be employed somewhere until I'm 80. You know, just try to do your thing. I think that's the most important lesson that you can have in life. So Amy's a big proponent of info products. I know you have some out there under your own name. You've written both printed publications and I guess e-books and what we would call info products.
Starting point is 00:36:25 What's your take on doing this as a developer? Yeah, info products has a really bad ring to it. It sort of has this sleazy aura. But info products are really great.
Starting point is 00:36:41 There should be a better name for that. Maybe nar is one of those words. It's just, there should be a better name for that. It's like, you know, maybe NAR is one of those words or it's just not good. It's not a good word. But, you know, a lot of developers and a lot of people we know actually make good money
Starting point is 00:36:55 by selling like PDFs or online courses and stuff like that. And it really helps people because if you, if as a developer, for example, you're looking for some information about, I don't know. I was looking for information about the Vim editor, for example, this week.
Starting point is 00:37:15 And so I got to Joff's site, peepcode.com, and he has a screencast on it. So I bought the screencast. It's the best way to learn it. And if you pay money for something, you're more inclined to actually pay attention because you're kind of, it's your hard-earned money
Starting point is 00:37:30 that you invest into, like, getting more knowledgeable about something. And when people come to my info product, for example, we have an info product called JavaScript Performance Rocks. It's an e-book and a little helper bookmark-led application. People go there because they want to learn about web performance specifically.
Starting point is 00:37:56 And they pay some money and then they get really, really good information that we took a long time to research. So it's a very fair exchange. And I think the web really allows you to self-publish these things without going through like a big publisher. Because the big publishers, what they do is they fuck you over. Sorry for my expletive. No, that's right.
Starting point is 00:38:20 You know, I came to the Ruby and the Rails world, and I think Amy's cheat sheets were instrumental in helping me grok some of the things, the terms and the concepts coming into that framework. And, you know, I've shelled out for a couple of your JavaScript eBooks. They're fantastic. I think it's a good value exchange on both sides.
Starting point is 00:38:40 Yes, definitely. Anything else in the stables from Thomas and Amy? So yeah, we are working on a new product for customer support because all customer support software sucks, basically. We tried everything, believe me. And it's all really bad. And most of these products, the most important problem they have is that they do not build a bridge between what the customers tell you and then what you actually implement in your software.
Starting point is 00:39:11 So we're trying to build something really, really great for that. It's called Charmdesk. And you can go to charmde.sk to sign up for our email when we will announce it. It says fall 2010. Probably we'll get the winter 2010 before we will announce it. But yeah. And we also have other products in the queue. So some of my closing questions were going to be
Starting point is 00:39:40 Emacs or Vim or TextMate. It looks like you're a Vim guy. I'm actually a TextMate guy. I just started using Vim this week because a developer we're working together very closely is using it and he's all about it. He's really excited about it. If someone's excited about it, I get interested
Starting point is 00:40:01 because I like seeing people that are excited about something. So I decided to check out Vim and I like it so far. I grokked the basics already. It can only get better from there. Of course, it has a really
Starting point is 00:40:19 steep learning curve and it's certainly not for everyone, but it does some things very well that I was looking for in an editor and with TextMate 2 being released I don't know whenever
Starting point is 00:40:35 yeah I don't know whenever Duke Nukem 4 is released you know I'm on the same Vim journey and I think we're probably watching the same peep code from Jeffrey with Smashing into Vim with the soothing voice of Dan Benjamin.
Starting point is 00:40:52 Yeah, it's a good one. It looks like I'm not the only guy that's looking for the perfect terminal font, too. So I noticed on your blog, I recently got turned on to Menlo from David Kaneda from the Cintia Touch team, and you found a variant of Menlo that you're really liking. Yes.
Starting point is 00:41:09 So Menlo is a great font. It's based on Bitstream Vera Sun's Mono, I think, which is an open source font. And Apple adopted that font as a new terminal font for Snow Leopard. And it's called Menlo. And some other people picked Menlo up and they had little gripes about it. You know, like the shape of the zero, for example. In Menlo, the zero is slashed. And lots of people prefer dotted zeros.
Starting point is 00:41:38 So people started to adopt the fonts. It's really interesting to see this sort of open source movement catching up into the space of typography and fonts. It's really interesting to see this sort of open source movement catching up into the space of typography and fonts. That's quite interesting, I think. And those people then put the fonts on GitHub
Starting point is 00:41:53 somewhere, and one of the fonts was called Mench, which was a variation with the dotted zero, but it also did some other changes that I didn't like, like it had bigger angle brackets, which kind of looked weird. But anyway, some other changes that I didn't like, like it had bigger angle brackets, which kind of looked weird. But anyway, some other guy
Starting point is 00:42:08 fixed another problem I have with Menlo, which is that the line hates, it's pretty dense if you use it in the terminal or in WIM for example. What he did is he made a little improvement or a little variance of the font
Starting point is 00:42:26 with bigger line heights, with like a small line height, medium and large, with more space between the lines. So I asked that guy to, hmm, this looks awesome. I really like your medium variation there. But I would also like to have the dotted zero
Starting point is 00:42:41 from the other font. And so he just put it in. And that's what I'm using now. And that's what my blog post is about. So it's awesome. Bash or ZShell? For me, it's Bash. But I haven't had the time yet to do ZShell yet.
Starting point is 00:42:57 So maybe I will switch at some point. This is the part where I now get to ask my guests what's got you excited about the world of open source and turn me on to new projects to go and explore. What got me turned on about the world of open source? I think at the time I was really getting into open source. I didn't even realize it. I got into open source because I was researching what else is out there except for like Java or PHP to make a web application. Because at that time, we were planning a web application.
Starting point is 00:43:30 That was in like 2004. And so I just researched on the internet, and I stumbled upon this Ruby and this Rails thing, and that got me kind of interested in it. And I checked out the IRC channel for it, asked some questions and like three months later I was on the core team of Ruby on Rails. So that was pretty quick. So I didn't even know what happened there exactly.
Starting point is 00:43:54 But since then I'm a big fan of open source and it's not good for everything. For example, I wouldn't recommend designing anything open source, like visual design or something. That just doesn't work well. But for code, it's really, really great. Especially if you can find projects where you have a benevolent dictator that really knows what he or she is
Starting point is 00:44:17 doing. And if you have programmers that just connect to you on the same level. I can remember having chats in the Ruben Reo's core team channel. We could talk about stuff that we wanted to implement in the framework, and we also agreed on what the direction should be. It was actually a bit scary to find people from all over the world to have exactly those same thoughts
Starting point is 00:44:46 but that's what's happened there so I can only recommend if you want to as a listener if you want to go into the world of open source and explore more and find a project that you can actually contribute to find something that you're really
Starting point is 00:45:02 excited about that you really really, really excited about, that you really, really want to make better. Do not try to get into a project just because it doesn't work. If you want to go into a project and really make it better, find something that you're actually
Starting point is 00:45:18 really excited about. There's so many projects out there, I'm sure there's something for you. What's got you excited that you just want to play with when you have some downtime? Actually, all sorts of gadgets and stuff. I just ordered a drone,
Starting point is 00:45:34 an AR drone, which I have been flying around the office. It's kind of dangerous, actually. But that gets me excited. I also recently completed my project of building the LEGO Millennium Falcon, the big one,
Starting point is 00:45:49 with the help of some friends. That was quite awesome also. So I like building things and I like creating things, even when it's not programming. One last question. I wanted to get an update on Schnitzelkont. Schnitzelkont, yeah.
Starting point is 00:46:09 Amy and me, we did a conference in September on bootstrapping businesses, especially web-based businesses in Vienna. to do this is because there's so many people out there that think they need venture capital to do software or companies or projects that's entirely not true we build everything we did without any venture capital or third party money it's all our money in there and we we weren't rich before we started this so we just did some consulting on the side and invested the money that we earned there into our own product products and that works fine and now we can live of our own products which is awesome and i can tell you that we can live pretty well uh of our own products so we wanted to spread this knowledge because there's so many people and developers and designers and entrepreneurs out there that always think they need to live up to
Starting point is 00:47:08 some idea of how it should be that someone else told them. You have to go to university and finish with a diploma or you have to finish high school even. You have to do this, you have to do that, you have to take venture
Starting point is 00:47:24 capital money or otherwise your company will fail on the first day. It's all bullshit. It's really, it's all about doing your own thing. If you really want to do your own thing, like creating a product for time tracking. Creating a product for time tracking that was in a space where there's like bazillions of other products out there. But the problem with those other products is they're all not good. The people that did those products
Starting point is 00:47:50 obviously don't care about their products or are just too dumb. I don't know. Maybe that was a bit too harsh. But some of them actually care. Some of
Starting point is 00:48:07 those products are not bad, but Freckle is better because we really care about the user.
Starting point is 00:48:13 That's our thing. We can make money and a profit by caring about users. Everyone's
Starting point is 00:48:21 happy with that. The users win, we win. Perfect. Any plans to make this an annual The users win, we win, perfect. Any plans to make this an annual conference? Yeah, we're actually planning a second edition of SchnitzelConf right now.
Starting point is 00:48:32 We're not sure about which format, you know, if we do it annually or every half year or we change cities or if we do, like, some sort of mini conferences in between or online conferences. There's all sorts of possibilities. But we definitely want to have more of those bootstrapping conferences
Starting point is 00:48:52 because we think bootstrapping is a really, really good option for a lot of people, especially in the web business with info products and web applications as software as a service because you do not need much money to get started. We started with a budget of maybe like $1,000.
Starting point is 00:49:11 It took us two months to implement the first version and we made money from the beginning. So that's totally possible to do. Same for info products. It's even easier. If you write a PDF about some topic you really know well, perfect. People will pry it from your hands.
Starting point is 00:49:31 They will pay your money for that because they want to know. Right now, if you would write a PDF about Node.js or a PDF about Zepto or a PDF about Vim, for example, there's no good cheat sheets about WIM. Write a good cheat sheet about WIM. People will love it
Starting point is 00:49:48 and people will pay you money for it. It's really not that hard to get started. And this is the thing we want to get across at the conferences. Good stuff, good stuff. Thanks for joining us today. Thank you. And I hope we get many, many more podcasts
Starting point is 00:50:05 from you guys because you guys are also doing a pretty awesome job. Thank you for that. Thanks. I appreciate it. See it in my eyes So how could I forget when I found myself for the first time Safe in your arms As the dark passions show

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