/srv/irclogs.ubuntu.com/2012/03/28/#ubuntu-za.txt

magespawnMorning y'all.06:24
Banlamo/06:26
kodezmorning magespawn07:03
magespawnHowdy07:03
kodezi am better than yesterday, thanks for asking and how are you?07:04
superflymorning gu07:06
superfly*guys07:06
Banlamlol07:06
superflytoo used to tab-completion07:06
magespawnWell that is all ways good, Kodez. I am well too.07:06
magespawnMorning superfly07:06
magespawnHa07:06
magespawnHay Banlam, did not see you there.07:08
Banlamgmorning :)07:09
magespawnI am off, on the road today, see y'all later.07:23
Kilosgood morning superfly maiatoday and others07:38
maiatodayHi all07:40
Kiloslo inetpro jy's seker al by die werk07:40
superflyhi Kilos07:43
zerefhmmmm09:26
zerefwin8 looks bleh09:27
inetprogood morning everyone09:41
inetproMaaz: tell Kilos I say hi09:41
Maazinetpro: Sure, I'll tell Kilos on freenode09:41
psydroidgood morning inetpro09:54
Unknown0BCgreetings humans.12:08
Unknown0BCAnd others.12:09
Unknown0BC:)12:09
bakumansjoe sjoe12:09
Unknown0BC:)12:19
Unknown0BCWhere can I buy a set of DVD's for the latest ubuntu in the Durvanville Bellville region. ( I will also through in some beer )12:22
Kerberogoogle for a toaster near you12:24
Unknown0BCUCT use to be the best.12:26
Unknown0BCNow it seems the toaster is somewhat fried and unmaintained.12:26
Unknown0BCWhat is google ? Only kidding. Ok bad joke.12:27
Unknown0BC;)12:27
zerefo0o012:29
zerefWhy do you want to buy??12:30
Unknown0BCIf its going to be close to me and easy to get. I am willing to buy.12:31
Unknown0BCOr buy beer.12:31
Unknown0BC:)12:31
Unknown0BCDownloading takes forever.12:34
Unknown0BCAnd I have to do it at someone else's place.12:34
Kerberowell in stellenbosch there is a wifi network called SCN with free access to ftp.sun.ac.za and mirror.ac.za12:35
Unknown0BCSounds like an option. thanks Kerbero.12:36
Unknown0BCHowever, I am sure someone or even a couple of people in Durvanville could assist.12:36
Unknown0BCIf I just knew who. And if they would be willing.12:36
=== Unknown0BC is now known as Alive
Alive:)12:41
KerberoAlive[InJoburg] would hav ebeen a nice nick12:44
AliveI could always go visit jobrg12:47
Alive;)12:47
Kerbero:D12:47
EthianoHi Can you tell me if i can and how do i connect a 3g connection to my linux Laptop 14:39
kbmonkeyevening geeks14:47
nuvolario/ lo kbmonkey 17:06
kbmonkeyo/ nuvolari 18:01
kbmonkeyhow goes it man?18:01
magespawnEvening all18:10
kbmonkeyhi magespawn Kilos 18:10
Kilosevening superfly kbmonkey and others18:10
MaazKilos: By the way, inetpro on freenode told me "tell Kilos I say hi" 8 hours, 28 minutes and 56 seconds ago18:10
magespawnHi Kilos18:11
Kiloshaha 18:11
KilosMaaz, ty18:11
MaazYou are welcome Kilos18:11
Kiloshi magespawn 18:11
kbmonkeyoh magespawn I probably asked this before, what bot framework is Maaz built on? supybot?18:13
Kilosibid18:13
Kilosor isnt that the framework18:13
magespawnkbmonkey no idea not my bot18:13
superflyhi Kilos18:14
Kiloskbmonkey, ask cocooncrash . its his bot18:14
kbmonkey++kilos18:14
cocooncrashkbmonkey: Ibid18:14
Kilosyay i was right18:14
magespawnkbmonkey why?18:14
Kiloshiya cocooncrash all good?18:15
kbmonkeycurious :)18:15
Kilosyou lucky curiosity kills cats not monkeys18:16
magespawnHa18:16
kbmonkeybut also remember that satisfaction brings the cat back18:17
magespawnkbmonkey what about the greeter bot? 18:17
Kilosya18:17
magespawnThats the first time I have heard that18:17
kbmonkeywell yes, it could be a part of maaz? it was a thought, have not written up a spec of it18:18
Kilosthats an add on from nosy peeps18:18
kbmonkeybut hey, if it looks good a simple patch could be applied to Maaz ?18:19
Kilosibids rock18:19
kbmonkeybasic idea is: if Maaz sees a new name, and the chan is idle for some period, Maaz can give a greeter and that there's nobody active at that time18:21
Kilosah18:21
Kilosthats too involved18:22
kbmonkeyi notice some new people coming from the freenode web chat, say hi, then after 5 mins they close the page18:22
Kilosyeah i greet when im online18:22
kbmonkeyas my irssi is away but still captures channels, i come back and notice18:22
kbmonkeynot too involved Kilos. Maaz already monitors the channel. 18:24
Kilosyou but he is like a good woman. only speeks when spoken to18:25
* Kilos ducks18:25
Kilosoh maia not here18:25
* kbmonkey slaps kilos with a large wet trout18:25
Kilossorry mrs_fly 18:25
Kiloshehe18:25
kbmonkeyXD18:25
kbmonkeyI will defend all ladies with as many trouts as needed.18:26
kbmonkeyjust wait till I get my order of rubber chickens s in18:26
Kiloslol18:26
magespawnPity on the trouts18:26
Kilostenderising18:27
magespawnThought you only had do that with steak18:27
Kiloslol18:27
Kilosonly old cows18:28
magespawnLike you?18:28
Kilosyeah im very tough18:28
Kiloslike dry leather18:28
kbmonkeyLOL18:28
magespawnSo maybe they tenderising you not the fish. Hope you do not taste good cooked18:29
Kilosha ha ha18:29
kbmonkeyno man, gimme the ripe peaches anyday :O18:30
kbmonkeyor bananas18:30
magespawnAnd almodes, always good with trout.18:30
magespawnAlmondes even18:30
Kiloshuh?18:30
Kiloseeeew18:30
Kilosnever spoil good food with doff add ons18:31
Kiloslike they serv crayfish with garlic sauce18:31
Kilosfools18:31
kbmonkeyminimalism :)18:32
magespawnAs long as it is not too strong18:32
kbmonkeyokay let me browse through ibid docs...18:32
Kilosno man crays and prawns and crab must just be boiled then eaten18:33
Kilosgarlic is good on other foods,18:33
Kilosnot sea food18:33
Kilosmaybe trout18:33
magespawnI like it on almost anything18:33
Kilosone needs to savour the flavours to appreciate them18:34
bakumanMaaz, coffee on18:35
* Maaz starts grinding coffee18:35
magespawnBut then againI also like peri peri18:35
Kiloshi bakuman 18:35
bakumanhi hi18:35
bakumanwork work18:35
kbmonkeygonna pickle aubergines with garlic tomorrow XD18:35
kbmonkeyitalian style18:35
Kilosso do i on every meal. make my own chilli garlic sauce18:35
Kilosbut never on crays18:36
magespawnThermidor?18:36
Kilosmaybe because its not pure lobster18:37
Kilosbeen doctored18:37
magespawnBrb18:37
MaazCoffee's ready for bakuman!18:39
magespawnkbmonkey found this http://m.youtube.com/#/watch?desktop_uri=%2Fwatch%3Fv%3D06lEayLcJ6g&v=06lEayLcJ6g&gl=US18:40
magespawnI will watch it tomorrow18:40
Kilosxubuntu crashed this morning, couldnt boot at all.18:41
Kilosboot-repair from maverick said some partition was full18:42
Kilosdeleted archives file and ran boot-repair now all good again18:42
Kilosluckily got archives on external18:43
* bakuman had zubuntu for one day and then formatted18:43
Kiloslol18:43
kbmonkeyzubuntu?18:44
Kilosubuntu is the best up to where unity kicks in18:44
kbmonkeythe car guard song, he he magespawn 18:44
kbmonkeyyour drive got full and it didnt boot Kilos? sjoe18:44
magespawnSorry, kbmonkey?18:45
Kilosyeah kbmonkey maybe 6g drives are getting to small18:45
kbmonkeyoh wait magespawn, that youtube url you gave?18:45
kbmonkeyit does not redirect me to a video18:46
kbmonkeyah nm, got the video code from the url anyway18:47
magespawnObj okay18:47
magespawnUseful?18:57
kbmonkeyseems to be for second life19:03
kbmonkeyif I have it right? letting it buffer a bit, 19:03
magespawnJust did a search on "greeter bots", lol, did not look at the video19:04
Kiloskbmonkey, have you looked at all you can do with ibids19:05
Kilostheres pages of stuff19:06
kbmonkeysetting it up now Kilos 19:06
kbmonkeyokay let me skip to the plugin design19:07
kbmonkeybut i like to install to try it out19:07
kbmonkeyah, wait, it supports SQLite :p okay even better19:08
magespawnThat the default install I think19:09
Kilosnight guys. sleep tight.19:37
kbmonkeygn Kilos 19:37
kbmonkeyslapp lekker19:38
magespawnkbmonkey just wrote my first python program19:44
kbmonkeycool magespawn :D19:45
kbmonkeywhat did you write?19:45
magespawnJust something to join two variable called "Favorite Foods". Lol, all of six lines or so.19:46
kbmonkeythe basics are important19:46
kbmonkeygot a ibid bot up and running, going throught the plugin docs now19:47
Symmetria*HRM*19:48
Symmetriahttp://pastebin.com/GFkQnf6e19:48
Symmetriathat could get very very nasty19:48
kbmonkeyheard of that Symmetria. already started collecting IP list for /ettc/hosts ;)19:50
Kerberoawesome19:50
Kerberoek sal kan doen sonder dns vir 'n dag19:50
Kerberodag van rus19:50
kbmonkeyyes :D19:50
Kerberodis anyway 'n saterdag19:50
Kerberoso wie benodig internet anyway19:50
Kerberogoeie dag om te gaan bergklim19:50
tumbleweedkbmonkey: is it working?19:51
tumbleweedSymmetria: of course, failure of the root DNS servers probably wouldn't affect most people (assuming they are behind caching resolvers)19:52
Symmetriatumbleweed the caching resolvers wont help for very long if the expiry times are set up19:52
Symmetriaand on most of the CDN's where the majority of traffic comes from, those expiry times are set very low19:52
Symmetriaso they will expire the caches pretty damn fast19:52
tumbleweedthe TLD records have fairly high TTLs though19:53
kbmonkeyyes tumbleweed I'll report back with progress..19:53
magespawnWould you be able to get paste it if you have the ip of google, or will they not be able to search?19:53
magespawnPast19:53
Symmetriatumbleweed in theory yes, except, .com and .org are directly root served if I remeber correctly19:54
tumbleweedattacking gtld roots would probably be far more effective19:54
kbmonkeymagespawn, you can place the host name and IP in your /etc/hosts to direct you locally. but of course majority of folks out there wont know/do this19:55
Symmetriaheh, my bigger concern is what its going to do to bandwidth in .za19:55
Symmetriaparticularly on the providers that host the roots 19:55
Kerberoyeah19:55
Symmetriain theory, tenet's L-ROOT instances shouldnt get hit that hard, since they are prepended to hell and gone internationally so they arent likely to take a lot of traffic19:55
SymmetriaIS's root instances though dont look like they are internationally prepended 19:56
Kerberoprepended?19:56
magespawnSo it will mostly affect those who do not know to get past it?19:56
superflyhrm, I wonder if I can turn up the cache period on my local DNS19:57
kbmonkeydepends. as Symmetria said, could slow down ISPs to affect everyone :/19:57
magespawnOnly 13 DNS servers world wide?19:57
superflymagespawn: no, root DNS servers19:57
SymmetriaKerbero the bgp announcements for the anycast19:57
tumbleweedmagespawn: only 13 IP addresses. Some of them have lots of machines anycasted behind them19:57
superflythere are tons of DNS servers19:58
Symmetriamagespawn there are 13 anycast IP addresses for the rots, LOTS of instances though19:58
Symmetriaroots I mean19:58
SymmetriaKerbero basically, do you know how bgp works?19:59
magespawnAnybody know of a good reading source, or else I am going to bug you with all the questions?19:59
Symmetriabefore I try and explain prepend :)19:59
KerberoSymmetria, sort of19:59
Kerberobut not really19:59
SymmetriaKerbero, ok, bgp 101 in its simplest form19:59
magespawnI have no idea19:59
Symmetriatraffic on the internet is routed from one autonomous system to another 19:59
Symmetriaeach major connected network has an autonomous system19:59
magespawnCool more lessons20:00
Symmetria(so teh tenet network for example is 2018, the IS network is as 3741)20:00
Symmetriathe path that traffic takes by default is as to as, and by default the shorter the path the more preferred the route 20:00
Kerberolessons are cool20:00
Symmetriaso for example, traffic from tenet -> is, would have a single as hop (3741) since its directly connected20:00
Symmetriabut traffic to something behind someone like NTT, would go 36944 (tenet's international upstream) -> 2914 (NTT) -> whoever you were reaching20:01
Symmetriaright?20:01
Symmetrianow, if you wanna depreference traffic coming back to you, the easiest way to do that is to extend that path, by fake injecting as numbers into it20:01
Symmetriaso say for example, IS who is directly connected to TENET (3741) its a single hop20:02
Symmetriatenet also has a route to IS via Neotel (36914 3741) would be the path20:02
Symmetriaif I.S wanted to force tenet traffic to come via neotel20:02
Symmetriathey could inject their own ASN a coupla times on the route announcements to tenet20:02
Symmetriamakign their path something like20:02
Kerberoo20:02
Symmetria3741 3741 3741 3741 20:02
Symmetriaat which point the neotel path is shorter and therefore preferred20:02
magespawnPath selection done automatically?20:03
Kerberook and where does prepend come in then?20:04
Symmetriakerbero the prepend is what you call that artificial lengthening of the path20:04
Kerberoahh ok20:04
Symmetriaprepend = the injection of autonomous system numbers before your own to lengthen the path20:04
Symmetriamagespawn yeah, bgp has like, a 13 stage path selection process20:05
Symmetriaand as path length is one of the steps20:05
Kerberoso tenet's dns roots are prepended a lot so that it do not try to go directly to ZA as's20:05
Kerbero*do not receive directly20:05
magespawnWhy not make it go directly? Why make it take another path?20:06
kbmonkeyinteresting...20:06
SymmetriaKerbero prepended internationally20:06
Symmetrianot prepended locally20:06
Symmetriaso when the Lroot prefix's are announced to local providers, there is no prepend20:07
Symmetriawhen its announced internationally, its prepended 6 or 7 times20:07
Symmetriabasically because we dont want internationals querying the servers20:07
Symmetriaits bad for them, and bad for tenet 20:07
Symmetria(as a matter of interest, the joburg lroot is doing about 250 queries a second ona verage)20:07
magespawnToo much traffic?20:08
Symmetriamagespawn latency on the queries20:08
Kerberoahh makes sense now20:08
magespawnAhh right20:08
magespawnI want to know more.20:09
Symmetriamagespawn ok, ummm20:09
SymmetriaDNS 101 and explaining the root servers20:09
Symmetriayou do a DNS server for www.is.co.za right 20:10
Symmetriato your isp's dns server20:10
Symmetriathat dns server goes, I have no clue where www.is.co.za is, so lemme go find out20:10
Symmetriaso, it first needs to figure out who can give it answers about .za 20:10
Symmetriaso it queries one of the root servers for the nameservers that are authorative for .za20:10
Symmetriathen it queries those servers it now knows about for co.za 20:10
Symmetriaand then queries the co.za servers for is.co.za20:11
Symmetriaand then queries the is servers for www.is.co.za20:11
Symmetriaso, there are 13 root server ip addresses20:11
Symmetriathose ip addresses are mapped to multiple servers all over the world and represent hundreds of servers20:11
magespawnSo if one goes off the rest carry on20:12
Symmetriatenet for example hosts one of the L Root servers (199.7.83.42) right?20:12
magespawnOkay20:12
Symmetrianow, tenet announces that address to the world "HI! I have this address"20:12
Symmetriathen, whoever else hosts one of those L root server instances also announces to the rest of the world "Hi! I have this address"20:12
Symmetriathen, the bgp path selection process I talked about earlier, chooses the closest one and routes the traffic to the server thats closest20:13
magespawnPhysically? Or by path selection?20:13
Symmetriaand in this particular case, we have the server itself announcing itself to the tenet network, the tenet network then announces to the rest of the world, so, if the server dies, the announcement will disappear20:13
Symmetriapath selection 20:13
Symmetriawhich is why you prepend the announcement internationally 20:13
Symmetriabecause ip routing has no knowledge of geography 20:14
Kerberojip20:14
Kerberothis is starting to sound a lot like my master's topic20:14
Symmetriahere, lemme show you from the perspective of tenet's upstream 20:14
magespawnOkay20:14
SymmetriaUBUNTUNET-LND-GW-1>show ip bgp 199.7.83.4220:15
SymmetriaBGP routing table entry for 199.7.83.0/24, version 43668379420:15
SymmetriaPaths: (3 available, best #1, table default)20:15
Symmetriaok, so the router sees 3 paths for that subnet20:15
Symmetria  2018 2018 2018 2018 2018 2018 2014420:15
Symmetria  2914 24990 2014420:15
Symmetria  2914 24990 2014420:15
Symmetria(you'll notice the second path is duplicated, thats because there are two connections to NTT)20:15
Symmetriaand then top path is the TENET path, its WAY longer than the rest 20:15
Symmetriaand you can see the prepending going on20:15
Symmetrianow look at the IS routing tables for that subnet20:16
Symmetria  3741 2018 2014420:16
Symmetriathey come to TENET, shortest path20:16
SymmetriaSAIX on the other hand gets it internationally because they dont peer with TENET 20:17
Symmetria(if you traceroute that subnet from your isp you should see where it goes)20:17
Kerbero* cough * n00bs20:17
Kerbero:P20:17
magespawnIndeed, at somethings at least20:17
Symmetriapretty sure almost all networks in south africa other than saix will be getting that prefix from tenet 20:18
magespawnsaix is telkom right?20:18
Symmetriayeah20:18
Kerberoso all networks in SA will be fine on saturday except saix20:18
Symmetriabunch of douchebags :p20:18
magespawnLol20:18
SymmetriaKerbero heh, in theory, unless they break tenet in the attack :p20:19
magespawnOkay another question then?20:19
Symmetriaask away :) 20:19
KerberoSymmetria, we will try our best this side :P20:19
Symmetriaheh magespawn Im always willing to answer questions, so you can ask whatever 20:21
Kerberoare you back in cape twon?20:22
Kerberotown20:23
SymmetriaKerbero in east london chilling here :)20:23
Symmetriawas in capetown briefly on monday and tuesday though20:23
Kerberook nice20:23
magespawnI resell Vodacom for @lantic. With the 3g you get an @lantic email address, the smtp is voadacom.co.za for it to work. When using gmail it does not matter what the connection as loong as the smtp is googled. Why?20:23
Kerberoyou originally from the EC?20:24
magespawnVodacom and googles20:24
Symmetriamagespawn what you mean as long as the smtp is googled? not sure I understand your question20:25
SymmetriaKerbero heh, was born in capetown, grew up in east london though20:25
Kerberoif bgp was location aware, would it help the routing on the internet?20:28
magespawnWith @lantic address if connected via Vodacom 3g the smtp must be Vodacom.co.za for it work, but if you are using a gmail address the smtp must be googles irrespective of the connection. Why?20:28
Kerberomagespawn, maybe vodacom does not allow any non-vodacom source email addresses via their smtp server20:29
magespawnI thought it might be some sort of internal routing agreement to reduce traffic going of thei networks20:31
Kerberoif it comes to smtp servers i normally suspect anti-spam rules20:32
magespawnExcuse the typoes on a touch screen here20:32
magespawnAhh but if I use a mtn 3g the the smtp has to be mtn.co.za20:33
Kerberoyes, the same logic applies20:33
magespawnStill a resell through @lantic with their email address20:33
Symmetriaits almost certainly anti-spam rules20:34
Symmetriaopen relays are bad practice20:34
magespawnBut then if the pc is connected via Adsl you have to use something else20:34
Symmetriamagespawn basically, it wont let people from outside certain ip ranges use their smtp servers probably20:34
Symmetriaand it also probably wont allow you to use their smtp servers for domains it doesnt know about20:35
magespawnThe upside of this is that you have to create two accounts on the email client for one email addres just changing the smtp20:36
Symmetriaarghhhh 20:37
Symmetriamy puppy just cheweed through the network cable to my amp20:37
magespawnThought it was me, lol20:37
Symmetriaheh20:41
Symmetriadamn there is a lot of traffic coming into ubuntunet from google in europe20:41
magespawnIs it possible to setup an email server with dyndns?20:41
Symmetria1.3gigabit/second20:41
Symmetriamagespawn in theory yes, better way to do it though is just to set the email server to do user/password authentication and leave the dns/ip restrictions off it20:42
magespawnHow would it be found if the router ip keeps changing?20:43
magespawnThis is quite nice to read http://www.bgp4.as/ for us n00bs 20:51
superflymagespawn: even though your 3G modem gets a public IP address (it does on Vodacom), it is actually on a private internal network20:51
superflyso mtn likely makes sure all smtp traffic must flow through their smtp server.20:52
magespawnOkay , if I use the google smtp then it does not matter the connection, so would that be a routing deal between @lantic and either Vodacom or mtn, so they do not have to pass traffic to another network?20:54
magespawnI am quite happy to go and do my own reading on the net, if I know where to go.20:56
Symmetriaumm20:58
Symmetriawell, its unlikely to be any rotuing deal20:58
Symmetriaon the smtp20:58
Symmetriasmtp routes via IP 20:58
Symmetria@lantic and vodacom could be connected any which way, the smtp traffic will flow via whatever ip routes exist between them20:58
Symmetriaeither directly or via the general internet20:58
Symmetria(sorry if I was taking a while to respond, was busy editing a php script)21:00
magespawnI have lots of questions. I am one of the few persons with the slightest clue about computers in Hluhluwe, so I am always trying to learn more21:02
magespawnNo worries21:02
magespawnBesides always fun to learn more things21:03
magespawnAnd I like picking experts brains, you get all the benefits of their experience.21:04
magespawnAlso found this http://en.wikipedia.org/wiki/Border_Gateway_Protocol21:06
Symmetriaheh yeah, bgp is something that would take me a while to properly teach you21:12
Symmetriaits relatively simple in concept21:12
Symmetriathere is just a lot to it21:12
Symmetriabgp is one of those protocols that allows you to do almost anything in very simple ways, and that includes seriously shooting yourself in the foot21:12
magespawnWell when I first read about ip addresses and subnets etc it confused the hell out of me, but th 100th time it started to make a little sense21:13
Symmetriaheh and the problem with bgp mistakes is that often, they dont only affect you21:14
Symmetriaa mistake in bgp can affect the internet world wide 21:14
magespawnOops.21:14
Symmetriaand the impact of such a mistake will be felt in seconds 21:14
Symmetriabecause what happens, you announce a route to an upstream21:14
Symmetriathey announce it to all their upstreams etc21:14
Symmetriaand the route you are announcing goes world wide in less than 5 minutes 21:14
Symmetriaif you announce a route for space you dont actually have, and your upstream accepts and propogates it because of bad filtering 21:15
Symmetriathe whole world is going think that you are the destination for that space 21:15
Symmetriaand whoever REALLY owns that ip space is not gonna get any traffic21:15
Symmetria(thats a pretty simple way of explaining IP hijacking, and there is slightly more to it than that, like route selection process, but thats the basics of it)21:15
magespawnSo if you want to shut down the net let me control your bgp for about 15 minutes then21:15
Symmetriamagespawn *shrug* hijacking space was how the pakistani telco took youtube off the air for 4 hours a few years ago21:16
magespawnWould something like the Tor be able to get past that?21:17
Symmetriaonce IP space is hijacked like that, aint anything gonna really get past it, everything runs on top of the IP routing21:17
Symmetriathis is why when teaching BGP, those of us that teach it always tell people over and over and over again to make sure their filtering is correct21:18
Symmetriaso that they dont accept, or announce space that shouldnt be flowing around 21:18
magespawnI can show you how to pick up dangerous reptiles if you like.21:19
SymmetriaLOL my puppy can show you how to pick up and kill rodents :P she's gotten extremely good at hunting everything that moves in the garden haha21:19
magespawnInformation exchange. Useful information hopefully.21:20
magespawnI like to keep the snakes alive if I can. They kill my rodents.21:21
magespawnHi psydroid21:21
Symmetrialol we get some puffies here21:21
Symmetriaanyway, Im off to watch an episode or 2 then get some sleep21:22
magespawnI am also off, night all.21:22
Kerberonight21:23

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