Here are a few project ideas I would like to work on if I only had the time. Feel free to execute them, but please make sure that your results are freely/libre licensed, otherwise your work would be of no help.
- Twitch allows not only live-streaming, but also video upload. As I’m boykotting YouTube, I have to upload my videos on Vimeo. With Twitch being a potential new upload candidate, I would like to automate the upload, for which Twitch provides an API. Not only could I “import” my “backlog” into Twitch, with Vimeo providing an API too, the project could very well aim for a multi-channel video publishing application.
- In my browser, I have lots and lots of unstructured bookmarks. If I switch to one of my other machines, I can’t access them. It would be nice to have a synchronization feature which could be extended to check if the links are still live or dead. In case of the latter, the tool could attempt to change the bookmark to the historical version of the site as archived by the Wayback Machine of the Internet Archive, referencing the most recent snapshot relative to the time of the bookmarking, hopefully avoiding the pro-active archival of what’s being bookmarked. On the other hand, a bookmark could also be an (optional?) straight save-to-disk, while the URL + other metadata (timestamp) is maintained for future reference. The tool could do additional things like providing an auto-complete tagging mechanism, a simple comment function for describing why this bookmark was set or a “private/personal” category/flag for links which shouldn’t be exported to a public link collection.
- Implement the Java StAX API in C++. There are several ways to deal with XML input: a famous one is to parse XML in order to create a representation of the data as a tree of objects in memory, so those objects can be accessed and manipulated in any random order – usually via the DOM API). This method has the disadvantage that large XML documents could exceed memory limits. It’s also relatively slow because it can’t provide access to the data before the entire document is loaded. Such properties conflict with concepts like RSS as an RSS application is supposed to stop reading bytes from the network as soon as it encounters an RSS item already seen before. XML Streaming APIs on the other hand interpret XML input as a series of “events”, dealing with only one of them at a time. As the bookkeeping regarding the structure of the document is left to the developer, this method usually leads to some kind of state machine, but using the callstack to build a parse tree could be explored, too. I already have some code to handle parts of: start elements, end elements, text nodes, comments.
- An XML interface for PoDoFo. PoDoFo is a new library to create PDF files with C++. With an XML interface, PoDoFo would become accessible for other programming languages and would avoid the need to hardcode PoDoFo document creation in C++, so PoDoFo could be used as another PDF generator backend in automated workflows. The XML reading could be provided by the StAX library in C++.
If you’re not going to implement those ideas yourself, please at least let me know what you think of them or if you have suggestions or know software that already exists. If you want or need such tools too, you could try to motivate me to do a particular project first. Maybe we could even work together in one way or another!