#qi-hardware IRC log for Sunday, 2013-10-27

wpwraknice list of Free alternatives to closed systems: https://www.prism-break.org/12:52
whitequarkwhat's up with the capitalization of Free lately?13:01
viricis it free beer, or Free beer?13:02
whitequarkit just sounds like some religious thing to me13:02
whitequark:/13:02
wpwrakfree beer is when no money changes hands13:02
wpwrakFree beer is when you also get to know how it's made13:03
whitequarkwasn't that "libre" ?13:03
wpwraksome use "libre" but "Free" is more common13:04
wpwraknot sure what the origin of the use of "libre" is. maybe it's just because it sounds nice. maybe it's because people got tired of capitalizing "Free", and explaining it.13:05
wpwrakmaybe it's because the US have been busy making "freedom" a bad word13:05
whitequark"F€ Software" ;)13:06
viricwell, in french or spanish, 'libre' clearly means Free, and not free.13:06
whitequarkviric: I think that was the point13:06
wpwrakviric: yup, it's clearer13:06
viricthat's a good "origin of the use of libre", isn't it?13:07
wpwrakwhitequark: "Free(R) Software" (R) Registered Trademark. All Rights Reserved. ;)13:07
wpwrakviric: yes, that qualifies as another one. so we have four reasons in total :)13:08
wpwrak(for now)13:08
whitequarkwpwrak: no no, I was thinking along the lines of "Our L€ and Savior RMS"13:08
wpwrakah :)13:08
whitequarkcapitalization makes me think like that each time13:09
wpwraki try to avoid that sort of literature :)13:11
viricWho came up with capitalization at all?13:12
wpwraki guess it's a natural consequence of using "free" in a world where there's lots of "gratis" yet not so much freedom13:13
wpwrake.g., Fakebook is "free", right ? :) free admission to the panopticum13:13
viricdid you see the new Intro software by linkedin?13:14
wpwrakbtw, http://www.heise.de/ct/schlagseite/2013/17/gross.jpg  "... we ask this year's employee of the year to come on the stage ..."13:15
whitequarkwpwrak: I've once got sent http://s-ak.buzzfed.com/static/enhanced/terminal01/2010/9/19/22/enhanced-buzz-23247-1284949703-3.jpg, after which I became curious and read it a bit13:15
viricwpwrak: http://engineering.linkedin.com/mobile/linkedin-intro-doing-impossible-ios13:15
whitequarkbut that's probably far too offtopic13:15
whitequark:)13:15
wpwraklinkedin, worst spammer ever13:16
viricwpwrak: now you can make it your mitm mail box checker13:16
wpwraki guess linkedin is great help for people in the Human Resources department. linkedin = applicant_has_linkedin_account(); lemming = job_requires_dumb_obeisance(); if ((linkedin && lemming) || (!linkedin && !lemming)) hire(); else ignore();13:18
viricbeing a linked user is a bad sign13:19
wpwrakwhitequark: ah, now i see where you got that long dong reference from :)13:20
viricwhitequark: the Skeptic's annotated bible always helps13:20
whitequarkwpwrak: nah, that's just what I use idle capacity of my brain for13:20
whitequarkwhat in the world is better than lame puns!13:20
whitequarkviric: honestly I'm horrified enough of the plain one13:21
whitequarkthe long dong verse was the better part of its surrounding context...13:21
cdesc13:21
whitequarksc ?13:21
viricwhitequark: this is classified in categories, to bring you to the best passages13:21
viricsc, the mad spreadsheet software13:21
wpwrakwhitequark: lemme guess, no white knight to save that damsel in distress ?13:22
whitequarkwpwrak: iirc she was stoned or something. with rather extensive details13:22
DocScrutinizer05whitequark: what weird font you#re using?13:23
DocScrutinizer05small uppercase, sometimes even blurred :-o13:23
wpwrakwhitequark: ah, good old violence porn13:23
whitequarkDocScrutinizer05: AŸŸ H13:23
whitequarkhttp://www.panix.com/~eli/unicode/convert.cgi13:24
DocScrutinizer05o.O13:24
whitequarkit often works really strange on monospaced terminals13:24
larscwhitequark: well that's like every second szene in the old testament13:24
larscscene13:24
Action: DocScrutinizer05 just wonders why the is all blurred13:24
whitequarkDocScrutinizer05: I would guess the small-caps have different metrics than the monospaced letters on terminal and your rendering engine gets confused13:24
viricI agree, about the old testament13:24
whitequarkor you don't use monospace for irc?13:25
DocScrutinizer05errr13:25
whitequarkI sometimes forget not everyone uses irssi :)13:25
whitequarkDocScrutinizer05: also it may be related that my display has 170 dpi and I've hinting turned off.13:26
whitequarkprobably that, in fact13:27
whitequarkviric: larsc: then the same people make their children read the bible, then censor the hell out of today's media13:27
whitequark"oh god there is a NIPPLE FINE THEM $100K IMMEDIATELY"13:27
whitequark(I think that's an american thing but nevertheless)13:27
viricwhitequark: they go for the new testament I  think13:28
DocScrutinizer05http://wstaw.org/m/2013/10/27/plasma-desktopSL3743.png13:28
whitequarkDocScrutinizer05: I feel sorry for your eyes13:29
larsccause we all know, we shouldn't take everything in the bibel literally, only the things we like13:29
whitequarkalso that totally looks like hinting gone wrong13:29
whitequarkor just lack of it13:29
whitequark"C" and "O" are slightly blurred too13:30
DocScrutinizer05but only for the D and the E13:30
DocScrutinizer05ooh yeah13:30
viricdo you use vector fonts for terminals?13:31
DocScrutinizer05http://wstaw.org/m/2013/10/27/plasma-desktopmC3743.png13:31
whitequarkviric: on 170 dpi, totally13:32
DocScrutinizer05http://wstaw.org/m/2013/10/27/plasma-desktopdO3743.png13:32
whitequarkand it looks amazing13:32
viricfor 170 dpi maybe it makes sense13:33
wpwrakDocScrutinizer05: "font still under construction" ? :)13:33
whitequarkthe question is why any of you even touch displays with dpi lower than 170 or better 200-23013:33
DocScrutinizer05lol, yeah13:33
whitequark(I don't think PCs with >170dpi exist)13:33
wpwrakwhitequark: no touch displays here13:34
whitequarklol13:34
whitequarkseriously tho, those retina guys have a point13:34
DocScrutinizer05meh, that's what I discussed with Raster like 6 years ago13:35
whitequarktoo bad linux is pretty horrible at supporting nonstandard dpis.13:35
wpwrakwell, they have a GHz race going on. they had to find something to do with all that performance ...13:35
whitequarkwpwrak: meh, simple integrated intel video is all you need. I think it can do up to 4096x409613:36
DocScrutinizer05my 1920*1080 screen is absolutely perfect for me13:37
whitequarkDocScrutinizer05: same here, except it's 13"13:37
DocScrutinizer05diagonale is irrelevant, first approach13:37
whitequarkalso I suggest you to actually look at some hi-dpi displays :)13:37
DocScrutinizer05it's the viewing angle13:38
whitequarkviewing angle? IPS displays are 180° :)13:38
whitequarkwell, 178°13:38
Action: DocScrutinizer05 headdesks13:38
whitequarkhm?13:38
DocScrutinizer05I mean the segment of your view the screen takes13:38
DocScrutinizer05a 3" display can give you same viewing ange as a 40", when you're close enough13:39
whitequarkah, that. yes, if you're sitting further from it, you would see it the same way even with lower dpi13:39
DocScrutinizer05and I fon't need a viewing angle of >60°13:40
whitequark(or is it farther?)13:40
DocScrutinizer05actually I think 45° are fine for me13:40
DocScrutinizer05everything beyond that angle is best served by a second (and third) screen13:42
DocScrutinizer05btw those 45° are horizontal 13:42
DocScrutinizer05vertical it's even way less13:42
wpwrakhmm, some 120 deg here (three screens)13:42
DocScrutinizer05and no need at all for extending it13:42
DocScrutinizer05three screens are for quick "switching" to another screen. You can't watch all three same time13:43
wpwrakwish the one in the middle was bigger (at same dpi, of course), and the side ones then vertical13:43
DocScrutinizer05this for sure is convenient, but you definutely don't need the high resolution of main screen on the auxliary ones13:44
DocScrutinizer05they are just for a cursory glance. If anything fgoes on there, you rather need a conventient method to pull it to main screen quickly13:45
wpwrakDocScrutinizer05: you can actually easily see all three at the same time: http://en.wikipedia.org/wiki/Human_eye#Field_of_view13:48
Action: DocScrutinizer05 wonders if the brain could train to use eye-blinking for command purposes. Like in: look at sth on aux xscreen, blink to move it to main screen13:48
DocScrutinizer05that's field of reception, not field of clear sight13:49
DocScrutinizer05for everythin more than 50° off the straight-ahead line horizontally, a mere blinking LED would suffice13:50
DocScrutinizer05even color doesn't matter there13:50
wpwrakand i work mainly on two of them. the third is for more static content. center screen for main activity (editing), left screen for auxiliary activity (main, chat), right screen for reference material or low-activity sessions13:50
whitequarkDocScrutinizer05: I think not, you normally do not notice blinking as brain edits it out of the input stream13:51
whitequarkperhaps you could use sequences which have a low probability of random occurence, ie double or triple blinking13:51
DocScrutinizer05yep, that's why I wondered if you could train it so it comes naturally13:51
wpwrakwhitequark: your ancestors must have procreated at a very young age13:51
wpwrakwhitequark: for they couldn't see the predators approach from the side ...13:51
whitequarkDocScrutinizer05: I believe it's reflextive, so probably no13:52
whitequarkwpwrak: what?13:52
DocScrutinizer05ETAB13:52
wpwrakah, you meant blinking of the eye, not of a light source. sorry, then it makes sense :)13:52
DocScrutinizer05he meant me, I guess13:52
DocScrutinizer05aah13:53
DocScrutinizer05actually blinking of the light source is all you can notice at peripheral filed of sight13:53
DocScrutinizer05even better than in center of sharp view13:54
DocScrutinizer05but you can't tell about color or shape13:54
whitequarkfun fact: you have sharp, color vision only in a really really small angle, slightly more than 1°13:54
DocScrutinizer05exactly my words13:54
whitequarkeverything else is grayscale and with really low resolution BUT also really low latency13:54
DocScrutinizer05thus for aux xscreens basically 10dpi would suffice ;-P13:55
whitequarkalso, both optical nerve and visual cortex do a lot of preprocessing13:55
DocScrutinizer05movement and evenm simply shapes are done in retina13:55
DocScrutinizer05simple*13:56
whitequarkyeah13:56
DocScrutinizer05you seem to actually have nerves that signal "moving right" from eye to brain13:56
DocScrutinizer05and other elementary tokens13:57
DocScrutinizer05like "corner"13:57
DocScrutinizer05end of line13:57
whitequarkalso, unlike most other nerves in the body, which basically use a form of PWM--two levels, frequency-based signal transmission--color receptors actually use level-based transmission13:58
DocScrutinizer05insects are happy with just that, they don't need more optical processing at all13:58
DocScrutinizer05wow13:58
DocScrutinizer05didn't know that13:59
whitequarkI think it's recent research13:59
DocScrutinizer05fun13:59
DocScrutinizer05a smal "analog" section in the "digital" brain13:59
DocScrutinizer05err CNS13:59
whitequarkit's not very digital I'd say. the range of duty cycles is still continous14:00
whitequarksame for inhibition/excitation points14:00
DocScrutinizer05did you know that venus flie catcher plant needs exactly 2 signals on 2 of the sensor hairs to close their leaf and catch the fly. (or maybe it been 2 signals or 1 on three hairs)14:01
whitequarkbtw, did you know that walking is ultimately controlled by exactly two neurons in your spine?14:01
cdewhitequark, did you know that in europe carrot is officially a fruit?14:02
whitequarkeach one, when excited, excites another one and inhibits itself14:02
DocScrutinizer05yeah, heard sth like that. and it seems those two neurons get nervous now14:02
whitequarkDocScrutinizer05: (venus fly catcher) does it even have nerves?14:02
whitequarkor any electrical signal transmission at all14:02
DocScrutinizer05that's the funny point, they don't14:02
whitequarkcde: @RealCarrotFacts ? :D14:02
DocScrutinizer05still they can count, and do logical OR14:03
DocScrutinizer05even latch14:03
DocScrutinizer05and timeout14:03
whitequarkDocScrutinizer05: sounds not very complex, there's a *lot* of processes like that in the cell which are purely chemical14:03
whitequarkfor example gene expression14:03
DocScrutinizer05sure14:03
whitequarkyou can have AND, OR, latches, delays there14:04
DocScrutinizer05still amazing14:04
whitequarkNOT too14:04
whitequarkI think it'll be mere years until you can synthesize verilog into DNA :D14:04
DocScrutinizer05yeah, that will be fun14:04
DocScrutinizer05I#m already planning for my time as IT psychologist14:05
DocScrutinizer05once neuronal networks become too complex to service them any other way14:05
whitequark"do you want to talk about it?" *the bacteria indifferently spins his flagellum"14:05
DocScrutinizer05hehe14:06
cdewhitequark: I'm not kidding. that's because portugal make carrot jam, and since jams can only be made from fruit, the lawmakers declared carrot to be a fruit14:06
whitequarkcde: what the hell14:07
cdemy thoughts exactly14:07
whitequarkthey should have triaged that as an upstream issue to whoever wrote the definition of "jam"14:07
DocScrutinizer05the distinction beween fruit and vegetable is pretty fuzzy in daily speech14:07
DocScrutinizer05and absolutely not in line with biology14:07
DocScrutinizer05peppers and cucumber are usually called vegetables14:08
DocScrutinizer05while indian figs are fruits (hmm maybe they really are)14:09
whitequarkwatermelon is a berry, strawberry is a multinutlet14:09
DocScrutinizer05yeah14:10
whitequark(there's apparently no word equivalent to "<=>3>>@5H5:" in english, I translated it as "multinutlet")14:10
wpwraklet's just call them pre-meat14:10
DocScrutinizer05ROTFL14:10
cdeI'm looking forward to the sequel of Cloudy with a Chance of Meatballs. lots of puns of fruit names14:10
whitequarkalso there's this weird thing in english where you call everything a fruit14:10
whitequarka nut is a fruit, wtf14:10
DocScrutinizer05Rhubarb is no fruit either14:11
whitequarkin russian, a fruit is something bright and juicy. apples, oranges, ...14:11
wpwrakcan you make a jam of the fruits of your labour ?14:11
DocScrutinizer05they can make jam of me though14:12
whitequarkwpwrak: "jam" is a borrowed word in russian14:12
whitequarkso no proverbs with it14:12
whitequarkor good puns14:12
whitequarkbtw I'm working on a bright theme for irclogger14:14
DocScrutinizer05well, EU is mad again. While jam in german is "Marmelade", it officially only applies to lemon and orange jam, everything else is "Konfituere" officially14:14
DocScrutinizer05duh, somebody switching off lights outside14:15
whitequarkthrow a grenade there. that'll teach 'em14:16
DocScrutinizer05I have to throw that pretty high14:16
DocScrutinizer05looks and feels like thunderstorm approaching14:17
DocScrutinizer05o/14:17
cdewow I just found out my server's reverse is within poneytelecom.eu14:21
cdeinsanity rules14:21
whitequarkhttp://stuff.whitequark.org/f/479eaf611a/14:29
whitequarkwhatcha think about it?14:30
wpwrakgood contrast14:32
whitequarkyeah, I thought I would hate a bright version--nope, it's pretty good14:33
DocScrutinizer05wpwrak: you should get a few rtl2832 dvb-t sticks14:34
DocScrutinizer05particularly with a decent up-converter to give you that range fro virually 0 to 100MHz as well, they are extremely convenient lab tools14:36
DocScrutinizer05receiver tuning from 0..2GHz, with just one switch-over at 100MHz. I couldn't even dream of this a few years back14:37
wpwrakthey're missing the most interesting band, 2.4 GHz14:38
DocScrutinizer05only limitation is max bandwidth14:38
DocScrutinizer05should also work with a down-converter14:38
DocScrutinizer05ring-modulator and a 2GHz LXO14:38
wpwrakbut i have an usrp2. was pricy, of course, but works. not that i used it all that extensively, mainly as spectrum analyzer14:39
DocScrutinizer052GHz highpass at the input, lowpass at the output14:39
DocScrutinizer05LOL14:39
DocScrutinizer05preaching to the choir14:39
DocScrutinizer05pk, so look at this: http://talk.maemo.org/showthread.php?t=9118214:42
DocScrutinizer05s/pk/ok14:44
DocScrutinizer05fU qi-bot, your syntax checker is broken14:44
wpwrakyeah, nice if you're interested in those frequency bands14:45
whitequarkaaaand deployed: http://irclog.whitequark.org/14:53
wpwrakwe had no activity at all on the 21st ? interesting14:59
DocScrutinizer05rtl_fm -N -l 6 -E -f 173240000 -s 22050 -o 4 -g 100  | tee >(./multimon -a POCSAG1200 -f alpha -t raw /dev/stdin) >(play -t raw -r 22050 -e signed-integer -b 16 -c1 -V1 -q -) > /dev/null15:12
DocScrutinizer05can somebody explain to me the "  >(... " syntax? I never seen that15:12
whitequarkDocScrutinizer05: it launches a subprocess with a pipe as input, and is substituted for that pipe15:15
whitequarktry echo >(cat)15:15
whitequarkand echo foo > >(cat)15:15
DocScrutinizer05lol, that's exaxtly what I just did15:15
whitequarkhivemind!15:16
DocScrutinizer05I still don't get it15:16
DocScrutinizer05jr@saturn:~> echo >(cat)15:16
DocScrutinizer05/dev/fd/6315:16
DocScrutinizer05jr@saturn:~> date >(cat)15:17
DocScrutinizer05date: ungültiges Datum /dev/fd/6315:17
wpwrakthe more common variant is <(command)15:17
DocScrutinizer05yeah, that is kinda semi-sensible15:18
wpwrake.g., cat <(do-this) <(do-that)15:18
whitequarkparent shell does r,w=pipe(). suppose r=62,w=63. it launches cat with stdin replaced with 62, then substitutes the >... construct with /dev/fd/6315:18
whitequarkyou need to add another > before it to redirect15:19
whitequarkso date > >(cat)15:19
whitequarkwhoever came up with that syntax is a horrible person15:19
Action: DocScrutinizer05 tries in vain to wrap his head around it15:19
larscjust use | instead15:20
Action: whitequark . o O ( whoever came up with unix... oh, we know who. )15:20
whitequarklarsc: won't work15:20
whitequarkhere tee is used as a stream duplicator15:20
larscah I see15:21
DocScrutinizer05there's obviously a huge difference between date|cat and date >(cat)15:21
pcercuei>() is evaluated as a file?15:21
whitequarkDocScrutinizer05: date|cat ~ date > >(cat)15:21
whitequarkdate >(cat) cannot be reproduced with | syntax15:21
larscpcercuei: kind of15:21
Action: DocScrutinizer05 gives up and ponders having some real food15:22
larscyou could do the same using pipes15:22
whitequarklarsc: could you?15:23
larscs/pipes/named pipes15:23
whitequarkoh. yeah. it's even more contrived to use though15:23
DocScrutinizer05I'd like to see it using named pipes. Might help me to grok it15:24
larscmkfifo pipe1; mkfifo pipe2; rtl_fm ... | tee pipe1 pipe2& ./multimon ... pipe1& play ... pipe215:24
DocScrutinizer05could you use the simpler date >(cat) ?15:25
larscno15:25
larscthat doesn;t make any sense15:25
DocScrutinizer05ohwell15:25
DocScrutinizer05cya15:25
larscdate > >(cat) on the other hand would be. mkfifo pipe; data > pipe& cat pipe15:26
DocScrutinizer05ok, now I think I got it15:32
larscpcercuei: btw. did you already had your phone call?15:32
DocScrutinizer05>(...) returns a FD that's used as stdin in the command inside ()15:33
whitequarkexactly15:33
larscbut the fd looks like a regular file to the other program15:33
DocScrutinizer05yep15:33
DocScrutinizer05wget -O >(less)15:35
DocScrutinizer05wget -O >(less -) even15:36
ysionneauwith which shell does this work?15:36
larscbash15:36
larscand zsh15:36
ysionneauweird, I cannot get it to work15:36
ysionneauI tried uname -a >(cat)15:37
larscuname -a > >(cat)15:37
ysionneauah, right15:37
ysionneauworks:)15:37
larscbut it is a bash-ism I think15:39
larscso be careful when you use it in scripts15:39
ysionneauok =)15:39
DocScrutinizer05I gather <() returns a FD pointing to stdout then15:39
cdeDocScrutinizer05: but when it is useful as compared to a regular pipe?15:40
DocScrutinizer05when your outer command needs a filename as argument15:40
DocScrutinizer05as in wget -O >(less -) 15:40
DocScrutinizer05or even strace15:40
DocScrutinizer05or tee ;-)15:42
cdeoh, clever15:42
DocScrutinizer05wget -O - http://example.com/dvd.iso | tee >(sha1sum > dvd.sha1) > dvd.iso16:09
DocScrutinizer05That makes `tee' write not just to the expected output file, but also to a pipe running `sha1sum' and saving the final checksum in a file named `dvd.sha1'.16:09
DocScrutinizer05Note, however, that this example relies on a feature of modern shells called "process substitution" (the `>(command)' syntax, above; Process Substitution (bashref)Process Substitution.), so it works with `zsh', `bash', and `ksh', but not with `/bin/sh'. 16:09
DocScrutinizer05from tee info page16:09
cdehttp://anticache.img9.joyreactor.com/pics/post/comics-optipess-jurassic-park-unix-638659.png16:11
Action: DocScrutinizer05 tries to recall where his humor got lost16:14
cdea joke with bash in it would have been better, I admit16:16
DocScrutinizer05You can extend this example to make `tee' write to two processes, computing MD5 and SHA1 checksums in parallel. In this case, process substitution is required:16:17
DocScrutinizer05      wget -O - http://example.com/dvd.iso  | tee >(sha1sum > dvd.sha1)   >(md5sum > dvd.md5)  > dvd.iso16:17
cdethat's severly awesome16:21
wpwraknow, how do you check for wget failing ? :)16:29
ysionneauit's hard to try not to remember such tricks16:30
ysionneaubecause you cannot use it for production or important scripts16:30
ysionneausince it's not portable :(16:30
wpwrakbash is pretty much everywhere. sometimes you don't really have a choice.16:31
wpwrakjust make sure your script begins with #!/bin/bash, and your makefile with SHELL = /bin/bash16:31
ysionneau99% of the time indeed that works16:34
larschaving scripts that expect bash to be installed are really annoying, in my opinion16:35
larscespecially if they do #!/bin/sh16:36
ysionneauhehe sure this is a serious mistake16:36
ysionneauusing bashism and putting /bin/sh in shebang16:36
wpwrakyou need bash for things that use pipes and need to check the success of the first command, i.e., with $PIPESTATUS16:39
larscnot if you use named pipes16:39
larscor subshells16:39
wpwrakyeah, but that's messy16:40
DocScrutinizer05coproc is also nice16:40
larscbest is to not use shell scripts at all, I guess ;)16:42
DocScrutinizer05and I wouldn't want to miss array envs16:43
wpwrakyes. better write the stuff in erlang .net ;-)16:43
DocScrutinizer05*cough+16:43
sanderrwpwrak: Errorlevels? (wget failing)16:53
wpwrakthe return code, yes16:54
larscIf you are already using >(...) you could slightly rewrite things though: wget -O >(tee >(sha1sum > dvd.sha1)   >(md5sum > dvd.md5) > dvd.iso) http://example.com/dvd.iso16:57
wpwrakyou could still get errors from the subshells ...16:59
wpwrake.g., after  mkdir dvd.sha116:59
wpwrak(to not use the standard example of the disk getting full)16:59
DocScrutinizer05( wget -O - http://example.com/dvd.iso; echo $? >&2) | tee >(sha1sum > dvd.sha1)   >(md5sum > dvd.md5)  > dvd.iso17:01
DocScrutinizer05?17:01
wpwrak;-))17:01
wpwrakyou want to use $PIPESTATUS17:01
wpwrakbut i guess all the subshells will be a problem you can't even solve with that17:02
DocScrutinizer05well, you got &3 to &9 iirc17:06
DocScrutinizer05but yeah, no globals suck17:08
DocScrutinizer05I never really got it why unix shells don't support global envs17:08
DocScrutinizer05at least common var space for a parent and its childs17:09
Action: Arhuaco is scared of bash20:20
whitequarkDocScrutinizer05: you can use any fd for &. echo foo >&6320:44
DocScrutinizer05hmm, somewhere I've read about a limitation, build-dependent21:39
DocScrutinizer05maybe not for >&21:40
--- Mon Oct 28 201300:00

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!