--- Log opened Tue Feb 22 00:00:29 2011 00:04 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds] 00:04 -!- gits [~gits@77.94.219.158] has quit [Read error: Operation timed out] 00:05 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has quit [Quit: Computer has gone to sleep.] 00:07 -!- gmilleramilar [~gmiller@38.104.67.234] has joined #go-nuts 00:10 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 272 seconds] 00:35 -!- ako [~nya@fuld-4d00d016.pool.mediaWays.net] has quit [Quit: EXEC_over.METHOD_SUBLIMATION] 00:37 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 00:38 < skelterjohn> evening 00:38 -!- HenryFinucane [~krakensde@li221-186.members.linode.com] has quit [Quit: leaving] 00:45 < plexdev> http://is.gd/WyW5Kc by [Mikael Tillenius] in 2 subdirs of go/src/pkg/image/png/ -- image/png: support for more formats 00:45 < plexdev> http://is.gd/duFWPD by [David Symonds] in go/src/pkg/testing/ -- testing: Fix typo on Logf doc comment. 00:45 < plexdev> http://is.gd/AFVbK0 by [Andrew Gerrand] in go/ -- A+C: Padraig Kitterick 00:45 -!- boscop [~boscop@g230105170.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 00:45 < plexdev> http://is.gd/8AqLp4 by [Padraig Kitterick] in go/src/pkg/http/ -- http: cleaned up HEAD request method. 00:45 < plexdev> http://is.gd/7XgQNJ by [Andrew Gerrand] in go/src/pkg/http/ -- http: add pointer from Handle[Func] to ServeMux docs 00:59 -!- itrekkie [~itrekkie@150.135.210.61] has quit [Quit: itrekkie] 01:00 -!- deltaphc [delta@cpe-76-173-127-142.socal.res.rr.com] has joined #go-nuts 01:03 -!- coldturnip [~COLDTURNI@118-166-71-243.dynamic.hinet.net] has quit [Read error: Connection reset by peer] 01:05 -!- coldturnip [~COLDTURNI@118-166-71-243.dynamic.hinet.net] has joined #go-nuts 01:11 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 01:11 -!- Scorchin [~Scorchin@host86-145-19-209.range86-145.btcentralplus.com] has quit [Quit: Scorchin] 01:12 -!- itrekkie [~itrekkie@uawifi-nat-210-26.arizona.edu] has joined #go-nuts 01:14 -!- n___ [~n____@5ad54238.bb.sky.com] has quit [Quit: n___] 01:14 -!- saturnfive [~saturnfiv@210.74.155.131] has joined #go-nuts 01:14 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Ping timeout: 260 seconds] 01:17 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Quit: JusticeFries] 01:20 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 01:22 -!- wtfness [~dsc@89.211.190.172] has joined #go-nuts 01:23 -!- nixness [~dsc@89.211.71.208] has quit [Read error: Operation timed out] 01:24 -!- foocraft [~dsc@89.211.71.208] has quit [Ping timeout: 240 seconds] 01:27 -!- Boney [~paul@124-148-184-240.dyn.iinet.net.au] has quit [Read error: Connection reset by peer] 01:28 -!- nettok [~quassel@200.119.179.140] has joined #go-nuts 01:31 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 01:37 -!- Darxus [~darxus@panic.chaosreigns.com] has left #go-nuts [] 01:40 -!- itrekkie [~itrekkie@uawifi-nat-210-26.arizona.edu] has quit [Quit: itrekkie] 01:41 -!- Boney [~paul@203-158-39-118.dyn.iinet.net.au] has joined #go-nuts 01:55 < skelterjohn> getting a weird error when trying to build Go-SDL... "ld warning: in /usr/local/lib/libSDLmain.a, file is not of required architecture" 01:55 < skelterjohn> sort of bizarre 02:00 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 246 seconds] 02:02 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has joined #go-nuts 02:09 < str1ngs> skelterjohn: I'll see if it builds for me 02:10 < str1ngs> skelterjohn: builds fine linux 386 02:10 < skelterjohn> i'm on os x amd64 02:10 < skelterjohn> though zzing pointed out that my uname -a says i386 02:10 < str1ngs> I'd have to reboot to tes that :( 02:11 < skelterjohn> so i figured maybe that was the issue 02:11 < skelterjohn> and changed GOARCH to 386 02:11 < skelterjohn> but then i couldn't build go at all 02:11 < skelterjohn> when it tried to build fmt 02:19 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 02:21 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has joined #go-nuts 02:28 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has quit [Remote host closed the connection] 02:32 -!- nettok [~quassel@200.119.179.140] has quit [Ping timeout: 250 seconds] 02:41 -!- adu [~ajr@softbank220043138128.bbtec.net] has joined #go-nuts 03:01 -!- lmoura [~lauromour@187.113.123.248] has quit [Ping timeout: 240 seconds] 03:03 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 03:12 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has quit [Quit: itrekkie] 03:13 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Ping timeout: 240 seconds] 03:18 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 03:20 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 03:54 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 240 seconds] 04:03 -!- amacleod [~amacleod@pool-96-252-93-11.bstnma.fios.verizon.net] has quit [Quit: Bye Bye] 04:12 -!- lmoura [~lauromour@186.212.115.77] has joined #go-nuts 04:31 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 04:38 -!- tav [~tav@92.7.74.27] has quit [Read error: Connection reset by peer] 04:38 -!- tav [~tav@92.7.74.27] has joined #go-nuts 04:46 -!- tav [~tav@92.7.74.27] has quit [Ping timeout: 240 seconds] 04:52 -!- tav [~tav@92.7.72.160] has joined #go-nuts 04:59 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 276 seconds] 05:01 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has joined #go-nuts 05:05 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Quit: Leaving.] 05:06 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts 05:12 -!- davvid [~davvid@208-106-56-2.static.dsltransport.net] has joined #go-nuts 05:20 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has joined #go-nuts 05:22 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 05:54 -!- gits [~gits@77.94.219.158] has joined #go-nuts 06:03 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 06:12 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has quit [Remote host closed the connection] 06:26 < exch> Im (very) slowly getting the hang of this jquery nonsense. Might actually be able to make a somewhat sensible UI with it 06:28 < exch> having to sift through the stylesheets to found out what the names for the various style components are, is a bit of a pain in the ass 06:30 -!- gits [~gits@77.94.219.158] has quit [Ping timeout: 246 seconds] 06:41 -!- lmoura [~lauromour@186.212.115.77] has quit [Ping timeout: 240 seconds] 06:42 -!- lmoura [~lauromour@187.113.76.232] has joined #go-nuts 07:01 -!- beoba [~eqoaq@unaffiliated/beoba] has joined #go-nuts 07:05 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has quit [Quit: itrekkie] 07:07 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has joined #go-nuts 07:08 < exch> works well with a Go backend though http://img.jteeuwen.nl/var/albums/Misc/20110222-1298357078x-2xFeb.png?m=1298357701 07:08 -!- boscop [~boscop@g227152093.adsl.alicedsl.de] has joined #go-nuts 07:12 -!- beoba [~eqoaq@unaffiliated/beoba] has left #go-nuts ["(*^.^)/~~"] 07:12 -!- nickbp [~nickbp@70-36-134-55.dsl.dynamic.sonic.net] has joined #go-nuts 07:12 -!- nickbp [~nickbp@70-36-134-55.dsl.dynamic.sonic.net] has quit [Changing host] 07:12 -!- nickbp [~nickbp@unaffiliated/beoba] has joined #go-nuts 07:16 -!- nickbp [~nickbp@unaffiliated/beoba] has quit [Client Quit] 07:16 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts 07:20 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 07:28 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 07:28 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts 07:28 -!- itrekkie [~itrekkie@ip72-211-1207:44 < exch> that is a front-end to MPD 07:45 < exch> will be at least. I'm using it as a tesbed to get familiar with jquery 07:45 < exch> the whole serverside (http server and interaction with MPD) is done already 07:45 < exch> just needs a swanky interface 07:46 < exch> You are probably right though. A Go port of MPD would not be misplaced 07:48 -!- wrtp [~rog@92.17.33.100] has joined #go-nuts 07:52 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 07:54 -!- tvw [~tv@e176003049.adsl.alicedsl.de] has joined #go-nuts 07:55 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has joined #go-nuts 08:01 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has joined #go-nuts 08:03 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 08:05 -!- niemeyer [~niemeyer@189-10-154-99.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 08:06 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 08:09 -!- vsayer [~vivek@c-76-102-205-58.hsd1.ca.comcast.net] has quit [Read error: Connection reset by peer] 08:09 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 08:09 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:10 -!- vsayer [~vivek@c-76-102-205-58.hsd1.ca.comcast.net] has joined #go-nuts 08:24 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-151-245.clienti.tiscali.it] has joined #go-nuts 08:35 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:35 -!- tonywang [~tony@fw.exoweb.net] has joined #go-nuts 08:43 -!- visof [~visof@41.233.120.88] has joined #go-nuts 08:43 -!- visof [~visof@41.233.120.88] has quit [Changing host] 08:43 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 08:44 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 08:54 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 09:14 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 09:14 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 09:14 -!- sacho [~sacho@90.154.201.194] has quit [Ping timeout: 240 seconds] 09:18 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Remote host closed the connection] 09:19 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 09:21 -!- aho [~nya@fuld-4d00d372.pool.mediaWays.net] has joined #go-nuts 09:22 -!- tensai_cirno [~cirno@195.19.33.75] has joined #go-nuts 09:24 -!- adu [~ajr@softbank220043138128.bbtec.net] has joined #go-nuts 09:24 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has joined #go-nuts 09:29 -!- tensai_cirno [~cirno@195.19.33.75] has quit [Ping timeout: 276 seconds] 09:42 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal] 09:42 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 09:43 -!- skejoe [~skejoe@188.114.142.162] has quit [Client Quit] 09:44 -!- xyproto1 [~alexander@77.40.159.131] has quit [Quit: WeeChat 0.3.4] 09:45 -!- unofficialmvp1 [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 09:45 -!- unofficialmvp1 [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 09:59 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 10:01 -!- adu [~ajr@softbank220043138128.bbtec.net] has joined #go-nuts 10:21 -!- saturnfive [~saturnfiv@210.74.155.131] has quit [Read error: Connection reset by peer] 10:25 -!- cenuij [~cenuij@78.112.41.178] has joined #go-nuts 10:25 -!- cenuij [~cenuij@78.112.41.178] has quit [Changing host] 10:25 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 10:26 -!- shvntr [~shvntr@116.26.131.224] has joined #go-nuts 10:33 -!- tvw [~tv@e176003049.adsl.alicedsl.de] has quit [Remote host closed the connection] 10:33 -!- tvw [~tv@e176003049.adsl.alicedsl.de] has joined #go-nuts 10:50 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Read error: Connection reset by peer] 10:51 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts 10:55 -!- tvw [~tv@e176003049.adsl.alicedsl.de] has quit [Remote host closed the connection] 11:00 < Electro^> basic question: 11:00 < Electro^> http://garyburd.github.com/go-mongo/pkg/mongo.html#Decode 11:00 < Electro^> that function, with an objectID 11:00 < Electro^> which i want converted to a string 11:01 < Electro^> how would i go about that? i dont understand the API 11:01 < Electro^> Clarification: i want an BSON objectID converted to a string or similar 11:08 < wrtp> it looks like it converts to mongo.ObjectID 11:08 < wrtp> isn't that sufficient? 11:08 < wrtp> you can easily convert that to string if you want 11:09 < wrtp> Electro^: ^ 11:10 < Electro^> well i must fail then since i cannot get a string out of that 11:10 -!- welterde [welterde@thinkbase.srv.welterde.de] has quit [Ping timeout: 250 seconds] 11:10 < wrtp> a mongo.ObjectID is a [12]byte - i.e. it's an array of 12 bytes 11:10 < wrtp> what kind of string would you want 11:11 < wrtp> ? 11:11 < wrtp> a hex representation? 11:11 < wrtp> the literal bytes? 11:11 < Electro^> yep 11:11 < wrtp> which one 11:11 < wrtp> ? 11:11 < Electro^> hex representation 11:12 < Electro^> i need to name some files according to the objectID 11:12 < wrtp> ok, for hex representation, you can do: fmt.Sprintf("%x", objid) 11:13 < wrtp> which returns the objid as hex 11:13 < Electro^> .. that easy?... 11:13 < wrtp> yup 11:13 < Electro^> need to test 11:13 < ww> niemeyer: sorry, a bit prone to tangents... 11:14 < ww> so: 1. just setting up a range is expensive 11:14 < wrtp> Electro^: e.g. gotry fmt 'Sprintf("%x", [12]byte{3,4,6,7,5,})' 11:14 < ww> 2. its memory will only be freed on function return 11:14 < ww> these are good things to know 11:14 < Electro^> ...well call me stupid... that worked... 11:14 < Electro^> i had several lines with decode shit and whatnot 11:15 < wrtp> Electro^: it's not spelt out... you're not stupid 11:15 < Electro^> thank you 11:15 < wrtp> np 11:15 < wrtp> ww: it's not entirely clear... 11:15 < niemeyer> ww: No problem.. the issue tracker is just the wrong place for that 11:15 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 11:15 < wrtp> (about memory being freed only on function return) 11:15 < niemeyer> ww: There's the mailing list, though 11:16 < niemeyer> Electro^: What are you using MongoDB for, btw? 11:16 < ww> yaml... can my inbox handle it? 11:17 < niemeyer> ww: Setting up a range is not expensive.. iterating over a map built for random access is expensive 11:17 < niemeyer> ww: Nothing special about Go there 11:18 < ww> niemeyer but that's not so -- for k := range map { break } is expensive 11:18 < ww> (and imo shouldn't be) 11:18 < Electro^> niemeyer: storing filenames and some other things, its a 5man project in cooperation with my univ and a corporation 11:18 < ww> s/map/m/ 11:19 < ww> because that's just what https://bitbucket.org/ww/gograph/changeset/851524fabf09 did 11:20 < niemeyer> ww: Really!? 11:20 < niemeyer> ww: What 'expensive' means in this case? 11:22 < niemeyer> ww: http://paste.ubuntu.com/570521/ 11:22 < ww> "expensive" means doing that once and then calling this function https://bitbucket.org/ww/gograph/src/851524fabf09/graph.go#cl-80 (which is what i'm actually trying to measure) takes what seems to be ~10-15 times too long 11:22 < niemeyer> ww: That returns in 18987000 nanoseconds 11:22 < niemeyer> ww: 1 million iterations.. 11:22 < ww> either that or deleting an element from a map is surprisingly expensive 11:23 < ww> try filling the map first 11:23 < niemeyer> ww: Heh.. alright, I'll stop listening to these claims :-) 11:24 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has quit [Remote host closed the connection] 11:24 < niemeyer> ww: If you think something is expensive, please time it 11:25 < wrtp> why is this loop so slow? for j := 0; j < N; i++ { 11:25 < wrtp> argh 11:25 < niemeyer> Electro^: Neat! 11:25 < taruti> wrtp: :P 11:25 -!- welterde [welterde@thinkbase.srv.welterde.de] has joined #go-nuts 11:25 < jnwhiteh> I wish I could find a better way to produce this malloc/free deadlock =( 11:26 -!- tensorpudding [~user@99.23.127.179] has quit [Read error: Connection reset by peer] 11:26 < jnwhiteh> I suspect it would make fixing it quite a bit easier =) 11:27 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 11:27 < wrtp> setting up a range on a map can be reasonably expensive 11:27 < wrtp> i just measured it 11:27 < wrtp> 529736600 ns/op add 11:27 < wrtp> 363567200 ns/op del 11:27 < wrtp> 104921600 ns/op range 11:28 < wrtp> that's actually ns for 1e6 ops 11:28 < wrtp> with a map filled with 1e6 elements 11:28 < niemeyer> wrtp: In the example above it takes about 18 nanoseconds to set up the range 11:29 < ww> niemeyer: your example uses an empty map 11:29 < wrtp> when the map wasn't filled, the time was much smaller 11:29 < wrtp> (about 10 times smaller) 11:29 < wrtp> here's my bench code: http://pastebin.com/SsCK2wyt 11:30 < niemeyer> wrtp,ww: It now takes about 40 nanoseconds 11:30 < wrtp> could you paste your code? 11:30 < taruti> are you all on the same arch? 11:30 < wrtp> exactly 11:31 < niemeyer> package main 11:31 < niemeyer> import ( 11:31 < niemeyer> "time" 11:31 < niemeyer> ) 11:31 < niemeyer> func main() { 11:31 < niemeyer> m := make(map[int]bool) 11:31 < niemeyer> for i := 0; i != 1e6; i++ { 11:31 < niemeyer> m[i] = true 11:31 < niemeyer> } 11:31 < niemeyer> start := time.Nanoseconds() 11:31 < niemeyer> for i := 0; i != 1000000; i++ { 11:31 < niemeyer> for _, _ = range m { break } 11:31 < niemeyer> } 11:31 < niemeyer> println(time.Nanoseconds()-start) 11:31 < niemeyer> } 11:31 < niemeyer> Argh! Damd paste.. 11:31 < niemeyer> http://paste.ubuntu.com/570525/ 11:31 < niemeyer> But now it doesn't matter.. 11:31 < wrtp> lol 11:31 < niemeyer> Sorry 11:32 < niemeyer> wrtp,ww: So, there you go.. 40 nanoseconds 11:32 < niemeyer> We're benchmarking function calls and stack handling, pretty much ;) 11:32 -!- cenuij [~cenuij@base/student/cenuij] has quit [Remote host closed the connection] 11:34 < Electro^> niemeyer: yeah we are quite happy with the project 11:35 -!- artefon [~thiagon@150.164.2.20] has joined #go-nuts 11:36 < wrtp> niemeyer: what numbers do you get when you run my code? 11:39 < niemeyer> wrtp: I don't want to bikeshed over this. The version above is clear enough. 11:40 < wrtp> argh, i forgot to stop the timer when creating the map 11:40 < wrtp> 48ns it is 11:41 < wrtp> which could still be significant 11:41 -!- tvw [~tv@212.79.9.150] has joined #go-nuts 11:42 < ww> i'm coming to the conclusion that niemeyer is right about range: 11:42 < ww> Size 10000 - 82 ns/op 11:42 < ww> Size 100000 - 85 ns/op 11:42 < ww> Size 1000000 - 78 ns/op 11:42 < ww> Size 10000000 - 78 ns/op 11:43 < ww> seems reasonably constant... 11:43 < ww> so the only thing left is that deleting from (possiby large) maps is the expensive part 11:44 < niemeyer> ww: I think it's the i += 1 which is the expensive part.. 11:47 < wrtp> a simple loop takes about 0.43ns per iteration on my machine... :-) 11:47 < ww> niemeyer: you're being silly. i can prove it: http://pastebin.com/iEz74mya 11:47 < ww> Size 100 - 570 ns/op 11:47 < ww> Size 1000 - 2166 ns/op 11:47 < ww> Size 10000 - 89525 ns/op 11:48 < niemeyer> ww: Yeah, I'm being silly, but I have a good reason to ;-) 11:48 < ww> Size 100000 - 474887 ns/op 11:48 < niemeyer> ww: I already told you a few times.. 11:49 < niemeyer> ww: Maps are optimized for random access 11:49 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 11:49 < niemeyer> ww: If you want fast iteration over the data, don't use a map. 11:49 < ww> yes, random *read* access... not *delete* 11:50 < niemeyer> ww: for i := range m { 11:50 < ww> s@read@read/write/ 11:50 < niemeyer> ww: What is that doing? 11:50 < ww> niemeyer you see the break rihgt? 11:50 < ww> break means exit this loop 11:50 < niemeyer> Why do I get into that.. 11:50 < niemeyer> Ok.. 11:52 < niemeyer> ww: Your code doesn't even *compile* 11:53 < ww> niemeyer: ummmm,,, yes it does... copy and paste error on your part? 11:54 < niemeyer> ww: http://paste.ubuntu.com/570538/ 11:54 < niemeyer> ww: 18 nanoseconds.. 11:55 < ww> niemeyer: you forgot to populate the map again 11:56 < wrtp> ha! 11:56 < wrtp> i've found it! 11:56 < wrtp> i think 11:56 < wrtp> deleting while *within the range statement* is slow 11:56 < wrtp> if you do: var j int 11:56 < wrtp> for j = range m { 11:56 < wrtp> break 11:56 < wrtp> } 11:56 < wrtp> m[j] = false, false 11:56 < wrtp> then it's much much faster 11:57 < wrtp> erm maybe 11:57 < wrtp> let me check 11:57 < niemeyer> 278 nanoseconds to delete an entry out of the hash 11:57 < wrtp> nah, bollocks 11:57 < niemeyer> http://paste.ubuntu.com/570541/ 11:59 < niemeyer> This is early-optimization tutorial people.. please ask if you have any suggestions on other early optimization approaches. 11:59 <@nf_> there just aren't enough nanoseconds in a day 12:01 <@nf_> niemeyer: where are you based? sydney? melbourne? 12:02 < niemeyer> nf_: Brazil 12:02 <@nf_> niemeyer: really? why did rob think you were based in au 12:02 <@nf_> strange 12:03 < niemeyer> nf_: Because I was invited to join Google AU, maybe 12:03 <@nf_> hmm 12:03 <@nf_> starting to think i need some kind of database to keep track of contributors :) 12:04 < adu> can I contribute? 12:04 <@nf_> adu: http://golang.org/doc/contribute.html 12:05 < adu> oh I can't do gccgo 12:05 < adu> I've been trying to get it to compile on ubuntu for 6 months 12:06 < adu> I gave up compiling it on macosx after about a week 12:06 < adu> but if I get it working I'll let you know 12:07 < wrtp> niemeyer: early optimisation it may be, but there are some interesting things here. 12:08 < ww> niemeyer: ok hotshot, can you explain why http://pastebin.com/iEz74mya goes something like O(exp(len(m)))? 12:08 < wrtp> ww: deleting items from a map when getting the key from a range gets slower and slower 12:09 < niemeyer> ww: I certainly can, if I debug it.. but we're playing that game for a while. I have to work a bit really. 12:09 < wrtp> i get 168210ns/op vs 196 for straight deletion... 12:09 <@nf_> ww: a lot of these answers can be gleaned by reading the code. $GOROOT/src/pkg/runtime/hashmap.{c,h} 12:10 < niemeyer> ww: Yeah, don't change a map while ranging over it if you expect speed.. 12:10 < adu> if I could understand how libgo (and stuff) fits into the main gcc branch, then perhaps I could refactor it for macosx, but as it stands, it will never work on macosx, since GNU gcc doesn't support mach-o 12:10 < niemeyer> ww: It's a gret feature that it even works at all 12:10 < niemeyer> great 12:10 < adu> and Apple gcc doesn't have the go contributions 12:10 < wrtp> niemeyer: actually, that doesn't make any difference 12:11 < adu> I remember hearing how libgo (and stuff) was commited to the main branch of GNU gcc, but I don't think the same has been done for Apple gcc 12:11 < niemeyer> wrtp: What did you mean by: <wrtp> ww: deleting items from a map when getting the key from a range gets slower and slower 12:11 < niemeyer> wrtp: ? 12:11 < ww> right, trivally changing it: http://pastebin.com/9g6TNjvH 12:11 < ww> still O(exp(len(m)) 12:12 < ww> the deletion happens outside of the range... 12:12 < ww> is it because the range structure is still on the stack? 12:12 < wrtp> niemeyer: i added 100000 items to a list. deleted them one by one, and did a print every 10000 elements 12:12 < ww> so it's more like, "don't delete from a map *near* a range statement" 12:12 < wrtp> the prints come slower and slower as the items get deleted 12:13 < niemeyer> wrtp: Within a range? 12:14 <@nf_> time for bed 12:14 < wrtp> niemeyer: no 12:14 <@nf_> this is a bizarre thing to be benchmarking, i must say 12:14 < niemeyer> nf_: Have a good night 12:14 < jnwhiteh> nf_: goodnight! 12:14 * ww waves to nf_ 12:15 < wrtp> nf_: it was prompted by ww who does stuff with large geodata topological databases 12:15 < wrtp> i can understand wanting to understand the performance characteristics 12:15 < ww> nf_: delete a node from a graph where the graph is implemented with maps 12:15 < niemeyer> .. and has an itch for early optimization 12:15 * niemeyer hides 12:15 < wrtp> :-) 12:16 <@nf_> i see what's happening 12:16 <@nf_> before i disappear 12:16 < wrtp> i think i might be that something about the first key chosen by range is the worst key to delete 12:16 < ww> wrtp: actually rdf and linked data, not so much geodata at the moment 12:17 <@nf_> so you fill up the hashmap 12:17 < wrtp> ww: ok 12:17 <@nf_> then when you delete the first key it finds, it then has to scan past that first empty bucket the next time around 12:17 <@nf_> so each time you begin a range on the hashmap it has to do a linear scan to find the first non-empty bucket 12:17 < ww> but i actually am doing this because i'm procrastinating about ISO/INSPIRE catalogue services XML at the moment :) 12:18 <@nf_> and if you're deleting the contents in bucket order, the scantime will increase linearly 12:18 <@nf_> hashmaps are implemented with a number of assumptions in mind, one of which being that items are added and removed more or less randomly 12:18 <@nf_> or, at least, the hash function is supposed to make it effectively random 12:19 < taruti> people do want trees but without generics use hashmaps 12:19 < ww> nf_: that makes sense. so actually my DelEdge function is just fine, it's only the benchmark that's pathological 12:19 < wrtp> yes, but we've used the hash function to confound the hash function 12:19 < wrtp> nf_: it's actually not an uncommon scenario 12:19 < ww> do maps get compacted sometimes on delete? 12:19 < wrtp> take one item from a hashmap and delete it 12:20 <@nf_> ww: yes, i think in most real applications the hash function and this hashmap implementation would be quite good 12:20 < jnwhiteh> wrtp: it can handle that case just fine 12:20 < jnwhiteh> the problem is when you're 'wiping' a map 12:20 <@nf_> taruti: you don't need generics to implement a fast tree in go 12:20 < jnwhiteh> at which point you're better off just creating a new map entirely =) 12:20 < taruti> nf_: but using it is pain with interface{} 12:20 <@nf_> ww: i'm not sure of the specific characteristics of this hashmpa 12:20 <@nf_> (sorry) 12:20 <@nf_> taruti: right, but not really that bad 12:21 < ww> np. 12:21 < wrtp> jnwhiteh: it'll happen when you're calling the 'take one and delete it' function many times in succession 12:21 <@nf_> taruti: i think people like to complain about it more than it really is bothersome 12:21 < ww> taruti: trees aren't so good for graphs that can contain cycles 12:21 < jnwhiteh> wrtp: aye, it hits the corner case that falls in the shadow of optimisation :P 12:22 <@nf_> wrtp: in this case, one might be better off keeping a slice of the keys and using that to select deletion candidates 12:22 * ww was never complaining, just trying to understand what was going on... and only started using go a few days ago 12:22 <@nf_> ww: i wasn't referring to you :) 12:22 < wrtp> nf_: yes, although that might be awkward 12:22 < wrtp> (if it's in an isolated function, for example) 12:23 <@nf_> wrtp: perhaps not as awkward as you think. in any case, i'm more interested in looking at the actual problem than this idea of what the problem migh be 12:23 < wrtp> sure 12:23 <@nf_> wrtp: there's invariably a way it can be done well 12:23 < wrtp> agreed 12:23 < wrtp> it's an interesting edge case to bear in mind though 12:24 <@nf_> it is, for sure 12:24 < wrtp> i've seen example go code that just picks off an item from a map just like that 12:24 < wrtp> and mostly it won't be a problem... 12:24 <@nf_> o rly 12:25 < wrtp> yeah, maybe in the go source actually 12:25 < ww> for context, i mostly work in python. and this sort of thing is absolutely natural to do. important to know that it's not necessarily appropriate in go 12:25 <@nf_> i'm curious to look into the characteristics of the hashmap implementation 12:25 < wrtp> me too. i've avoided it until now. 12:25 <@nf_> shame i didn't bug mike burrows about it when i was at mountain view last week 12:26 <@nf_> ww: do you just pick an item with dict.iterkeys()[0] or something? 12:26 < niemeyer> ww: For whatever it's worth, Python was also the language I would pick when there was choice, before Go 12:26 <@nf_> alright really sleeping now. tt! 12:26 < ww> nf_: something like that... 12:26 < jnwhiteh> I still default to Lua, but that's just what I use and how I think about solving problems these days =) 12:26 < niemeyer> nf_: dict.pop(foo, None) 12:27 <@nf_> pop! 12:27 < ww> or even, for k in dict: break though that looks funny 12:27 < wrtp> nf_: here we are, from some code russ wrote: for fidnum, _ = range c.freefid { 12:27 < wrtp> c.freefid[fidnum] = false, false 12:27 < wrtp> goto found 12:27 < wrtp> } 12:27 < ww> actually more often, for k in d: yield ... 12:27 <@nf_> i think "for in" uses iterkeys behind the scenes 12:27 <@nf_> or __iter__ 12:27 * ww misses generators 12:28 <@nf_> ww: huh!? use a channel! 12:28 <@nf_> or a closure 12:28 < wrtp> it's not going to be a problem in that case, but it's an idiomatic piece of code 12:28 < wrtp> an 12:28 < wrtp> d 12:28 < wrtp> 12:28 < wrtp> and could trigger nasty performance issues in some cases... 12:28 * nf_ does _not_ miss generators :P 12:28 < niemeyer> wrtp: I don't think the code which hits the problem is idiomatic, though 12:28 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 12:29 < wrtp> niemeyer: it's doing essentially the same thing as that code i just pasted 12:29 <@nf_> stop engaging me in interesting conversation when i need to sleep! 12:29 * nf_ is really gone now 12:29 < wrtp> nf_: go! 12:29 < ww> nf_: well that is kind of what led down this garden path... 12:29 < ww> 'night :) 12:29 < wrtp> nf_: PS bye 12:29 < niemeyer> wrtp: Not really.. that by itself is not a problem 12:29 < wrtp> niemeyer: except many times in succession 12:30 < niemeyer> wrtp: Exactly 12:30 < ww> using a channel to iterate over a map is probably dangerous i think, the reader is in another thread and mustn't modify it 12:30 < ww> s/tread/goroutine/ 12:30 < niemeyer> wrtp: Which becomes a pretty weird thing to do 12:30 < wrtp> niemeyer: you can easily get naturally busty behaviour 12:30 < wrtp> oops 12:30 < ww> so, iterate through this map and maybe delete some entries based on some condition can't be done with channels... 12:30 < niemeyer> It's effectively iterating of the map while shrinking it.. 12:30 < wrtp> "bursty" ! 12:31 < wrtp> ww: no you don't want to use channels for that 12:31 < ww> otoh you can't do that with python either 12:31 < wrtp> niemeyer: yeah 12:31 < wrtp> niemeyer: in the code example i posted above, the map is acting as a cache for unused identifiers. 12:32 < wrtp> it's quite possible that a large task might grab many thousands of identifiers and then put them all back 12:32 < wrtp> it'd be very slow in that case... 12:33 < wrtp> of course, you'd measure and find out that that's where the time is going... 12:33 < wrtp> but it's a useful thing to know to look for. 12:33 < adu> later 12:33 < ww> for sizing, i'm thinking of one dataset i work with from the british library that works out to some 173 million (s,p,o) triples 12:34 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 12:34 < ww> so indexing that with maps... 12:35 < wrtp> ww: maps are *supposed* to be ok with arbitrary sizes 12:35 < wrtp> but you might find it hard if the data doesn't fit in memory... 12:36 < ww> the data itself won't, but the maps index 64-bit hashes so they should on a largeish machine 12:39 < ww> just the hashes themselves will take about 4Gb and then whatever overhead for the actual hash tables 12:42 < ww> i don't know if FNV is a good enough hashing algorithm for that quantity of data though but of course it can be swapped out with another (cf. niemeyer on premature optimisation) 12:46 -!- Arafangion [~arafangio@60-241-250-19.static.tpgi.com.au] has left #go-nuts [] 12:48 < niemeyer> wrtp: Fair enough, it'd be good to fix that bizarre behavior.. 12:49 < niemeyer> wrtp: It may easily hide in innocently looking code indeed, it seems, after thinking on it some more 12:50 < wrtp> "premature optimisation" though.... :-) 12:50 < wrtp> sometimes worth looking at... 12:51 < niemeyer> wrtp: Well, we're talking about the language now.. 12:51 < wrtp> http://code.google.com/p/go/issues/detail?id=1544 12:52 < wrtp> niemeyer: weren't we talking about the language before? 12:55 < niemeyer> wrtp: Indeed.. it was just a bad sequence. Maps are slow, loops are slow, ranges are slow, deleting is slow.. 12:57 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Ping timeout: 240 seconds] 12:59 < ww> niemeyer: lol. more like: "something is slow... i wonder what it is..." 13:02 < niemeyer> ww: Yeah, that's a better approach in general 13:12 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 13:12 < skelterjohn> morning 13:13 < wrtp> skelterjohn: hi 13:13 < skelterjohn> solved that map issue yet? 13:14 < wrtp> skelterjohn: of course 13:14 < wrtp> which map issue was that again? 13:15 < wrtp> :-) 13:15 < wrtp> the GC issue? 13:15 < skelterjohn> the one that occupies about 10 pages of backscroll on my window 13:15 < skelterjohn> tl/dr, hoping to get the executive summary 13:16 < ww> skelterjohn: deleting from maps iteratively is expensive unless the order of deletions is random with respect to the ordering of keys as stored in the map itself 13:16 < ww> aaui 13:17 < skelterjohn> interesting 13:18 < wrtp> executive summary in this issue: http://code.google.com/p/go/issues/detail?id=1544 13:19 < ww> and also bits of the data structure made by range are kept on the function's stack and may not be garbage collected until the function returns 13:19 < skelterjohn> what happens if you go through the keys in the same order, but not using range? 13:19 < skelterjohn> if you store them in an array first, or something 13:19 < niemeyer> ww: Nope.. 13:19 < wrtp> skelterjohn: look at the example program in that issue 13:19 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 13:20 < wrtp> and run the program 13:20 < niemeyer> ww: Deleting from maps iteratively and repeatedly when you're restarting the iteration all the time is expensive. 13:20 < skelterjohn> it makes sense to me that that would be the case 13:21 < ww> niemeyer: right 13:21 < ww> because range has to scan over more and more empty spots before actually yielding a key 13:21 < niemeyer> skelterjohn: It feels surprising to me, to be honest 13:22 < skelterjohn> wrtp: i meant, use range to build a list of keys separate from the map, and then delete from the map using that list 13:22 < niemeyer> skelterjohn: I wouldn't look at that code and think I should watch out for usage in a fast path 13:22 < skelterjohn> your example code is still using range 13:22 < skelterjohn> niemeyer: i am having trouble parsing what you just said 13:22 < niemeyer> skelterjohn: Yes, that's the iteration part 13:22 < ww> it's the restarting of range that gets more and more expensive as entries are deleted 13:23 < wrtp> skelterjohn: it's using range only when getSomeIndex is used 13:23 < ww> (if they are deleted in order) 13:23 < niemeyer> skelterjohn: I wouldn't look at that code and think it will be slow if used in a place called very frequently 13:23 < skelterjohn> ah now i got it 13:23 < niemeyer> It'll get fixed eventually 13:23 < skelterjohn> "I wouldn't look at that code" made me think you were suggesting that i should not look at that code 13:24 < niemeyer> skelterjohn: Ah, no ;-) 13:25 < wrtp> skelterjohn: that might be a good approach *if* you know the keys that you're going to delete, in advance. 13:25 < skelterjohn> yes, i wasn't suggesting it as a better approach overall 13:25 < skelterjohn> i was just wondering if you had tried that, because it might isolate the problem 13:26 < niemeyer> The problem is the lack of any other "get a random key" approach 13:26 * ww agrees 13:27 < niemeyer> I mean, what makes the issue more worth of a fix 13:27 < niemeyer> Either way, it's a small bug.. let's fix it and move on 13:27 < wrtp> skelterjohn: if you're just deleting a bunch of keys, deleting within the range statement is about as quick 13:27 < wrtp> niemeyer: yup 13:28 < ww> niemeyer: i think it's related to my question about compacting the hash table after some number of deletions 13:28 < niemeyer> ww: I'm not sure.. will have to think some more 13:29 < ww> because really what causes the slowness is scanning over empty buckets that could be reclaimed, and probably should be if long-lifetime relatively volatile hashes are to be feasible 13:29 < niemeyer> ww: Compaction would make the cost even *higher* 13:29 < ww> the question is, do we want to support such uses of hashes... 13:30 < ww> niemeyer: for the pathological case, yes, but for more reasonable uses it is probably... reasonable 13:30 < niemeyer> ww: It depends on the cost/benefit 13:31 < niemeyer> ww: If we reinvent the hashmap to fix this problem, no, I don't think it'll be accepted :-) 13:31 < niemeyer> If someone comes up with a trivial fix, sure.. why not 13:32 < niemeyer> I'll head out to other stuff now, though.. will look later if there's no reasonable fix yet 13:32 < wrtp> "all" you'd need is a way to find the first non-empty bucket in O(1) or O(log(n)) time 13:32 < ww> that's a reasonable position, as long as we know that's the behaviour of maps, we can decide if its suitable for whatever purposes 13:33 < skelterjohn> can't we maintain an LL of buckets, or something? 13:33 < ww> for my part i know that sooner or later i'll have to reimplement my graph class with something other than maps 13:33 < ww> but oing that now would be premature optimisation :P 13:34 < wrtp> skelterjohn: that implies a lot of overhead 13:34 < wrtp> (at least one more pointer per entry 13:34 < wrtp> ) 13:34 < skelterjohn> how many buckets are we talking about? 13:34 < skelterjohn> per entry? why? 13:34 < wrtp> >=1 for each entry in the table 13:34 < skelterjohn> multiple buckets per entry? not th other way around? 13:34 < niemeyer> wrtp: Yeah, and without damaging the normal linear-scanning use case 13:35 -!- Nitro [~Nitro@unaffiliated/nitro] has joined #go-nuts 13:36 < wrtp> skelterjohn: one bucket per entry. 13:36 < wrtp> + empty buckets 13:36 < skelterjohn> ok, then i guess that map isn't implemented like i thought it'd be 13:36 * wrtp is finally looking at the actual code :-) 13:37 < wrtp> skelterjohn: it's a kind of radix tree as far as i can make out 13:38 * skelterjohn pages back in radix sort from sometime in early undergrad and figures out how to apply it to trees 13:38 < niemeyer> Hmm.. 13:38 < niemeyer> I think I know how to fix this 13:38 < skelterjohn> radix tree = trie? 13:39 < ww> patricia! 13:39 < skelterjohn> ? 13:39 < ww> skelterjohn: yes, aka "patricia trie" 13:39 < skelterjohn> oh 13:39 < skelterjohn> never heard of it 13:41 < wrtp> the implementation is a hierarchical tree of tables, each one indexed by a bit prefix of the key. 13:41 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 250 seconds] 13:44 < ww> wrtp: also good to know. so using something with uniform distribution over the key space will mean a lot of overhead, tables with only one entry, etc,. no? 13:44 < wrtp> ww: i don't think so 13:45 < wrtp> a table with one entry hasn't got much more overhead than a table with many 13:46 < skelterjohn> in C, is writing "byte data[1];" an easy way to initialize an array to size 1 while letting you resize/reassign it later, if need be? 13:46 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 13:47 < wrtp> skelterjohn: no 13:48 < wrtp> it's just a length-one array 13:48 < wrtp> it's not a pointer 13:48 < skelterjohn> well, i'm looking at hashmap.c:57, 58 13:48 < skelterjohn> why do you need end if your "entry" is just length 1 13:48 < wrtp> ah, as the last entry in a struct, that's different 13:48 < wrtp> it's would be [0] if the C standard allowed it 13:48 < wrtp> s/it's/it 13:49 < wrtp> it's used as a variable-length array, yes 13:49 < skelterjohn> ok, thanks 13:49 < skelterjohn> C is weird 13:49 < wrtp> the struct acts as a header for the rest of the allocated entry (they're all malloced or freed at once) 13:50 < wrtp> it's a hack really 13:50 < wrtp> just a commonly used one 13:50 < skelterjohn> i see - so you'd malloc(sizeof(struct hash_subtable)+aBunchOfExtraSpace) 13:51 < wrtp> yup 13:51 < wrtp> and because C doesn't check array bounds, you're sorted 13:55 -!- shvntr [~shvntr@116.26.131.224] has quit [Ping timeout: 250 seconds] 13:58 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts 14:01 < wrtp> i think putting a refcount on a hash_subtable might help 14:01 < wrtp> although it would slow other things down too 14:06 -!- tonywang [~tony@fw.exoweb.net] has quit [Quit: Leaving.] 14:10 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 14:13 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 14:18 * ww ponders a disk-backed hash table with gommap and unsafe... 14:22 -!- deltaphc [delta@cpe-76-173-127-142.socal.res.rr.com] has quit [] 14:27 -!- mulander [mulander@078088239019.lubin.vectranet.pl] has left #go-nuts [] 14:31 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds] 14:32 -!- mimustafa1 [~steve@92.62.119.57] has joined #go-nuts 14:32 -!- mimustafa1 [~steve@92.62.119.57] has left #go-nuts [] 14:32 < skelterjohn> ww: try GoLLRB? 14:34 -!- shvntr [~shvntr@218.16.179.115] has joined #go-nuts 14:35 < wrtp> ww: what about a normal map with some kind of LRU replacement policy as a cache and a disk-based db as backing? 14:36 < wrtp> the map type is efficient on space if you store value types 14:36 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 14:38 < wrtp> GoLLRB will be terrible for space compared with map 14:39 < wrtp> ww: how dynamic is the map? 14:40 -!- gju [~gju@big1.hrz.fh-zwickau.de] has left #go-nuts [] 14:42 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts 14:44 -!- emjayess [~emjayess@pix1.i29.net] has quit [Client Quit] 14:44 < ww> wrtp: in practice reads probably outnumber writes by several orders of magnitude 14:45 < aiju> use an EEPROM, then 14:45 < ww> of writes, inserts probably outnumber deletes 14:45 < wrtp> i was thinking if space was a real issue, you could just use a sorted array and binary search 14:46 < wrtp> that's about as close to optimal space usage as you're going to get 14:46 < wrtp> insertion's a bugger though. 14:48 < ww> the nice thing about mmap is that the OS should basically do LRU for you 14:48 < wrtp> ww: it should do that even if you don't use mmap... 14:48 < wrtp> isn't that the point of paging? 14:48 < ww> only problem is when you grow the file you have to unmap and remap it... and unpam is apparently tricky... 14:49 -!- adu [~ajr@softbank220043139062.bbtec.net] has joined #go-nuts 14:49 < ww> wrtp: well prefer paging to persistent storage to paging to swap :P 14:49 < aiju> wtf is the difference between paging and swap 14:49 < wrtp> aiju: swap swaps out a whole process 14:50 < wrtp> paging just pages out a few pages that haven't been recently used 14:50 < aiju> as a whole, all those virtual memory terms seem to be differently used by everyone who uses them 14:50 < aiju> does virtual memory refer to address translation? paging? swapping? oranges? 14:50 < ww> aiju: if the os runs out of buffers when you have mmap'd something, some buffers will get written back to disk in the file where you intend them to be 14:50 < adu> i prefer the terms "temporary" and "dynamic" 14:51 < ww> and you can force writing the whole thing by calling msync(2) 14:51 < wrtp> aiju: virtual memory refers to the address space 14:51 < aiju> wrtp: not always 14:51 < wrtp> aiju: paging is orthogonal to virtual memory 14:51 < aiju> wrtp: i know 14:51 < aiju> wrtp: yet some people use the terms synonymously 14:51 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 14:52 < wrtp> aiju: yeah, well they're wrong :-) 14:52 < aiju> it's the same with paging / segmentation / virtual memory 14:52 < wrtp> i've used systems with virtual memory but no paging 14:52 < aiju> for some people those three mean the same thing 14:52 < aiju> (in fact "Segmentation fault" on UNIX should really be "Page fault") 14:52 < wrtp> and it's perfectly possible to conceive of a system that does paging but doesn't have virtual memory 14:52 < aiju> wrtp: actually the latter ... how so? 14:54 < wrtp> aiju: you'd need some way of marking pages as read-only. but that wouldn't necessarily be full-blown virtual memory 14:54 -!- jyxent_ [~jyxent@129.128.191.96] has quit [Ping timeout: 260 seconds] 14:54 < wrtp> i.e. the address space could be one-to-one 14:54 < aiju> you'd need some way to mark pages as "swapped out" 14:54 < aiju> but yeah, you could use identity mapping 14:54 < wrtp> aiju: exactly. you mark the page as read-only. 14:55 < wrtp> or no-prot 14:55 < aiju> but it's kinda useless actually 14:55 < aiju> since you can't reuse the physical memory … 14:55 < wrtp> not really. different processes could have different page mappings 14:55 < aiju> but then it wouldn't be one-to-one! 14:56 < wrtp> yeah it would - all the page sets of all the processes would be disjoint 14:56 < wrtp> i could imagine doing that kind of thing in inferno, which uses a shared address space, but has multiple processes 14:57 < aiju> what's it good for? 14:57 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has joined #go-nuts 14:57 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 14:58 < aiju> the only point of paging seems to be more efficient use of physical memory 14:58 < wrtp> good question. but you could do it! 14:58 < aiju> haha 14:58 -!- jyoshm [~jmissao@unaffiliated/sundial] has quit [Ping timeout: 260 seconds] 14:59 -!- DerHorst [~Horst@e176100086.adsl.alicedsl.de] has joined #go-nuts 14:59 < wrtp> you could use it, perhaps, to make hibernation time quicker 14:59 < aiju> hahaha 15:00 < aiju> i haven't used hibernation for years 15:00 < wrtp> it's useful when it works. i don't like my laptop taking battery when it's sleeping. 15:00 < aiju> i turn mine off 15:00 < wrtp> i haven't turned my laptop off in years 15:01 < wrtp> :-) 15:01 < aiju> it's just as fast as returning from hibernation hahahaha 15:01 < aiju> i mean turning it on 15:01 * exch has no choice with his first generation netbook. Produciton fault causes it to leak power even when it's completely off 15:01 < aiju> oh wow 15:01 < exch> I have to remove the battery form it when it's not in use 15:02 < aiju> my notebook loses BIOS settings if you remove the battery 15:02 < wrtp> i dislike having to regain my context from scratch when i reboot the machine 15:02 < exch> This one doesnt fortunately 15:02 < aiju> my "context" usually consists of three terminal windows, two of them running VIMs :P 15:02 < wrtp> this machine knows how to hibernate... but only does it when the power runs out completely. 15:04 -!- artefon [~thiagon@150.164.2.20] has quit [Quit: Leaving] 15:04 < wrtp> aiju: my context at this moment consists of 30 windows, an acme session with 28 windows, and a web browser with 13 open tabs. :-) 15:04 < aiju> hahaha 15:04 < wrtp> i need GC! 15:04 < aiju> i never got why people need that many windows 15:04 < exch> O.o 15:04 < aiju> a single unused window irritates me a lot 15:04 < wrtp> i don't see the unused windows 15:05 < exch> let's see. average session for me: 3 terminals with several split windows. 1x chromium with 2 or 3 tabs at most, 1x thunar, 1x gedit 15:05 < ww> aiju: it's the "push onto the stack and look at it later" windows 15:05 -!- freetz [~fritz@secure-atrc-dip23.nat.okstate.edu] has joined #go-nuts 15:06 < aiju> my limited memory pretty much prevents that 15:06 < KBme> i'm closer to wrtp in this regard: 2 acme sessions with many windows each, 7 tags with at least one window on each, and like 50 open tabs in firefox 15:06 < aiju> and i have fucking 768 MB, what's the world coming to … 15:07 < wrtp> KBme: have you got a tidy house? :-) 15:07 < KBme> why? 15:07 < wrtp> i have a theory 15:07 < KBme> sure, i do 15:07 < wrtp> ok, that blows away the theory! 15:07 < aiju> my room is a complete mess 15:07 < KBme> i have one hard thing to handle though, which is a cat in my appartment 15:08 < KBme> so loads of cleaning as the fur gets all over the place 15:08 < aiju> currently my room looks like GNU source code 15:08 * ww has a great sticker with a picture of a 1950s housewife and the caption "a clean house is a sign of a wasted life" 15:08 < aiju> ww: hahahaha 15:08 < KBme> heh 15:08 < exch> lol 15:09 < exch> I'm very anal about clutter on my desktop. Many many windows just annoy me to no end 15:09 < KBme> tags are awesome :) 15:09 < wrtp> i want the system to help me more with getting rid of clutter 15:09 < exch> This is why I am vehemently allergic to Window's UI choice with the really thick window borders. Grr it makes me want to eat a baby 15:10 < wrtp> mmm, babies 15:10 * jumzi runs away on the tought of thick window borders 15:10 < KBme> i miss workspaces (tags) a lot on winblows too 15:10 < jumzi> The reason i stopped using windows and even started to program is windows borders 15:10 < KBme> i even miss unlimited tags on gnome...wmii is just a treat 15:11 < aiju> i miss sanity on gnome 15:11 < wrtp> the thing i can't stand is when you've got a window with 3 or 4 layers of icons on top, and only a small space for the actual stuff you're looking at 15:11 < wrtp> e.g. word 15:11 < jumzi> It's called utilized space 15:11 < ww> something like http://en.wikipedia.org/wiki/Ion_(window_manager) - screen for graphical displays 15:11 < aiju> i waste 11 px of horizontal space on my screen 15:11 < aiju> it's fun with OS X where you can't fucking maximize windows 15:12 < KBme> really? 15:12 < wrtp> acme's not bad for using most space 15:12 < wrtp> i think OS X is right to always show the top menu bar, to be honest. 15:12 < jumzi> acme works, it's just slightly cluttered 15:12 < aiju> well, you can't maximize it at all 15:12 < aiju> if you press the maximize button it gets somewhat larger 15:12 < aiju> but there is still totally free space left! 15:12 < wrtp> mine maximises fine 15:12 -!- kingkong_ [~kingkong@mivacukor.lha.sgsnet.se] has joined #go-nuts 15:12 < exch> tiling WMs certainly look space efficient, but I can't get my head around the navigation through them :< Perhaps I didnt give it enough of a chance though 15:13 < wrtp> although it doesn't cover the top menu bar (but neither does anything else, except in full screen mode) 15:14 < wrtp> exch: acme's not bad. it makes it easy to maximise individual sub-windows. 15:14 < wrtp> there's quite a lot of redundancy in the tag text though 15:14 < jumzi> Anyhow, Mac is a nogo for me since i just druul at everything 15:14 < aiju> jumzi: how so? it's not even orange 15:15 < jumzi> I'm like one of those birds that can't stop looking at shiny stuff 15:15 < jumzi> ... And oranges 15:15 < jumzi> aiju: You thought i only had one obsession? 15:15 < aiju> yeah, i assumed you to be simple and orthogonal 15:15 < aiju> while(orange()) druul(); 15:15 < ww> marmalade 15:17 < jumzi> actually i get anxiety attacks in rio when i've been undiciplined 15:17 < Ognom> Got a small problem with goMongo (garyburd), more specifically the RunCommand function. I can't really grasp how it works, is it possible for me to run a command as if I used the admin shell in a terminal through the function mentioned? 15:17 < aiju> Ognom: are you looking for .. sudo? 15:18 * aiju actually has no clue what Ognom's talking about 15:18 < Ognom> Yeah, might have formulated the question a bit crappy there 15:18 -!- imsplitbit [~imsplitbi@64.39.4.132] has joined #go-nuts 15:19 -!- emjayess [~emjayess@24-116-86-22.cpe.cableone.net] has joined #go-nuts 15:19 -!- emjayess [~emjayess@24-116-86-22.cpe.cableone.net] has quit [Remote host closed the connection] 15:19 < jumzi> ... you mean give you the ability to priviligedly execute one function? 15:19 < aiju> you mean exploiting mongodb? :D 15:19 * jumzi listens attentive 15:20 -!- visof [~visof@unaffiliated/visof] has quit [Remote host closed the connection] 15:20 < Ognom> Erm, that might be what I'm trying to accomplish. Can't really tell for sure 15:21 < Ognom> Give me a second try and I'll try to ask a more understandable question 15:22 < jumzi> hmm it could be good to think about what you're trying to achive 15:22 < Electro^> what he means is he wants to wire commands to mongoDB without using the driver functions 15:22 < Electro^> i think... 15:23 < Ognom> Yeah, you could put it like that I suppose. don't really know if it clarifies anything though 15:24 -!- freetz [~fritz@secure-atrc-dip23.nat.okstate.edu] has quit [Ping timeout: 276 seconds] 15:25 < Ognom> Atm I am trying to write a function that checks how many posts in my database that has the same filename. I found the command db.<collection>.find({searchoptions}).explain() but I have no way how (if possible) to implement it using gomongo 15:26 -!- emjayess [~emjayess@pix1.i29.net] has joined #go-nuts 15:27 < adu> hi 15:27 < ww> (aside mongo (and 4store) uses the same mmap strategy i talked about earlier) 15:28 -!- shvntr [~shvntr@218.16.179.115] has quit [Ping timeout: 246 seconds] 15:29 -!- andreas [~andreas@mivacukor.lha.sgsnet.se] has joined #go-nuts 15:30 -!- andreas [~andreas@mivacukor.lha.sgsnet.se] has left #go-nuts [] 15:31 -!- Bagarn [~andreas@mivacukor.lha.sgsnet.se] has joined #go-nuts 15:35 -!- skelterjohn [~jasmuth@ool-44c5da2b.dyn.optonline.net] has joined #go-nuts 15:37 -!- DerHorst [~Horst@e176100086.adsl.alicedsl.de] has quit [Remote host closed the connection] 15:40 -!- gr0gmint [~quassel@87.61.162.99] has joined #go-nuts 15:40 -!- tgall_foo [~tgall@linaro/tgall-foo] has quit [Quit: Leaving] 15:45 -!- jyoshm [~jmissao@unaffiliated/sundial] has joined #go-nuts 15:48 -!- tgall_foo [~tgall@206.9.88.154] has joined #go-nuts 15:49 -!- femtoo [~femto@95-89-196-152-dynip.superkabel.de] has joined #go-nuts 15:59 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 16:00 -!- tensai_cirno [~cirno@80.250.216.102] has joined #go-nuts 16:00 -!- snearch [~snearch@f053001032.adsl.alicedsl.de] has joined #go-nuts 16:02 < Electro^> I have a map[string]interface{} which containts several key:value pairs, one of which is called "_filename" 16:03 < Electro^> how would i go about getting that particular data? 16:03 < wrtp> is the key or the value called "_filename"? 16:03 < aiju> foo["_filename"] 16:03 < Electro^> key 16:03 < wrtp> what aiju says 16:04 < Electro^> thank you 16:05 < Electro^> and it worked... 16:05 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 16:06 < aiju> haha 16:06 < Electro^> as usual the solution is MUCH more simple than i would imagine 16:06 < skelterjohn> what were you imagining?! 16:06 < aiju> maybe he's used to C# 16:07 < skelterjohn> Doesn't C# have lookup tables? 16:07 < aiju> org.hashmap.resolve.value<foo>(bar, org.hashmap.resolverfactorycreator()); 16:07 < kimelto> skelterjohn: hashName.find("_filename") or something like that? 16:07 < exch> thats java :) 16:07 * aiju is making stuff up after having seen C# code 16:07 < exch> C# has m[key] maps. I bet java does to tbh 16:07 < aiju> actually it was much worse than that just for a single table lookup 16:07 < Electro^> problem is im not used to anything, a newbie if you will 16:07 < skelterjohn> java does not 16:07 < skelterjohn> at least not last i checked 16:07 < exch> really? O.o 16:08 < Electro^> I've used some Java before, but not too much 16:08 < skelterjohn> it uses a class with .put(key, val) and .get(key) methods 16:08 < exch> -.- 16:08 < aiju> "syntactic sugar causes cancer of the semicolon" ;) 16:08 < skelterjohn> java maps are not special parts of the language, just libraries provided. and java has no operator overloading 16:09 < aiju> Plan 9 C has operator overloading 16:09 < skelterjohn> hooray 16:09 < kimelto> aiju: where does this sentence come from? 16:09 < aiju> kimelto: Alan Perlin 16:09 < aiju> mentioned in SICP 16:10 < vegai> I haven't really understood that 16:11 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 16:11 < aiju> the quote or SICP? 16:11 < adu> vegai: understood what? 16:11 < vegai> the quote 16:12 < vegai> is the joke merely "har har, colon cancer"? I feel that there must be something subtler there 16:12 < aiju> i don't fully understand it either 16:13 * vegai shrugs 16:13 < adu> was that quote from SCIP? 16:14 < skelterjohn> it's mixing terms from the programming world with terms from the medical world 16:14 < skelterjohn> it's a pun. kinda. 16:14 < wrtp> adu: SICP 16:14 < adu> right, that makes sense, then 16:14 < aiju> adu: SICP is quoting Alan Perlin 16:14 < wrtp> = "structure & interpretation of computer programs" 16:14 < vegai> I've always hated puns, too. Perhaps programming was the wrong field for me :P 16:14 -!- sauerbraten [~sauerbrat@p508CFDD5.dip.t-dialin.net] has joined #go-nuts 16:14 < wrtp> a classic 16:15 < adu> I've read most of it 16:15 < aiju> terribly full of imperative programming bashing lol 16:15 < wrtp> good 16:15 < wrtp> i should get a copy :-) 16:15 < aiju> most LISP code makes me think "wow, cool, i could that in C with half that much lines and infinitely less parentheses" 16:15 < aiju> +do 16:16 < wrtp> LISP has some unique selling points 16:16 < adu> aiju: most Haskell code makes me think: "wow, cool, I'm programming in lisp without parentheses!" 16:16 < aiju> hahahahahaha 16:16 < aiju> i think LISP beats Haskell 16:16 < adu> aiju: why? 16:16 < aiju> no monads 16:17 < adu> you don't have to use monads 16:17 < aiju> yes, I/O is for wimps 16:17 < adu> also lisp doesn't have partial application 16:18 < aiju> i don't see much of a benefit in lazy evaluation 16:18 < adu> then you obviously don't work with Taylor series everyday 16:18 < wrtp> i don't believe in partial application. why should the first argument be privileged? 16:18 -!- jeng [~jeng@74.194.1.28] has joined #go-nuts 16:18 < adu> wrtp: it's not about the first argument, it's about all arguments 16:19 < adu> wrtp: partial application is a side-effect of currying 16:19 < vegai> benefit of lazy evaluation: you can write your file copy function so that you read all of file A, then write everything you read to file B 16:19 < vegai> and the resulting program will run in constant space 16:19 < aiju> lazy evaluation is only good for lazy programmers 16:19 < wrtp> adu: yeah, i'm not sure i believe in currying... 16:20 < vegai> don't worry, currying believes in you! 16:20 < wrtp> vegai: curse of lazy evaluation: you never know how much space you're going to use... 16:20 < skelterjohn> adu: "then you obviously don't work with Taylor series everyday" <- i don't know why but this comment strikes me as hilarious 16:20 < aiju> functional programming is something you do with too much CPU time 16:20 < vegai> wrtp: yeah, somewhat true 16:21 < wrtp> vegai: i think that was my biggest bugbear with haskell 16:21 < aiju> that's something all lazy techniques have in common 16:21 < aiju> they are fucking unpredictable 16:21 < wrtp> i never knew whether my program would work in the available space or not 16:21 < wrtp> yeah, and there's no decent analysis method for them 16:21 < vegai> aiju: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=go&lang2=ghc look at the cpu times :P 16:22 < wrtp> functional programming can be extremely efficient 16:22 < aiju> many things "can" be 16:22 < vegai> there's profiling which I would think qualifies as a decent analysis method 16:22 < wrtp> but i thought it was telling that my "purely functional algorithms" book didn't use a lazy language 16:22 < vegai> if you don't know how to use it, well, then I could just say that C sucks because I cannot debug it 16:22 < wrtp> 'cos it was too hard to analyse 16:23 < vegai> I kinda hate laziness in Haskell too. Caused me the most trouble in my programs 16:23 < vegai> but then again, the total amount of trouble was far less than (I expect) it would've been if I had used C 16:23 < wrtp> it looks beautiful though... 16:24 < skelterjohn> none of this is making me regret adding haskell to my list-of-languages-to-never-learn 16:24 < wrtp> ones = 1 :: ones 16:24 < wrtp> skelterjohn: you should 16:24 < wrtp> it's well worth it 16:24 < skelterjohn> too late - it's on the list 16:25 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer] 16:25 < wrtp> it will expand your mind 16:25 < jbooth1> y'all saw this right 16:25 < jbooth1> http://steve-yegge.blogspot.com/2010/12/haskell-researchers-announce-discovery.html 16:25 < adu> I should be the one talking about Haskell, since I'm writing a go parser in it 16:25 < skelterjohn> my head is plenty big - just ask my wife 16:25 < aiju> about how much a single linguage can suck :P 16:25 < wrtp> (and the techniques are applicable to go!) 16:25 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 16:25 < aiju> i don't know how learning haskell helped me with anything 16:26 < wrtp> aiju: no? oh well. i found it useful. 16:26 < aiju> i wrote some programs in it and notices how fun it was to debug 16:26 < wrtp> yeah. not. 16:26 < skelterjohn> i mean, i'm pretty familiar with functional programming in general. i've done my time as a TA and I've had to teach scheme a couple times 16:27 < wrtp> scheme's not a functional programming language 16:27 < wrtp> (any more than go is... 16:27 < wrtp> ) 16:27 < skelterjohn> :\ 16:27 < skelterjohn> is lisp? 16:27 < wrtp> no 16:27 < skelterjohn> hmm. 16:27 < aiju> wrtp: you're mixing up functional and purely functional 16:27 < wrtp> ok, i probably am. 16:27 < skelterjohn> wiki disagrees? 16:28 < adu> wrtp: ya, scheme & lisp were the first functional programming languages 16:28 < aiju> what about APL? 16:28 < adu> APL was the world's first obfuscated esoteric language 16:28 < wrtp> but i really don't see how lisp is functional if Go isn't... 16:28 < skelterjohn> wrtp: what is your definition of functional programming languages, and why does scheme not meet it? 16:28 < aiju> scheme doesn't have loops 16:28 < skelterjohn> i don't really see a lot in common between go and scheme or lisp 16:29 < wrtp> not everything is a function. 16:29 < skelterjohn> is everything a function in haskell? 16:29 < adu> typed scheme might be comparable 16:29 < wrtp> "expression-based" might be a better term 16:29 < jbooth1> what's a nonfunction in scheme? 16:29 < aiju> a number 16:29 * jbooth1 kinda equated expressions and functions 16:29 < skelterjohn> jbooth1: well, you have atoms 16:29 < jbooth1> ah 16:29 < jbooth1> gotcha 16:29 < jbooth1> well 16:29 < aiju> that's a BS definition 16:29 < adu> skelterjohn: yes, and no, there is only values and types, (and some other type-related stuff) 16:29 < jbooth1> that kinda makes the term functional meaningless then right 16:30 < jbooth1> like noone's gonna write a language with 5() to return the value 5 16:30 < aiju> jbooth1: yeah, wrtp is trying to be academic 16:30 < adu> skelterjohn: values can be one of two things: constants and functions, depending on their types 16:30 < wrtp> well, the things that i see as truly different between, say Go and lisp don't relate to functions 16:30 < skelterjohn> adu: then does a (let ...) stmt break it? 16:30 < wrtp> they both have closures 16:30 < wrtp> they both have side effects 16:31 < adu> skelterjohn: in HAskell? break what? 16:31 < skelterjohn> in lisp 16:31 < ww> is there a good library for string tokenisation? 16:31 < jbooth1> yeah but lisp makes you be like OK I AM DOING SOMETHING WITH SIDE EFFECTS in order to write imperative code 16:31 < jbooth1> like (begin or something 16:31 < adu> skelterjohn: oh, I was talking about Haskell, but no, let x = ... doesn't break purity in Haskell 16:31 < aiju> jbooth1: bs 16:31 -!- gr0gmint [~quassel@87.61.162.99] has quit [Remote host closed the connection] 16:31 < aiju> jbooth1: LISP has side effects all over the language 16:31 < wrtp> jbooth1: you do in some (e.g. haskell) but not lisp (or scheme i believe, although i'm less famiiar with it) 16:32 < jbooth1> aiju like what? was referring to scheme more than lisp 16:32 < jbooth1> having not done any lisp really 16:32 < aiju> jbooth1: Scheme is just a LISP dialect ... 16:32 < jbooth1> yeah 16:32 < aiju> there is in implicit (begin) in every (lambda) and (define) 16:32 < adu> aiju: a very distant one 16:32 < aiju> *an 16:32 < jbooth1> ah ok 16:32 < jbooth1> so you're talking about the global space that those defines go into being modified 16:32 < wrtp> i'd see the main differences between go and lisp in terms of syntax (obvious) and runtime (on-the-fly-compilation, live runtime) 16:33 < jbooth1> as a side effect 16:33 < aiju> wrtp: you write code differently 16:33 < aiju> in LISP you use map etc, in Go you use loops 16:33 < aiju> and no, it's not about "how you could do it" but "how you actually do it" 16:34 < wrtp> yeah, sure, different idioms arise from different language design choices 16:34 < adu> in Haskell, you also use map 16:34 < adu> or list comprehensions 16:34 < aiju> functional programming is mainly about idioms IMHO 16:34 < wrtp> i didn't use map in lisp that much, apart from in macros 16:34 < skelterjohn> all these languages have the same power, so the only difference is how you write the ode 16:34 < aiju> wrtp: you used recursion fucking everywhere? 16:34 < adu> I tend to use map in Python, even when I don't have to 16:35 < aiju> i use map in K, because it's only one character there 16:35 < aiju> but otherwise meh.. why not just use a fucking loop? 16:35 < adu> skelterjohn: wrong, power is the ratio between work and fingeraches 16:35 < wrtp> aiju: loop 16:35 < wrtp> aiju: map's only appropriate if you've got a list 16:36 < skelterjohn> i use regular loops more than fucking loops, but not always 16:36 < aiju> hahaha 16:36 < wrtp> aiju: i agree about functional programming being mainly about idioms. but we're talking about the *languages* 16:37 < adu> wrtp: languages can encode idioms 16:37 < aiju> wrtp: if you want to define stuff like that precisely, you pretty much end up with a wishy washy term either not applying to anything or applying to everything 16:37 < aiju> cf. "object oriented" 16:37 < wrtp> well, i think that's pretty much a good description of the term "functional programming language"... 16:38 < wrtp> (not that i have a better term :-]) 16:38 < adu> wrtp: for example, go encodes "const Fn = func(args) {body}" in the idiomatic "func Fn(args) {body}" 16:38 < wrtp> you can write functional programs in any language with clusures 16:38 < wrtp> s/clusures/closures/ 16:39 < wrtp> adu: i'm not sure i'd call that an encoded idiom 16:39 < wrtp> a function isn't a constant 16:40 < adu> wrtp: how so? 16:40 < wrtp> it doesn't obey any of the const rules... 16:40 < adu> it doesn't obey any of the var rules either 16:41 < wrtp> i don't think i said it was a var 16:41 < adu> anyways scheme requires those semantics 16:43 < wrtp> what semantics? that a function is a constant? 16:43 < adu> (define (f args) body) is sugar for (define f (lambda (args) body)) 16:43 < wrtp> ok, sure 16:43 < wrtp> presumably like in CL you can redefine functions at runtime? 16:44 -!- skelterjohn [~jasmuth@ool-44c5da2b.dyn.optonline.net] has quit [Ping timeout: 240 seconds] 16:44 < adu> I 'don't know 16:44 < wrtp> now *that* is a real distinguishing feature of lisp (well, common lisp at any rate) 16:44 < adu> CL's separate function namespace is also 16:45 < wrtp> adu: i don't think that's much of a big deal 16:45 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has quit [Quit: leaving] 16:45 < wrtp> (although schemers probably would) 16:45 < adu> (apply + ...) vs (apply #'+ ...) 16:45 < adu> i like the first one more 16:45 < wrtp> yeah, i think i agree 16:45 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 16:45 < wrtp> but it's really just a syntactic difference 16:46 < wrtp> you can easily do the same things with either 16:46 < adu> wrtp: well in that case, go is identical to forth 16:46 < adu> I mean they're only different syntactically 16:46 < wrtp> forth doesn't have closures 16:46 < wrtp> or garbage collection 16:46 < adu> sure it does 16:46 < adu> sure it does 16:46 < wrtp> really? 16:46 < adu> yes, the syntax for it is equivalent to implementing it yourself ;) 16:46 < wrtp> i don't mean "yes, you can build closures in forth" 16:47 < aiju> asm has closures 16:47 < wrtp> of course i can write a lisp interpreter in go or vice versa 16:47 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 16:47 < aiju> you just have to implement them 16:47 -!- erus_ [50b135f2@gateway/web/freenode/ip.80.177.53.242] has joined #go-nuts 16:48 < adu> syntax makes the difference between happy fingers and arthritis 16:48 < wrtp> if you say "this language has this feature" you have to be able to obtain that feature without implementing the feature from scratch 16:48 < erus_> how do i declare a new array of int64s based on the size of another slice 16:48 < aiju> adu: that's the keyboard layout 16:48 < wrtp> x := make([]int64, len(oldSlice)) 16:48 < aiju> erus_: not at all 16:49 < aiju> arrays only work with fixed size 16:49 < erus_> result := [len(myslice]int64 {} doesnt work 16:49 < wrtp> erus_: don't make an array. make a slice. 16:49 < adu> erus_: that's wrong in many ways 16:50 < wrtp> it's only wrong in that the expression needs to be constant 16:50 < erus_> will make([]int64, len(oldSlice)) zero all the ints in the array? 16:50 < adu> erus_: first, you're missing a parenthesis, second, you must use a constant expression there 16:50 < wrtp> (which it isn't if myslice is a slice) 16:50 -!- skejoe [~skejoe@188.114.142.162] has quit [Read error: Operation timed out] 16:50 < wrtp> oh yeah, the missing bracket too 16:50 < aiju> erus_: all Go data is always zeroed 16:51 < jumzi> That is awesome! It's so little, but still so much 16:51 < erus_> oh yeah theyre not objects theyre ints 16:51 -!- sacho [~sacho@87-126-7-67.btc-net.bg] has joined #go-nuts 16:52 < adu> <wrtp> but it's really just a syntactic difference 16:52 < adu> ;) 16:53 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.] 16:53 < erus_> cheers guys 16:53 -!- erus_ [50b135f2@gateway/web/freenode/ip.80.177.53.242] has quit [Quit: Page closed] 16:54 < wrtp> adu: lisp-1 vs lisp-2... sure! 16:54 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 16:55 < adu> what really bugs me about computation in general is silos, or anything monolithic, I wish there was more orthogonality 16:56 < adu> lisp at least has the appearance of the opposite of that 16:57 < aiju> HAHAHA 16:57 < aiju> LISP is anti-orthogonal all over th eplace 16:57 -!- freetz [~freetz@secure-atrc-dip23.nat.okstate.edu] has joined #go-nuts 16:58 < adu> aiju: lisp is homogeneous 16:58 < aiju> parentheses fucking everywhere 16:58 < adu> aiju: my point exactly 16:58 < aiju> it's a homogenous solutions of parentheses in letters 16:58 < adu> homogeneous 16:59 < aiju> there is ' 16:59 < adu> yes, lisps generally have tons of syntax 16:59 < adu> but it's all at the lexical level, the grammer is like half a line 16:59 < aiju> and below that is a giant heap of special forms 17:00 < aiju> just moving everything to a different layer 17:01 < adu> anyways, I think homogeneity and orthogonality are corequesites 17:02 < adu> so while lisp did get one of them right, by not getting the other, total fail 17:03 < adu> go on the other hand, seems to be in danger of being too orthogonal, but not homogeneous enough 17:03 < aiju> syntax is ultimately bikeshed 17:03 < jumzi> aiju: It is? 17:03 < aiju> it's something you get used to 17:04 < aiju> look at all those people complaining about how much Go's syntax suck 17:04 < adu> aiju: when it comes to deciding upon something which in unambiguous, I would disagree 17:04 < adu> aiju: but then again, there may be more than one way to make a grammar unambiguous 17:04 < adu> aiju: Go's syntax is context-dependant 17:05 < aiju> i never ever got what "context-dependent" means 17:05 < jumzi> aiju: Well GO's syntax doesn't suck, its abit dirrfrent 17:05 < adu> aiju: it's the opposite of context-free 17:05 < aiju> adu: care to explain? 17:05 < aiju> hahahaha 17:05 < adu> aiju: 'x.y' 17:05 < adu> what does that mean in go? 17:05 < aiju> member y of x 17:05 -!- virtualsue [~chatzilla@nat/cisco/x-kisxzyxpeaalvtdi] has joined #go-nuts 17:06 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 17:06 < adu> that's if x is an instance of a struct type 17:06 < adu> what if x is a package-name? 17:06 < adu> then it's a qualified identifier 17:06 < adu> what if y is a method name? 17:06 < aiju> is there ANY language which isn't context-dependent? 17:06 < adu> then it's a method expression 17:07 < wrtp> lisp's syntax really isn't that simple :-) 17:07 < aiju> except HQ9+ and brainfuck 17:07 < aiju> brainfuck isn't even context-free 17:07 < aiju> you have to match parentheses! 17:07 < aiju> (or i think those are called brackets, w/e) 17:10 < adu> aiju: another example: 'x.y(a, b)' 17:10 < aiju> i always thought about context-dependency more something being about the grammar 17:10 < aiju> i.e. whether it's valid or not 17:11 < adu> if y is a method name, then that parse succeeds, but if y is a type name (and x is a package name), then that parse fails, because type assertions can only have 1 parameter 17:12 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts 17:12 < adu> but the only way to determine the difference is to load all imports 17:13 < aiju> adu: tell me any language which is context-free 17:14 < taruti> some assemblers 17:15 < aiju> masm is not, nasm is not, gas is not 17:15 < taruti> aiju: they are high level assemblers 17:15 < aiju> i meant "language someone uses" 17:15 < taruti> quite different from very simple ones 17:15 < aiju> there is HQ9+ 17:20 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Remote host closed the connection] 17:21 -!- virtualsue [~chatzilla@nat/cisco/x-kisxzyxpeaalvtdi] has quit [Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074220]] 17:25 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 17:25 -!- exch [~exch@h78233.upc-h.chello.nl] has quit [Read error: Operation timed out] 17:25 -!- exch [~exch@h78233.upc-h.chello.nl] has joined #go-nuts 17:27 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal] 17:27 -!- keithcascio [~keithcasc@nat/google/x-yhsgmtmqfmhxevez] has joined #go-nuts 17:31 -!- gits [~gits@77.94.219.158] has joined #go-nuts 17:33 < plexdev> http://is.gd/3xVEMu by [Rob Pike] in go/src/pkg/reflect/ -- reflect: add a secret method to ArrayOrSliceType. 17:33 < aiju> a secret method? haha 17:37 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection] 17:38 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts 17:41 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Read error: Connection reset by peer] 17:41 -!- espeed [~espeed@63.246.231.57] has quit [Ping timeout: 240 seconds] 17:42 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts 17:42 -!- espeed [~espeed@63.246.231.57] has joined #go-nuts 17:42 -!- PortatoreSanoDiI [~Marvin@82.84.64.199] has joined #go-nuts 17:43 < rm445> uh guys, if I have type FooList []*Foo (where a Foo is a struct); and some var f FooList, how do I loop over the struct fields of the list? 17:43 < rm445> for i := range f { f[i].field ??? 17:43 < aiju> yeah 17:44 < tobier> does Go have semaphores? 17:44 -!- saulhoward [~saulhowar@cpc2-camd6-0-0-cust33.hari.cable.virginmedia.com] has joined #go-nuts 17:44 < taruti> yes, kind of 17:45 < rm445> aiju: thanks. Guess my problem is something else then :-) 17:45 < tobier> taruti: kind of? :) 17:45 < taruti> runtime has them but they are not meant to be touched 17:45 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-151-245.clienti.tiscali.it] has quit [Ping timeout: 250 seconds] 17:46 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 17:46 < tobier> say that I want to make a producer-consumer-ish program, normally I would use semaphores when doing it 17:47 < tobier> so I was thinking that there maybe would be a semaphore type in go :) 17:47 < taruti> why not use a channel to pass results in ? 17:48 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 17:48 < tobier> taruti: yeah, I was thinking about that 17:48 < tobier> I was just checking if there was a specific semaphore that that could be used :) 17:49 < taruti> the idiomatic solution is to use channels 17:49 < plexdev> http://is.gd/eFtFhF by [Robert Griesemer] in go/doc/ -- go spec: fix local link 17:50 < tobier> taruti: yeah, I thought so 17:50 < tobier> still learning! :) 17:56 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has joined #go-nuts 18:05 < exch> finally. loading and applying of localized strinf data is working. One can now translate the entire webapp at runtime. It loads a language file for the specified language from the Go backend, then applies the translations to all required elements in the document 18:05 < exch> eep. wrong channel 18:09 < ww> yay! ntriples parser and simple graph querying! 18:10 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has left #go-nuts [] 18:10 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has joined #go-nuts 18:10 -!- saulhoward [~saulhowar@cpc2-camd6-0-0-cust33.hari.cable.virginmedia.com] has quit [Ping timeout: 240 seconds] 18:10 < skelterjohn> exch: what channel was that intended for? 18:11 -!- freetz [~freetz@secure-atrc-dip23.nat.okstate.edu] has quit [Ping timeout: 272 seconds] 18:11 < exch> skelterjohn: on another server entirely 18:11 < exch> considering its about a go project, I suppose it fits here as well. Bit out of context though :p 18:11 < skelterjohn> true 18:17 -!- tvw [~tv@e176003049.adsl.alicedsl.de] has joined #go-nuts 18:19 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has quit [Quit: Leaving.] 18:35 -!- freetz [~freetz@secure-atrc-dip23.nat.okstate.edu] has joined #go-nuts 18:39 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 18:54 -!- niemeyer [~niemeyer@189-10-154-99.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 240 seconds] 18:57 -!- deso_ [~deso@x0561a.wh30.tu-dresden.de] has joined #go-nuts 18:57 -!- sacho [~sacho@87-126-7-67.btc-net.bg] has quit [Read error: Connection reset by peer] 19:00 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 19:00 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 19:00 -!- Project-2501 [~Marvin@82.84.86.60] has joined #go-nuts 19:01 -!- femtooo [~femto@95-89-196-152-dynip.superkabel.de] has joined #go-nuts 19:02 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 19:03 -!- PortatoreSanoDiI [~Marvin@82.84.64.199] has quit [Ping timeout: 250 seconds] 19:04 -!- imsplitbit [~imsplitbi@64.39.4.132] has quit [Quit: Bye!] 19:04 -!- femtoo [~femto@95-89-196-152-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 19:07 -!- dfr|mac [~dfr|work@nat/google/x-cdbcfbziruvingnc] has joined #go-nuts 19:10 -!- visof [~visof@unaffiliated/visof] has quit [Ping timeout: 250 seconds] 19:12 -!- saulhoward [~saulhowar@cpc2-camd6-0-0-cust33.hari.cable.virginmedia.com] has joined #go-nuts 19:19 -!- ymasory [~ymasory@c-76-99-55-224.hsd1.pa.comcast.net] has quit [Remote host closed the connection] 19:21 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 19:25 -!- niemeyer [~niemeyer@187.91.6.130] has joined #go-nuts 19:29 -!- dfr|mac [~dfr|work@nat/google/x-cdbcfbziruvingnc] has quit [Remote host closed the connection] 19:31 -!- dfr|mac [~dfr|work@nat/google/x-mjmwlmzozjvoyzaj] has joined #go-nuts 19:32 -!- dfr|mac [~dfr|work@nat/google/x-mjmwlmzozjvoyzaj] has quit [Remote host closed the connection] 19:37 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 19:39 -!- fabled [~fabled@mail.fi.jw.org] has quit [Quit: Ex-Chat] 19:43 -!- artefon [~thiago@187.59.185.190] has joined #go-nuts 19:46 -!- vegai [vegai@archlinux/developer/vegai] has quit [Ping timeout: 276 seconds] 19:47 -!- vegai [vegai@archlinux/developer/vegai] has joined #go-nuts 19:49 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 19:50 -!- lmoura [~lauromour@187.113.76.232] has quit [Quit: Leaving] 19:52 -!- napsy [~luka@88.200.96.18] has quit [Remote host closed the connection] 19:52 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 19:56 -!- lmoura [~lauromour@187.113.76.232] has joined #go-nuts 19:58 -!- tensai_cirno [~cirno@80.250.216.102] has quit [Quit: Leaving] 19:59 -!- thiago__ [~thiago@187.59.185.190] has joined #go-nuts 20:01 -!- artefon [~thiago@187.59.185.190] has quit [Ping timeout: 240 seconds] 20:02 -!- awidegreen [~quassel@c-eacae555.08-2-73746f39.cust.bredbandsbolaget.se] has joined #go-nuts 20:02 -!- visof [~visof@unaffiliated/visof] has quit [Quit: Leaving] 20:03 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 20:03 -!- vegai [vegai@archlinux/developer/vegai] has quit [Ping timeout: 240 seconds] 20:05 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 20:08 -!- vegai [vegai@archlinux/developer/vegai] has joined #go-nuts 20:09 -!- wrtp [~rog@92.17.33.100] has quit [Quit: wrtp] 20:19 -!- saulhoward [~saulhowar@cpc2-camd6-0-0-cust33.hari.cable.virginmedia.com] has quit [Ping timeout: 240 seconds] 20:21 -!- visof_ [~visof@41.238.232.23] has joined #go-nuts 20:23 -!- visof [~visof@unaffiliated/visof] has quit [Quit: Leaving] 20:24 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 20:26 -!- tensorpudding [~user@99.23.127.179] has joined #go-nuts 20:31 -!- jyoshm [~jmissao@unaffiliated/sundial] has quit [Read error: Operation timed out] 20:31 -!- jyoshm [~jmissao@unaffiliated/sundial] has joined #go-nuts 20:37 < plexdev> http://is.gd/6qOx6h by [Rob Pike] in go/src/pkg/gob/ -- gob: compute information about a user's type once. 20:39 -!- prip [~foo@host212-129-dynamic.35-79-r.retail.telecomitalia.it] has quit [Ping timeout: 250 seconds] 20:39 -!- Netsplit *.net <-> *.split quits: FX80, awidegreen, preflex, @nf_, cco3-hampster1, arun, Wiz126, Boney, KBme, mpl, (+16 more, use /NETSPLIT to show all of them) 20:41 -!- snearch [~snearch@f053001032.adsl.alicedsl.de] has quit [Quit: Verlassend] 20:44 -!- coldturnip1 [~COLDTURNI@118-166-66-26.dynamic.hinet.net] has joined #go-nuts 20:45 -!- femtooo [~femto@95-89-196-152-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 20:45 -!- coldturnip [~COLDTURNI@118-166-71-243.dynamic.hinet.net] has quit [Ping timeout: 246 seconds] 20:46 -!- DerHorst [~Horst@e176100086.adsl.alicedsl.de] has joined #go-nuts 20:46 -!- aiju_ [~aiju@unaffiliated/aiju] has joined #go-nuts 20:50 -!- sauerbraten [~sauerbrat@p508CFDD5.dip.t-dialin.net] has quit [Remote host closed the connection] 20:52 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts 20:52 -!- prip [~foo@host129-120-dynamic.53-79-r.retail.telecomitalia.it] has joined #go-nuts 20:54 < plexdev> http://is.gd/Okc3R0 by [Gustavo Niemeyer] in go/ -- .hgignore: add *.cgo*.{c,go} 20:54 < plexdev> http://is.gd/OxAWA3 by [Andrew Gerrand] in go/misc/dashboard/builder/ -- misc/dashboard/builder: talk to hg with utf-8 encoding always. 20:57 < exch> str1ngs: https://groups.google.com/forum/#!topic/golang-nuts/j_2sg5250Rw 20:57 -!- awidegreen [~quassel@c-eacae555.08-2-73746f39.cust.bredbandsbolaget.se] has joined #go-nuts 20:57 -!- niemeyer [~niemeyer@187.91.6.130] has joined #go-nuts 20:57 -!- Project-2501 [~Marvin@82.84.86.60] has joined #go-nuts 20:57 -!- keithcascio [~keithcasc@nat/google/x-yhsgmtmqfmhxevez] has joined #go-nuts 20:57 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 20:57 -!- vsayer [~vivek@c-76-102-205-58.hsd1.ca.comcast.net] has joined #go-nuts 20:57 -!- Boney [~paul@203-158-39-118.dyn.iinet.net.au] has joined #go-nuts 20:57 -!- TheSeeker [~n@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has joined #go-nuts 20:57 -!- FX80 [~MX80@cust65.253.117.74.dsl.g3telecom.net] has joined #go-nuts 20:57 -!- kanru [~kanru@kanru-1-pt.tunnel.tserv15.lax1.ipv6.he.net] has joined #go-nuts 20:57 -!- nf_ [~nf@2001:470:21:20::4444:61d9] has joined #go-nuts 20:57 -!- LittleQNCCU [~littleq@dream.cs.nccu.edu.tw] has joined #go-nuts 20:57 -!- dropdrive [~dropdrive@cpe-72-227-159-70.nyc.res.rr.com] has joined #go-nuts 20:57 -!- cco3-hampster1 [~conleyo@nat/google/x-ahpmbtrrfowrcrpb] has joined #go-nuts 20:57 -!- arun [~arun@unaffiliated/sindian] has joined #go-nuts 20:57 -!- ap3xo [~apexo@2a01:238:436b:8301:5054:ff:fe87:82fb] has joined #go-nuts 20:57 -!- Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 20:57 -!- jcdny [~davis@mailrelay1.pbclients.com] has joined #go-nuts 20:57 -!- KBme [~KBme@9angled-2-pt.tunnel.tserv5.lon1.ipv6.he.net] has joined #go-nuts 20:57 -!- ptrb [~peter@archimedes.bourgon.org] has joined #go-nuts 20:57 -!- [dmp] [~dennis@unaffiliated/dmp/x-546784] has joined #go-nuts 20:57 -!- mfoemmel [~mfoemmel@chml01.drwholdings.com] has joined #go-nuts 20:57 -!- i__ [~none@unaffiliated/i--/x-3618442] has joined #go-nuts 20:57 -!- mpl [~mpl@smgl.fr.eu.org] has joined #go-nuts 20:57 -!- ServerMode/#go-nuts [+o nf_] by kornbluth.freenode.net 20:58 -!- jeng [~jeng@74.194.1.28] has quit [Read error: Connection reset by peer] 20:58 -!- jeng [~jeng@74.194.1.28] has joined #go-nuts 21:01 -!- visof_ [~visof@41.238.232.23] has quit [Remote host closed the connection] 21:03 -!- Netsplit *.net <-> *.split quits: andman, eikenberry, djcapelis, elimisteve, lmoura, viirya, dRbiG, yebyen, aiju, cdsgf_, (+25 more, use /NETSPLIT to show all of them) 21:03 -!- Netsplit over, joins: MaybeSo 21:03 -!- djcapelis [~djc@capelis.dj] has joined #go-nuts 21:03 -!- Netsplit over, joins: yebyen, toyoshim 21:03 -!- Netsplit over, joins: [Pete_27], ww 21:04 -!- Netsplit over, joins: Fish-, andman, stalled, preflex, jyoshm, gits, ShadowIce, pothos, chressie, viirya (+6 more) 21:04 -!- tylergillies [~quassel@204-232-205-180.static.cloud-ips.com] has joined #go-nuts 21:04 -!- Netsplit over, joins: arun_, drhodes, d_m, KirkMcDonald, zeroXten 21:05 -!- tylergillies [~quassel@204-232-205-180.static.cloud-ips.com] has quit [Changing host] 21:05 -!- tylergillies [~quassel@unaffiliated/tylergillies] has joined #go-nuts 21:05 -!- Netsplit over, joins: ivan`, aiju, Zoopee, lmoura, dRbiG, cdsgf_ 21:06 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has quit [Remote host closed the connection] 21:07 -!- gits [~gits@77.94.219.158] has quit [Ping timeout: 250 seconds] 21:13 -!- imsplitbit [~imsplitbi@64.39.4.132] has joined #go-nuts 21:14 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Quit: JusticeFries] 21:19 -!- larva [~larvanitr@ec2-46-51-171-183.eu-west-1.compute.amazonaws.com] has joined #go-nuts 21:24 < str1ngs> exch: so its an issue with glfw? 21:24 < str1ngs> exch: readelf wont work on mac though no? 21:27 < exch> no idea tbh 21:27 < exch> the issue is with CGO though 21:28 < exch> this issue only started showing up when cgo got rid of generating the intermediate .so 21:29 < str1ngs> might be the same issue on mac then. just different errors? 21:29 < exch> possibly. Someone with a mac would have to test this 21:30 < str1ngs> or is this just related to the libgl vs nvidia 21:30 < exch> I think it is 21:30 < exch> So not related to the mac issue 21:30 < str1ngs> so doesnt really help I??fai 21:31 < str1ngs> err the orginal poster 21:31 < exch> nope 21:31 < str1ngs> and I dont know enough about mac and there dynamic libs 21:32 < exch> neither do I 21:32 < str1ngs> it could be related just on mac it wont compile at all 21:38 -!- nickbp [~nickbp@70-36-134-55.dsl.dynamic.sonic.net] has joined #go-nuts 21:39 -!- inv_arp_ [~junya@74.63.255.72] has quit [Ping timeout: 246 seconds] 21:40 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 21:40 -!- inv_arp [~junya@74.63.255.72] has joined #go-nuts 21:41 -!- DerHorst [~Horst@e176100086.adsl.alicedsl.de] has quit [Remote host closed the connection] 21:41 -!- tgall_foo [~tgall@206.9.88.154] has quit [Changing host] 21:41 -!- tgall_foo [~tgall@linaro/tgall-foo] has joined #go-nuts 21:47 -!- Netsplit *.net <-> *.split quits: mpl, [dmp], vsayer, XenoPhoenix, LittleQNCCU, KBme, mfoemmel, TheSeeker, Wiz126, Urtie, (+25 more, use /NETSPLIT to show all of them) 21:47 -!- Fish [~Fish@exo3753.pck.nerim.net] has quit [Ping timeout: 276 seconds] 21:47 -!- deso_ [~deso@x0561a.wh30.tu-dresden.de] has quit [Read error: Connection reset by peer] 21:47 -!- Fish [~Fish@exo3753.pck.nerim.net] has joined #go-nuts 21:48 -!- Netsplit over, joins: KBme, i__, LittleQNCCU, FX80, mpl, arun, niekie, larva, MaybeSo, mfoemmel (+25 more) 21:50 -!- tensorpudding [~user@99.23.127.179] has quit [Read error: Connection reset by peer] 21:52 -!- jeng [~jeng@74.194.1.28] has quit [Remote host closed the connection] 21:53 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-176-146.clienti.tiscali.it] has joined #go-nuts 21:54 -!- ako [~nya@fuld-590c7b79.pool.mediaWays.net] has joined #go-nuts 21:56 -!- crusty55 [0c449583@gateway/web/freenode/ip.12.68.149.131] has joined #go-nuts 21:56 -!- tensorpudding [~user@99.23.127.179] has joined #go-nuts 21:56 -!- Project-2501 [~Marvin@82.84.86.60] has quit [Ping timeout: 260 seconds] 21:57 -!- aho [~nya@fuld-4d00d372.pool.mediaWays.net] has quit [Ping timeout: 240 seconds] 22:00 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has quit [Ping timeout: 240 seconds] 22:00 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 22:00 < crusty55> how do I ensure that the == and != comparison operators are defined when using an interface type T as a map key? 22:01 < skelterjohn> if you use an interface as a map key, it compares the pointer value of whatever the interface has a pointer to 22:01 -!- Fish-- [~Fish@9fans.fr] has joined #go-nuts 22:02 < skelterjohn> You can't, for instance, define a struct with an Equals(other) method and have that work as you might hope with map 22:02 < skelterjohn> though you can with gohash.googlecode.com 22:03 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn] 22:03 < crusty55> skelterjohn: based on your first comment, I don't see why it says "if key type is an interface [...] these comparison operators *must* be defined [...]"; if it's by pointer value, then it's always defined, no must about it, right? 22:06 -!- freetz [~freetz@secure-atrc-dip23.nat.okstate.edu] has quit [Ping timeout: 272 seconds] 22:07 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 22:11 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Client Quit] 22:11 -!- niemeyer [~niemeyer@187.91.6.130] has quit [Ping timeout: 260 seconds] 22:18 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-176-146.clienti.tiscali.it] has quit [Quit: E se abbasso questa leva che succ...] 22:24 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has joined #go-nuts 22:26 -!- crusty55 [0c449583@gateway/web/freenode/ip.12.68.149.131] has quit [Quit: Page closed] 22:32 < mpl> http://andrewvos.com/2011/02/21/amount-of-profanity-in-git-commit-messages-per-programming-language/ <-- do you guys think go would get a lower score? ;) 22:34 < exch> possibly :) 22:37 < Namegduf> "Ruby" 22:37 < Namegduf> PHP result is surprising. 22:38 < exch> ya 22:40 < aconran> mpl, excellent find 22:42 < plexdev> http://is.gd/S1FUD4 by [Russ Cox] in 7 subdirs of go/src/ -- ld: detect stack overflow due to NOSPLIT 22:42 -!- nutate_ [~rseymour@cacsag4.usc.edu] has joined #go-nuts 22:42 < mpl> and C++ totally unsurprising :) 22:43 -!- awidegreen [~quassel@c-eacae555.08-2-73746f39.cust.bredbandsbolaget.se] has quit [Remote host closed the connection] 22:44 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 240 seconds] 22:44 -!- itrekkie [~itrekkie@ip72-211-129-122.tc.ph.cox.net] has joined #go-nuts 22:45 <@nf_> the javascript result is unsurprising 22:46 <@nf_> i remember submitting JS changes in a previous job that were simply "fuck fuck fuck fuck fuck" 22:48 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by peer] 22:49 * exch is silently falling love with Factor 22:49 < exch> Go better beware :o 22:50 <@nf_> not so silently! 22:50 <@nf_> i <3 factor, too 22:51 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 22:52 -!- imsplitbit [~imsplitbi@64.39.4.132] has quit [Quit: Bye!] 22:52 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 22:53 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 22:56 -!- espeed [~espeed@63.246.231.57] has quit [Ping timeout: 246 seconds] 22:56 < exch> \o/ 22:57 -!- espeed [~espeed@63.246.231.57] has joined #go-nuts 22:57 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has quit [Quit: Computer has gone to sleep.] 22:58 -!- niemeyer [~niemeyer@187.91.81.108] has joined #go-nuts 22:59 -!- emjayess [~emjayess@pix1.i29.net] has quit [Ping timeout: 250 seconds] 23:01 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Quit: Venom_X] 23:02 -!- Fish-- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 23:13 -!- lmoura [~lauromour@187.113.76.232] has quit [Read error: Connection reset by peer] 23:18 -!- lmoura [~lauromour@187.58.101.14] has joined #go-nuts 23:23 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 23:26 -!- rl [~rleland@84-74-142-37.dclient.hispeed.ch] has left #go-nuts ["Leaving"] 23:26 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts 23:29 < plexdev> http://is.gd/BymSKz by [Russ Cox] in 3 subdirs of go/test/ -- test: do not depend on implicit if condition 23:29 < plexdev> http://is.gd/PiPBos by [Russ Cox] in 2 subdirs of go/ -- gc: require if condition 23:29 -!- dju__ [dju@fsf/member/dju] has quit [Ping timeout: 246 seconds] 23:30 -!- lucid [~rbl@84-74-142-37.dclient.hispeed.ch] has joined #go-nuts 23:43 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 23:45 < plexdev> http://is.gd/keZwr4 by [Robert Griesemer] in go/doc/ -- go spec: make condition mandatory in if statements 23:48 -!- Scorchin [~Scorchin@host86-147-227-46.range86-147.btcentralplus.com] has joined #go-nuts 23:58 -!- bXi [bluepunk@irssi.co.uk] has quit [Ping timeout: 272 seconds] 23:59 -!- bXi [bluepunk@irssi.co.uk] has joined #go-nuts --- Log closed Wed Feb 23 00:00:29 2011