I started doing actual coding on Monday, save for a brief initial spurt last Friday afternoon, and by last night I had a basic application up, running and working. It’s very rough around the edges, has some hard-coded values that need replacing with actual lookups, needs much code tidying, but I can download feed data, parse it, store it, and display it appropriately for each user, all with my nicely normalized database. Yay.
The fun thing is that I’m actively working on two computers with two different databases; my laptop with SQLite and my desktop with MySQL. Luckily Django abstracts everything between the two, so I don’t have to change anything, but I have to stop and re-sync code and data every now and again. I think things are relatively stable now though; both databases finally have the same schemas and base data (namely: users, feeds, and who subscribes to what). It’s a good ongoing compatibility test.
One thing I probably should do is run Django on Apache on my desktop rather than just using the built-in development server: yet more diverse environments.
Having reached a first milestone of having the application actually functional, I’m going to stop coding until the Christmas holidays. Not that I don’t want to continue, but I have to do my progress report in less than two weeks, and also a business assignment that I know nothing about…
This is the formal specification that I submitted for my project, Ephemera.
I spent altogether too much time this weekend picking a theme for this blog. I have quite a lot of them installed at the moment, and because of the nice dynamic nature of Wordpress (which beats rebuilding your entire statically-paged-Movable-Type weblog) I’ve been changing the theme every few hours. Don’t blink, the stylesheet’ll hit you on the way out.
Unfortunately none of them are exactly what I want, so whichever one I pick I’ll have to tweak a bit, so really I could pick any of them… and so my indecisive nature won’t allow me to choose. I thought I had chosen one yesterday, but then I found that the comments.php file didn’t work (apparently it works under PHP 4 but not PHP 5), and, armed only with my very rusty PHP skills, I spent over an hour trying to determine why there was an “unexpected ‘}’ on line 64″ when it was just a simple if/then/else that looked absolutely fine in every detail to me. (I gave up.)
Down to actual work. I had finished writing a functional specification, which clarified my database design in my mind. I wrote out my database design, ready to translate into Django models, and along the way had a revelation about how the application would function, which unfortunately outdated half of my functional specification. So now I have to rewrite a lot of that, and add in some more detailed behaviour that I hadn’t got round to yet, in the next few days. Never fear.
Translating the database design into Django models made me think harder about some of the finer details of the data storage, and how the models related to each other. Luckily it didn’t leave me needing to re-think my design yet again! I think I have it now.
Well, as it says on my About page:
I am Cathy Young, a 3rd year Computer Science student at Warwick University in the UK. This blog chronicles the development of my third-year project, a web-based RSS/Atom reader called Ephemera. My other blog is bent back tulips.
Of course, in my mind Ephemera is going to be the greatest feedreader ever (well, perhaps second-greatest). Whilst restrictions of time and expertise will necessarily limit that end result rather dramatically, I still hope it will be able to stand out amongst the current small crowd of home-server feedreader applications. I have a couple of fun features up my sleeves, which I’ll reveal in the next post (rather fewer innovations than there used to be — I conceived of this project last year and several other people have since implemented novel features that I had been planning to incorporate first!)
Why “Ephemera”?
e‧phem‧er‧a [i-fem-er-uh]
1. something short-lived or transitory; lasting a very short time
I feel that describes the ever-changing face of a personal feedreader (items continually falling off the bottom, and new ones appearing) as well as most feed items rather well.