Thursday, May 8, 2008

Surchur.com - What's behind the blue ui

PART 1.

...best topics to use Surchur.com for?

Surchur is a great source for the latest and the greatest on topics that are in the now. For example, want to learn the latest about your favorite pop star. Type their name into Surchur and you'll be amazed at all of the nitty gritty you'll find. Surchur.com isn't so good for that narrow, topical Surch that you might make on one of those big leviathan search engines. For example, type in "toby's cinnamon spice peach cobbler" into Surchur.com and we're pretty sure you'll be disappointed.

This description is for the users of our service/site called surchur.com, but for developers this post will offer some information beside the usual FAQ's from the site; I will try to cover some aspects of the PHP architecture, methodologies and are related informations about this cool application.

At the start of the project we didn't considered Symfony for the project because it was really simple in terms of specifications and features to offer, don't get me wrong, there were plenty of features and more to come in the future but the whole application development didn't cried for something big.

So far so good, but after some while additions of features required a lot of code changes at all levels(the model had to be modified, the user interface was in a continous change and it was predicted to be changed all the time, urls had to be friendly and action oriented, etc).
Basically there was too much changes to make every day because we weren't using something powerful enough to support easy code changes and on the fly specifications changes.

This was the turning point when we decided that Symfony is the answers to all our problems: - rapid development after setting up the right structure
- easy to change existing functionalities without compromising existing ones
- a community where we could find some real answers to real problems
- scalability
- extensibility, etc.

More clearly Symfony offered:
- clean URLs, a great feature that everybody likes (both humans and search engines)
- a flexible way to change our UI and add gradually more features
- multi level caching of pages/information and very flexible way to control the life time of cached pages
- a very structured and organized code
- seamless AJAX integration
- scalability for the future

Most of these features were enabled by default when the development started, so all I had to concentrate on was the implementation of the features and expand the current features.

The user interface was created to support a lot changes in the future and having in mind that we will need to be able to change stuff like color-schemes(CSS) and other visual elements(HTML).
The clear separation of code following the MVC pattern made possible the existence of separate layers with separate functionalities and the expansion of each without affecting the other layers.

Also the information sources(news sites, social network sites, blogs, etc) that are being offered were implemented in very dynamic way and using generic code, so the integration of new sources is seamless and very fast. This is very powerful because we can expand the site in a very smart way not having to make changes at other layers and functionalities, new implementations are very simple and I consider that is more a routine rather than programming.

The caching system uses all the possible features offered by Symfony... it's hard to mention and cover all of them, so I would rather suggest to follow this symfony tutorial about caching and read more right at the source; the bottom line is that we are very fast because symfony made this possible in a very smart way.


End of Part 1.













No comments: