Go Language Resources Go, golang, go... NOTE: This page ceased updating in October, 2012

--- 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