Skip to main content

Ralsina.Me — Roberto Alsina's website

Urssus: July 24th

When I start­ed this project I wrote:

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.

To my sur­prise, on­ly 9 days in­to the pro­jec­t, fea­ture par­i­ty is at hand.

What's not done?

  • Some feed prop­er­ties (cus­­tom ar­chiv­ing mod­­es, mark as read on ar­ri­val) (Up­­date: "mark as read­­on ar­ri­val" im­­ple­­men­t­ed at 22:40)

  • Fix ar­ti­­cle fil­ter­ing (it's not quite bro­ken, but in­­ter­acts bad­­ly with many things) (Up­­date: done as of 19:20)

  • Im­­ple­­ment app pre­f­er­ences di­a­log

  • Fil­ter­ing by ar­ti­­cle sta­­tus (Up­­date: im­­ple­­men­t­ed as of 19:01)

  • Fold­er-as-feed (Up­­date: done, as of 22:20, even if not re­al­­ly ef­­fi­­cien­t­­ly)

  • Ex­­port as OPML (Up­­date: just im­­ple­­men­t­ed it :-)

  • Fav­i­­cons

And some things in the back­end, which are not prop­er fea­tures.

What have I done to­day?

  • New ar­ti­­cles no­ti­­fi­­ca­­tion via systray

  • Cus­­tom up­­­date in­­ter­­vals per-feed

  • Made Feed.un­read­­­Coun­t() fast enough

  • Ar­ti­­cle sort­ing (not as triv­ial as it sound­s)

  • Fixed a lot of bugs (none of which crashed uRSSus, take that Akre­­ga­­tor! ;-)

And still I have writ­ten on­ly 1066 lines of code, ac­cord­ing to sloc­coun­t.

Up­date: 1127 lines with the ex­tra fea­tures marked above as "up­date"

Urssus: July 23rd (early)

So I did work on it a lit­tle last night:

  • Feed/­­Fold­er con­­text menus

  • Open Feed Home­­­page ac­­tion

  • New Feed (us­es Mark Pil­­grim's feedfind­­, which is awe­­some)

  • New Fold­er

  • Delete Feed/­­Fold­er

  • Some UI fix­es (fi­­nal­­ly fig­ured out how to make a QTree­View's head­­ers look right!)

  • Some bug­­fix­es in tree traver­s­ing (where else ;-)

  • Im­­ple­­men­t­ed "fetch the web page in­­stead of the feed con­­tents" op­­tion for feeds (be­­cause of your an­noy­ing feed, DZone!)

Sad­ly no vis­i­ble changes, so a screen­shot would be use­less.

Urssus: July 22nd / looking good

To­day it was a bit more than two hours, but spread in 10 minute chunks, which is not ex­act­ly ef­fi­cien­t.


  • Rewrote the whole nex­t/next un­read­­/ar­ti­­cle/feed spaghet­ti in a de­­cent way. It's bro­ken re­­gard­ing fil­tered/­­sort­ed ar­ti­­cle list­s, but it's triv­ial to fix.

  • A few UI fea­­tures:

    • Show on­­­ly feeds with un­read ar­ti­­­cles google-read­­­er style

    • Show in dark red the un­read ar­ti­­­cles

    • Show ti­­­tle / date of ar­ti­­­cles in sep­a­rate col­umns

  • Im­­ple­­men­t­ed "Match case" for the search

  • Im­­ple­­men­t­ed dumb systray icon (need to make it use­­ful)

  • Im­­ple­­men­t­ed ar­ti­­cle counts in fold­ers (but not ar­ti­­cle lists which is, of course, hard­er)

And of course, a screen­shot:


A bad side is that the main win­dow takes about 3 sec­onds to ap­pear, but I am pret­ty sure that's fix­able re­order­ing the start­up code.


  • Feed CRUD

  • Post mark as (read­­/un­read­­/im­­por­­tan­t/what­ev­er)

  • Fil­ter by post sta­­tus

  • Search in all feeds

  • Vir­­tu­al feeds

  • Per­­sis­­tent set­t­ings

  • More ag­­gres­­sive feed fetch­ing (now it's a sin­­gle queue, should be a con­­fig­urable num­ber)

  • Lots of mi­nor fix­es

And it will be pret­ty much in fea­ture par­i­ty with Akre­ga­tor, and ready to start the pack­ag­ing work. Not bad for a week of work (BTW: if any­one has any ex­pe­ri­ence pack­ag­ing PyQt stuff for win­dows/­Mac I can use the help ;-).

Still fun (although tree travers­ing is start­ing to get quite an­noy­ing)

Urssus: July 20th / eating my own dogfood

Yes, I am now us­ing uRSSus in­stead of Akre­ga­tor.

On the pro­gram­ming side, I did very lit­tle work be­cause it's sun­day...

  • Im­­ple­­men­t­ed the Find wind­get back­­end code and it works for­wad and back­­ward (but not "Match case" which is pret­­ty triv­ial).

  • Fixed a few fo­­cus is­­sues. When you have a mul­ti­-wid­get main win­­dow, it can get kin­­da trick­­y, and you may end need­ing to move fo­­cus around man­u­al­­ly (not in this case yet).

I have found a few bugs, main­ly re­lat­ed to travers­ing the feed tree, but they are all fix­able with some ef­fort (or by do­ing it cor­rect­ly the sec­ond time ;-)

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)


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!

Contents © 2000-2020 Roberto Alsina