 Okay, another time, this time, by Chris Thiel. Even if I leave the universe, okay? And it's in the car, which is a web 2x4. There's my web. Chris, cool. Thanks. Hello, everybody. I'm a slave again in the weather. I had some major dental work yesterday. So if you see me like grimacing, that's like... Pardon me? No, I think it would have helped a little too much. But thanks. Thanks, though. So universal cake is something that me and some friends made up about 10 years ago. And we were trying to launch a product. And it was in like an artist loft in Montreal. And we were thinking to ourselves, you know, what kind of product do people like? And we came up with this strange concept called the universal cake. And basically the idea was like, it's the perfect product. You know, everybody loves it. Tastes delicious. It speaks your language. It does whatever you want it to do. And so not much happened with that company, but it was quite fun. But that's about as far as we got. I think we did a little box. You know, it's a universal cake on it. But we could never decide exactly what goes in that box. That was kind of the problem. But since that time, it's been a great help for me in doing software, looking for applications that I want to use or that people want to use. And it's... Anyway, that's kind of where the story starts. So in the end, universal cake is a laundry list of qualities, good qualities that you're looking for in software, that people are looking for in software. So for example, one would be accessibility. Like is this software that I could actually use? Is it software that does something that I want it to do? Does it work? Is it in my language? Does it run on my computer? So I'd need to worry about any of that stuff. So that's kind of the basic idea behind the universal cake construct. And it's been really helpful for me over the years in identifying products that I want to invest my time and energy into. Because if they're not headed in that universal cake direction, you're going to end up on some side road, who knows where, supporting a product that maybe people are still using, but it's very difficult to support because there's no community and everybody's moved on to this and so on and so forth. So it's an extremely helpful exercise in that way. And I wanted to ask some people, I wanted to ask you all to think for just a moment what kind of qualities you're looking for when you use a software. And you are the Uber users, but you probably have the same experience. Occasionally you'll get a piece of software and you're like, this is a piece of junk. It doesn't do what I want. This is totally awesome. It does exactly what I want and I don't even have to think about it. And I think that's kind of the ideal of universal cake. Can someone think of a software that they really, really like? Emacs. You are so old school. How many people, the first thing that comes to mind is Emacs. Okay. I'm the same. I'm deeply the same. But it works great, doesn't it? It works the same everywhere. My fingers remember. Great. And other softwares that people really... Clips. Oh, Eclipse. Yes, that's a great example of a software that's headed in the universal cake direction. Runs on all kinds of platforms. Yeah. Which one? Amarok. Amarok. As in the music player? Right. Okay. All right. Google Wave. I haven't used it yet. It's one of the things I signed up for and I haven't gone around. Is it really nice? Awesome. Play more, so I'm going to say Vi. Vi? Okay. Vi and Vim and... And what is it you like about Vi? It's on all your Unix or... Okay. Did you have one? Great. So you're... Yeah, sure. You invented this concept, but it was quite cool. Fun? Yeah, I think so. I knew it wasn't like that jam. You just open it and there's a white piece of paper and... Wow, that was a breakthrough. All right. Yes? Python. Python. That's how I found Python. It just showed up everywhere. I'm relatively new to Python. And it just was always there. And even though I used a product called Plone, which is built on Python, it was always there, but I never actually did any Plone programming. Has anybody ever worked with Plone? Has anybody ever programmed Plone? Whoa. These guys are serious. Dave? Dave? Oh, hey. All right. Sorry, I thought I'd recognize you. Yeah, so let's see. I should talk about my case. So the case is I'm in the midst of launching a new nonprofit organization. It's a nonprofit that's based on fair access, which is a bit difficult to define, but I think we can all think of ways that access could be fair or more fair. And we have three primary areas we're working in. One is fair access to technology. Fair access. Well, let me back up just a moment. As I said, it's a very new nonprofit. The three areas we work on are economic, social, and political access. And the three campaigns that we're starting with are access to technology via accessible or highly accessible websites. And by that, we mean accessible to people who are blind, but we also mean access in the bigger terms accessible to normal people. And in the past, there was another nonprofit, and we're taking over their work that provided the Plone hosting to a number of different nonprofit organizations. And the majority of the organizations using this Plone hosting are quite small. And I can't think of a single one that's actually made one change to their website. So you have these tiny nonprofits running Plone. For those of you who aren't familiar with it, Plone is like the tank of content management systems. It's international. It's got multilingual support. It's fabulous if you're like Amnesty International or the CIA, I think they use it. Or Walt Disney or something like that. It's this fabulous, fabulous product. Yeah? Yeah. But it is big. I think now it's got a little smaller. I downloaded it today. It was 30 megs. And it's really quite hard to get your head around when you first start working with Plone. You're running on this thing called Zope. How many people have heard of Zope? OK, so more than half. And these are Python people. So less than half or half have not heard of, or less than half have not heard of Zope. It's kind of a done deal. This happened like 10 years ago. When Plone first came out, around 2000, it was the only content management system that was open source and made promises about being accessible. Yeah. Around 2000, just to put things in perspective, I was working at the IBM Help Center or something and for the 2000 team, and we did absolutely nothing. I don't know if you remember that, but we had a lot of free time. And so that was where you went blogging and all this kind of stuff was just taking off. And for most, there were a few products that were before that, that were commercialized, that were available, but it was totally like, oh, wow, you can edit a website on the web. Before that, it was like FTP. So FTP, make my changes, FTP. And suddenly there was this, someone was like, well, that's silly. It's a total, why not just edit on the web? So I spent like literally hours at IBM researching these different toys that people were coming up with which would allow them to do live web editing, which made a lot of sense. But my criteria were, because I was in Montreal, I said, I want it to be multilingual. Okay, and that wiped out like 95% of them. So no good. And second of all, I wanted it to have some accessibility features. And that wiped out everything but Plone. So I was not the only one doing this, or a number of nonprofit organizations that have invested heavily into Plone and the infrastructure for Plone. And it's quite big. Like I think now it's the number two open source project worldwide. And a lot of people haven't heard of it, but it's quite big. So back to our case study. We have 48, 47. Okay, no problem. So back to our case study. We have an older defunct nonprofit. They have a bunch of customers that need taken care of. The customers are running Plone, which is, I don't know, about this big. And what you really need to do a website where you basically don't change anything is probably microscopic in comparison. And that's actually not true. I think some of the places tried to make changes, but Plone has gotten quite complex. It has user administration and so on and so forth. It's got metadata and all the wonderful things that you would want in a killer content management system for a very large organization. But for your average nonprofit organization, which is relatively small, it's severe overkill. And not to mention that it uses a lot of memory. Plone is extremely memory intensive. You have this thing called the data FS, which is where all your data is stored. It's also kind of mysterious because it's running on Zope. Does anybody understand how Zope works? Okay, we have... No, okay, he's rescinding. He's like, maybe... Okay, but how about MySQL? Does anybody understand how that works? Yeah, okay, no problem. But Zope is like this big mysterious thing and we have this huge content management system built on top of Zope. It's actually like a product. I think under there there's another content management system that Plone has built up on top of. So it's a very large stack and it's been around for a long time. I love it. I use it all the time. It's awesome if you need to keep track of a bunch of miscellaneous technical data for an organization that's not very organized. You can use it just like your own private Google. So you just plug stuff in there, cut, paste, cut, paste, cut, paste. And then there's this nice little search box which almost nobody uses in the upper right-hand corner. But it works sort of like the Mac spotlight. So you just type in Bob's speech. It pulls it up for you just like magic. So it's awesome for that kind of stuff. It's also great if you are a really big nonprofit organization that supports multilingual supporters all over the world. Excellent for that. And there's tons of support, very, very large community available for it. But very difficult to upgrade. I've done a few Plone upgrades and it's quite tricky if you've customized it at all. Then it becomes even more tricky. And it's surprisingly easy to do certain customizations. Like you can create, I think they're called archetypes. You can create a new sort of content type, relatively easy. But you can get into trouble with that pretty quickly if it's been a few years and the guy who did the original one and did those little tweaks is gone. So obviously it's not something that a small nonprofit organization wants to be maintaining for a whole bunch of other nonprofit organizations. Does anyone have any comments on Plone or questions about Plone? Okay, great. So, yes, oh, let this be a lesson. If you have a MacBook, you need to bring that adapter dongle. So we talked a bit about Universal Cake, the laundry list. And I'm just going to read it really quickly because I do indeed have a laundry list. Yeah, so number one, to create a piece of Universal Cake, you want something that's accessible. So it's easy for everyone to use. It's available in the language of your choice. It's affordable, are free, culturally relevant. It needs to be compatible. So it runs on many devices. So it runs on my iPhone, it runs on my laptop, it runs on Windows, it runs on OS X. Remember, we're talking about idealism here, like what we'd like versus what we're going to get. But we have no chance of getting this unless this is somewhere in our head. So, yeah, it runs on Windows, Unix, BSD, FreeBSD, et cetera, et cetera. It's fast and lightweight, so it doesn't pick up all your CPU. There's no extra junk. It's slimware as opposed to, say, bloatware. It has longevity, so it's going to be around next week or next year, which has been around for a long time, which is pretty amazing. It's, oh, I added a new one the other day, input-output universality. So that means you can put in speech or you can put in text or whatever, and you can output speech or you can output text. So like I said, this is our dream piece of software, but if it's not up there somewhere, it will not happen. It's non-intrusive, so it protects your privacy. It doesn't leave any traces. It's easy, easily uninstalled. It's transparent in that it's an open source, or at least you can fix a bug, you know, if there's a bug. Secure, which I sort of covered with the other part, so it's safe to use. Secure updates or security updates are readily available and so on and so forth. It doesn't interfere with your, oh, I saw other software. I covered that one. It's viewable as in open source again. It's supported, so there's good community and user support, so there's support for developers, support for the community of users. We're pretty sure it's going to be around for a while, good developer support over the long term. And it builds on other products that will be around for a while. I added that one. I was thinking about Plone. I thought I'll just stick that in there. It's reliable. It's backwards compatible. That's a big one, backwards compatible. It's easy to upgrade. And finally, it's useful. So that's our laundry list we're using for comparison, which is relatively idealistic. But a lot of things on that have come true over the years. And Eclipse is a great example. You can run that on, I run it on Ubuntu and OSX. I don't really use Windows too much, so I haven't installed Eclipse on that, but I think it runs on Windows too. Yeah, so it's pretty damn awesome. And an awful lot of Python products. OK, Web to Py. The first time I went to the Web to Py site, I was like, yeah, right. It's a laundry list. It's the same kind of laundry list that I have. But what is Web to Py? Web to Py is, I think on the website, they call it an enterprise web application framework. I call it like a web application framework. So it's written in Python. And I'm sure it'd be fine for using in the enterprise, but I find that kind of scares people away. It's some IBM product that's like 10 miles wide. But it's microscopic. I think it's less than a meg. Pardon me? It cannot be enterprise. Yes, it's too small to be in the enterprise. But I believe there are some enterprises using it. But I think of it more as a web application framework. Yeah, actually I know there are some enterprises using it. So basically, here we go. So it's open source. It supports agile development. It's very easy to spill out an update. It's scalable, secure, portable, Python. The resources are a bit scattered, but they're definitely excellent. And it's the guy who started the project, Massimo. Massimo seems to be able to read everybody's mind. So one week you'll be thinking, you know, I really wish I could index my database by UUIDs. And then sure enough, next week Massimo is like on Vimo or YouTube or something like that. It's like how to convert your web to Py application to use UUIDs and export it to another database. But that kind of thing is constantly happening. It's, oh yeah, pardon me, back to our laundry list. It's backwards compatible. And he says it's going to remain that way forever. And in fact he says we pledge not to break it in the future. So he said we have not broken backwards compatibility since version 1.0 in 2007. We pledge not to break it in the future. Easy to run, requires no installation and no configuration. And you can imagine my disappointment when I went to all this work to like set up Eclipse on my older MacBook. You know, I got it all running. I got the git thing going and all this other stuff going. I was like, yeah. And not required for web to Py because it comes with its own little IDE editor. And not only that, there really is no configuration to get it up and running. So pretty cool. I was a little scared at first because it seemed just a little bit too, it met too many, the advertisements met too many of my specifications in Universal Cake and being the creator of Universal Cake, I know that Universal Cake is outrageous. It's an outrageous proposition. So I was kind of shocked with that. It includes internationalization support through the famous T, which I'm sure everybody's aware of. The famous T, no? T. Brace, no? Oh, okay. All right. You should look into the T. Sorry. The T, that's what I call it. Like I said, I'm new to Python, so I'm going to be making a lot of mistakes. So if I give you any technical information about Python, just cross it right off your list of things to remember. Right. Easy to run, so requires no installation and configuration. Secured includes SSL-enabled web server, which I believe is, what is that, Cherry Pie. Bells and whistles galore. It's like streaming capable web server, web-based integrated development environment and web-based management interface, which basically means you can access your database. It generates a web page so that you can access your tables and your database. You can actually make changes in there. It will only let you log on if you have a secure connection or if you're running on local host. So it's quite fabulous in that area. The last big web project I worked on was with another programming language. We didn't have that ability, so we had to use some slightly insecure way of some administrative tool that was slightly insecure at the time to edit our databases. Anybody know what I'm talking about? So it's very flexible. You can use multiple authentication methods and it includes role-based access controls. It's fast. It's tiny. There's a whole bunch of, it says multiple caching methods for scalability. That sounds good. Good community. It uses a jQuery library for Ajax and FX. Anybody use that? Okay. I'm learning so much. All right. Web servers, it will run under Apache, Lite, TPD, Terakie, and almost any other word. Web server including WSGI, which we saw presentation earlier tonight, ModProxy, ModPython, and so on and so forth. Database support is a little shocking too. And this is another reason why I did not believe when I visited the site. It comes with SQL Lite. So that's why you don't have to configure anything because it's already configured to use SQLite. You just type away if you know what you're doing, which takes a little while to figure out, by the way. So that works great. You can use POSGRAE if you want. Did I pronounce that right? Nobody knows. POSGRAE, POSGRAE. MySQL, MSSQL, Firebird, Oracle, IBM DB2, Inframix, Ingres, and Google App Engine. It's flexible. You can embed third-party WSGI apps and middleware, which we... It's secure, prevents the most common types of vulnerability. It protects against cross-site scripting. Injection, flaws. That's my personal favorite thing to do when I'm debugging people's websites. Supposedly debugging, but messing them up to show them where their problems are. And it also does malicious file execution. So if someone uploads a tainted JPEG and it's actually a program that says, you know, R and minus R or something, then that doesn't work for them. So that's all included. Do I need to go on? Enforces best practices. So it uses the MVC or Model View Controller design. Does server-side form validation, post-backs, speaks multiple protocols. This was another big shocker for me because the last project I worked on, was to XML-RPC, which was cool. But it was kind of hard. But it comes out of the box, it's got it. And you can write, like, I don't know, 10 lines or something and spit your database out to some other website somewhere else or do whatever you need to do. It's totally awesome. So that's their laundry list of the reasons why Web2Py is great. So I decided that needed the further investigation. No? Sounds pretty damn good. Oh, I cursed again. It's like three times. Plone, I love Plone. I think I said that already. Development tools, none required. If you want to develop Web2Py itself, you can, you know, of course, use Eclipse and that sort of thing. I recently stumbled upon something called Aptana Studio. Does anybody else use that? Evil commercial free wear. But it was really easy to set up. I don't know if you've ever, if it's ever taken you a while to set up Eclipse, that was really easy. And it installed JQuery and Dojo and the Yahoo user interface and all the cool bells and whistles and like one click, I believe. Okay, 10 or 15 clicks. But it was much easier than the standard Eclipse configuration. But you don't really need that. You can edit it live locally using the built-in IDE. There's also a built-in ticketing system as a person with slightly dyslexic tendencies I take full advantage of. So if you make a typo or whatever, it tells you right away. It says like, dude, you messed up. Go back and, you know, move that period or replace that comma with the period. That seems to be my favorite error. So that's pretty cool. Accessibility-wise, they make zero claims accessibility-wise. And Plone used to make some, you know, when you went to their website, one of the first things they said was, we're going to be accessible and we're going to be, you know, they kind of dropped that. Wedd-Pie says nothing about that at all. But as far as I can tell, it's very easy to implement. Once you get through all the flack around accessibility, has anybody done any research on that and gotten frustrated? No? Yeah. If you start to do some research on accessibility, it gets really boring, really fast. There are all kinds of, you know, fabulous plans and so on and so forth. But it's very hard to find like, okay, just show me the code. How do I do it? Like, what do I need to do? It's very hard, difficult to find that. That's gotten a lot better, but you have to go through all these, you know, we'll just say, I'll call it conflicting information. But now a lot of the JavaScript things I'd mentioned earlier like jQuery and Yahoo, those guys are putting that into their code so you don't even have to do the work. You don't even have to plug into their stuff. That's probably the thing I like the most about Web2Pies, I don't have to do any work. It's all done. You can, and I'm lying here, of course, right? There's absolutely, there's a lot of work to do to understand exactly what's going on. Because it's extremely concise. One of the nicest things I like about it is that the way Web2Pies is built is you can create forms from scratch using Python, and it runs with Python. It does it a little bit peculiarly in that it uses the double brace. So you put your code in a double brace. You have the controller. Who knows what the controller model view is? All right, that's good. So basically, if you want to create a database, you do your table name, field number one, blah. Field number two, blah, blah, blah, etc. Then you have your table. In the database file at the very top, you'll put something like, you know, I want to run on SQLite because I'm running locally. Well, then tomorrow you need to deploy it. So you don't have to do anything. If you want to deploy it on Google App Engine, because there's already this little if thing that somebody put in there, is well, if I'm on Google App Engine, run on Google App Engine. And then you're fine. Unless you created a database that has some complex joins or other things that aren't compatible with Google. So I'm lying when I say there's no work involved. There's definitely work involved. And if you want to check it out and use it in earnest, you'll want to buy the manual, which is $12. A great deal. Even just to check it out. It's a great deal. And there's excellent support. The best site for support, I think, is, I should say, for applications. Because the other cool thing about Web2Py is you've got Web2Py here, which is an open source application. And then you have your Web app here. And it's basically, you can export it to a single file, sort of like a zip file. And then you can email it to your buddy, because it's only going to be like, I don't know, 700K, unless you've got some pictures in there. It'll be a lot bigger. Then you can email it to your friend and he can run it, or he can load it on his server or whatever. So there's this separation, very clear separation between the Web application development platform, which is 700K, and the Web application that you're spitting out. So you can use this, you can make this closed source, which is not going to be interesting for everybody, but it is going to be interesting for some people. So, and then what you do is there's a little button here. You can choose exports or compact, or you can choose what they call the bytecode of Python. Yeah, create bytecode. So then you spit out your file, but instead of being like text, it's Python bytecode, which means at least somebody's going to have to break the law if they want to steal your web app, your precious web application. So that's, sorry, too many jokes. So that is really cool. The other cool thing is, is because it's so easy to spit out web applications, is what you're going to discover if you start exploring it, is like suddenly you're going to have like 20 different crazy web applications. I want to download Massimo's screen scraper application that scrapes the Chicago transit schedules and then tells you which bus to take at 11 o'clock, because that's pretty cool. And since it's open source, you can go in there and see exactly how Massimo did it. And then you can either, so if you're doing one for Montreal, very, very helpful, you can look at his crazy stock price prediction thing and make a fortune. And you can see how he did it. So it's very, very helpful from that point of view. The other great thing is that people kind of pass them around all the time. There's not that many that are international right now. They did the, I think you were talking about the Python website for PyCon. Was it PyCon? Django? Okay. The registration. Right. Right. So Massimo and Yarko did the registration site. If you look at that, you'll see like a first crack at a, well actually it's not really the first crack, maybe the second or third crack at a international application. So really hard job to take on. On a relatively young, I think it's like two, three years old Web to Py. But you can go, you can look at the code, see how they did the whole thing and see why sometimes, you know, Yarko is like... So it's awesome in that way. Recently I've been like complaining a lot about internationalization on the Webmail and so Massimo did another one of his famous videos which is like, you know, having a multi-lingual website in three minutes. So he does a lot of those things. Questions? All right. And I tend to get a bit monotone after a little while. I have a question. Yes. Sure. If there's one at myvishpala. What is an app spot? Let me just check the URL. I'm like, oh, actually I can show you one. It can be kind of far away. I don't know you that well. Yeah, so I have blown there for folks who haven't seen blown. It's awesome software, but it's kind of an army tank. Actually it's more like a battleship. And I'm just going to change pages on my blown there. So you saw there was like kind of a little delay there. And I'm going to go over to WebDepai. Oh, it's asking for my administrator's password. Okay. Yes. So you have a default application. For folks who have used Ruby on Rails, it works very much like, the concepts are very similar to Ruby on Rails. You have a skeleton, or a scaffolding, sorry. And the scaffolding in the case of WebDepai, I believe is the welcome application. So if you're like really kicking out the websites, you would probably want to customize the welcome application. Because every new application that you create, and I'll just create a new application. That would be exciting. So I'm going to go to a site, create new application. I'm going to call it the letter A. And I choose submit. And now I have my new application. So, yeah. The framework runs under any, not any, but most web servers. From my understanding of WSGI, it's not new, but support is kind of new. They use Mod WSGI, and I run it under Mod WSGI on Ubuntu. And it worked great. I had to change one of the configuration files that was supposed to work on Mod WSGI, but it doesn't actually work. So I just had to change the, in the virtual host file there was, I'm trying to remember the name. It was like a variable for the group that was running Mod WSGI. Wow, I'm like parched. Okay, so we have our application, and I have a whole whack of other applications. I'll just open one that looks nice. Mine are all very... Okay, I have the Web to Buy conference application. Oops, internal error. Now, it comes with ticketing, so it's issued a ticket because I have an internal error. I'm going to click on it, and it's going to tell me all my information. And this is all running on my web browser, so it tells me where the error is. It says, I've got an unexpected keyword argument, pools. Well, I haven't actually explored that particular aspect. Sure, you can... Yeah, yeah, just one after the other. You can get an application that does that Web to Buy itself. I don't believe it has a search function for the errors, but I'm just going to go here. There's an errors tab, which I never use. Click on it. It says, error logs for A, I have zero. Let me just go back to that last application where we got our error. Thank you. I really appreciate that. Okay, there we go. So we have our error. I'm going to click on errors. This will show me the errors for this application. So when I was under the new application that I created, since it's brand new, no errors. Now I'm under this application called WebConf, and I have two errors that I've generated because I loaded the page twice. We have a date and timestamp. I can delete them if I want, or I can click on them and follow up. So it's really unbelievable. I don't know how else to describe it. I did not believe the advertising at all when I went to the site, but it's pretty cool. Yeah, so you can visit Web to Buy. As I said, the resources are scattered, and there's a few abandoned support sites and that kind of stuff that you'll run into, which look kind of bad. But a great one to check out is called Web to Buy Slices. For those of you who like speed and agility and want to see all the latest bells and whistles, Web to Buy Slices is kind of where you can paste, you know, like how to install it, paste an Ubuntu installer script for Web to Buy. So if you're looking for that kind of like speedy, you know, shortcuts to development, you will go to Web to Buy Slices, and if you're running Ubuntu, you would look up the script that Massimo wrote, which basically does your standard Ubuntu app to get and installs and configures Web to Buy for you. As I wrote in a little email I sent out today for folks who saw it, like I was, did anybody else go to this Google, there was a Google guy who was giving a talk on Google application engine and how to use that? It was a while, how was that? Okay, and how long, how long was it? Ah, okay. I was just wondering how long it was because I wanted to try deploying my application on Google app engine, and it was kind of scary, right? I was like, Google app engine. And I was like, I better study before I go to this conference so I know what I'm talking about. At least I can ask an intelligent question. And so I was like, I'll just go through the steps of deploying my little test application. And so I, you know, before I knew it, it was just deployed. I was like, well, okay. That was really easy. It was really, really easy. And I had to edit the YAML file, I think. YAML file. But after that, just poof, it was up there. And then I was a little bit sad. There was some more stuff I wanted to do on my app and make it look pretty. But the great thing was, is it forced me to iterate. And for those of you who've been in the business for a while, like if you're not, you know, doing your iterations, then you're like polishing your gem all the time. That can really interfere with, you know, business processes and makes it even harder when you finally get around to like spitting out your application or whatever to do it. So I thought that was, that was actually the thing I found to be the most wonderful about it, is that because it's so easy to upgrade and update, I feel very comfortable with, you know, pushing something out that's a little funky for my test users. And so the site that I have up, MyVish, does anybody have an internet connection? Okay, it's MyVishPaula. Is it AppSpot.com, I think? Yeah, AppSpot.com. And, uh, VishPaula, oh, sorry, that's her. So it's a, first, it's like a pre, it's like an accidental Google deployment. But I really like it. And it allowed some of our users to get on there and test it right away. We had one blind user that I was especially concerned about and he was able to successfully log on and navigate, which is why the menus were a little bit, well, they're text menus, the ones that I did. But unfortunately, because it was kind of an accidental release, it didn't configure any, you know, email server or anything like that. So sure enough, he forgot his password and then when he clicked on, you know, recover password, it didn't work. But other than that, he was able to edit, make some changes. And I based the whole thing on this, how to deploy a web app on GAE in three minutes with Massimo, which of course is insane as far as the claim. And I think someone was complaining that he actually took four minutes to deploy his application. And he didn't include the, you know, clicking the deploy now part in his video. But it was a pretty great application and it's based on, I forget the name of the guy who actually first conceptualized it, but based on a concept of rather than editing content, what you do is you make a copy of your content and then you create a new page and you paste the old content in the new page so that nothing ever gets deleted. And it's a fantastic concept because, you know, space is really, really cheap these days and it gives you a big level of transparency. It's totally awesome for people who can't see because they're always hitting the wrong buttons and having problems. So they're not afraid to do content editing because they know even if they, you know, explode the entire page that they can always go back in history and pull up their old pages. It's also great for if you're doing anything in the United States where they have these incredibly... I don't know what the punishments are, but nobody talks about cheating. But you have to keep track of your history and so Plone is very good about that. Plone has a, you can go back in history of web pages that get edited and see what Bob did, you know, ten months ago that the IRS is interested in if you're American and they have very strict law now. What is it? The Sarbanes-Oxley's Act? Yeah, yeah. Yes, yes. Thank you. Ten years. And so for companies that have websites or if you're in the website making business and you want to sell old-age tazunis, it's something you really want to be away from. You want to be aware of. Sarbanes-Oxley. And so this little test app I did, I liked Massimo's implementation. It was like super lightweight and super simple. Perhaps a little too simple. Definitely need some expansion, but it also included a little wiki, wiki functionality I should say so that users can easily create a new web page. Did you ever test a web page as if? Yeah, but it's hopeless. That's a great question. And that was a huge thing that I decided not to cover because people get bummed out. I don't know. I need to think about it. Poor guy can't see. People get bummed out. But it's in a nutshell for menu items. You want nice degrading. So the secret is degrading, which means that if you're using some fancy new Java application, what happens when it's running on Windows Explorer 5, which is what all the blind people are running? Those are poor. I'm just kidding. But I'm just kidding. But that's something to keep in mind. But seriously, that's too many jokes. Because statistically, if you take a look at a population of individuals living with disabilities like blindness, the nine times out of 10, well actually maybe it's a little less than that, but they're unemployed. So they have no money. And they're going to be running all this stuff that will run. And so that's something you want to keep in mind. The other thing you want to keep in mind is that there's also a lot of flak around accessibility flak, meaning conflicting stories. So you'll go to one place and there'll be a piece of Canadian research saying never ever use access keys. Those are the hot keys. Never use those because users of certain screen scrapers slash screen readers will be using the same keyboard combinations. And so it gets very scary really quickly. But the best thing you do is you put it out. Can you log on? Yeah. Did you have a problem? No, it works great. Fantastic. Pardon me? Links, well, links is awesome because it's light. Yeah, it's light. It's from the command line. It's a bit dated, I think. Well, there are a few exceptional blind programmers and command line users. And in fact, there's a product for Emacs called Emacs Speaks, which was recently inducted into the Smithsonian Museum because it's so awesome that allows blind users to do Emacs programming, which is actually another reason why Web2Py is much more fun to program with than I almost left it out and I only have one minute. Oh my God. There's a shell in Web2Py. So it runs over the, you can tell I'm kind of a wuss because I don't use the shell in Web2Py. But Massimo uses it all the time. So you have shell access and the other cool thing about it is unlike Clone, which uses the ZMI, which is cool, it runs right on the file system of the web server, so you can do synchronization and all this other cool stuff. Very, very easily you can swap files in and swap files out. The other great thing about it is you can export your application, as I said before, send it to a friend. You can look at your ticketing, see what work program or how it's done during the day if you're in administration, and so on and so forth. It's fabulous. Yeah. It's got a really cool world up in the scale. I've never tried to scale Web2Py. On Web2Py slices, Massimo again talks about how to scale your Web2Py server. I believe I'm out of time. And Massimo is kind of like following someone through the jungle who lives there because he's so good at using Web2Py that sometimes it's kind of hard to follow him. But yeah, he's done a slice on how to do scalability. And finally, in closing, I just wanted to say the other thing that I like the most about Web2Py is that it includes things like CRUD. Has anybody used CRUD before? CRUD is like automated. It creates an automated Web page for your database so with your fields and your data automatically. And I'm sure there are some other things that do that as well. So you can use CRUD, which works great, or you can go really low level. And most of the Web2Py is basically finished. Now what they do is they add layers, which you can choose to use or not to use. And those layers are called there's one is T2 and T3 and T4. And those are the ones that you don't, yeah, not that T and different T. So T2, T3 and T4, most Web2Py users I think never even visit that. But that's where your eyes like, whoa, I'm going to stay up all night and make this work. This is so cool. So if you want to play with Web2Py, you can work on the layers and you don't have to worry about killing everybody's applications who, you know, all these organizations that built their application on Web2Py. So it's super easy to upgrade. You can upgrade the next version. It doesn't wipe out your applications. I tried to reinstall Plone today and it said you already have Plone installed. Please erase it before you reinstall just out of fear that they might somehow like clobber my application which was really polite. But you don't need to worry about that with Web2Py because of the way it's laid out so you can do upgrades. Thank you very much. I'm sorry it was slightly disjointed. I wanted to do this a little bit later but Yannick had an opening for the main spot so I went for it. I hope everyone enjoyed it. If you have questions or whatever I'm more than happy to give you my best answers. Thank you, Riz.