Projects

A no-nonsense web browser

I'm really excited about this one. Today, there really no web browsers which simply "browse". Firecrap takes ages to startup, has a lot of extensions which slow it down and is built on XUL which is massive bloatware. Why can't there be a simple web browser written in simple C/C++ that simply renders pages well? Well, there's links2 (with graphic mode) but it lacks SSL, CSS and Javascript support. Lack of tabbed browsing is another major downside. Gecko isn't the best layout engine. The Webkit engine derived from KHTML is, in many aspects, superior to Gecko with good clean code.

I have also noticed that browsers seldom focus on user's actual browsing experience. It's all about more bells-and-whistles that don't add to the browsing experience. Everyone has a list of sites that they visit frequently and sometimes the same pages over and over again. Existing solutions include the search bar with addable search engines, bookmarks, favourites and history. I've made a list of some ideas that can easily be implemented.

  • Firstly, I don't want a separate search bar. When I type something like :wp <searchterm>, it should search Wikipedia. At the same time, it shouldn't search for <searchterm> when I've already been to the <serachterm> article page before. It should directly go to the page I want.
  • I don't like the disorganised linear history database. I want a nice searchable database with number of visits to every site including time and even optional ranking systems. This can be implemented on an SQL server.
  • I don't like disorganised linear bookmarks. How many bookmarks can I really have? It becomes difficult to organise and search for bookmarks. del.icio.us provides a kind of a solution. Using a browser extension to interface with del.icio.us is a primitive solution. Why not maintain a querable SQL database again? If necessary, this databse can be periodically synced with the user's del.icio.us bookmarks.
  • History should be queriable on the basis of the content of the page and not on the title!

The calendar/ contact framework

Today, there are few solutions to put calendaring info into CalDav servers. A couple of them worth mentioning are RSCDS and Chandler (Cosmo). Chandler doesn't seem to be working with Evolution and RSCDS sort-of works with Evolution. What is the point of a CalDav server with events you can't retrieve and link to your email? There are serious problems with today's PIM software too. I can list out several examples of simple tasks that are just unachievable today:

  • Send new years' greetings to all my contacts wishing each one personally, customising the greeting for every group of contacts (I want to sign off with a different name for all contacts that are relatives)
  • Synchronise my contacts/ calendars across devices like phones, CalDav servers and gmail contact lists. This objective coincides with the goals of OpenSync.
  • A standard format to represent contacts. Every format has its limitations… some fields I want are missing. There are problems with interconversions from CSV to VCARD to LDIF. Applications using this data do not interpret them in a standard way (for example, I have a field called "birthday"… Not every email client will give me the option of putting the dates in the field on a calendar)
  • Printing out sheets of contacts in a way that is necessary. Example: I'm sending new years' greetings to everyone I know in the "greetings" group. Let's say I have a printer that can print on envelopes. How do I print out the names and addresses of all contacts in "greetings" on the envelopes one by one?
  • Freedom to create custom fields and define interactions with them. This is an extension of the previous point.
  • Calendaring experiences… storing photos and videos in flat files makes them un-queriable and un-indexable. And interface like flickr aims to solve this problem. However, getting it to interface with other applications is near impossible.

The project attempts to address all these problems at the same time while being modular by not creating an all-in-one mega mess application. Although implementation of every one of the points listed above might be beyond the scope of the project, the aim is to build a framework over which other application writers can add value. The project will involve working with libsyncml, OpenSync, OpenLDAP, CalDav among other things.

A couple of screen scrapes

I wrote out two python scripts with the help of Beautiful Soup: bus.py and weather.py. The first scrapes the MTC website to obtain the bus route information of a given bus number in Chennai. The second scrapes the BBC weather website to obtain weather information for a given city/location in the world. Some sample usage is listed below

python-logo.png
~/dev/py% ./bus.py 23C
Besant Nagar
Adyar Depot
Adyar B.S.
Eng.College
Saidapet
S.H.B.
D.M.S.
T.V.S
Anna Road P.O./Dams Road
Egmore
Dharmaprakash/Petrol Bunk
Kellys
Ayanavaram B.S.

~/dev/py% ./weather.py London
The following locations match your search expression:
1. http://www.bbc.co.uk/weather/5day.shtml?world=0453 | London
2. http://www.bbc.co.uk/weather/5day.shtml?world=6329 | London Ontario
Enter your choice: 2
Thursday | cloudy | 4 | -2
Friday | sunny | 7 | 4
Saturday | light rain | 9 | 9
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.