RSS reader: BazQux

Since the death of Google Reader (may the googler who doomed it burn in non-existing hell) I've been looking for new RSS reader. What I need is:

  • Web-app (or some kind of synchronization between machines);
  • good keyboard navigation;
  • responsiveness;
  • design which lets me read stuff and gets out of the way.

That's all I can think out at the moment. Strangely enough, that seems to be quite a lot: I looked at The Old Reader and Feedly and several others, but wasn't satisfied (though used The Old Reader for more than half a year). And now BazQux has implemented keyboard shortcuts for selecting feeds, and I gave it a spin again. And I actually liked it. It costs $9 per year, but you can evaluate it for free, it's written in Haskell by a Russian programmer and has quite a bunch of features.

Make up your mind

GNU coreutils are so elusive:

 [b0x123a@i6n66 ~]$ rm bin/
rm: cannot remove `bin/': Is a directory
 [b0x123a@i6n66 ~]$ rm bin/ -r
rm: cannot remove `bin': Not a directory

Terry Pratchett: accordion quotes

Terry Pratchett seems to have a thing about accordion players. I've got a couple of friends playing (or used to play) accordion, so I have collected these quotes from Discworld books for them (and hopefully other people) to enjoy (-:E

This list seems to be quite complete (insofar as my pdfgrep tells me), but feel free to point out anything missing. Too bad you sometimes have to know the book context to get the joke fully, but here they are anyway.

Read more…

Piping commands till it hurts

(Just to save a useful and complex construct for future reference)

List all the overlay maintainers who hasn't migrated their packages to virtual/pkgconfig:

ag --files-with-matches dev-util/pkgconfig | xargs dirname | uniq \
       | xargs -I {} grep '<name>' '{}/metadata.xml' \
       | sed 's:\s\+<name>\(.\+\)</name>:\1:' | sort -u

Yes, I use ag instead of grep, being too lazy to add all the necessary options. And wait. And ag is so much better however you look at it.

Shantaram

Digging through my ebook reader's memory, I've stumbled upon book hitherto quite unknown to me, „Shantaram“ by Gregory David Roberts. So I've read it (that's what books are for, ain't them?). Well… It's one of the most impressing books that I have read recently (along with „Doctor Zhivago“). I will not retell it, read the Wikipedia or something if you want to know the plot (but what for? Don't spoil the reading!). But the book is great. Life, people, good people, good things in common people, war, (of course!) love… Modern literature without dirt, sex, drugs and violence on every other page. Book that gives you something to think about without showing off intelligence. If you heed my advice, read it.

Anyone who walks away from Shantaram untouched is either heartless or dead or both.
  • Jonathan Carroll

Sony PRSA-CL10B: review

I've recently bought Sony Reader PRS-T1. Excellent reader, rest assured of that. But cover is a must-have for such a thing, so I chose Sony PRSA-CL10B. "Let it be light!", I thought. Oh yes, there is. The problem is that the cover is crappy by itself.

  • It is soft: sags easily down to screen itself
  • It lacks any lock: can't be fixed in neither opened nor closed state; no press stud or magnet or anything, cover is more or less loose
  • It's bloody expensive (more than 40% of Reader price); considering aforementioned points, I'd call this ridiculous

I'm just glad I haven't decided to buy "light-less" (a bit cheaper) version of that cover, because LED light is the only thing I like about it. Oh, and the Reader is great. Just choose cover wisely, remembering what I wrote here.

Flask sessions and unicode_literals

If you had tried to use Flask sessions and got something like that:

File "/usr/lib64/python2.7/site-packages/flask/app.py", line 889, in __call__
  return self.wsgi_app(environ, start_response)
File "/usr/lib64/python2.7/site-packages/flask/app.py", line 871, in wsgi_app
  with self.request_context(environ):
File "/usr/lib64/python2.7/site-packages/flask/app.py", line 836, in request_context
  return _RequestContext(self, environ)
File "/usr/lib64/python2.7/site-packages/flask/ctx.py", line 33, in __init__
  self.session = app.open_session(self.request)
File "/usr/lib64/python2.7/site-packages/flask/app.py", line 431, in open_session
  secret_key=key)
File "/usr/lib64/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 308, in load_cookie
  return cls.unserialize(data, secret_key)
File "/usr/lib64/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 255, in unserialize
  mac = hmac(secret_key, None, cls.hash_method)
File "/usr/lib64/python2.7/hmac.py", line 133, in new
  return HMAC(key, msg, digestmod)
File "/usr/lib64/python2.7/hmac.py", line 72, in __init__
  self.outer.update(key.translate(trans_5C))

...you might be obscured. Fear not! The reason may lurk in

from __future__ import unicode_literals

Just declare your SECRET_KEY as `bytes` object and get happy again!

SECRET_KEY = b'smthverrysekret'

About springs

Spring has came (to northern hemisphere, that is). That is to say, calendar one, and it doesn't seem true one to me. We count years by sun, so all the seasons of year should be determined by solar events, solstices and equinoxes (equinoces?). Astronomers believe that spring begins on vernal equinox (20 Mar in 2011). But that's a bit strange to me personally, since that way daytime increases only in winter and spring, and summer and autumn are both time of "darkening". I'd prefer to consider that equinox (or solstice) are middles of theire seasons, so spring is a quarter of year, when daytime growth is fastest; summer is a quarter of year with the biggest daytime etc. Either way, the first day of real, solar spring is three weeks away from today. Before or after.

Tabs and spaces

That's quite old and well-known, of course, but I now have to deal with code like that (count the spaces!):

class c_integral_type(c_type):
    def __init__(self, name, format, min, max):
       c_type.__init__(self, name, struct.calcsize(format))

or like that (MyOpera replaces tabs, so believe my comments):

    def genMemList( self, members ):              # indented with 4 spaces
#        self.append( '\tdef members(self):\n' )  # indented with one <Tab>

So… image0


Oh noes! That's what I had to deal with:

  % pylint buratino
   .......
Your code has been rated at -1.79/10

My code isn't perfect, I'd be first to agree, but it scores 7/10, and it's positive 7, mind you! Bloody hell. So, back to work then

Eselect'ing xorg.conf

While experimenting with nvidia/nouveau I've decided to write module for app-admin/eselect to eselect required /etc/X11/xorg.conf from list. So here it is. Get it, use it, report bugs in it (here or, better, open issue on GoogleCode). Ebuilds are in rion overlay.

psycopg2 returns tuples of string

Today I was fiddling with PostgreSQL (v8.3, if anyone is interested) database from Python using famous psycopg2, but suddenly got stuck in unexpected place. Had switched to bpython shell I saw the following:

>>> cur.execute('''SELECT (parent, level) FROM "MsgElems" WHERE msg_id=1;''')

>>> cur.fetchone()

('(0,1)',)

SELECT returned tuple of string, one string. Now that's what I call unexpected… I didn't find anything neither in Python DBAPI PEP nor psycopg docs, but after some time a bright idea came:

>>> cur.execute('''SELECT parent, level FROM "MsgElems" WHERE msg_id=1;''')

>>> cur.fetchone()

(0, 1)

Watch out. Meanwhile I'll try to find out, what triggers such weird behaviour, and if it is weird at all.

Change the code and see the result

An interesting idea came to me several days ago. I have to write C++ code generator (sourcing data from SQL database), so I installed Jinja2, sharpened text editors and then asked myself: „Wouldn't it be beautiful to see the result just as I type Python code, portion by portion? There's a use for two monitors: the first one displays coding, the second one keeps freshly generated result always ready for review.“

Read more…

Philips Xenium E100: review

Recently my old Siemens C60 has died, so I had to buy new cell phone. Since I'm not phone geek at all, I've decided to buy the simplest (just to call and write SMS) of Philips Xenium series (exceptional battery lifetime). So, here it is, my Philips Xenium E100.

Read more…

Gentoo: DRM, Radeon/RadeonHD, ATI R6xx/R7xx

Here's brief summary of one hour on **#radeon** IRC channel:

  • old DRM modules don't create /dev/dri/* for ATI R6xx/R7xx-cards, that's normal;
  • kernel (up to, but not incl. 2.6.30) DRM aren't that old, but neither aren't new enough to support the cards in question;
  • moreover, DRM mainline lacks their support too: therefore x11-base/x11-drm doesn't suit;
  • in order to build DRM modules for R6xx/R7xx, one should git-clone source from specific git branch (see Xorg Wiki)
  • use ebuild from x11 overlay with DRM_LIVE_BRANCH="r6xx-r7xx-support" added to your /etc/make.conf

Added later: described technique has no use, if you're running kernel 2.6.30 and later. Just compile DRM-modules and have fun.

How to check if your ISO-image has been burnt properly

If you has burnt some .iso-image with known md5-checksum, you can verify if disk is valid and was burnt properly

dd if=<your-CD/DVD-ROM-device> | md5sum

Example:

# dd if=/dev/hdc | md5sum && md5sum /mnt/win_e:/software/linux/systemrescuecd-x86-1.0.4.iso
68f9c2d885d95c82bfe6c7df736ae0a3  -
   <dd output skipped>
68f9c2d885d95c82bfe6c7df736ae0a3  /mnt/win_e:/software/linux/systemrescuecd-x86-1.0.4.iso

As you can see, md5sums are the same, so disk is valid. If someone knows how it could be done under MS Windows, please comment here.

Django: limiting querysets in admin forms

Let's suppose you have two related types of objects in your Django app. Call them Object and SuperObject, related ManyToMany'ly. And when you add/change SuperObject in Django admin, there's all Objects available for selection. But you need to limit the choices, and limit dynamically (perhaps, depending on current user). Here's quite straightforward but working technique.

Read more…

PostgreSQL on Gentoo: split ebuilds

Just a note for those who looks for info on Gentoo & PostgreSQL (like I did today):

  • yes, as you might be already suspecting, PostgreSQL has been split
  • [STRIKEOUT:yes, there's a little howto] there was one. Just install dev-db/postgresql-base (if you don't need server; also it's a dep for lots of packages, for example, those with USE="postgres") or dev-db/postgresql-server (PostgreSQL server)

Got stable now, old-style packages are masked and will be removed.

A quest

Now I have a Linux-server with external IP at my (almost my) disposal. Python, Django, PostgreSQL, nginx... So I can do everything I want. All that I need now, is to decide what do I want (-:E Any suggestions for me to implement?

Hardingrock - Grimen (2007)

Хы

If one had learnt about the Stone of Scone, browsing pages about Discworld dwarf bread, just in several hours he would stumble across this Stone in Wikipedia, reading about a year from Heidevolk's song title

Ӱлгер - Агын Хустар

High-level and low-level

Fresh impressions.

Low-level programming trap — writing for half of a day code instead of finding suitable ready-to-use module in five minutes.

High-level programming trap — looking for suitable module for a few hours instead of writing your own code in quarter of hour.

IMified

Now IMified works at last, so I can "spread the word" about it. But... it's too late and I'm too lazy to type all that you can read on the off.site… (-;E

So go right there and find out how do you get notes, ToDos, reminders etc in your Jabber! (-:E

OpenSource warrior

I am great warrior of OpenSource, indeed. On Thu, Oct 18 Kubuntu and Xubuntu 7.10 were released and in that evening I've downloaded all eight .iso-images and put it out in local network for people who cannot download them by ourselves. And today I managed to re-upload two images to other server for Far East Ubuntu users (-%E

Веснянка - Ой, заграли музиченьки [2003]

Metall!

Slutligen har vinter kommit! Nu dags att lyssna på nordisk metal (-%E Ja, det ljuder jättebra med det nya ljudsystemet!

Ensamheten, tecken av kraft,
Ensamheten, tecken av kraft,
Att allt se, tecken av kraft,
Evigt liv, tecken av kraft...

Finntroll - Jaktens Tid [2001]

Íslenska

There's a good word in Old Icelandic, hraustr (meaning brave, strong). Sounds conformably. It's believed to be derived from Indoeuropean root, and this root is presented in Russian as "крот" ([krot], a mole)

Ancient Teutons and Slavs seem to me to have a little bit different conception of strength and valour (-%E

Edicode

About two weeks ago **LoiR**, a friend of mine, pointed Edicode sidebar out for me. If you have to deal with non-ASCII symbols, absent in your keyboard layout, then that's tool you need (-:E

Hagalaz' Runedance - The Winds That Sang Of Midgard's Fate [1998]

Omni-nationalism

Probably you came there following the link in my forum signature promising to explain my user title. Well, "omni-nationalist" is a term invented by myself (-:E At first I used "pan-nationalist" term, but found it to be already existing and unsuitable for my needs. So, little excurse to Latin was undertaken, and a brand hot-coined term is ready-to-use (-:E

So, who are the people calling themselves omni-nationalists? Yep, the term is somehow linked with usual nationalism, but has one major distinction: omni-nationalist is nationalist of all nations. As you can know or ask me or see on my About page, I'm Russian, therefore I'm a little bit Russian nationalist. Also I have Balto-Finnic roots, so I'm a great Votic, Izhorian, Karelian etc. nationalist. When the question is about modern celts, then I appear to be hard Irish and Scottish nationalist. Just similarly I could be referred to as Icelandic, Faroese, Dakota, Zulu, Indian, <...> nationalist.

Well, now you can see, what's my point about. I believe that every folk with its culture and language is dramatically important, so that worths to be uneasy about it. Thanks for patience and attention (-:E