Archive for the 'Development' Category

A home on Sourceforge

Beyond is now on Sourceforge:

https://sourceforge.net/projects/beyondproject/

This means we get Subversion access. :) I’ll look through the other Sourceforge offerings and see what’s worth using. (In general, though, I shy away from it because their site is really cluttered and not very pretty and it’s hard to find what you need.)

Next I’ll need to install Trac for bug tracking…

Server/client model

Here’s a diagram showing the server/client model for Beyond (you can click on it for a slightly larger image):

Beyond Model

I think the image pretty much speaks for itself. The only thing not accounted for is that desktop clients will probably need to have a mini-server for offline editing (they’ll need to implement the Beyond API themselves, and then switch between calling it and the API on the server, depending on whether they’re editing online or offline). For offline editing, SQLite will probably be the best way to go.

Ruby and GEDCOM

Before long I’ll need some data to work with. The easiest way to get that is to write some code that’ll convert a GEDCOM (which is easily exported from PAF) into XML or, even better, SQL code that will place it directly in a database. And turns out there’s already some stuff out there.

Ruby Quiz #6 is a GEDCOM parser, and there’s plenty of interesting code there to look through. There’s also Jamis Buck’s GEDCOM/Ruby Module, which I downloaded but haven’t had time to look at yet.

Part of me wants to write everything myself, but that’s stupid (unless the existing stuff is poorly done, of course). So I’ll evaluate the existing code and see if any of it fits the bill. Hopefully it does. :) Eventually I’ll have to write a PAF importer/exporter, though, because I’m not aware of any open source projects that do that.

Anyway, the important thing right now is to get some real data into the database (which means designing the database structure…) so I can get the prototype up. Time is the hard thing right now, with school crunching in (midterms are this week) and tight work deadlines. But that’s okay.

One last thing: coding Ruby in TextMate is really fun. Seriously. It’s something I haven’t experienced in a while, but it’s such a pleasant thing that it draws me back and makes me want to code more. That’s good. :)

The rest of the soap

At work we have a couple of projects which have leapt to the forefront of our priority list, which basically means that I won’t be able to work on Beyond at work for the next two weeks or so. But fear not, that’s what spare time is for. :) I wish I didn’t have classes this term, though, because homework’s eating up a lot of it.

Anyway, I’m looking into SOAP vs. REST for the web services part of Beyond. Looks like Google’s built on SOAP, Flickr provides both SOAP and REST interfaces, and Ruby on Rails seems to favor SOAP as well. The general feeling I’ve gotten from reading blog posts and articles about the debate is that SOAP is more complicated. What I’ve seen of REST certainly was simpler. I’ll look into it some more and see if it would be worth my time to support both, like Flickr. Anyway, once I get some time I’ll try to cook up a little test app to make sure I understand how web services work, sending XML back and forth like tennis players at Wimbledon.

Back on a Mac

I got a PowerMac G4 at work today. It’s old, sure, but it’s running Tiger and has the latest Xcode, which means I’ll be able to develop the OS X client in parallel (in Python with PyCocoa, I think). I’ll still focus on the web client (which I’ve dubbed Orion, since saying “the web client” all the time is a) boring and b) longer than “Orion”), but once I get far enough along it’ll be nice to work on the Mac client (no name yet) so I can make sure the API is actually usable.

As far as the server (which now needs a name :)) and Orion go, I installed Ruby on Rails today and can start learning the ropes. I’ll be prototyping the interface and will hopefully have most of that done very soon, so I can get some feedback. That’s all for now, folks.

SQLite

I’m starting to seriously consider SQLite for Beyond instead of XML as the base file format. It looks like it’d work a lot better. I’ll look into it more thoroughly later on…

Rubies are red

I’m going to be doing some research this week to see whether I’ll be writing Beyond in Objective-C, Python (via PyObjC), or Ruby (via RubyCocoa). My first choice would be Ruby, because I really like what I’ve seen of the language so far and it’s at the top of my to-learn list, and it looks like it’ll be quite possible. If it doesn’t work out, though, my next choice is Python. And then Objective-C. I’m not very excited about memory management if I do have to use Objective-C, frankly, and that’s probably one of the main reasons I’d rather use Ruby or Python (along with the fact that writing apps is faster with the latter two). But at the same time I do need to learn Objective-C. Well, I’ll throw a few tests together this week and see what’ll be best for the project…

Quartz Composer

Started reading through Working with Quartz Composer (ADC) today. I didn’t really know what it was till now (and even now I’m still not entirely sure I understand it :)) but it looks like it’ll be promising for Beyond’s UI. In fact, it seems to be a really cool way of doing the visual effects I’m planning (panning/scrolling/zooming), much better than coding it procedurally.

FYI, Beyond will be a Universal Binary from the get-go. More on that later.