Mini Project: Lists
I’ve recently started working on a simple web-based application in the hopes of solving one of (my) life’s little problems, which I am currently referring to simply as “Lists”.
The Problem
Whenever I talk to others, I’m always hearing about new things– restaurants I should try, movies I should see, books to read, etc. If something something sounds interesting to me, I’d like to take note of it so that I can try it. Now, since I first started using a PDA (starting with the stately, Palm Vx, say, 7 years ago or so), I don’t really ever carry paper or (more importantly) a pen around with me anymore. This was not really ever a problem with a PDA, as I could simply add a note to my PDA, which could later be synced to my PC, saving the item for future reference. I’ve since given up the bulk of having to carry around a PDA and a cellphone in lieu of a smartphone (the svelte Audiovox SMT 5600/HTC Typhoon). While my smartphone satisfies 99% of my on-the-go needs, there is no built-in tool to easily manage my ever-growing list of interesting things to do/see/eat/etc. (though 3rd-party solutions may be available). On occasion, I have carried around a pen and a bit of paper to write down anything that I may want to remember, but I wouldn’t consider this the ideal solution because it 1) adds the extra step of having to re-input anything I write down into my computer to add to my main list, and 2) having to carry more stuff in my pocket kind of invalidates my reasoning for giving up the utility of a full-fledged PDA for the pocketability of a smartphone.
The Solution
Manage lists of items anytime, anywhere using any web-enabled device.
The Implementation
Using a simple web-based interface, Lists enables me to do the following:
- Create lists to manage different groups of items
- Add items to a list
- Mark when an item has been done
As this tool is meant to help me when I’m on the go, it needs to be easily accessible via my mobile phone. In addition to the above-mentioned functionality, the following are also a priority for a good mobile experience:
- Speedy code
- Optimized layout of content (i.e. nothing superfluous should take up space on the small screen of a mobile phone)
- Full functionality without requiring fancy client-side stuff (i.e. no ajax, etc.)
Admittedly, this is a very simple tool to create. So to make this more of an exercise, I’m working on making the whole system as dynamic as possible. The goal is to make it as intelligent as possible with as little manual code as possible. All database queries, relationships (i.e. between lists and items), displaying of content, etc. should be automatically determined based on a minimum of configuration information (database info, etc.).
After a few days of planning and writing the code, I’ve currently got the basic functionality working (add/edit/delete lists, add items to lists, edit/delete items, etc.). The next step is to further optimize the code so that it is even more intelligent.
How would this be used?
When I hear about a movie that sounds interesting, all I need to do is select my “Movies” list and add the movie to it (via my mobile phone or any other web-enabled device). Then, the next time I’m in the video store looking for a movie to watch, all I need to do is check the list with my mobile phone and I can see a selection of movies that I know that I’d like to see.
The same goes for finding a place to eat when we’re driving around trying to decide where we should go to eat. With a quick look at my “Restaurants” list, we’ve now got a list of potential places to check out.
Even simpler, Lists can be used to create a list of groceries to buy while I’m at home, and then use my phone to reference the list while I walk around the grocery store. Saves time and paper. Sounds good to me!
Other Thoughts
This is a simple project made mostly for me personally. But I do plan on adding multi-user functionality so that others can use it too. I also will most likely provide the source code for download on this site once I get to a point where I’d consider it fit for public consumption.