Posterous theme by Cory Watilo

Microsoft, Google beat you to it.

Google recently released a plug-in for Microsoft Office that lets you sync your files with google docs, essentially enabling more than once person to edit a file by just using a Microsoft Office product. It does a pretty good job when something has been overwritten as well. You can choose between your or their edits or even look up previous revisions. Microsoft has been working on their new on the cloud Office for a while, but I have not yet seen any of it. The google plug-in which is  completely free can be used with older versions of Office. Although I like the idea of having all my files on the cloud, I would like the option to have files locally on my computer. Moreover, how much can we trust the servers to not get hacked or leak our information?

I havn't had the chance to test it out yet since I use open-office, but it sounds like a great plug-in and definitely a must have.

Heres the techcrunch article on the google pulgin http://techcrunch.com/2010/11/22/google-launches-plugin-that-fuses-microsoft-office-with-google-docs/

Need for simple web frameworks

I have done a decent amount of web development and from the little experience I do have, I realize how a web framework like Django or Pylons makes a web developers job easier. However, most the frameworks out there are either too bloated or just not right for most web sites. Web frameworks should make developers jobs easier not harder.

Django

My first big web development experience was working for a small start-up. Most of the code was already written and I had joined pretty late, but knowing that they had chosen a python web framework(Django) I felt it should be easy to catch up and learn the frame work. The start-up never took off, but I did learn a great deal about web development and the process that goes behind it. I am not entirely sure if my "hatred" for Django stems from the way their code was implemented but one of things that stood out to me when I read through the tutorials was the amount of unnecessary steps required to achieve something. I will be honest and say that web design or GUI stuff is not my strength. I love coding in C and python but most of which is the logic or brains behind an application. Djangos MVC pattern threw me off a bit and I felt confused by it. It might have been my ADD, but I just couldn't concentrate on all the separated logic. Soon though, I learnt that not only is MVC great, but if done right can make life much easier. I must mention though that the help of Django on the interwebs is great and so its not too much of a hassle to figure out what the problem is. Then again, somethings could be avoided from the start.

PHP and OOP

My next web development job was for another start-up company (which I am still working for) and the code was to be written in PHP. I had never written code in PHP but to my surprise and relief it was very easy to pick up. Now, that doesn't mean that it is easy to write good code with it. Oh no, not at all. I think the fact that it is so easy to write PHP is what makes it easy to have really ugly, unmaintainable code. It was my good fortune to have a good friend of mine work on this project with me. He had done some PHP programming before and knew of the downfalls. He is also a big fan of OOP and insisted we use OOP as much as possible. He did a hell of a job implementing the base OOP design and made my job much easier. It took me some while to get used to it, since all the code and tutorials I had seen online on PHP were straight out scripts and inlined PHP code with html. The first month I wrote bad code, it started to get worse as time progressed and I had to add more functionality. Finally I reached a point where I just had to re-factor everything. Thats when the OOP awesomeness won me over. On seeing the simple logic and code that my friend had written and how I was able to make the code much cleaner and easier to maintain, I was converted. Later on I realized that most web sites use something of this sort and that most web frameworks use an MVC pattern, which the OOP approach we had taken was loosely based around.

WebPy

I had worked on other small web projects, mostly for competitions. I had always worked on either the logic or the basic front-end design and implementation. These projects used WebPy, a very simple and basic framework which is a thin wrapper around python. I love the fact that it is really easy to use and does not enforce strict MVC type patterns like Django. However, for big projects, it isn't really the best solution. But, this is what I was looking for. Something easy and simple to use. Something that just works without me having to change a thousand different files and settings. Even though I havn't worked a lot with WebPy I feel that its worth mentioning.

Pylons - This is what a web framework should be like

I have been using Pylons for around 2 weeks now and sure there was a learning curve at first but after I had followed through a tutorial to set up a basic website, I was amazed how easy it was to use. It also uses the MVC pattern which I have not been a great fan of before, but Pylons makes it really easy to use. I do not have much to say about this part since Pylons does a great job simplifying things, at least compared to Django. I understand how such a layout makes it much easier to write, reuse and maintain code. If you havn't tried Pylons yet, you should. Its worth it. The tutorial I used was a little outdated and the online help for Pylons isnt great but I was able to find and fix all the issues I had without struggling. I also love the fact that it comes with unit testing so I can test by website functionality. I am sure Django has it too, but then again, I never got to that part. 

One of the python modules that Pylons comes makes it really easy to interface with databases. I am using the filebase Sqlite for the project and am able to use SQLAlchemy to do all the dirty work for me. It manages to abstract SQL calls so that I don't have to write the same code every time or use my own implementation of an abstraction for making SQL calls. It sets up the calls for the different databases it supports so if you decide to change your DBMS, you do not have to change your Database calls. One of the best features about Pylons is that it lets you package the entire application into a python egg. It sets up everything for you including all the dependencies. For anyone using the application, the python egg will install all the required dependencies. I am not sure how you would go about doing this in Django or other frameworks, but I am sure it possible to do.

I know a lot of people who love Django and I am sure that it is a great web framework but I just I can't understand why it is so bloated and hard to understand. Perhaps it needs to be rewritten and made simpler. Maybe I am just wrong and I don't really realize how or why Django is great. Regardless, I feel that a good web framework should be like Pylons; easy, simple, functional. It should not slow down your work, but make it easier and faster.