PONGen - Programmable OneNote Notebook Generator
v. 1.0.1969.18962
The Really Rough first public version: Download Installer - 384K
What does it do?
PONGen grabs the current TechEd 2005 Orlando Breakout schedule from an RSS feed, and generates multiple OneNote notebooks containing the latest Breakout Session schedule.
Got OneNote?
Want to see a sample notebook? - Download 266K
You Don't Have OneNote? Are you enrolled in TechEd Orlando 2005?
All registered attendees to TechEd Orlando 2005 (not sure about other locations) are entitled to download a free, full version ($99 value) of OneNote after logging in at http://msteched.com. Download that puppy, check it out. I assure you it's worth it even without my klunky app.
What happens when you run PONGen?
PONGen is a console application. You are not asked for any input in this version. PONGen opens the OneNote Importer object, creates a tab called General Info, and adds a page containing the full TechEd Orlando agenda for the week as published at the TechEd Conference Agenda page. A tab for each day of the conference (Sunday 5th - Friday 10th) is then created, and a daily Agenda page is added to each tab.
The RSS feed of the schedule of Breakout Sessions is then downloaded from http://www.msteched.com/content/BreakoutRSS.aspx, and loaded into an in-memory dataset. The description field of each session is parsed using regular expressions to extract the date, time slot and location, which are also added to the dataset. This dataset is then used to generate a page for each time slot, which contains all the Breakout Sessions that are available during that time slot.
What is still left to be done?
- Performance: current run times are ~30 seconds on my machine (very high speed network.) The RSS feed for the breakout sessions alone runs about half a meg, so downloading and parsing that data is taking a bit of time.
- Provide increased customisation options: integrate the provider model, so other RSS feeds and datasets can be similarly consumed and rendered.
- Allow for a partial run: populate today's events, for example, or tomorrow, or tomorrow+ (all future events). Limit update to show only certain tracks, for example.
- More rigorous exception handling: or, to be truthful, any exception handling at all. This puppy doesn't fail gracefully.
- Anything else I haven't currently considered: This falls under the "whatever" clause.
Odd behaviors
The tab generation appears to occur "in random order." I am aware of this and am researching options to address this, but the OneNote Importer Managed interface doesn't allow you to directly interact with the Notebook (Top of page Tab) objects, but rather the Page (side of page Tab) objects. If you create a Page in a nonexistent Notebook, a new Notebook of that name is created for you. Page commits/writes appear to be somewhat asynchronous. I'll address this if I can.
Every time PONGen is run, a new set of pages is generated. Updates to existing pages don't occur. I am also well aware of this. In the OneNote Importer Managed interface, page objects are assigned a GUID, which is private within the interface. I cannot (yet) retrieve this GUID to make sure that a subsequent run outputs to existing pages rather than adds a new page. I'd love to solve this as well, but am not sure that I'll be able to address this before TechEd.