Software for the computer

Graphics libraries

Java (swing and awt)

Does java have a way we can interface with a bluetooth device on the computer so we can talk via bluetooth to the device?

  • Pros
    • Portable. Theoretically it should be able to be ported from windows to linux to mac with little or changes
    • The Java standard library is very large and contains a lot of useful classes
    • Most computers have Java nowadays so the user would not need to install extra libraries beyond our app
    • Includes libraries for input/output in addition to just graphics
    • JUnit for testing
  • Cons
    • Only one member of our group has used swing and awt before
    • You can't easily write device drivers in Java so if our app needs drivers to communicate with the device, it may increase the difficulty of writing the app
    • It doesn't package as easily into an executable file (You can package in executable jars, etc)


  • Pros
    • If I remember correctly, it is somewhat portable across windows, linux, and mac
    • It is C/C++ which our group is more familiar with and can integrate better with device drivers, etc if we need to write any
    • Includes libraries for input/output in addition to just graphics
  • Cons
    • I don't think it is as portable as Java


  • Pros
    • Lots of support for it on windows
    • Includes libraries for input/output in addition to just graphics
  • Cons
    • The app would not be portable and you could only use it on windows


  • Pros
    • I believe OpenGL is supported on most mainstream operating systems so the OpenGL specific code would be pretty portable
  • Cons
    • Other parts of the program may or may not be as portable

Serial Communication



  • We all know how to do this on linux in C++. I'm sure windows is going to be easy once we read up the Win32 API on accessing serial ports. It should be straight forward with the bits and bytes, but is not cross platform compatible in any way — we need a compatibility layer built into our core (which I am not averse to doing).

Calendar Application

Should we build our own calendar application from scratch or try to leverage and build on top of another calendar application?

Also, *format*… do we follow the iCalendar spec (, which is supported by a number of applications (Outlook 2007, apple's thingamajig, KOrganizer, Mulberry, Google calendar and facebook) or microsoft's proprietary formats (Outlook 2003 and below). The format is very very easy once someone exports their calendar with the correct "garnishing". A little VBA script or something can do this in outlook (ksubrama has seen this done but has not done it himself).

iCalendar format

  • RFC 2445
  • has the MIME type text/calendar
  • data files are ASCII plain text files with each line terminated by CRLF
    • lines should be limited to 75 octets (not characters long)
    • when an item is too long to fit on a single line it can be continued on following lines by starting the continuation lines with a space character or a tab character
    • If a data item needs to contain a linefeed, this is encoded as \n (in hex: 5c6e)
  • top-level object is the Calendaring and Scheduling Core Object
    • first line must be "BEGIN: VCALENDAR" and last line must be "END: VCALENDAR"
    • the body of the object consists of a sequence of calendar properties and one or more calendar components
  • types of components
    • Events (VEVENT)
    • To-do (VTODO)
    • Journal Entry (VJOURNAL)
    • Free/Busy time (VFREEBUSY)
    • VALARM
  • the UID field is used to handle updates (if you see more than one thing with the same UID, then its the same event)
  • A partial list of apps that support the iCalendar format can be found at

Exporting from calendar programs and importing into our program

Possible Plugins


Stock Market

Bus Schedules


  • Do something where the device talks to the computer via bluetooth, the computer talks to another computer with the app via the internet, and that second computer talks to the device it is connected to via bluetooth
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License