Posted by Travis
Thu, 02 Feb 2006 02:33:00 GMT
Ian Bicking, author of Python Paste and SQLObject, has written an article on writing your own web framework. In the introduction to the article he states:
This isn’t to encourage everyone to go off and make their own framework (though honestly I wouldn’t mind).
Since this goes along with my previous post on using an existing web framework I thought I would add some additional thoughts. There seems to be quite a bit of buzz around web frameworks lately, with a new one being released at what seems like the rate of one every other day. Do we really need all these frameworks? Personally I don’t think it matters. Some people say that there are too many Python web frameworks already and people should focus their efforts on improving the existing ones. While I can see this point I also believe that there comes benefits with most new framework, regardless whether that framework is innovative, derivative, or a blind copy of another frameworks. Everyone thinks a little bit differently, and each new framework has the potential to give a little better insight on the problem domain.
And yet in the midst of all the buzz about frameworks, people appear to forget the applications. I agree with Peter Hunt about how Python wins on the web, and it’s really simple, write great web applications. Like he says:
Recently, it seems like everyone’s been focused upon creating The One Framework – the Ruby on Rails of Python.
Everyone is concerned with web frameworks, yet not many people seem to be talking about great web applications. Let’s not forget that the both Ruby on Rails and Django were not created as frameworks. They were built as the result of writing real world web applications that work.
I don’t believe frameworks are evil. Nor do I think everyone should write there own framework. I do believe that you should use what is right for your application. If Rails (or Django, Camping, or web.py) works for your application use it, otherwise don’t, but what is important is the application not the framework. While the framework is important, it is my opinion that it shouldn’t overshadow the application.
However, I do also agree with Kevin Dangoor about frameworks being important as well. Now while that may sound a bit hypocritical after I’ve been saying it’s acceptable to write your own framework. But I really do believe frameworks can be useful, as long as they do what they should do and that is increase development speed. I’m acceptable of anything that will increase my productivity and the ability to release an application faster. However, when the framework starts to “get in the way” that’s when it’s time to consider an alternative.
After all that rambling I can honestly state that I believe in two things. One, if you’re doing something excellent then continue to do so whether that’s writing a web framework or a web application. And two, both the Python and Ruby communities can learn from each other, that is acceptable and part of the open source movement. While the many Python frameworks have been inspired by Rails, so have things written in Ruby been inspired by Python products, such as Liquid, a template engine that can plugin to Rails, that was inspired by Django templates. Having an “us versus them” attitude is pointless and goes against the reason that most of us use, develop, and contribute to open source software.
Posted by Travis
Sat, 28 Jan 2006 22:09:00 GMT
I’ve always been interested with web development. There is something about developing and deploying a web application that gives me a sense of satisfaction that I don’t seem to get from ‘normal’ application development. Before 2004 most of my web development experience was in one of the languages for the masses, mostly C#. However, since I don’t like the excruciating pain that comes with using these languages when it came to writing my own web software a few years ago I looked for solutions in other languages. Since my preferred language for hacking is Python I began to search the tangled jungle that makes up the Python web framework landscape. I almost instantly found CherryPy. This was before Django, TurboGears, and web.py, and WSGI was still very young and not as prevalent as it is now. I liked, and still like, CherrPy’s approach to web development. It was clean and simple. I began to experiment with CherrPy, and I very much enjoyed the experience. However I felt that ‘something’ was missing. I wasn’t entirely sure what this ‘something’ was, I didn’t believe it was anything lacking in CherryPy and assumed it must have been my lack of experience with the framework.
Fast forward to last summer, the web framework juggernaut known as Ruby on Rails was making loud, boisterous claims of improving developer productivity while making programming fun as well. Since I was interested in web development and Ruby has some interesting ideas in it, I ordered the beta copy of Agile Web Development with Rails and began to explore this wildly popular framework. At first, like my experience with CherryPy, I enjoyed programming in Rails. However, again I felt like there was ‘something’ missing. And once again I didn’t believe it was anything to do with Rails. And I repeated this experience with Django and TurboGears.
This has bothered me, because I think very highly of all four frameworks I’ve mentioned. Anyone looking to develop a web application in either Python or Ruby would be remiss to not look at these. Yet what is it that has bothered me about them? I think I have finally figured out what it is. It has nothing to do with the frameworks themselves, so much as it was the way I was using the frameworks. Put another way, when using a framework you have to accept the philosophies of that frameworks author/community. For some applications and developers this might not be a bad thing, but for others it could be quite devastating. And as such, this is why there will most likely not be a ‘one size fits all’ web framework.
And finally after all that I’ve reached my point. Is not using an existing framework to write a new application an absolute unforgivable sin? If I were to write a web application from scratch without using a specific framework, would that automatically doom it to failure? It wasn’t until I read David’s blog entry about reuse being overrated that I began to realize that the answer to these questions can be no in certain cases. There will be the case where using an existing framework will be so beneficial, both in terms of features gained and development time saved, that not using it would be gross negligence. However, sometimes using an existing framework gains little or no benefits for the target application. In these cases why use the framework at all?
Now I’m not condoning the constant reinvention of the wheel. What I am condoning is basically using the right tool for the job. Don’t create a web application using Rails or Django just for the sake of using those frameworks or being able to say this is a ‘Rails app’. Like everything, if the benefits outweigh the potential disadvantages then use the framework otherwise look somewhere else and don’t be afraid to ‘reinvent the wheel’ when necessary.
Posted by Travis
Thu, 26 Jan 2006 03:12:00 GMT
I’ve changed my Typo theme to use one of the winners of the Typo Theme Contest. I chose Inkling because I like the bright color that it uses. I’m in the process of creating my own theme to further distinguish my blog from the many other Typo blogs out there. However, until I’ve finished my theme, Inkling will suffice to make my blog look less like an ‘out of the box’ Typo blog.
Posted by Travis
Tue, 24 Jan 2006 18:08:00 GMT
I’ve been absent from my blog for quite some time. Not sure why I haven’t felt like writing about life over the past few months. However, lately I’ve been feeling the urge to express my thoughts on various many subjects. So, once again, I’m going to try to get back in the groove of writing again.
Posted by Travis
Mon, 03 Oct 2005 02:57:00 GMT
Being the videogame fanatic that I am, I’ve already preordered my Xbox 360 from Gamestop. While Electronics Boutique has sold out of their launch quantities, Gamestop still has some available. For those that are independently wealthy there is The Omega, for 2 grand you get an Xbox 360, 20 games, 4 wireless controllers, and several other goodies. And for those who really have too much cash they can get The Omega with a Dell Plasma TV, which bundles in a 42 inch Dell Plasma TV. But since I’m not independently wealthy, I guess I’ll just have to “settle” for the Gold bundle.
Posted by Travis
Sun, 02 Oct 2005 03:31:00 GMT
Don Box wrote an article for the October 2005 issue of MSDN Magazine called Scheme Is Love. In it he first draws a comparison between the implementation of anonymous methods in both Scheme and C#. And while the Scheme way is much more concise than the C# way, they both accomplish the same thing. They also both form lexical closures that capture the enclosing scope variables for use in the newly created anonymous function. However the most interesting thing in the article isn’t that both C# and Scheme have closures or anonymous methods, it’s what he says in the rest of the article. The second half of the article hints at a future direction of C# that is much more intriguing. I personally like the part of the article where he says (notice the bold emphasis):
The difference between code and data is highly overrated.
This has been an idea in Lisp pretty much since it’s inception in the late 1950s, i.e. code and data are the same thing. In Lisp dialects the difference between code and data is almost nonexistent. You can write code that will manipulate code just like it’s data which leads to the ability to do very interesting things, but that is an entry for another day. At the end of the article Don Box has this to say:
This melding of code and data is central to all dialects of Lisp, and is fundamental to the way Microsoft is integrating multiple expression languages (most notably SQL) in future versions of the Microsoft® .NET Framework.
I suspect that he is most obviously talking about the recently announced Microsoft LINQ Project. However, maybe he’s alluding to more than that, perhaps Microsoft has more in store that will make C# and .Net more similar to Scheme. It appears that mainstream languages (i.e. the “language for the masses”) are starting to include more features from the “hacker” languages such as Python, Ruby, and Lisp (i.e. the “languages for smart people”). While I don’t think we will be seeing a Microsoft branded version of Common Lisp or Scheme being released anytime soon, if ever, it is interesting to watch the language evolve. It’s an example of what Paul Graham says in his essay Revenge of the Nerds:
Lisp and Fortran were the trunks of two separate evolutionary trees, one rooted in math and one rooted in machine architecture. These two trees have been converging ever since. Lisp started out powerful, and over the next twenty years got fast. So-called mainstream languages started out fast, and over the next forty years gradually got more powerful, until now the most advanced of them are fairly close to Lisp. Close, but they are still missing a few things….
The other thing I find amusing is that after Don Box, an individual who works for Microsoft and has written several books about Microsoft technologies, wrote an article about Scheme he was bombarded with questions about the language. I guess one way to bring interest to a language that’s been around for decades is to have a prominent Microsoft employee write an article about it in a Microsoft publication.
Posted by Travis
Sun, 02 Oct 2005 01:06:00 GMT
I’ve added a feed of my links from del.icio.us on the sidebar. In all my wanderings around the Internet I find many interesting sites that I would like to keep track of. Thanks to del.icio.us I can do just that. Hopefully with the sidebar addition to my blog it will encourage me to us it more than I have in the past.
Posted by Travis
Mon, 19 Sep 2005 22:19:00 GMT
I have finished adding categories to all the posts on the site. I was going to add tags to the all the posts as well, however I’ve decided to wait for awhile before doing that. I’m trying to keep the number of categories down to as few as possible. I have a general catchall in the maniacal musings category. This is where I put all the odds and ends I ramble about that don’t really have a good category. Eventually I hope to use tags to differentiate the posts in all the categories from each other. However until then the current set of categories and the very good live searching will have to do.
Posted by Travis
Mon, 19 Sep 2005 22:07:00 GMT
While looking over the options for Typo I noticed a place where I could enter the latitude and longitude for my website, referring to GeoURL. Curious I went to GeoURLs web site to read about this “feature”. GeoURL is billed as a location to URL reverse directory. The idea being that someone could find the websites about places near them or websites authored by people near them.
At first glance this is a very intriguing concept with many interesting possibilities. However the thought that someone could find my website and then be able to use something like Google Maps or TerraServer to view arial pictures of my house is a little eery. Or that they could use a GPS to direct them to my driveway. Maybe this is just my paranoia speaking, but that’s just a giving out just a little more information than I’m comfortable with.
However the concept as a whole has some very cool possibilities. Imagine while on a business trip somewhere you could use the service to find web sites about places in the vicinity or read the blogs of the locals. But I don’t think the “coolness” factor doesn’t really outweigh the “scare” factor just yet. At least not for my it doesn’t.
Posted by Travis
Sun, 18 Sep 2005 18:03:00 GMT
Over the next few days I’ll be categorizing all the previous posts that I imported from my old blog. After that I will be tagging all the previous posts as well. While to most the differences between tags and categories is small, the difference for me is that tags are more granular. All my posts will have one and only one general category, and then I’ll use tags to provide more granular detail. For example a post may generally be about computer programming, but specifically talk about Ruby, Python, and web development.