Skip to main content

Ralsina.Me — Roberto Alsina's website

Posts about programming (old posts, page 34)

Urssus: July 25th - approaching parity

My stat­ed goal of Akre­ga­tor fea­ture par­i­ty is look­ing even bet­ter. With screen­shot!

urssus7

If you did­n't read (or care about) last night's up­dates to yes­ter­day's post, here they are:

  • Im­­ple­­men­t­ed "Mark posts as read on ar­ri­val for this feed"

  • Im­­ple­­men­t­ed cus­­tomup­­date in­­ter­­vals for feeds

  • Fixed ar­ti­­cle fil­ter­ing

  • Im­­ple­­men­t­ed fil­ter­ing by ar­ti­­cle sta­­tus

  • Im­­ple­­men­t­ed fold­er-as-feed (not per­fec­t)

  • Ex­­port as OPML

And to­day I did the­se:

  • Switched from Mako to Ten­jin (which I can just bundle)

  • Im­­ple­­men­t­ed "Com­bined View" mode (y­ou can see it in the screen­shot above)

  • Im­­ple­­men­t­ed "Im­­port Tech­no­rati top 10"

  • Or­­ga­nized the code cor­rec­t­­ly

  • Wrote a Paver script so it can be in­­stalled nice­­ly (some­­day)

  • Re­­moved all gen­er­at­ed files from the re­po (now you gen­er­ate them us­ing paver and/or set­up.py)

So, on the TO­DO we have:

  • Fav­i­­cons

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

  • Bug­­fix­es

  • Pag­i­­na­­tion for com­bined­View (so you don't have a page with 90000 posts in it which takes a month to load)

  • Akre­­ga­­tor DB im­­port scrip­t, so I can com­­pare per­­for­­mances rea­­son­ably.

And still fun!

Cur­rent LOC coun­t: 1295

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­­er.py, 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.

Im­prove­ments:

  • 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:

urssus5

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.

TODO:

  • 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 ;-)


Contents © 2000-2023 Roberto Alsina