Project Ideas

From SubfireWiki

Jump to: navigation, search

Brainstorming projects...

Contents

Maemo projects

Also... consider any of these for the Android developer challenge.

MaemoDAAP

Listen to music discovered locally on the network shared via DAAP (and UPnP?) (maybe Canola already does this)


Maemo Remote control

This would allow a maemo device to connect to a remote machine/display and act as the keyboard (and mouse, somehow...). This might be implemented via bluetooth (maemo keyboard becomes a bluetooth keyboard) or via X (connect via X protocol over wireless ethernet and send key/mouse events).

VNC clients for maemo may be a reasonable alternative, but a remote control app could have custom keyboards for media apps among other things.

Bluetooth/IRDA device

With a bluetooth/irda device, this could be a universal remote (if such an adapter doesn't exist, create one!)

X10 integration

Control power outlets and light switches remotely, even with a fancy visual display of the house/room. Just needs X10 setup at home and some house design software. Could visualize the state of all switches by showing lighted up regions.

See Lagotek for a specialized product which does this.

Maemo note/tasks

This would be a simple task list, oriented vertically/fullscreen for maximal info display.

Maemo augmented reality

Face recognition/address book

Point an N800 at a person, capture their face into the address book and connect with their email and IM. Later, point at their face or photo and retrieve address book info. (face recognition == hard)

Sign scanning/markup

Point N800 at a sign (say a traffic sign), decode with text recognition and get previously tagged info such as nearby restaurants/places to stop. Text recognition task should be easier here with traffic signs.

Photo-based bar code reader

Point N800 camera at a bar code. Decode it. Should be the easiest decode task.

See also Google adwords feature.

GPS-based info tagging

Similar to sign scanning, but based on GPS-determined location. If in a hotspot (and with some server-side tools), could show nearby (with radar-ish display) gps-enabled Maemo devices.

Google integration

Google apps such as reader and calendar should automatically sync and be available as tablet widgets.

Package tracker

This would be a simple app that connects to UPS/USPS/DHL/FedEx web services to track package shipments. The interface should be as simple as possible and abstract away the differences between the shipping providers web services.

Freeciv/Maemo

Check out Freeciv/Maemo. Code/build/test are all options.

VOIP+Games

Handheld gaming with voice (and video?) on the handheld could be very cool.

GGZ may be of interest, but being able to game with friends over XMPP/GTalk may be the right way to go (for VOIP integration)

Clutter may be helpful here for doing fancy graphics, which I believe is supported on maemo. Alternatively, check out Canola and see what is used for its interface.

Tic Tac Toe

Simple game of tic tac toe. Find local players with Avahi or game with friends over GTtalk

Brainstorm more here...

Busminder

Integrate public transport information into a single map/reminder about when the next transport will be nearby. Start with the Broome County Transit maps and information and the Binghamton University OCC Transport (blue busses) data.

Mileage+GPS tracker

Get a bluetooth OBDII adapter, install CarMan, and collect/integrate GPS and RPM/fuel consumption/speed data. Analyze and prepare a google map showing the path taken, coloring bits of the path red under high consumption, green under low. Analyze multiple runs to calculate most fuel-efficient route.

MediTracker

Maemo app that talks to medical devices that speak bluetooth, collects and displays the data --data like heart rate, oxygen level, steps taken.

Proximal

Desktop/laptop app which talks over bluetooth to nearby maemos. When a given maemo comes into bluetooth range, the desktop app notifies the desktop user about the nearby maemo user.

How about maemo-as-smartcard allows a user to login to a desktop by using bluetooth (consider pam/gdm plugins here).

Light Saver

This may actually already be implemented by default on the N810

The N800 has a light sensor that can be accessed programmatically. Use the output of this to automatically save power when the light is low by dimming the screen:

According to Klaus.K Pedersen (Nokia-M/Helsinki) on the maemo-developers list:

On Wed, 2008-01-09 at 18:32 +0100, ext Luca De Cicco wrote:
> Hi there to the list. 
> 
> Sorry if ask something which has been already discussed... 
> I was wondering if there is some specification about the
> small thing near the camera which appears to be a Light Sensor. 

The device is fully supported by the hwmon interface:

$ cd /sys/class/hwmon/hwmon0/device
$ ls
adc            calib1         lux            subsystem/
bus/           driver/        name           uevent
calib0         hwmon:hwmon0/  power/

$ cat name
tsl2563

$ cat lux
303

Ladies Compact (mirror)

Have a slick little app that uses the builtin webcam to act as an in-a-pinch mirror. Just reflect the image that comes back and go. The fun bits are in making it slick and fun to use.

(Google) Calendar frontend

Hook into an online calendar, copy its contents locally, handle recurring events properly, and sound alarms as appropriate. Basic idea, but getting it all correct is the devil here.

Programming projects

MDNS/zeroconf-based NFS discovery with GSI-based authentication

This would be a filesystem (probably FUSE-based) that would discover other providers on the local link (using avahi/zeroconf) and automatically connect them into a directory. Some sort of authentication should be provided for write-access.

It's possible that this could be piggy-backed onto SMBfs or NFS.

CD wrapper maker

This is a simple tool to create and print a piece of paper that can be folded up to hold CDs.

Envelopalator is a prototype implementation in Python. This should be packaged and put into a PPA on launchpad.

A couple (interesting) improvements that should be made:

  • Support ogg and avi tags
  • Replace execing gtklp with the GTK print dialog

Par-n-Rar

This would be a plugin or some sort of addon for a NNTP client (or could be a FUSE filesystem?) that uses par2 libraries and rar to pull and extract files from newsgroups that have been packaged and released using those tools.

Torrent+nzb

This would be a plugin for azureus that would implement an nntp client that can read a (zip)file containing a torrent and an NZB that would choose the best method to download (and extract) the file.

VideoPlayer

This would be a program that loads up folder and AVIs from /media/*/videos and $HOME/videos and present them in a keyboard/mouse usable menu system. Folders with the same name would be merged into one tree of folders (akin to what unionfs does at the kernel level, but this would be done in the app itself). It would use the menu widget to display the hierarchy of folders and videos, ideally presenting a thumbnail of each video file. When a video file is selected, it would zoom the thumbnail out to fill the app window and launch totem to begin playback. The intent is that this be a full screen app.

Some prototypes written in Python are in the videoplayer repository.

Elisa might be a good solution here.

Menu widgets for graphical apps

This would be a widget (probably based on libclutter or a GNOME or GTK Canvas. It should support mouse and keyboard navigation and would be intended for fun/diversions, such as MeMaker and Videoplayer. There's a rudimentary prototype of the visual features of this menu in videoplayer. It's a canvas-based implementation and runs a bit too slowly (hence the desire to use libclutter).

Hierarchies using this menu system should be fairly flat (2-3 nodes deep). A menu list would appear in rolodex style with a thumbnail of the nested menus that would expand onto the right-hand side of the screen as each menu entry is selected. When the right-arrow key is pressed, the nested menu would slide to the left-hand side. The top menu would shrink down to a thumbnail on the left-hand side of the screen.

SSH Tunnel Manager

This would be constituted of a preferences applet that allows ssh tunnels to be set up login (for VNC and other insecure protocols). When the tunnels are active, an applet would appear in the notification area where they can be taken down or configured. This would hook into the session services so it starts automatically on login. The ssh passwords could (potentially... it might be better just to have the user setup ssh keys and use the agent) be stored in the secure key manager.

It might be preferable to provide hooks to launch VNC clients directly from the applet, go so far as to setup the tunnel just for the duration of the VNC connection.

AirX does this to an extent on maemo.

GL frontend for vnc viewer

This would be a VNC client that can do things like scale the display (800x600 vnc displays can be scaled up to 1600x1200 monitors, 1600x1200 vnc displays can be scaled down to 1024x768 monitors), host multiple VNC connections and rotate through them using fancy compiz-like techniques.

Google contacts backend for evo

This would store (or at least retrieve) contacts in (from) one's gmail/gtalk account and provide them to Evolution.

Do something with Subtext

Subtext is a cool graphical programming tool. How are foreign functions to be implemented? Can a Java backend be implemented as part of an eclipse plugin? Is it possible to integrate as a visual scripting language for a larger program?

Create a Google account desktop integrator

This would be a program that connects your google IMAP, calendar, reader and whatever else to Evolution and other desktop apps. This would, for one thing, automatically load all the ICAL feeds from google calendar into the clock/calendar widget in GNOME.

Hack the iPod Nano 3G

The iPod Nano 3G (with firmware 1.0.2) doesn't work with Ubuntu 7.10. First step here would be to get it working, then figure out how to add games to it. Finally, figure out how to write games and make a few. Here are a few games to make:

  • Sudoku
  • Music scratcher
  • Google reader frontend (sync google reader in the morning, mark read/starred, resync and merge everything up later)

Update: The Nano 3G should work with Ubuntu Hardy Heron, because it contains version 0.6 of libgpod. 7.10 contains 0.5.2. Hardy's version is also built against libsgutils, so the automated method from the gtkpod wiki should work fine.

Eclipse music player

Here's a bizarre idea: how about a set of views and a perspective that implements a music player? (I think there are a couple plugins that do this, but they appear to be dead or moved). The idea here would not be to build another media library, but to use an existing library, or even player. Here are some ideas on what this could mean:

  • Be a DAAP frontend. This should avoid any platform specific code. It would have a couple of views, working similarly to rhythmbox or itunes, pulling all the music from up and running iTunes instances or other DAAP media servers.
    • This would require learning how to program a mDNS client in Java
  • Become a dbus frontend for controlling rhythmbox. This would be a very simple view that has a few player controls. If it's possible to list the songs in rhythmbox over dbus, then this could have another view that lists and controls from there.
    • Substitute iTunes (or WMP or whatever) for Rhythmbox if possible.
  • Parse the rhythmbox music database and use that "natively" (or iTunes or whatever).
    • This is my least favorite approach.


Integrate evolution with procmail

This would be a plugin that would be able to update a .procmailrc config (perhaps over sftp) all through interaction directly with Evolution. It needn't be a complete procmail frontend, but it should at least be able to add new addresses to certain rules (new automated messages that don't have list-id tags should be easily addable to a newsletter or sales or online orders rule).

There is a standard called Sieve that is forthcoming and is apparently supported by dovecot which may be a reasonable replacement for procmail...

Erlang-on-Java

Erlang seems to be getting pretty hot. I haven't seen a JVM-based implementation, so this could be an hot item if it's done well and soon.


Eliminate the need for desktop indexers by implementing specialized doc stores

Indexers chew up I/O bandwidth when you want it most (after unpacking an archive, or loading a bunch of photos or music onto the computer). Not to mention, if you have a large desktop (i.e., home folder), the indexer will take forever to perform the index. Even with the best I/Onicer, this will still be annoying and use extra power.

This idea is based around the concept if specialized DBs (and apps) for specific mime-types. These DBs are then federated for desktop-wide search. All the work is done by the specific app (which needed to do this work anyway) rather than a global indexer that needs a multitude of type-specific plugins. In effect, there would be no desktop in the traditional sense, because all files would only live in apps that deal with them. This would be integrated into the web browser (and any file-source), so that when, for example, a picture or mp3 is downloaded, it is transferred immediately into the photo browser or mp3 player. There should also be a separate document manager that stores all "office" documents which does a doc-specific index/search of these.

This could tie into another project idea based around the idea of the separated db/app. Right now, rhythmbox and bashee (and others) do pretty much the same thing with a set of mp3s. The backend work of dealing with files and tags should be left up to a separate "database" process that tracks playback usage, handles file format conversion and integrates with players. Same for photos.

In the end, there will be desktop-wide application "servers" that provide specialized type-specific features for frontend apps.


Risks

  • The idea that there's a 1:1 mapping between app and file type is tricky. Some downloaded images are not photos, some sound files downloaded are not meant to be added to a music repository (just played for now and removed).
  • Some folks like to organize (and expose stuff on a desktop). There should be a way to let them do that here.
  • Ultimately, this would require deep modification of a large number of apps to separate the file management from the frontend.

Similar projects

  • This is probably the very same idea that Seth Nickell was thinking about when he proposed GNOME Storage.
  • Perhaps this is similar to BeOS's filesystem
  • Longhorn's filesystem may have had similar ideas, but I think this goes further.

Bluetooth internet connection sharing

It should be possible (and be integrated into gnome-bluetooth) to share an internet connection to other machines simply and easily.


Blog-a-twitter

I use LogJam to post to my LJ, but I'd like to twitter when the post is made, so I'd like to see some twitter plugins for LogJam


GNOME task integrations

Evolution-data-server provides calendar and task backends for the GNOME clock. It would be great if e-d-s talked to Trac or bugzilla (or even Mylyn in Eclipse somehow) and present those items as tasks. This is probably most sensible, since the clock already talks to EDS and needs little-to-no configuration, but another possibility would be to have the clock talk directly to Mylyn+Eclipse or trac/bugzilla.

Pygame-on-flash

Crazy idea (and almost certainly very difficult, if not impossible): implement python atop flash with enough features so that pygame games can run inside a flash window. I know nothing about flash programming, but it would be nice to be able to get an online demo of a game "for free" just by developing atop pygame.

Evolution/pidgin/empathy integration

Evolution can already sync contacts with Pidgin (which works... to an extent), but what would be really cool would be a pidgin and/or empathy log backend for evolution, which would provide a message view of chats (akin to gmail's chat/email linkage). This is probably not so hard, just munging the backend log data into proper messages. I'd start with the evolution-rss plugin and go from there.

Zeroconf+Gnome send-to

Use case:

  • Right click on a file
  • Select "Send to..."
    • Choose "Send as:" "nearby user"
    • Choose "Sent to:" "Joe@joeslaptop.local"
    • Click send
  • File is transferred over the network to the user.

The general use is just like the "Bluetooth (OBEX Push)" between two computers, except that it uses the LAN for discovery and transmission.

Probably could be tied into "gnome user share" or whatever the project is that uses zeroconf to share files locally.

Run/Log/Email tool

Sometimes it would be convenient, when an app misbehaves on someone else's machine, to be able to look at the console output. There are ways to accomplish this if the user can use the command line effectively, but another alternative would be to have a launcher which allows an application to be dropped on it. The launcher would fire up a program that runs the program, redirects output to log files and, when the program exits, calls the "send to" feature to package the files and email them (or IM or whatever) to get them to someone that can look them over and help.

CSS Theming engine

After reading the first couple paragraphs of this post, I figure it would probably be nice to have a GTK theming engine that supports CSS features and syntax (somehow... since I don't know how a theme would use files other than .gtkrc files).

PLs in JS

Javascript shells are all the rage. The idea here would be to implement REPLs for a number of programming languages that are used for classes. Difficulty is to build in good tutorials and (language-specific) debuggers.

Non-programming projects

Pick up a NAS device and put Linux (Ubuntu?) on it

Devices

Create a parallel port power controller

Parallel port power control circuit

Pick up a programmable phone and hack on it

Devices

The N95 could go nicely with an N800/N810

See also Google's Android

Pick up a nano-computer

  • Arduino -- Similar to a Mote, but cheaper and a bit more hacker friendly. See also Boarduino
  • Any of the mini linux systems that have ethernet, flash, and run busybox.
  • STR9-comStick -- running "Hitex"
  • buglabs -- "BUG is an open source, modular consumer electronics platform that makes building hardware just as easy as writing software or Web applications"
  • WizPy - "Palm-sized personal computer environment of your own"

LambdaCan

  • LambdaCan is an Arduino-based project that performs lambda calculus reductions over USB
    • Are there any interesting riffs on this concept?

Bluetooth hard drive

  • This is a pretty bizarre idea, but it would be a (rugged) hard drive that can be carried around and can connect up as a data (mp3, video, ...) store for handheld devices and laptops.

Figure out how to update the BIOS on a thinkpad (in Linux)

Buy or make a BeatBot

Twitter-commits

The idea here is to set up a twitter account for each (public/opensource) project. Configure commit hooks from subversion, bazaar, or cvs to post commit message to the associated twitter account with links to the commit diff.

See also

Personal tools