Skip to main content

Ralsina.Me — Roberto Alsina's website

Urssus: July 19th

I con­fess I cheat­ed and kept work­ing on it yes­ter­day af­ter the blog post. OTO­H, I will not touch it to­day ;-). Big func­tion­al­i­ty added, too.

  • Feed items (The things on the tree) now are up­­­dat­ed when the back­­­ground process checks them.

  • They are al­­so up­­­dat­ed when you read ar­ti­­cles from a feed.

  • The fil­ter thingie work­s, you type some tex­t, and on­­ly the ar­ti­­cles with that text are shown (see screen­shot).

  • Added a wid­get (not di­alog) for search­ing with­­in the page, fire­­fox-­­like (see screen­shot)

urssus4

The bad news is that the "next un­read ar­ti­cle" code and a few oth­ers is garbage. It's quite in­ef­fi­cient be­cause I tried to be cheap and not cre­ate a co­her­ent mod­el for feed­s.

How­ev­er it works and you will nev­er tell the dif­fer­ence un­less you have 2000 ar­ti­cles be­tween where you are and the next un­read (in which case the win­dow goes kin­da nuts for a cou­ple of sec­ond­s).

Still fun!

Urssus again

An­oth­er day, an­oth­er two hours of work on it.

What's new?

  • Some UI el­e­­ments with­­out code be­hind them (the "fil­ter ar­ti­­cle" thingie), and a feed prop­er­ties di­a­log.

  • A (IMVHO) bet­ter UI dis­­tri­bu­­tion than akre­­ga­­tor. Con­sid­er this screen­shot:

urssus3

The ar­ti­cle list and feed tree are the same size, but re­mov­ing the tabs and mov­ing the fil­ter in­to a tool­bar re­al­ly makes the ac­tu­al read­ing area quite larg­er.

  • Del­e­­gate all links from the read­­ing area to the desk­­top's web brows­er (this is not a web brows­er yet ;-)

  • Progress re­­port for web page load­­ing (more use­­ful once you can de­­clare a feed as "load link di­rec­t­­ly")

  • Fin­ished feed/ar­ti­­cle nav­i­­ga­­tion (nex­t/pre­vi­ous feed/ar­ti­­cle un­read­­/any), and fixed bugs in the part that was al­ready done.

  • Zoom in­­/out for the web view

  • Show/hide sta­­tus­bar

  • Sev­er­al bug fix­es

And yes, still fun!

Urssus improves

To­day's 2 hours:

  • An about di­a­log (not wired to the UI yet)

  • Icons on the feed tree (not fav­i­­con­s, though)

  • Han­­dle a few more feed quirks

  • A sta­­tus mes­sage queue, so sub­­pro­cess­es can post their progress in the sta­­tus bar.

  • UI for im­­por­­tOPML

  • Im­­ple­­men­t­ed "Next Ar­ti­­cle" and "Next Feed". This Mod­­el/View Qt thing is kin­­da painful (but pow­er­­ful!)

  • Use of Mako tem­­plates to dis­­­play the ar­ti­­cles pret­­ty and neat

  • Menu & Short­­­cuts fol­low­ing Akreg­­ga­­tor

  • Added sev­er­al fields to the Post and Feed mod­­els to make them more use­­ful (which means the DB changed, but that's to be ex­pec­t­ed at this stage). These in­­­clude things like "un­read" and "au­thor" and "link" ;-)

Still fun!

A programming challenge for myself

I worked on uRSSus for a cou­ple of hours again, and it's work­ing pret­ty nice­ly.

  • Re­al­­ly us­es the ORM

  • Mul­ti­pro­cess­ing for a non-block­­ing UI (python-pro­cess­ing is awe­­some)

  • Adapts to the quirks of some feeds (why on earth would some­one do a feed with­­out dates? It's AOL Fan­­House­­!)

I in­tend to keep work­ing like this for a cou­ple of week­s, and see how far I can get in fea­ture par­i­ty to akre­ga­tor.

No, I don't ex­pect to reach fea­ture par­i­ty, I on­ly want to strive for it. SInce I lack the fo­cu­sand/or en­er­gy for a mul­ti year com­mit­ment it re­quires to write the av­er­age free soft­ware, I want to see how far a sprint gets me.

urssus2

So far, it's fun.

Why no packaging software should replace your config files

When you up­grade a piece of soft­ware on Lin­ux, there are two paths it can go when there are in­com­pat­i­ble changes in the con­fig files (ok, 3 path­s, De­bian asks you what to do):

  1. The "rp­m­new" way: in­­stall the new con­­fig file as "what­ev­er.rp­m­new", which means the soft­­warewill break im­me­di­ate­­ly, but that's ok, be­­cause you are do­ing up­­­grades, so you should be watch­ing al­ready.

  2. The "rp­m­save" way: re­­place the old file and save a copy as "what­ev­er.rp­m­save".

This has two prob­lem­s:

  1. The soft­­ware may fail or not, or fail in a sub­­­tle way, and you will not no­tice right away.

  2. Maybe the old file will be lost any­way:

    lrwxrwxrwx  1 root root 32 jul 15 22:41 /etc/named.conf -> /var/named/chroot/etc/named.conf
    lrwxrwxrwx  1 root root 32 jul 15 22:36 /etc/named.conf.rpmsave -> /var/named/chroot/etc/named.conf

In this case the "file" was a sym­link, so by "sav­ing a copy" it on­ly saved an­oth­er sym­link to the soon-­to-be-over­writ­ten file.

And that's why, ladies and gen­tle­men, the rpm­new way is the good way.