/srv/irclogs.ubuntu.com/2014/10/17/#ubuntu-touch.txt

Basketballnexus 9???02:13
Basketballsupport02:13
rwwthe Nexus 9 hasn't shipped yet, how would we have support for it?02:14
Basketballi mean will it get ubuntu touch02:14
rwwi expect we'll find out... when it's shipped and Touch developers have one02:15
=== salem_ is now known as _salem
=== Stskeepz is now known as Stskeeps
=== Guest99312 is now known as steev
sharehello05:23
dholbachgood morning05:27
rpadovanioSoMoN, hey :-)08:00
oSoMoNrpadovani, hey08:01
rpadovanioSoMoN, so, seems playing with inverseMouseArea has some strange consequences, so I think we have two choice right now: remove the inverse mouse area, merge the branch and mark bug 1381723 as affecting the browser too08:03
ubot5bug 1381723 in messaging-app (Ubuntu) "[ListItemWithActions]After the swipe of an element I expect to press anywhere to dismiss" [Undecided,New] https://launchpad.net/bugs/138172308:03
rpadovanior waiting that someone (maybe I) fix bug 1381723, but I don't have an eta on this08:04
oSoMoNrpadovani, let’s go for the first option (although at the moment landings are blocked anyway, so there is no rush)08:05
rpadovanioSoMoN, gotcha, thanks!08:07
JamesTaitGood morning all; happy Friday, and happy Mulligan Day! :-D08:46
=== vrruiz_ is now known as rvr
seb128what component is displaying the "<...> wants to access your location" dialogs?09:07
vitimitiHi09:10
ogra_seb128, trusted-store ... tvoss' baby09:13
seb128ogra_, thanks09:13
seb128mpt, https://launchpadlibrarian.net/182217342/camera.png ... should the buttons order be reversed? ("allow" which is the positive action on top)?09:16
tsdgeosogra_: hi ho09:26
ogra_tsdgeos, hey09:27
tsdgeosogra_: so dednick has a better fix for that edges problem09:27
tsdgeosogra_: do we want to test the better fix? or just land the better fix in trunk and take current for rtm?09:27
tsdgeosor?09:28
ogra_tsdgeos, we are already building an image with the fix (and QA signed it off) ... i guess we can improve later still09:30
ogra_(and Saviq is on a plane afaik)09:31
tsdgeosyes, he just went on board09:31
tsdgeosogra_: ok, let's do that then09:31
tsdgeosogra_: question from the ignorance, how do you build an image if the thing hasn't landed? you distropatch it?09:32
ogra_it has landed, Saviq prepared a silo for it tonight09:33
ogra_Qa signed this off and we released it into rtm this morning09:33
dednickogra_: https://code.launchpad.net/~unity-team/unity8/edgedemo-update-indicators/+merge/238637 ?09:34
ogra_dednick, right09:34
tsdgeosogra_: i don't see it in https://code.launchpad.net/~unity-team/unity8/rtm-14.0909:34
dednickyeah, i dont see it anywhere... :/09:35
ogra_hmm, better wait for sil2100 to show up ... no idea about that09:36
ogra_ah, well09:36
ogra_http://people.canonical.com/~platform/citrain_dashboard/#?distro=ubuntu-rtm&q=09:36
ogra_nobody did merge and clean on silo 005 yet :)09:37
tsdgeosok09:37
ogra_Mirv, any idea whats the process here ? i think sil2100 usually likes to keep the silos areound for a while for reverse inspection if needed09:37
ogra_(though this change looks small enough that we could just clean i think)09:38
mptseb128, yes, when buttons don’t fit horizontally, the positive action should be on top09:38
ogra_tsdgeos, dednick i assume it blocks your work today ?09:38
mptseb128, also the negative one should be “Don’t Allow” rather than “Deny” :-)09:38
mpthttps://wiki.ubuntu.com/AccountPrivileges#Phone09:38
mptseb128, and I guess the reason you’re there is that you’re fixing the body text?09:39
dednickogra_: no, it's fine. my patch is just an improvement.09:39
ogra_dednick, might make sense to have a landing for it ready :)09:39
Mirvogra_: usually silos are simply cleaned quickly, and the only possible holdup is when it's wanted to finish the sync to utopic/rtm counterpart before cleaning up. but now utopic is in Final Freeze.09:46
ogra_Mirv, right, then i think we can just merge and clean so the trunk is up to date again09:47
Mirvogra_: yes. plus, unity8 has rtm branch even.09:47
ogra_right09:47
seb128mpt, thanks, and no, the reason is that I'm annoyed by the order, I expect to have "allow" on top and it feels wrong every time I've to use that dialog ;-)09:47
Mirvtsdgeos: now in rtm trunk09:47
seb128mpt, I can submit a fix for the label while I'm at it, thanks09:48
tsdgeosMirv: ok09:48
mptseb128, bug 1352960 (see also bug 1353333 and bug 1354376)09:49
ubot5bug 1352960 in trust-store "trust-store's default prompt should implement design guidelines" [High,Triaged] https://launchpad.net/bugs/135296009:49
ubot5bug 1353333 in trust-store "MirAgent should resolve App ID to human legible strings" [Critical,Confirmed] https://launchpad.net/bugs/135333309:49
ubot5bug 1354376 in trust-store "Dialog Popup title overflows bounds." [Critical,Confirmed] https://launchpad.net/bugs/135437609:50
seb128mpt, thanks09:50
mptseb128, actually, looks like 1353333 is already fixed, see bug 136770709:52
ubot5bug 1367707 in trust-store (Ubuntu) "poor text in prompt to user" [Critical,Fix released] https://launchpad.net/bugs/136770709:52
mptBecause it’s a “should”-style bug report, it’s hard to tell whether it’s a duplicate09:54
=== renato is now known as Guest37257
stianhjTrying to install on my Nexus 5 using tasemnice.eu server. I get to recovery on my phone (with the Ubuntu logo) and ubuntu-device-flash script says "Failed to enter recovery", and the script stops.11:39
stianhjAnyone know what's up?11:39
=== boiko__ is now known as boiko
=== MacSlow is now known as MacSlow|lunch
popeyhmm, i tried setting my ringtone as per james henstridge's suggestion at http://askubuntu.com/questions/372759/ringtones-in-ubuntu-touch11:56
popeyseems the gsettings fu no longer works, anyone know if it's a different key or how I can do it without making my phone RW?11:57
=== _salem is now known as salem_
cwaynepopey: the gsettings should work, that's still the appropriate key12:27
popeycwayne: maybe i need to reboot..12:30
popeycwayne: reboot didn't do it ☹12:34
ogra_popey, cwayne, gsettings had an issue with wrongly used quotes wwhen programmatically setting keys ... not sure if that also might hit the custom tarball (or if it is fixed already)12:36
popeyi am not using any quotes12:36
cwayneogra_: custom tarball works fine :)12:36
popeygsettings set com.ubuntu.touch.sound incoming-call-sound /path/to/ringtone.ogg12:36
popeydoing that12:36
ogra_seb128, do you remember if that was fixed already ?12:37
ogra_(teh original issue is about en/disabling notifications from system-settings)12:37
popey$ gsettings get com.ubuntu.touch.sound incoming-call-sound12:38
popey'/home/phablet/Ringtones/nokia_7.ogg'12:38
popey$ gsettings get com.ubuntu.touch.sound incoming-message-sound12:38
popey'/home/phablet/Ringtones/OOT_Navi_Hey_listen.ogg'12:39
popeylooks like they are set correctly12:39
popeyfiles are owned by phablet, 66612:39
Laneyno12:44
LaneyRingtone and message sounds are stored in AS12:44
popey(what is AS)?12:45
Laneygdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedeskto/Accounts/User32011 --method org.freedesktop.DBus.Properties.Set com.ubuntu.touch.AccountsService.Sound IncomingCallSound <"/blah">12:46
Laneyaccountsservice12:46
LaneyI typed that manually so there might be typos :-)12:46
Laneyfor example freedeskto → freedesktop12:46
popeyok, thanks!12:48
Anandhi12:49
Anandi have samsung S2 and i want to install ubuntu touch on it i have tryed the step on the web but not able pass through12:51
Anandcan any on help me on that12:51
=== dandrader is now known as dandrader|afk
=== MacSlow|lunch is now known as MacSlow
=== dandrader|afk is now known as dandrader
benbugohitHi, did anyone encountered a "ubuntu-rtm-proposed v96" unity8/media-hub bug ?13:33
seb128ogra_, what Laney said13:34
ogra_seb128, ah, ok13:34
tedgbzoltan, Do you know the status of bug 1242666 ?13:51
ubot5bug 1242666 in ubuntu-ui-toolkit (Ubuntu) "Standalone labels as an element distinct from group headers" [High,Confirmed] https://launchpad.net/bugs/124266613:51
t1mptedg: that's a weird bug13:58
t1mpwe have a Label component... I don't see what's missing?13:59
t1mpcheckboxes and switches don't have text, so the apps must have added a Label to them.13:59
tedgt1mp, The idea is to have a ListItem type that is only used for a label. Like header, but not bold and shifted.14:00
tedgt1mp, Currently if you use one of those without a widget you can click on it and other things that make it feel odd.14:00
t1mptedg: the "about this phone" screenshots in https://docs.google.com/a/canonical.com/document/d/1sZYJLmEtvuD7G8TJ4HYeSF-7oMvjNGmGxdVRPcygQWs/edit are they the designs, or actual screenshots?14:02
tedgt1mp, designs14:03
tedgt1mp, Actual screenshots have the "Legal" all the same color and you can't see any differentiation.14:04
t1mptedg: we have the ListItem.Header14:07
t1mptedg: it seems to me that's what you want, except perhaps the visuals need an update14:08
tedgt1mp, Yes, and that's basically what we're looking for. But not a header. Just with more "label like" visuals.14:08
tedgt1mp, It's kinda a semantic distinction on what we're trying to express.14:08
t1mptedg: to me it looks like we only need to update the font-weight and color if the ListItem.Header?14:10
dbarthkgunn: hey Kevin; apparently trust prompts appear broken on mako; is that a known issue?14:12
kgunndbarth: i was seeing pople complain about things broken on mako overnight....debugged down to hybris/mediahub14:13
kgunnnot sure if it's related14:13
dbarthi just downgraded MH14:13
dbarthso maybe i need to downgrade hybris too14:13
tedgt1mp, Visually yes, but I'm not sure header is not used elsewhere where it's expected to be shifted and bold. mpt, thoughts?14:14
mpttedg, I have used headers on one screen: the top level “Security & Privacy” screen, because it’s so long. <https://wiki.ubuntu.com/SecurityAndPrivacySettings?action=AttachFile&do=view&target=phone-security-privacy.png>14:15
mpt(where by “used” I mean “design imagining that they will be implemented as”. ;-)14:15
tedgmpt, Hmm, well, the developer didn't use them :-)14:16
mpttedg, everywhere else I’m just using labels, for the reasons I described in bug 124266614:16
ubot5bug 1242666 in ubuntu-ui-toolkit (Ubuntu) "Standalone labels as an element distinct from group headers" [High,Confirmed] https://launchpad.net/bugs/124266614:16
t1mpHeaders are no longer shifted14:16
t1mpmpt: so those headers need to look different from intro labels?14:17
mptAnd I would expect labels outside of list items to be aligned with labels inside list items, as shown in <https://wiki.ubuntu.com/Bluetooth#Discoverability> for example.14:17
mptThere “Bluetooth” is in a list item, “Not discoverable” is not14:17
t1mpmpt: why is "not discoverable" not a list item?14:18
t1mpmaybe we are just not using the same terminology14:18
t1mpmpt: what is visually the difference between a Header and an intro label? The font weight only?14:18
mptt1mp, ideally, yes14:18
t1mpokay14:19
t1mpmpt: is the Header used only in one place? Perhaps if there we could use an intro label instead, all we need to do in the toolkit is change the font-weight of the current ListItem.Header14:19
mptOh, I found another place where I used Headers14:19
mptAnd this is a clearer example too14:19
mpt<https://wiki.ubuntu.com/Power#Settings>14:20
mptThere, “Charge level” and “Ways to reduce battery use” are headers14:20
mpt“Last full charge” is not a header, and it’s not a list item either14:20
mpt“Accurate location detection requires…” is a caption also not part of the list14:21
t1mpmpt: I'd say the "Charge level" is part of a custom list item that shows the graph14:21
seb128mpt, ted, t1mp: interesting, because "Charge level" has a value, and headers don't support that afaik...14:22
mptt1mp, but if you do that, it becomes much harder to fix the problem that there’s no visual distinction between things that are tappable and things that are not14:22
t1mpmpt: perhaps we (you, the developers of the app, and someone from the UITK team) should sit together early next week14:23
t1mpmpt: list items have a property "highlightWhenPressed" to prevent showing the highlight when the user presses them, maybe that already solves the problem14:24
mptt1mp, that’s 10% of it, but the other 90% is before you even tap it :-)14:24
seb128t1mp, toggling that doesn't disable haptic feedback though14:27
seb128t1mp, so you still get click feedback14:27
t1mpmpt: okay, I don't think we'll solve this today but we can clear stuff up early next week14:27
t1mpseb128: hmm, that sounds like a bug to me14:27
t1mpseb128: I cannot think of a use case where you do not want the visual feedback, but you want haptic feedback14:28
seb128t1mp, well, that's how the toolkit behave atm, could be a bug indeed14:28
mptt1mp, I’d like a session on that. Can you arrange one with seb128?14:28
seb128+114:29
t1mpokay, I like to involve zsombi also. He is working on new list items and perhaps he has it solved already14:29
mptt1mp, seb128: For the haptic problem see also bug 1267592, which is Incomplete everywhere14:30
ubot5bug 1267592 in Ubuntu UX "[sdk] Vibrate should happen on long-press, not normal activation" [High,Incomplete] https://launchpad.net/bugs/126759214:30
t1mpmpt: it is a separate bug, but it makes sense to check all the components to see if the haptic feedback is consistent14:31
chowderwhere can I find a list of devices that ubuntu has been ported to? I have a Samsung Galaxy S II that I'm not using14:32
mptThat bug report is a casualty of “should”-ness14:32
t1mp!devices | chowder14:32
ubot5chowder: You can find the full list of devices, official images, community images, and works in progress at https://wiki.ubuntu.com/Touch/Devices14:32
t1mpseb128: I'm not getting haptic feedback on a basic list item at all14:33
t1mpseb128: I'm testing with "Ubuntu UI Toolkit Gallery" (from Ubuntu Store, by zoltan) in the List Items section14:33
mptt1mp, that’s what I observed in 1267592 as well14:34
seb128t1mp, do you know where the source to that is?14:35
mptHaptic feedback for checkboxes and switches, but not list items and most other things14:35
t1mpmpt: yes, bzr branch lp:ubuntu-ui-toolkit and then in examples/ubuntu-ui-toolkit-gallery/14:35
t1mperr14:36
t1mpseb128: ^14:36
seb128t1mp, do you get some for "singlevalue" items?14:36
* seb128 installs14:36
seb128right, ok14:36
seb128those have it14:36
t1mpseb128: yes, I get feedback for the singlevalue items on release :s14:36
t1mpthat's odd14:37
t1mp^ very inconsistent :(14:38
MacSlowCimi, added my work-items14:40
CimiMacSlow, thanks :)14:40
chrisdep_I'm unable to install the updates on ubuntu touch14:40
chrisdep_for several weeks the listed updates will only show 'installing'14:40
chrisdep_but progress bar never begins and the packages don't install14:41
chrisdep_can someone tell me how to fix this?14:41
t1mpchrisdep_: you could try to flash the device again from your computer14:41
chrisdep_I've tried exporting my contact info in the past but found there is no easy way to do it14:42
chrisdep_i would rather avoid reflashing but will do it if necessary14:42
chrisdep_:/14:42
t1mpI think you can reflash without wiping your homedir14:42
chrisdep_really?14:43
chrisdep_i will reflash later today then14:43
t1mpif you use ubuntu-device-flash without the --wipe it should keep your data14:43
t1mpI reflash all the time, but I don't have much data on it. Better get someone to confirm that it doesn't delete your data :)14:43
chowderthanks t1mp! I see that Ubuntu touch has been ported to the Galaxy S2 already but not the AT&T version. I'm wondering if there's any differences between the two. I was going to give my wife the phone but she can't use it because its incompatible with Boost Mobile.14:44
t1mpchowder: I don't know about that. I am in Europe and I think the network providers have less control over the devices here (luckily)14:45
mptBrowser’s toolbar buttons have haptic feedback, header buttons everywhere else do not14:45
chowdert1mp: if only that was the case in America. Either way I'm going to try and tinker with Ubuntu Touch since the phone is just collecting dust. Thanks again for pointing me in the right direction!14:45
t1mpor maybe it is just me always buying simlock-free phones and prepaid network access :)14:46
t1mpmpt: browser has custom header, most other apps the UITK header. If you need changes in that report a bug on http://bugs.launchpad.net/ubuntu-ui-toolkit/ and ping me :)14:47
kenvandinemzanetti, in your settings MP for the launcher reset, you said it should land together with the unity8 branch, which hasn't landed yet14:47
kenvandinemzanetti, right?14:47
t1mpmpt: but I'm practically done for today, so that would be for Monday14:47
kenvandinemzanetti, it linked to this MP https://code.launchpad.net/~mzanetti/unity8/launcher-update-on-dconf-change/+merge/23656114:48
mptPushbuttons have haptic feedback, dialpad buttons and lock screen buttons do not14:51
mptCheckboxes in apps have haptic feedback, checkboxes in Web pages do not…14:55
mptApps in the Dash have haptic feedback, apps in the Launcher do not14:56
t1mpmpt: do we need a session on haptic feedback?14:59
diahey,  just started playing around with Ubuntu touch.  Had a question about a program running,  ubuntu-push-cl,  i couldn't find any google results for it.15:00
t1mpmpt: we may need a bunch of people for that. For dash+launcher Saviq for webpages dbarth for most other places someone from the SDK team and probably some of the app developers15:00
mptt1mp, true, but that doesn’t necessarily mean it benefits from those people being in the same room … Is this poor APIs, or is it just underspecification?15:01
diaIs it for grabbing updates?15:02
dobeydia: it's "ubuntu-push-client" actually. wherever you copied the command name from, had it truncated15:03
dobeydia: it is the client for receiving push notifications15:03
diaoh OK15:04
t1mpmpt: I don't think we have clear specs on haptic feedback15:06
t1mpmpt: I don't think we need to offer API for that. If we do it properly in UITK, the apps just get it by default :)15:06
mptt1mp, I reopened bug 1267592 and summarized the findings15:06
ubot5bug 1267592 in Ubuntu UX "[sdk] Haptic feedback (vibration) is inconsistent between UI elements" [High,Confirmed] https://launchpad.net/bugs/126759215:06
t1mpmpt: just unity uses a lot of custom components15:07
t1mpmpt: okay, I like the new title more :)15:07
kenvandinetedg, what's the status of the messages in greeter landing?15:50
tedgkenvandine, Of the messages?15:54
tedgkenvandine, I was hoping to land the rtm stuff and then that.15:54
tedgkenvandine, But it seems that Saviq is traveling today, so I kinda need him for both.15:55
kenvandinetedg, ok15:55
kenvandineso next week i guess15:55
kenvandinetedg, i'm just trying to line up stuff for landings once the landings freeze is thawed15:55
tedgkenvandine, Understood, thinking the same :-)15:56
* kenvandine gets out a hair dryer, certainly no other uses for it here :)15:56
tedgkenvandine, No comment ;-)15:58
kenvandinetedg :-D16:00
MacSlowsee you all in DC next week! happy weekend/traveling!16:03
vitimitiHi16:10
Vince__Hey anyone know how to fix the date/time on ubuntu touch? Even when I do it manually it doesn't work16:54
Vince__Is anyone even active?16:55
seb128how doesn't work?16:58
seb128what device do you use?16:58
ogra_Vince__, works fine herre17:03
ogra_*here17:03
Vince__I'm on the nexus 5 port and it doesn't show the correct time for the specified timezone17:04
ogra_do you run ubuntu only ?17:06
ogra_or is that a dual boot setup ? might be that android fiddles with the TZ somehow17:07
ogra_(it definitely works on all supported devices for me)17:07
dakerogra_: yo, do you know how can i fix the upgrade process ? the update has been downloaded, the phone reboot then the upgrade process is triggered but system-settings still show the old version which means nothing has been upgraded http://paste.ubuntu.com/8576213/17:09
ogra_daker, "system-image-cli -f full -v" via adb should work17:10
ogra_(that forces a full image upgrade instead of trying to use a delta)17:10
dakerogra_: no data will be lost ?17:10
ogra_not with system-image-cli, no17:11
dakerok i'll test that once i am home, thanks!17:11
Vince__Sorry doing multiple things at once. Yes I am dual booting with multirom17:21
Vince__There are quite a few things that are not working for me. File manager cannot open some folders for some reason, cannot send sms messages (but I can call), can only use internet when connected via wifi, and many others17:23
Vince__Will probably try a fresh install not dual booting17:23
ogra_file manager is restricted to your homedir (and subdirs) by default17:24
ogra_there should be an unlock button at the bottom to enter your pin if you want to browse any system dirs17:24
Vince__Yes but I cannot open some folders in the /Music folder17:24
ogra_ah17:24
ogra_are you sure these are actually owned by phablet ?17:24
Vince__That is probably it17:25
Vince__I copied them on android to that destination17:25
Vince__I gtg thanks for the help17:25
ogra_when adb still ran as root and you did adb push it created files and dirs with rooot permissions17:25
bzoltantedg: I need to talk to zsombi about  it. we might have a solution, but more likely we will sort it out next week.17:58
tedgbzoltan, Cool, we had a chat with t1mp about it in the backlog.17:58
tedgbzoltan, I think he understands what design is after now.17:58
bzoltantedg: Yes, we do understand. We have talked about it with zsombi before.18:06
jdstrandbarry: hi! I'm trying to change the channel of my phone, and system-image-cli seems to just be hanging: http://paste.ubuntu.com/8580941/19:57
barryjdstrand: that's udm hanging :/20:06
jdstrandah, it just traced back20:06
barryjdstrand: which means either network problems, or server problems20:06
jdstrandhttp://paste.ubuntu.com/8580973/20:07
jdstrandbarry: I guess that confirms what you're saying ^20:07
barryjdstrand: indeed.  it means we didn't hear back from udm before it timed out20:07
jdstrandthe device can ping system-image.ubuntu.com ok20:07
barryjdstrand: try killing udm and letting dbus reactivate it20:08
jdstrandbrowsing works20:08
jdstrandbarry: that seems to have done it. I guess if I didn't have you, I would've eventually rebooted20:09
jdstrandbarry: thanks!20:09
barrynp!20:09
jdstrandwell, it got farther, but now seems stuck again20:10
jdstrandhrmm20:10
barryjdstrand: there are udm logs somewhere which might help.  poke around in /var/log perhaps20:10
* jdstrand ended up rebooting20:17
jdstrandthat seems to have righted things20:17
md6xumI am completely lost. Can someone help me with the current ubuntu-touch version? My mako says in the settings menue: OS Ubuntu 14.10 (r243). There was a image promotion today and I assume I will sometime get the utopic/mako image which is at #290 right now?20:57
md6xumNonetheless, image #5 in the ubuntu-rtm/14.09 channel seems even more up-to-date, so I should flash to this channel?20:57
ogra_md6xum, if you want the latest with the best tested quality rtm is what you want, yes21:02
md6xumOk, then. And what channels will be changed after the release of ubuntu 14.10 next week?21:05
ogra_touch is not depending on the ubuntu release schedule, i assume the devel channel will point to the V release as soon as it opens21:06
ogra_but all serious work and stability improvements only happen in the rtm (release to manufacturer) distro21:07
ogra_devel (or utopic ... or later V ... ) has turned into a developer playground to test stuff before handing it to QA who then allow it into rtm (or dont)21:08
md6xumSo, after I switched to rtm/14.09, do I have to reflash if the new rtm channel is called ubuntu-rtm/14.10 ?21:09
ogra_there wont be a 14.10 rtm21:09
ogra_14.09 is the name21:09
md6xumok, sounds good. Thank you for the help!21:10
=== salem_ is now known as _salem
swift110-phoneHey22:36
swift110-phoneCan i put ubuntu touch on an iphone 4s22:37
md6xumnot yet22:40
SorcerousFoxHow about a samsung galaxy s5? I haven't actually researched it I just plan to try it when i upgrade next year lol22:41
afmand another attempt at porting... steps taken if anyone has time to look it over22:43
afmhttp://pastebin.com/gN3KAjR022:43
swift110-phoneWas the not yet towards me?22:56
afmanyone for porting help... feel like I'm close... started documenting.. but have been a few steps ahead before this... pulled most of the proprietary stuff from the phone directly... have the right repo's now23:50

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