Tuesday, March 31, 2009

Further Reading: Gods Tomorrow

I definitely considered the ramifications for matchmaking when I thought through the various database services Hathor would make possible. Luckily, when I outlined my 25-novel series, I didn't decide to center any of my major plot lines around the idea, because Dreamworks is currently developing exactly that as a movie. (Thanks to D-- for sharing that link on Google Docs.)

Of course, they don't use Hathor, but Hathor is just a logical extension of the sort of ubiquitous monitoring already done by the UK, which was the direct inspiration for the new movie.

Project Report: Burn Jump

(working title)

I've begun prewriting on a new pure sci-fi novel set in a space-faring future. Similar to the wormhole travel shown in Stargate, our advanced scientists have discovered how to teleport between star systems by flying ships into the hearts of stars, and using the intense gravity there to warp local relative spacetime.

Obviously, that's not an easy process, but the payoffs make it worthwhile. And as corporations and governments begin pouring money into research, constantly trying to improve the safety, reliability, and efficiency of these new starships, a sports league arises featuring the enterprising test pilots who fly into the hearts of stars.

The novel follows the story of a famous Sun Sports Optimization League pilot who gives up racing to enlist in the military following a treacherous terrorist attack by the Separatists. He's teamed up with a navy pilot and put into use as a scout, jumping ahead of military convoys to check for ambushes or other signs of the enemy.

When a traitor within his own squad opens fire on him, the pilot's ship dives into the heart of a star, and the world believes him slain in a senseless incident of friendly fire. The pilot survives, though, and knows the true motivation behind the attack, so he lays low, trapped in Separatist territory, and looks for his opportunity to right the wrongs done to him, and save his nation from a mounting insurrection that threatens to topple the Intergalactic Union.

Or something along those lines.

Status: Prewriting

Further Reading: Gods Tomorrow

Hunch initially struck me as something very similar to the database services in Gods Tomorrow, but as I read more, I'm not so sure.

It's essentially a search engine (or maybe something more like Yahoo! Answers), where you ask a question specific to you (like "Who should I vote for?") and it asks you a series of related, more concrete questions that should be easy for you to answer, then proposes a customized answer to your general question.

That's essentially what I assume the database services are doing constantly, only instead of asking you questions, they would be crawling through your recorded history finding the answers from your past actions and decisions.

Wednesday, March 18, 2009

Further Reading: Gods Tomorrow

Back when I was first writing Gods Tomorrow I came across an Ars Technica book review for a couple books about the people collect data about us today, and they way they're going to use that data to shape our future. Obviously, that's a direct predecessor of the Hathor in my story, so it caught my interest. I ended up ordering both books through Amazon.

Last night, I cracked open the first of them, The Numerati by Steve Baker. It's amazing. He's a journalist and this book is the result of his dedicated research into several fields that are trying to generate predictive mathematical models of real people (specifically, us). He presents it as a relatively casual narrative to a general audience, though (again, us).

I strongly recommend it to anyone interested in the themes that inspired the Gods Tomorrow future. It's fascinating, and probably incredibly useful information for all of us going forward.

Wednesday, March 4, 2009

Project Report: LibraryCompare

LibraryCompare is a new XBMC Plugin that K-- and I started last Friday.

In a sense, it's an old project (meeting the needs that initially drove us to design Movie Hoard), but the methodology is new.

Movie Hoard, as I explained before, was intended to provide us with an easily searchable list of the media in each of our personal libraries. To do this, it relied on an Indexer that would crawl our media files, research the files it found (by parsing the file and folder names and scraping webpages like IMDb and TVGuide.com for details), and then add them to a faux database we'd designed.

In my last project report on Movie Hoard I suggested that our goals for it were to convert it to a real SQL database and then implement the browser within XBMC as a plugin, using XBMC's menu and display capabilities to handle user interface.

As we researched that, though, we kept running into documentation that referred to XBMC's video library. We finally took some time to investigate that, and were impressed with the indexing and web-scraping functionality already built into XBMC. Rather than duplicate that functionality by porting our existing code, we spent some time over the weekend learning how to access XBMC's built-in database, and then query for the information we need and share it remotely.

XBMC already has all the tools we need for this project, thanks to their robust HTTP API, which lets an XBMC installation receive network queries and process them as native client commands (and then generate a response in the form of an easily-parsed HTML page).

To get LibraryCompare up and running, we had to:
  • Develop a functional HTML parser
  • Learn how to authenticate to XBMC (because we want to password-protect our XBMC installs if we're going to expose them to the web)
  • Learn the database design for XBMC's video library and develop useful queries

We spent several days of trial-and-error before we came to a satisfactory solution on all three of those, but ultimately we were able to develop a function that takes in a SQL query and login credentials, authenticates to a remote XBOX, passes it the SQL query and receives back an HTML page, parses the HTML, and builds a Python list, which it returns. Once that function was finished, network communication became trivial.

Beyond that, the only real challenge was display. Within a couple hours (before we'd even figured out authentication) we had a simple list display, but XBMC has extensive tools for browsing media files of precisely the sort we're using, and the database we're drawing from already stores all the details needed to showcase that functionality, so it's just a matter of tracking down exactly what we need and implementing it.

In case that wasn't a terribly clear paragraph, we've got the core browsing functionality done, but we're still working on aesthetic improvements. Once we've finished with those, I'll be able to launch the plugin and browse through K--'s TV shows and movie files with exactly the same interface I would use to browse through the ones I have stored locally. In fact, plugin automatically filters out any items that exist in the local database, so I'm only browsing the ones he has that I don't. It's very cool.

Of course, I won't be able to play files this way -- they are far too large and our upload limits far too small to stream these videos across the internet -- but it's still quite cool to be able to tell at a glance who has what. We've been able to do this in a fairly generic manner, with no fancy packages and very little customization, so we should ultimately be able to share this plugin with the XBMC community. I'm looking forward to that.

Status: In development

Project Report: Movie Hoard

Movie Hoard has been discontinued.

A new project, Library Compare, is now under development. It meets many of the same needs as Movie Hoard, but in a much simpler method. Further details can be found here.

Status: Discontinued

Project Report: Gods Tomorrow

On Tuesday of last week, I completed my first major rewrite of Gods Tomorrow.

I finished the novel back in November, and immediately knew that there were some key elements that I needed to change. Chief among them was the prominence of Katie's boyfriend Marshall in chapters 2-4 (he then disappears altogether for the rest of the book).

As I considered my options for tweaking that relationship, one obvious option that leapt out to me was to replace her conversations with Marshall with conversations with her dad. He does play a major role through the rest of the novel, albeit as a historical reference rather than an actual actor in the plot. Ultimately I decided to use voicemail recordings to her father that she uses in the form of a diary, rather than actual conversations. For reasons that the reader can only guess at, her father never actually takes any of the calls, which changed the tenor of those scenes from the brief bright spots in the early part of the book (where her boyfriend cheers her up after a frustrating day at the office) to a pitiful showcase of Katie's loneliness in her new life.

I offset that a bit by toning down the "new girl" feel of the first few chapters -- one of few complaints that I'd consistently gotten from my test readers. Actually, most of them suggested that I had done a good job of making Katie likeable by showing her vulnerability, but that eventually the book hit a sort of, "Get on with it!" level, where the character flaw was clearly established and I was just beating a dead horse.

I mostly addressed that issue by going through the relevant chapters and doing what I could to get the narrative out of Katie's head (something I'm constantly encouraging my sisters and Dad to do as I critique their stories). I showed enough of her insecurity through her actions, without beating the reader over the head with her internal responses. At least, that was my goal. The one test reader who has seen the new version said it came across well (but he had never seen the first draft).

I also significantly expanded the chapter in Little Rock, in which Katie practices traditional police work (which is essentially her role in the story, while those around her are more versed in high technology). My initial outline for the novel required exactly the sort of scenes that I added, but when I got to that point in the first draft I was ahead of my word count projection and felt like the story flowed more organically by skipping ahead to her meeting with Martin.

In the rewrite, I went ahead and incorporated the scenes I'd planned from the start, and I think they not only help establish Katie's character strongly enough to better carry her through the muted scenes that follow, but also significantly improve the introduction of Martin's character over the rough draft version (which was basically just a repeat of the introduction of Ghoster, which was disappointing to several test readers, myself included).

Beyond that, I changed some wording issues to impact the feel of the novel (primarily the way each of the other major players addresses Katie, from scene to scene, for consistency), and then cleaned up the ending. From the start it had a strongly action-movie ending (read: believability issues), and it felt unfortunately rushed to me. In the first week of December I did a quick rewrite to clean that up a little (extending the closing into two chapters instead of one), and kept tinkering with it over the next couple months. In my big rewrite in February, I completely revisited everything that happens during the climax and denouement, and toned down a lot of the special effects material while leaving the plot essentially unchanged.

Status: Complete, second draft