Grouplo (United Kingdom, Czech republic) is a business portal, "free trade zone" for P2P business. It offers to users a business space with offers, inquiries, auctions, tenders, group deals. Both business and personal accounts are able to sell, buy, manage contacts (CRM) and build business network. In Czech Republic it has been launched in August and already has 58 000 registered users on site.
I worked on this project for last 3 years.
I worked in a team of 5 members. My responsibility was to work on server-side code (Python and Django framework), full-text engine configuration (Sphinx search) and front-end part (JavaScript JQuery framework, AJAX, valid CSS and HTML).
* Service build to operate under heavy load.
* It is more than 130 tables in DBs.
* Data stored in 3 databases.
* Full text search uses Sphinx indexer engine (developed by Andrew Aksyonoff, Rambler RU).
* To reduce SQL server load used Memcached engine (developed by Brad Fitzpatrick)
* Regular tasks performed with CRON jobs are:
- messages dispatching
- XML feeds import with information about goods and services
- live news feeds import
In this project also used several 3rd party APIs:
* PayPal payments and Instant Payment Notifications
* Facebook users API and Facebook application FBML
* Google Maps API
* Google geocoder services
* YouTube videos
I would like to share my free-time project. It is just for fun.
This is web based simulation of OS/2 Warp 3.0 operating system. You can find sources at Google Code - os2online.
Web OS/2 Desktop heavily use AJAX requests and DOM manipulations to open programs and windows. In fact, it is mostly JavaScript application, and less Python and Django code in it.
A little screenshots:
Desktop with several windows on it.
And internet browser from IBM - "Web Explorer" (it is 1994 guys).
Live instalation can be accessed here - os2.in
Feedback and code reviews are welcome.
Web 3.0 is near. It's only waiting on new technology. Technology which will turn on 1-click user experience. I mean more ease to share personal information, events, ideas etc. This one will utilize voice control to publish text-based information, camera (mounted near eyes) to share pictures, geolocation - to tell friends current position. Most of this gives to us smartphones today, can answer you. Yeah, I agree. But it is still not easy, not handy, not "on the fly".
When you want to post you should to take your iDevice, open software, tap message and then send it (this is the easiest way now, in harder mode you should look for wi-fi, login, etc). It's easir now to save idea in paper then in web, really :) Share photos, etc are mostly same. You cann't tell your camera "take me this pretty girl and place in my Facebook page", isn't it?
This is task for hardware to be ready for Web 3. Why hardware, asks you. I think, current software is ready. We have instruments to develop, open standarts to present information. HTML 5 is text, photoes, video and social ready. It is widely used already. Now time is similair to pre-Web 2: it have had people and software ready and only waited on technology to make it. In fact high-speed nets and cheap Mb-s done Web 2.0
"Like" button and Comments are great ones. And there are a lot of other useful plugins to power your site with "social" behaviour. It is easy to install and use. Easy for your visitors to use it. And easy for you to receive back-links and visitors from Facebook.
Plugins homepage:
http://developers.facebook.com/plugins
Good news. I found wonderful article "Functional Programming in Python" (David Mertz). I have read it and found an answer for myself - "What's this functional programming is like?".
Some days ago we discussed with a friend (he use Delphi) this topic. And for me was hard to explain him, what Erlang is for. And what is functional style. Now I can :)
Today I opened for myself world of Erlang. Wrote "Hello world!" application; looked at Nitrogen web-framework and CouchDB database.
It is fun to learn something new. This brings to life some sort of unexpected. Like mountain trip or walking in the forest without compass :) New knowledge make my brain work. Signals moves from neuron to neuron. This is interesting at all.
Great tool from Google - Google on-line translator has also AJAX interface.
It allow you to use all it's capabilities in your software development. This means, that we can easily use 52 language-to-language translation for free :)
Here is a little python module, I used in elviv.com to create English descriptions for places on the city map. Module is alailable for free use.
http://www.djangosnippets.org/snippets/1934/
E-Booking.com site is the collection of luxury hotels around the world. It brings to visitors information about most popular destinations; events and things to see in selected hotel area; reservation and booking engine; travel planner and blogging about travel experience.
Front end (what visitors see):
* hotels search by different criterias
* information about events, museums, disco etc in the area of resort
* reservation enqueries for rooms and packages
* search for available rooms and book it (pay with VISA, MC. Secure environment)
* travel planner (control panel of traveler)
* travel blogging: tell other travelers about own experience
Manager area:
* rich control panel bring tools to manage hotels, accommodations, amenities, restaurants, things to see and activities
* social (Twitter, Facebook) integration
* reservation enqueries and bookings workbenches
* management of rates for rooms for different seasons
* billing (wire payments, PayPal payments)
Superuser area:
* management of hotel managers, hotels etc
* invitation of new members
* billing and membership
* SEO: keywords, META data
* newsletter
Advertiser area:
* ads campaigns control panel
* analytics (shows, clicks, keywords, targets)
* restaurants and attractions (disco, clubs etc) advertisement
* billing
Site is designed to work on heavy load. E-Booking collection now is over 8 000 of hotels and grows. Also there are many other objects in database: it consists of over 100 tables.


In current project we have a task to produce PDF documents. This is various 1-page reports with a piece of textual information. The thing, common for all this documents: they contain only text. In general we take some text from database, produce PDF and output it to user.
Django and Python have a rich bucket of powerful tools to produce PDFs: Reportlab, PDFlib, Pisa HTML2PDF, forge_fdf in Python etc. This tools allow to create complex PDF documents with images and forms.
But we found an easier way that meets our task. My friend has shown me a link with code snippet of "pyText2Pdf". This is a command-line tool to convert plain text into PDF files. It is really easy tool. The surprise - it's fully written in Python! I have done some modifications and it become usable with Django.
The way of producing PDF is quite simple: you take a text and pyText2Pdf returns you file-like object with PDF data. Here is an example:
import StringIO
input_stream = StringIO.StringIO(text)
result = StringIO.StringIO()
pdfclass = pyText2Pdf(input_stream, result, "PDF title")
pdfclass.Convert()
response = HttpResponse(result.getvalue(), mimetype="application/pdf")
response['Content-Disposition'] = 'attachment; filename=pdf_report.pdf'
return response
-------------------------------------
pyText2Pdf on Django Snippets web-site: http://www.djangosnippets.org/snippets/1778/
Backup your data right now. It may happen, that tomorrow your laptop doesn’t boot and this night of work will be lost.
What an easy thing – zip and save 2nd copy of data elsewhere. I know it, I have had server crash last Tuesday and lost all my work from previous night. So why I worked last night? May be better to sleep more. No. Better – to create a backup.
Add backup job to scheduler, CRON, etc. Write, google ask friends for a script. Don’t wait for disaster.