00:35 Hello and welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host, Michael Kennedy, follow me on Twitter where I am at @mkennedy and keep up with the show and listen to past episodes at talkpythontome.com.
00:52 This episode we will be talking to Chris McDonough about the Pyramid Web Framework. Before we get to Chris, I have a few things to share with you. First, thanks again the Python Gear for sponsoring the last episode. They gave away a T-shirt to one lucky friend of the show, I randomly choose a listener from the group and Alejando Vilamarin from Spain was our lucky winner. So, congrats to Alejandro.
01:15 We now have a Facebook page so be sure to like us on Facebook if that's your thing we're at facebook.com/talkpython and we are also on SoundCloud, you can listen to us on SoundCloud at soundcloud.com/talkpython. Listener Nathan Chaonin who is at @nbchaonin at Twitter pointed out a cool Kickstarter called Python 101 by Mike Driscoll to turn his book Python 101 into a video series. It's already over $2000 pledged towards his $5000 goal so check that if you are interested in supporting Mike. You can find the link in the show notes on talkpythontome.com.
01:56 Finally, I have started a Patreon campaign for this show; Patreon allows listeners to directly support us with very small contributions, for example a dollar for the show. More details on this later, but you can find the campaign at patreon.com/mkennedy. Patreon is actually doing some very cool work with Python and since I started the campaign they reached out to me and we had a small discussion about what they are doing with Python. I decided it would make an excellent show so we are going to talk to Patreon about how they are moving from PHP to Python 3 and that's how that's making all of their developers happy. So look for that in an upcoming episode.
02:34 Now, let's get on to the interview with Chris.
02:37 Let me introduce Chris. Chris McDonough is the primary author of the Pyramid Web Framework and the supervisor process manager. He's been a member of the Python community since 1999 and he is a principal of Agendaless Consulting.
02:53 Chris, welcome to the show.
02:56 Thanks Michael. How are you today?
02:57 I am doing great, thanks so much for being on my podcast.
03:00 Yes, thank you for doing it, it's great to have another podcast, Python podcast.
03:06 Excellent. The reason I reached out to you is I am a huge fan of The Pyramid Web Framework.
03:12 Oh, go on.
03:12 No I am, I mean, our website is even written in Pyramid. I do love it. So, I wanted to talk to you and just sort of learn more about the history and what people are doing with it.
03:24 Great, yeah, I would be happy to answer.
03:26 Cool, so what is Pyramid?
03:28 Well, Pyramid is a Python Web Framework, and that term means many things to many different people, but, it is a sort of web framework that's kind of light I guess you would call it, I hesitate to call it a micro-frame although it sort of fits in the same little box
03:47 That's one of the things that drew me to Pyramid, was, I think the Django maybe the most popular one out there just from you know taking the polls of talking to people. But I fell like the Django is like you build with these great big giant blocks, whereas with web frameworks like Pyramid I am building more like little Lego pieces and not huge you know shipping containers. So I really like the granularity and the control I have when I am working with Pyramid.
04:14 Yeah, I do too, and you know I actually came into Python through Zoup, in like 1998, 1999, something like that. Zoup is the you know, kind of the antithesis of a Pyramid, you know, I stole lots of ideas from Zoup, but Zoup and Django and there is another framework called web.py are kind of I guess what you would call full stack web frameworks. They actually have built into them you know database bindings and ways to administer the site, and they have UI to them and all kinds of stuff. Pyramid is a little bit more like something like Sinatra or Flask or other micro-frameworks are escaping me but you know, something that is a little bit smaller.
05:07 Maybe Bottle?
05:08 Bottle, yeah, exactly.
05:10 Yeah, Bottle is an example, and when I think of a Pyramid I think of sort of its peer or rival a friend of me, maybe I don't know, is Flask, right, these are kind of the lighter weight versions. You came from this background of this sort of bigger, larger what you call full stack frameworks where it's like they pre-define here is your data access layer, here is your template layer, here is how you wire all this together, what inspired you to go in the opposite direction?
05:41 Well, like I said I came to Python through Zoup, and Zoup- even the word Zoup can mean different things to different people, but when I came to it in 1999 it meant the thing that is currently now refer to web framework. It was actually really great, at the time, I used it to build, I ended up working for the people made Zoup for a number of years but I did not though then, I used it to build a site for an electric company in Philadelphia, that was something that we would now call today content management system, but I don't think that term existed then.
06:30 Well, the web world is a very, very different place than it was in 1998, I mean, so what people expect out of web frameworks may have changed as well.
06:39 Yeah, exactly. And, so, yeah, that sort of skips over to heart of it which is that these days it is becoming much more interesting to write your UI and Javascripts and HTML instead of server side templates and sort of you know, web reload page things you have these, these frameworks...
07:01 Sure, angular js, or Amber or any of these things, right?
07:04 And those things really don't need, you know, there is not much retail you I mean the UI that your customers see when you make an application or something that these days is you know, more pleasant to write on a totally service side application than it could be in just Javascript. So, the framework has become smaller as a result and a lot of the stuff that your frameworks did have moved into these Javascript libraries.
07:38 Yeah, that makes a lot of sense. And I think the lighter weight web frameworks parallel with heya and mostly need you to deliver HTML and CSS and Javascript and then provide a cool sort of service layer back in to keep the Javscript active.
07:54 Yeah, I totally agree. I mean, that's a way people were thinking about how it works. That said, you know, it's often pretty convenient to write just flat out you know template of web pages that, you know have links that could other template or web pages and... I don't think that will ever die, but
08:13 It's definitely not going to die, and I think if for no other reason than purely for SEO purposes. So if I've got cool angular JS page and it's got all my handlebar stuff in there, it's more or less empty of content and if Google or Bing come along and try to index it, it's just going to say "Hey, angle bracket angle bracket content" and as opposed to the real content to the page and so as long as you are writing public facing sites you want to show up in search engines, unless the search engine start executing the angular JS bits which they well be trying but I don't know that they do today, there is still going to be some place for these sort of back in server oriented templated pages at least the public facing ones, maybe your admins area becomes an angular JS sort of spot type of application, but the front end for your public facing stuff probably will be HTML for a while that come.
09:10 Yeah, I think that's right, and I'm sure Google will have to write a crawler that executes Javascript pretty soon.
09:19 Yeah, it's going to be unavoidable.
09:24 [music]
09:24 Michael here, Thank you so much for listening to and spreading the word about "Talk Python To Me" The respond to the podcast continues to be wonderful and humbling. I have a quick comment about supporting and sponsoring the show. I'm still looking to line up stable corporate sponsorships, but I wanted to tell you about a community based campaign I'm launching to allow listeners to directly support the show. We are running a Patreon campaign. You might not have heard about Patreon, but it's kind of like kickstarter for things like podcast which release frequent small deliverables rather than one off large engineering projects. Visit patreon.com/mkennedy and watch the video to see how you can donate as little as one dollar per episode to support "Talk Python To Me". This is your chance to ensure that the Python community continues to have a strong public voice. Consider supporting us today at patreon.com/mkennedy and thanks for listening.
09:24 [music]
10:29 And really, you know, one of my minor you know kind of pet peeves or just like- The Pyramid docs have this and I wrote something about- there is page in the Pyramid docs called "Design defense" and one of the design defenses is that I don't call it an MVC framework because to me MVC means a UI that has events that like- it's a small talk thing, that's where that's from, that term, and the web is nothing like that, you know; until we get these Javascript frameworks which actually do work like that, and those can be called MVC, but I think Rails came along in 2005 or 2007 and...
11:17 Yeah, that sounds right
11:18 And I think it introduced the idea that "Ok, your views are your templates, and your controllers are Ruby code, your model is your database" And, I don't think that was ever true, but now it actually is true, with these Javascript frameworks like you were saying, you know, you have these really thin applications that serve xml or they serve JSON and whatever, and your Javascript stitches it all together and builds your 11:50 and the Javascript is, you know, it's turn complete, so you can do whatever you want, you can UI can change, as a result of a service for WebSockets or SC or whatever, and that's really interesting, that's another reason I think people are interested in it.
12:08 Yeah, that's really cool. I think Javascript is definitely eating a large portion at the world, so there is plenty of interesting stuff that's happening there...
12:17 We are all Javascript programmers.
12:19 That's right. So first of all, let's maybe you could walk the listeners to what the process of setting up all through the PyPi down to a running webpage, walk us through what are the steps to getting started with Pyramid.
12:37 Sure. So, for better or worse we started out in Pyramid and we embraced Python packaging including something that had been around for long time when we embraced it but people tend to bounce off of it setup tools. And so, Pyramid itself is a distribution in PyPy terms which means you know a file that can be downloaded that is RGD file that gets installed when you run either easy install or pip. And, it has a bunch of dependencies mentioned in it, that also come down as a result of you downloading it. Then those have dependencies also, I think at this point, in our sort of 13:26 we had maybe 13 distributions that came down when you install Pyramid, I think it's down to 7 or something now. The reason we had so many was because we used to ship both to 2 templating languages with the framework and we stopped that because there was no purpose and we could do the same thing just by letting people choose.
13:50 Sure. So you used the Chameleon and Mako is that correct, by default, and now you are just down to Chameleon?
13:56 Now we don't have any, now no templating languages get installed with the- no templating bindings are going to install, no templating packages get installed when you install Pyramid. But you have to make the choice and install yourself.
14:10 Right, so when I create the site maybe through one of the scaffolding things, in there would have Chameleon as a dependency but the core if I say pip install Pyramid I don't get templating framework necessarily.
14:24 That's right, that's right, and you used a good word which is the scaffolding, so that's a term that I stole from Pylons, Pylons was another web framework- oh, by the way, I should mention, it confuses people, this web framework is called Pyramid, it is part of a larger project called the Pylons project. The Pylons project has in it the Pyramid web framework, the sort of legacy old Pylons web framework and then a bunch of other software that has sort of the same authors, you know, me included. The way that people should probably think about that is, you know there is the Apache software foundation you know, and they have God know how many pieces offer at this point, but there is also the Apache web server and so they- anyway I wanted to explain that.
15:16 Yeah, you know, that confused me, when I first got started looking at Pyramid I'm like, ok, there is Pylons which kind of seem like to be this older framework and then there is Pyramid and they have kind of merged but they are somewhat distinct and so yeah, thanks for the clarification there...
15:32 Yeah, I think it confuses everybody and really was just kind of a negotiated thing because we started out and we just kind of mashed- we thought we are going to mash three things first, we thought we were going to mash Pylons and the framework the Pyramid was renamed from which was Repose.bfg it was a terrible name, and we also thought we are going to get TurboGears and we actually met, me then Ben Bangert who was the guy who wrote Pylons and Mark Ramm who at the time was one of the guys who was maintaining TurboGears. And we came up with that name and we were like Ok, good enough, we are ok with that, and as it turned out the TurboGear guys I think Mark got another job and he wasn't quite as involved with TurboGear and they maintained their own projects but anyway-
16:38 But there is a little shared heritage there indeed.
16:41 Yeah yeah yeah
16:42 Ok, cool, so I've pip installed Pyramid and now what's my next step?
16:48 Well, so you mentioned a word, that's what I was going to say, you mentioned a word called "scaffolding" We have these commands that once you install Pyramid- in Python, we have setup tools called "console scripts" and all that means is they end up in the bin directory of your Python installation when you install Pyramid.
17:14 Right so it almost adds like new command, so after I pip install Pyramid I can like p-create and p-serve and things like that, right?
17:22 Exactly, yeah. And, those commands used to actually all be sub-commands; over the course of this project, we had to make Pyramid compare with Python 3 and we were using a P-software that Ian Bicking had originally written called "Paste" and "Paste script", and paste deploy, and a number of other things. We still use one of those packages because it's Python 3 compatible, the one that we do use is called "Paste deploy" and somebody else maintains that right now. But, Paste and PasteScript they just had too much stuff in them that we didn't use to port them over, so what I ended up doing was like copy all the code, basically and just copy the stuff we needed into Pyramid and made these commands, these console scripts called the one that we were just talking about that creates projects from scaffold which are just kind of like templates or projects, it's called "P-create".
18:29 And what you used to do when you installed Pyramid was used to type something like past or create project name or whatever, and then when you wanted to go to project you would type paste or serve and then the name of the .ini file that would serve up the application. All we did was we sort of pulled those things out and now you type P create that makes project from a scaffold and you type pserve to serve the project and it's all still Ian's code but it's just only what we needed.
18:59 Right, excellent. And so if I type pcreate after give it a scaffold name or type these are like pre-built little web site so that I could start from, and there is three, right?
19:08 Yeah, there is an Alchemy one, there is a ZODB one and there is a Starter one. and the Starter one is the very simplest thing, it is not bound to any particular database at all it has just basically one view and inside of the views.py file and ini.py file and basically when you go there it shows you "hello world" page and that's the very simplest thing. The other ones have, they are still very simple and they are just toys, they are not full applications or anything they do not really do anything, but they set up bindings to a database more or less, the Alchemy one which uses SQLAlchemy and the ZODB one I am probably the only one who has ever used that one, but I am a big fan of ZODB so I put it in there.
20:07 Yeah, that's excellent. We are going to have Mike Bayer who did SQLAlchemy on in one of the next shows, so that will be great.
20:14 That's great yeah, that p software is really good and Mike spends so much time trying to make it better and answer everybody's questions and he should be applauded.
20:27 Yeah, absolutely, I think it's a thing of beauty. That said, I usually start from the starter one if I am working with Pyramid because I do a lot of ...
20:36 So do you, do you find I am sorry- do you find that the scaffolds useful?
20:41 I absolutely find them to be useful I mean there is all these little pieces you have to wire together, it creates your little static section you know, it kind of gives you the right structure and just a little bit of guidance, it sets up your setup.py in your under under 20:58 and all that kind of stuff for you, so, yeah, I do find it useful.
20:59 That is good, I think there is another thing I should probably either mention or defend or apologize for, whatever I have to do for it, which is that, you know, like for better or worse I said we embrace setup tools to install Pyramid and we also embrace setup tools to setup projects so when you create when you use that p create command you say p create starter and then you give it a name and what it does is it creates a directory in the current working directory and that becomes your project, and literally in terms of setup tools, it is called a project, it is a sub-directory on this that has a setup.py in it which is a setup tool thing...
21:51 Yeah, it's basically a package, right?
21:53 That's right, there is- well, it's a little tricky, because you know, there is PyPi, the index server for packages, and you know, it is called the Python package index, but the thing that it serves are actually technically not packages, that's a word reserved for directories on this to have an 22:16 what PyPi should be called is PyDi Python distribution index. But no one- that ship has long sailed.
22:30 We are way past that, aren't we?
22:32 Right. So, yes, in common parlance, yeah, it is a package which means it can be turned in- technically it is a project until you run a setup py.test how will you package it up to put it somewhere so that it is installable through easy install and pip.
22:56 Right. ok.
22:57 But, inside of that thing, so it makes directory inside that directory is a setup.py that has a bunch of setup tools stuff in it, and for better worse I think that's the thing that people tend to trip over the most or that's you know, and it's- we tried to make it as sort of, we tried to explain this the best we can in the docs and put comments int he code and you know, the thing that gets run by the scaffolding so the people understand what is going on, but, you know, the state of Python packaging is still just kind of funky and I think it will be kind of funky forever.
23:35 And I think, one thing that- this is something you asked earlier about something that's between Flask and Pyramid- Flask doesn't do any of this, Flask says "Hey, open a file, start typing" I am sure there is some example projects you can get and stuff. But, and people- that is much easier. It is much easier to get started with, and you can actually do that with Pyramid, as well, you can open a file, start typing you don't need any of this package nonsense and everything. But, the thing is that what I found is that, you know, application is that grow beyond you know, a few views and whatever, tend the need some structure and I am not sure there is any purpose in not putting inside of it a project folder with the setup tools.
24:34 Right, and it lets you do cool stuff like say "Hey this website depends on these other packages" and it automatically pulls everything it needs to run and so it is not tricky and hidden deep down in some import statement.
24:47 Yeah, and you can run tests through the setup.py file if you have tests and you can create a package you know upload it to PyPy and it's just like any other package you can be your own package author.
25:05 Yeah, excellent. Ok, so I have gone to pip install Pyramid and then maybe I have done p create is it dash s like starter?
25:14 That's right...
25:15 And that will generate it and it is almost ready to run, but then I need to kind of somehow get that package like registered.
25:20 That's right. So this is- the thing that you create by running the p create command like I said is a project, and the way that you install the project, is by typing Python setup py either- my recommendation is typing python setup py develop
25:40 Yeah, that's what I have been using as well, because it leaves the files there on the disc the ones that you are working on are the ones that it runs from, as opposed to install which copies it to what it's like your site packages folder or something like that?
25:53 That's right, yeah, and when you type python setup py install it actually- you can then if you are curious you can change directories to your python site packages folder which is somewhere under your Python's lib directory. And, after you type Python setup.py install, you will see either a tarball or directory that represents your project, and alongside of all the other software you might have installed from third parties, it is just like any other thing but when you type Python setup.py develop, it doesn't put anything in your site packages and sort of if it needs any dependencies for better or worse it puts them in the same directory setup- I never quite understood that but it does that, and it also puts into your easy install that- there is a file in your I guess it is also in site packages
26:51 Yeah, I think it's like a sort of linked back it says Òhey look over for this .egg folder hereÓ rather than like in the site packages, it's not a sub folder but it external or something
27:00 Yeah, it is called like easy install that pth, and all this stuff is just like you know ancient you know stuff from setup tools it has just been passed down through the ages and the reason these things exist is pth files because they are consulted in appropriate time when Python starts and they are meant to- Python will look for them inside this like packages or inside of you know the I think Python calls them the dist folders, it is usually just called site packages. And we read these files, and these files are just meant to have just like directory names in them, more or less to say ok, this is when a Python starts I am going to add this to the sys path of this Python interpreter. But it turned out that someone has made a mistake and you could actually put Python code in there, so if you look inside of the easy install.pth thing Phillip Jenvey took serious advantage of that you know when he wrote setup tools and it's got some Python in there that does some fun stuff, I think it sets up package resources or something.
28:20 Yeah, I know that's pretty interesting. So I think we are basically there you have set up that py--develop and that all sort of registered my site with the Python implementation that I am using so Python 2 or Python 3, and then I just want to run it, so that's p serve and then you have any files at least one for the scaffold, one for the deployment or for dev or one for production, right?
28:49 That's right. And the scaffold the main difference between the two is that when you are on the development one it will install this piece of software called- well it will include this piece of software called the Pyramid debug toolbar which is pretty handy to use.
29:08 That Pyramid debug toolbar is super cool, you think of a debug tool are maybe it gives you a little log but after I looked in there like wow this really reaches down into a lot of areas, performance, SQLAlchemy queries, logging errors, request time of performance, what view template was selected, there's a lot of stuff in there.
29:28 There is and I mean, I think, I would like to take credit for most of that bat the original version of that was a 29:37 rip-off of something that was in Flask actually. And in tern, that thing that was in Flask was a bladen rip off of something that was in Django. They actually even had the same UI like they were the same thing
29:50 Yeah, for a while, that's cool. Yeah, I kind of thought they had some to Django I heard it somewhere.
29:56 Yeah yeah and so those guys, the original author of the Django thing I don't remember who it was but I remember the guy who did it for Flask his name is Matt Mentaligen I think, I'm sorry Matt if I am brutalizing your name, it was nicely done and I understood it you know, just basically just stole it, and in a couple of days I had it going. Since then though, since that sort of iteration of that project, I no longer sort of did much on it another people picked it up and since then it's gotten I think it's gotten way better and it's sort of outgrown and it's derived of nature, it's different than the other ones now it actually keeps track of pass requests and you can go back and look at you know, headers of some number of requests, it's really neat.
30:53 Yeah, I was really blown away to see how much it was behind that little toolbar, it's cool. So what are the things that drew me to Pyramid was its sort of full support for Python 3 whereas at the time when I was getting started with this I looked at Flask and I was kind of like "Well it may run on Pyramid 3, not really supported" and some of the other web frameworks and so I think your support for Python 3 is really a nice sort of contribution towards trying to move everything forward.
31:22 Well, actually, the credit for that probably belongs to mostly to PSF Python Software Foundation, because, you know, Pyramid is pretty small, it's not very big, it's at this point maybe 15, 20 000 lines, it's not that big anyway, but, it has dependencies, it has a dependency on a package called "WebOb" which was also written by the super productive Ian Bicking who is we have lost to Javascript at this point but Web Ob is this implementation of sort of HTP request response library and it was kind of setting on maintain because Ian went to work from Mozilla, and he was doing Javascript stuff and just it wasn't in his interest any more to keep it up, so we sort of ended up just. That's just not true, I shouldn't have said that, another guy Sergej took it for a while and he did a great job sort of shepherding along and then he moved on, maybe he got another job where it wasn't so important anymore, whatever, and so it kind of wound up in the Pylon's products and now we are the owners of WebOb and that was you know, that was Python 2 only library in 2010 I guess, 2011, And, so that was the first thing we had to [pour?] 33:00 in order to start 33:02 Pyramid.
33:03 Right, because if you are you going to 33:06 it you have got to start at the bottom and everything that builds on also has to move on over, right?
33:08 That's right.
33:11 It's not just your 20 000 lines of code it's 20 000 lines plus foundation.
33:15 Yes, yeah. So I was wining heavily about that because I mean it's, I think for better or worse you want to sort of move along with the language you know, you want to be where the language is going to be, but economically it is really difficult to think about doing that, you know, you have to spend sometimes weeks to- especially if the thing doesn't have good test coverage because when you port something to Python 3 it's not really porting it to Python 3 it's actually making run on both Python 2 and Python 3 so you kind of straddling
34:04 Right, that's even more interesting problem because, you know...
34:06 Yeah, so and...
34:08 sort of polyfill all that stuff back in
34:10 Yeah yeah that's a great word, yeah, we saw almost exactly the same thing. So I was whining about having to do that and I was going to do it anyway but I think either Alex Gaynor or Nick Coghlan called me and said "look you know the psf has grants for this, this kind of stuff" and I was like "really?" and I asked them, I applied for grant and they gave it to me and it was... It really wouldn't matter how much it was, just some of that money I could say went towards that and I could be paid, I think they gave us $3000 or something
34:52 That's cool, what the PSF is doing lately is really cool, it seem to be doing a lot to support the community, so... And kind of guided in sort of these little gentle pushes.
35:04 Yeah, and I really appreciated it and I still from time to time whine about that stuff, because still there, you know, I am dragging along ten years of Python history, you know, I mean at this point I've just had the sort of like drop some like drop some friends, you know, sorry I can't talk to you anymore, you know, I can't think about this, I can't think about pouring 35:28 whatever but But I think it's getting a lot better and I think with these frameworks the web is pretty much ok on Python 3. If you are going to start a new project, I don't think you are going to have a lot too many problems on Python 3
35:49 Yeah, a lot of the cloud providers are starting supported, last year I believe Azure had no option for Python 3 but now they do. Python Anywhere has some fantastic support. And it is starting to get easier, and then you know, with the advent of docker you have a lot more control over your runtime, you can kind of drop Python 3 in there and you don't have to ask permission, that's your little container, do what you want.
36:13 Yeah and so I think just from the both standpoint of deployment like you just said and the standpoint of development where you need some library, at this point, you are probably going to run into one thing that is only running on Python 2 and you are going to gnash your teeth but maybe not, you know, maybe not if it is really vanilla and you don't need some excel import libraries. But people need that stuff, you know, people it's a long tail of stuff that people often need when they build stuff. And they often run into problems, so and all that stuff hasn't quite caught up yet but it is getting better so I don't think there is any reason at this point in the web world anyway to think about starting a new project with Python 2.
37:05 So, speaking of sort of Python 3 and looking towards the future and things moving ahead, you know, what is your sort of view of the future of web frameworks in Python?
37:14 I think they are going to probably become a lot less interesting, you know, I think, of the frameworks that have it probably most right at this point it's probably Bottle Flask Pyramid sort of frameworks that are pretty small and do not do a lot and are just places to hang code that gets cold and return some JSON more or less, I think that is probably going to be the major way we build applications in all the narrowly stuff beyond the client end, of course there is always going to be server side code that's running, but I think we will see a lot less of templating languages in particular.
37:57 More JSON less HTML and lighter weight smaller building blocks, something like that?
38:03 The applications that people want to build are really for phones, people want to build applications that run on many platforms I mean they still have to run on desktop and everything, but if you will notice some very big sites now are a very clearly sort of optimized well, not optimized but you know, they are what's the word- responsive design for both phones, tablets and a desktop you know like if you go to Orbits for example, orbits.com, it looks terrible on a desktop, it's awful
38:38 But it looks good on the phone?
38:41 Yeah, it used to be much easier to use, but really what people want is just a way to maintain the stuff so that they don't have to write you know, the desktop app, the desktop web application and the phone web application and everything, and there are so many more phones these days than there are computers that they already know how to do UI they have a UI layer built into them and they don't need HTML it's nice to be able to use it if you have a web view on the phone or whatever. So I think that, anyway, I'll cut that short but I think that's the way it is going to go.
39:18 Ok, yeah, that's very interesting, and there is you see these sort of hosting services popping up to be just the backend for phones, and that could be from a cord of ACML base phone network, it could be like a swift IOS app, that's, I am thinking of like Asia mobile services or Parse which was acquired by Facebook, and some of these guys are really doing interesting stuff.
39:38 Can you speak about any of like world known deployments other than of course talkpythontome.com which I am sure is ranking up there but...
39:46 I have seen that on a lexus, I think that's like number three,
39:51 It's probably , yeah, 3 or 2 I haven't checked today.
39:55 I can, actually, I didn't know, it was really funny, I was reading Reddit and I saw an article about Yelp infrastructure. And I was like "Oh, that's, I'll go check that, that sounds interesting." They were talking about how they had deployed a service or unite architecture infrastructure. And so I read and half way through it they said all our server backend server stuff is built on Pyramid, I was like "what! I had no idea"
40:26 That's pretty fantastic.
40:27 Yeah, it was great, so when you go to Yelp, if that article is true, I haven't spoken to anybody at Yelp I have no idea how accurate it is but I think all that stuff run on Pyramid, there is a number of others sort of far or less known sites that I developed if you go to environmentalhealthsciences.org, that's Pyramid site, if you go to karlproject.org that's a Pyramid site, we worked on these projects, and I think some other folks have you know- ooo Survey Monkey,
41:07 Oh yes, Survey Monkey, that's cool, Survey Monkey is a local company in Portland, so I know these guys.
41:14 Oh, that's right, yeah, they have an office
41:18 I don't know where their headquarters is I am not sure where their headquarters is, I just know as walking around town "Oh wait, they are here in Portland, that's interesting."
41:23 Yeah, I think, I've been to their San Francisco office which is beautiful, sorry, Palo Alto office which is beautiful, and I know a lot of those guys there. Some of cars.com is Pyramid, I know a guy there who is a fantastic supporter of Pyramid- hello Michael, Michael Ryabushkin, also known as Good Will he organizes a lot of stuff, most recently he got cars.com to sponsor the graphics and display art work and stuff, he has done it for like 3 years in a row.
42:08 Oh that's fantastic.
42:10 And he is a great supporter f Pyramid, he does a great job. Over Christmas time he sent me a monitor in the mail, it just showed up.
42:19 Wow, that's really generous.
42:22 Yeah, so I am really lucky that I have people like him around me, and other people have done the same, I had people send me several hundred dollars just out of the blue,
42:33 Like thanks for building this great framework our company runs on it so...
42:38 Yeah, that's really humbling you know. I have the same about cars.com I think some of that runs on it and I am sure there is other people, I'm sure I'm forgetting somebody.
42:47 Yeah, I'm sure, there is a whole bunch of sites that don't talk about what their infrastructure is, that are probably...
42:53 Yeah, I think for sure there is still more Django sites you know Py profile Django sites I think
43:00 Yeah, I'm sure there are. So, you people who are out there listening if you got like a cool well known site maybe you should just email Chris and say "hey Chris, you know, such and such runs on Pyramid as well"
43:10 And I will forget about that like I forgot about all the other ones as well, I can forget for you all day long
43:17 Perfect. All right, well I think that, that's a lot of interesting stuff about Pyramid; is there anything else you would like to kind of add?
43:25 Yes, I would, actually. I am the originator of- I started the first file in the project and all that stuff but over the last year or so, I have had to go and work, you know, I've had work to do and I took some time off, and I sort of didn't do as much on Pyramid or any of the other Pylon's projects. There are a group of guys Michael Meracle is- I should say this, there is a Pyramid irc channel that if you are interested in Pyramid you should probably get into, I am MCDONC, and the guy Michael Meracle who is also a core maintainer his name is RADIO, and there is a guy who now is kind of, I think we tricked him into maintaining WebOb his name is Burojir, I am murdering his name...
44:33 That's great, so there are some people coming along to pick up the effort and continue forward...
44:37 Yes exactly, and really I have contributed far less than these people, and there are other guys there is a bunch of guys in there that really picked up the slack when I sort of did a little bit of walk about, I am getting back and doing it now, but these guys have really been caring the water for at least a year now.
45:00 Ok, do you guys, do you have any future releases coming up that you guys have like a road map for or talk about, or is that still...
45:07 Yeah, I know, I think I am hoping as we record this it is April 6th, and Pycon starts on April 9th, maybe even earlier when I think about it...
45:19 Yeah maybe even April I think it's Wednesday even possibly, maybe people arrive on Wednesday I am not sure but it is definitely coming in fast
45:26 Yeah and I am sort of closing last issues now that I hope will have a release by Pycon Pyramid 1.6 which has bunch of new shiny features and the stuff so that should be good.
45:41 That's great, well by the time this comes out the people will, it will maybe be already out so that will be great, so go check out, look for Pyramid 1.6
45:52 Yes, definitely.
45:54 All right, is there any final person or thing you want to give a shot to someone you want to draw the listeners' attention to?
46:00 Well, if you are interested you should go to pylonsproject.org that is the main site for all the stuff and you will see Pyramid and you will see WebOb and bunch of other things listed on there and documentation and that's the place to go and visit the irc channel, and those are the places you can come and talk to us and make us laugh, and also I wanted to give you a shot because I think I am really happy that there is a new Python podcast I will listen to all the other episodes I will not listen to this one because I am terrified of hearing myself
46:38 Well, thank you so much, I really appreciate your kind words and the support has been really amazing like the amount of messages I got on Twitter saying thanks for creating a new Python podcast It's been really overwhelming, so that's great and I really appreciate it. Chris thank you for being on this show, this is really interesting, I am a big fan of Pyramid and I used it for couple of projects and I definitely recommend people check it out on your docs I thought you have some really nice sort of tutorial walkthroughs that are quite easy to get started with so well done on the docs as well. And Thanks for being on the show.
47:11 Thank you, I appreciate it Michael, thanks very much for having me.
47:13 Talk to you later.
47:15 Bye bye
47:15 This has been another episode of Talk Python To Me. Today's guest was Chris McDonough, thanks for being on the show Chris. Remember, you can find the links from the show at talkpythontome.com/episodes/show/3. And if you are feeling generous, please check out our Patreon campaign at patreon.com/mkennedy or work with your company to encourage them to sponsor an episode. This has been your host, Michael Kennedy. Thanks for listening. Smixx, take us out of here.
47:46 [music]