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

--- Log opened Sat Mar 12 00:00:55 2011
00:04 <+iant> iainmcgin: I would say that we are working on a combination of
making Go more efficient and reducing the barriers for people to use Go
00:05 -!- piranha [~piranha@e180080213.adsl.alicedsl.de] has quit [Quit: Computer
has gone to sleep.]
00:05 <+iant> I don't know whether we have an intern allocation, Rob would
know
00:05 <+iant> I wouldn't say we are working on fresh exciting stuff, I would
say we are working on grinding through details
00:05 <+iant> still interested?
00:10 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
00:16 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has quit [Read
error: Connection reset by peer]
00:21 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 250
seconds]
00:21 -!- Venom_X [~pjacobs@66.54.185.133] has quit [Quit: Venom_X]
00:24 -!- itrekkie [~itrekkie@ip70-190-110-197.ph.ph.cox.net] has quit [Quit:
itrekkie]
00:26 -!- iant [~iant@nat/google/x-mdcaopglrbiqisnz] has quit [Read error:
Operation timed out]
00:27 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts
00:34 -!- iant [~iant@nat/google/x-rwxsjdyrwelgxpat] has joined #go-nuts
00:34 -!- mode/#go-nuts [+v iant] by ChanServ
00:34 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
00:35 -!- iant1 [~iant@67.218.107.6] has joined #go-nuts
00:38 -!- iant [~iant@nat/google/x-rwxsjdyrwelgxpat] has quit [Ping timeout: 252
seconds]
00:44 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 240 seconds]
00:51 < evildho> iant1: ping
00:52 -!- mode/#go-nuts [+v iant] by ChanServ
00:52 < evildho> hebbes
00:52 <+iant> evildho: pong
00:52 < evildho> iant: looking at gccgo on freebsd again, but having some
troubles with getting things built properly again.
00:53 < evildho> this is going to be entirely useless right now because i
don't have specific questions
00:53 < evildho> just letting you know that in the not-too-distant future, i
may have some :)
00:53 <+iant> don't hesitate to file bug reports, of course
00:53 <+iant> sure
00:53 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.]
00:53 < evildho> last time the big issue was -fplan9-extensions didn't work
happily with opaque structs
00:53 -!- nettok [~quassel@200.119.183.211] has joined #go-nuts
00:54 < evildho> now it's that i can't get a dev environment set up to save
my life, but i think that's more my fault
00:54 < evildho> haha
00:54 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net]
has quit [Ping timeout: 250 seconds]
00:56 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4]
01:00 -!- zimsim [~simon@87.72.77.195] has quit [Remote host closed the
connection]
01:05 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net]
has quit [Ping timeout: 252 seconds]
01:07 -!- ronnyy [~quassel@p4FF1C6C4.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
01:08 -!- sauerbraten [~sauerbrat@p508CB43A.dip.t-dialin.net] has joined #go-nuts
01:13 -!- sauerbraten [~sauerbrat@p508CB43A.dip.t-dialin.net] has quit [Remote
host closed the connection]
01:33 -!- Natch [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has
joined #go-nuts
01:35 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has
quit [Ping timeout: 250 seconds]
01:59 -!- tobik [~tobik@p549FF747.dip.t-dialin.net] has quit [Quit: WeeChat 0.3.3]
01:59 -!- tvw [~tv@e176008068.adsl.alicedsl.de] has quit [Ping timeout: 255
seconds]
02:00 -!- tvw [~tv@e176007158.adsl.alicedsl.de] has joined #go-nuts
02:04 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has quit
[Remote host closed the connection]
02:07 < evildho> iant: I don't understand the point of the most recent
patch; I don't get where it reduces contention and I only really see additional
function call overhead
02:07 < evildho> I feel like I'm clearly missing something
02:07 <+iant> it's a bit obscure
02:07 < evildho> I don't see how the one place mwakeup gets used is
beneficial :)
02:08 <+iant> what happens is that as soon as anything calls notewakeup,
that thread starts running
02:08 <+iant> very often it then needs to grab the scheduler lock
02:08 <+iant> so if you call notewakeup when you have the scheduler lock
yourself, the normal result is that the thread you just woke up tries to get the
lock, fails because you have it locked, and puts itself to sleep
02:08 <+iant> then you immediately release the scheduler lock, and wake up
the thread so that it can continue
02:09 <+iant> my patch avoids this contention for the scheduler lock, by not
waking up the thread until the scheduler lock is free
02:10 <+iant> this pattern happens particularly in entersyscall
02:10 <+iant> which is called pretty often
02:10 < evildho> oh wow
02:10 < evildho> yes it is
02:10 * evildho looks harder at schedunlock
02:10 < evildho> that's the key
02:10 < evildho> /agree russ; nice
02:12 <+iant> Russ has seen the strace I was looking at....
02:13 -!- iant [~iant@67.218.107.6] has quit [Quit: Leaving.]
02:28 -!- foocraft [~dsc@89.211.254.177] has quit [Quit: Leaving]
02:28 -!- tvw [~tv@e176007158.adsl.alicedsl.de] has quit [Remote host closed the
connection]
02:29 -!- keithcascio [~keithcasc@nat/google/x-ayuxteyrobpuxnqg] has quit [Ping
timeout: 248 seconds]
02:37 -!- foocraft [~dsc@89.211.254.177] has joined #go-nuts
02:57 -!- SirPsychoS [~sp@c-24-13-132-130.hsd1.il.comcast.net] has joined #go-nuts
02:58 < SirPsychoS> does an interface type assertion correspond to
runtime.assertE2T ?
03:07 < SirPsychoS> just confirmed that that's the case in the runtime
source, in case anyone reading this has occasion to wonder
03:20 < steven> how would you go about reading a file of digits separated by
whitespace and turning it into an []int?
03:21 < steven> i guess i would read it into a string, split it by
whitespace into a []string, and map it into a []int by calling strings.Atoi() on
each element
03:26 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has joined #go-nuts
03:34 < KirkMcDonald> Clearly, Go needs list comprehensions.
03:41 < araujo> and union types
03:41 < araujo> *perfect language*
03:42 < sav> what about generics?
03:42 < sav> ;)
03:42 < SirPsychoS> * cue flamewar *
03:43 < SirPsychoS> my previous question and its results seem like an
argument for adding generics - according to 6prof, a surprising amount of time was
spent in type assertions on List elements
03:44 < SirPsychoS> almost a quarter of all execution time (excluding the
time the scheduler thread spent sleeping in runtime.futex)
03:46 -!- rm445 [rm445@pip.srcf.societies.cam.ac.uk] has joined #go-nuts
03:46 < SirPsychoS> lol well I just moved all the execution time to
runtime.findfunc
03:58 -!- gogogrrl [~max@p5DE8C53B.dip.t-dialin.net] has joined #go-nuts
03:59 < steven> KirkMcDonald: meh
03:59 < steven> list comprehemsions in python are kinda stupid
03:59 < steven> they're a language feature that should be (and already are)
a library feature
04:00 < steven> which makes them inflexible
04:00 < steven> map() works just fine
04:01 -!- gogogrrl_ [~max@p5DE8FB61.dip.t-dialin.net] has quit [Ping timeout: 276
seconds]
04:03 -!- nutate [~rseymour@204.140.130.68] has quit [Quit: nutate]
04:14 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 246 seconds]
04:23 -!- saturnfive [~saturnfiv@61.150.60.153] has joined #go-nuts
04:23 -!- saturnfive [~saturnfiv@61.150.60.153] has left #go-nuts []
04:39 < steven> guys
04:39 < steven> how do you convert an int to a byte?
04:39 < steven> is it possible ever?
04:42 < niemeyer> steven: byte(intval)
04:43 -!- foocraft [~dsc@89.211.254.177] has quit [Ping timeout: 240 seconds]
04:44 < steven> thought so, was getting exceptions though.  weird
04:44 < steven> lemme try again
04:45 -!- foocraft [~dsc@78.101.133.245] has joined #go-nuts
04:49 < steven> niemeyer: my problem is that i have a []byte which i want to
sort using the "sort" package
04:49 < steven> but it only really accepts ints and strings and maybe uints
04:49 < steven> (and floats)
04:49 < steven> so im not sure how to go about this
04:49 < iainmcgin> iant: potentially still interested, I'll see what rob
says if he gets back to me
04:50 < niemeyer> steven: Just implement the needed interface
04:50 -!- iainmcgin [~iainmcgin@78.32.138.101] has quit [Quit: Leaving]
04:50 < niemeyer> steven: Those you find in package sort are just helpers
04:50 < niemeyer> steven: Look here:
http://golang.org/src/pkg/sort/sort.go?s=3634:3653#L149
04:50 < niemeyer> steven: It's really quite simple
04:51 < steven> gotcha.
04:51 < steven> thanks
04:51 < niemeyer> steven: You can pretty much copy the IntArray into your
own ByteArray, and s/int/byte/
04:51 < steven> huh, this is weird.
04:51 < niemeyer> steven: No problme
04:51 < niemeyer> steven: What's weird?
04:51 < steven> im doing: var a []byte; var b []byte; /* fill a with some
random bytes */; copy(b, a);
04:51 < steven> and then b is still empty!
04:52 < SirPsychoS> is b still nil?
04:52 < SirPsychoS> it only copies as much as there is space for
04:52 < niemeyer> steven: Check the len() of b
04:52 < steven> yeah.  i assumed copy will allocat space.
04:52 < steven> thanks
04:52 < niemeyer> steven: It doesn't
04:53 < steven> ok.
04:53 < SirPsychoS> copy is basically memcpy, with built-in bounds checking
04:53 < steven> nice.
04:53 < niemeyer> Woohay built-in bounds checking
04:53 < steven> <3
04:54 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
04:54 -!- mode/#go-nuts [+v iant] by ChanServ
04:54 < niemeyer> Woohay iant as well
04:55 < steven> oh i remember what the problem was
04:55 < steven> i was trying to convert an []int into a []byte, which Go
does not like for some reason.
04:56 < steven> []byte(myintslice) // seems to fail
04:56 < SirPsychoS> yeah, slices of different types aren't really
convertible - under the slice is an array of the element type, so you've got a
bunch of 32-bit ints next to each other
04:57 < niemeyer> steven: Yeah, that doesn't work..
04:57 < SirPsychoS> if you tried to just use that as a byte slice, it'd
behave wierdly, and actually converting it would be costly
04:57 < SirPsychoS> so I suspect that's why they left it out, to avoid
having costly operations hiding in type conversions
04:58 < niemeyer> And also because it's not very common to throw out
information like this, and it's trivial to do so when one really wants to.
05:00 < steven> oh.
05:01 < steven> the thing is, i was trying to leverage bytes.Compare
05:01 < steven> since its the only stdlib compare function i can find for
slices.
05:01 -!- sav [~lsd@peirce.xored.org] has quit [Read error: Connection reset by
peer]
05:02 < steven> i was confused on why there wasnt an interface for it like
in sort
05:03 < niemeyer> steven: Uh..  you mean this: if len(a) != len(b) { return
false }; for i := 0; i < len(a); i++ { if a[i] != b[i] { return false } };
return true;?
05:03 < steven> yes.
05:03 -!- xyproto [~alexander@77.40.159.131] has quit [Ping timeout: 252 seconds]
05:03 * steven facepalms.
05:03 < steven> so ive been using bytes all this time for no good reason.
05:03 < steven> sigh.
05:10 -!- sav [~lsd@peirce.xored.org] has joined #go-nuts
05:13 -!- shvntr [~shvntr@116.26.131.43] has joined #go-nuts
05:16 -!- sav [~lsd@peirce.xored.org] has quit [Read error: Connection reset by
peer]
05:17 -!- sav [~lsd@peirce.xored.org] has joined #go-nuts
05:19 < steven> so, apparently strings.ToTitle() isnt what i thought it was
05:20 < steven> i thought it would make "bob" become "Bob"
05:20 < steven> but nope, "BOB"
05:20 < steven> sigh.
05:23 -!- iant1 [~iant@216.239.45.130] has joined #go-nuts
05:23 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping
timeout: 255 seconds]
05:27 -!- mode/#go-nuts [+v iant] by ChanServ
05:40 -!- Archwyrm [~archwyrm@archwyrm.net] has quit [Quit: leaving]
05:41 -!- Archwyrm [~archwyrm@archwyrm.net] has joined #go-nuts
05:50 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has joined #go-nuts
05:52 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
06:06 < steven> cnt wait for my goroutine-based quicksort implmentation to
finish so i can see the benchmarks and be giddy
06:08 -!- niemeyer [~niemeyer@201-40-152-213.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 255 seconds]
06:29 -!- rup [~rupert@deathknight.net] has quit [Ping timeout: 255 seconds]
06:33 -!- crazy2be [~justin@d209-89-248-73.abhsia.telus.net] has joined #go-nuts
06:36 < steven> who wrote the original sqlite go wrapper?
06:36 < steven> i added to it:
https://github.com/sdegutis/sqlite/blob/master/sqlite.go#L376-398
06:36 -!- crazy2be [~justin@d209-89-248-73.abhsia.telus.net] has quit [Remote host
closed the connection]
06:37 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has joined #go-nuts
06:38 -!- fafhrd [~fafhrd@unaffiliated/fafhrd] has joined #go-nuts
06:41 < steven> sorry, i mean
https://github.com/sdegutis/sqlite-go-wrapper/blob/master/sqlite.go#L376-398
06:42 -!- photron [~photron@port-92-201-21-224.dynamic.qsc.de] has joined #go-nuts
06:47 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has joined #go-nuts
06:55 < napsy> Hello.  How can I convert an object of type unsafe.Pointer to
*C.uchar ?
06:58 -!- nettok [~quassel@200.119.183.211] has quit [Ping timeout: 250 seconds]
07:06 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Ping
timeout: 240 seconds]
07:09 < djbrown> steven: did you figure out why your irc thing wasnt
working?
07:16 < SirPsychoS> napsy: can't you just cast it?  (*C.uchar)(p)
07:18 < napsy> SirPsychoS: yes it woked, tnx
07:29 -!- rup [~rupert@deathknight.net] has joined #go-nuts
07:29 -!- piranha [~piranha@e180080213.adsl.alicedsl.de] has joined #go-nuts
07:34 < napsy> what about converting a *C.char (a string) to a Go string?
07:43 -!- piranha [~piranha@e180080213.adsl.alicedsl.de] has quit [Quit: Computer
has gone to sleep.]
07:45 < SirPsychoS> that would be "C.GoString(p)"
07:45 < SirPsychoS> I assume you're using cgo
07:45 < napsy> oh tnx
07:46 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has quit [Remote
host closed the connection]
07:56 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
08:11 -!- arvindht [c2ed8e14@gateway/web/freenode/ip.194.237.142.20] has quit
[Ping timeout: 245 seconds]
08:11 -!- fabled [~fabled@mail.fi.jw.org] has quit [Quit: Ex-Chat]
08:21 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has quit [Max SendQ
exceeded]
08:21 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has joined #go-nuts
08:26 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
08:26 -!- saturnfive [~saturnfiv@61.150.60.153] has joined #go-nuts
08:26 -!- saturnfive [~saturnfiv@61.150.60.153] has left #go-nuts []
08:37 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-181-176.clienti.tiscali.it] has
joined #go-nuts
08:58 < SirPsychoS> does Go have an equivalent of function-static variables
in C? or does it just have to be global?
08:58 < nsf> use a global var, yes
08:59 < zozoR> nsf, is it easy to implement your gocode with something?  ^^
08:59 < zozoR> integrate it, or whatever it is called
09:00 < nsf> it is
09:00 < zozoR> awesomes
09:00 < zozoR> i might want to add support for Kate some day
09:00 < zozoR> ill ask again when time comes :)
09:01 < nsf> zozoR: http://pastie.org/1662611
09:02 < nsf> something like that
09:03 < zozoR> you already implemented json right?
09:04 < nsf> I don't remember
09:04 < nsf> I think there is a json formatter, someone added it
09:04 < zozoR> cool
09:04 < nsf> yes, there is
09:04 < nsf> also there is a csv formatter
09:05 < nsf> it's very easy to parse it
09:07 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
09:09 < zozoR> oh jesus, kate plugins are made in c++ xD
09:09 < nsf> it's easier to use csv format in that case
09:10 < zozoR> :)
09:10 -!- piranha [~piranha@port-92-200-9-197.dynamic.qsc.de] has joined #go-nuts
09:10 < nsf> well, it's actually dcsv :D
09:10 < nsf> double comma separated values
09:11 < zozoR> why the double comma?  :P
09:11 < nsf> because function types has commas
09:11 < nsf> and I don't want to add escaping
09:11 < nsf> func,,Printf,,func(format string, a ...interface{}) (n int,
errno os.Error)
09:11 < nsf> looks like that
09:12 < nsf> <class>,,<word>,,<type>
09:12 < nsf> where <class> is one of func/var/const/type
09:12 < zozoR> ah
09:12 < zozoR> smart
09:14 -!- vasu [~vasu@202.63.112.184] has joined #go-nuts
09:19 -!- sav [~lsd@peirce.xored.org] has quit [Remote host closed the connection]
09:20 -!- sav [~lsd@peirce.xored.org] has joined #go-nuts
09:32 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts
09:37 -!- ronnyy [~quassel@p4FF1C248.dip0.t-ipconnect.de] has joined #go-nuts
09:38 -!- aho [~nya@fuld-4d00d17c.pool.mediaWays.net] has quit [Ping timeout: 255
seconds]
09:40 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
09:56 -!- aho [~nya@fuld-4d00d784.pool.mediaWays.net] has joined #go-nuts
09:59 < ww> 'morning
10:20 < zimsim> hi
10:23 * ww has come to the sad realisation that goroutines are not magic
10:24 < ww> i had structured an ETL type think with a reader that sent stuff
to a channel, a couple of transform operations chained along that channel, ending
in a writer
10:24 < ww> very elegant and pretty to look at.
10:25 < ww> more than twice as slow to actually run compared to cutting out
the channel i/o and goroutines
10:43 -!- Fish [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has joined #go-nuts
10:46 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
10:49 -!- venk [~user@CPE-124-189-81-145.azsz1.cht.bigpond.net.au] has quit [Quit:
ERC Version 5.3 (IRC client for Emacs)]
11:05 -!- MizardX [~MizardX@46.230.253.178] has joined #go-nuts
11:05 -!- MizardX [~MizardX@46.230.253.178] has quit [Changing host]
11:05 -!- MizardX [~MizardX@unaffiliated/mizardx] has joined #go-nuts
11:07 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Ping timeout: 255
seconds]
11:23 -!- kingfishr [~kingfishr@c-98-207-87-183.hsd1.ca.comcast.net] has joined
#go-nuts
11:29 < rm445> nope, they're still magic.  Well worth paying the cost :-)
11:34 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 252
seconds]
11:34 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 240 seconds]
11:40 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
11:43 -!- boscop [~boscop@f055020065.adsl.alicedsl.de] has joined #go-nuts
11:45 -!- vasu [~vasu@202.63.112.184] has quit [Ping timeout: 252 seconds]
11:50 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
11:53 -!- vasu [~vasu@202.63.112.184] has joined #go-nuts
11:56 -!- foocraft [~dsc@78.101.133.245] has quit [Ping timeout: 255 seconds]
11:56 -!- wtfness [~dsc@78.101.80.142] has joined #go-nuts
11:59 < ptrb> Is it safe to modify a map within a "for k, v := range
some_map" iteration over it?
11:59 < ptrb> by modify I mean erase keys
12:00 < MizardX> Not sure, but I don't think so.  You could make a copy of
the keys in the map, and iterate over that.
12:00 < SirPsychoS> http://golang.org/doc/go_spec.html#For_statements - says
it's fine to delete
12:01 < MizardX> oh
12:01 < SirPsychoS> insertion is implementation-dependent
12:01 < ptrb> Making a copy would be potentially too much duplication
12:01 < SirPsychoS> well, by "fine to delete" I mean that if you delete it
before it gets there, it will be skipped
12:02 < ptrb> I would only delete the key the 'iterator' is currently on
12:02 < SirPsychoS> probably best just to read the section, a few paragraphs
down from that anchor
12:02 < SirPsychoS> number 3
12:02 < ptrb> yeah, I grokked it.  cool.  thanks.
12:10 -!- MizardX [~MizardX@unaffiliated/mizardx] has quit [Ping timeout: 250
seconds]
12:13 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has joined #go-nuts
12:13 -!- MizardX [MizardX@46.230.253.178] has joined #go-nuts
12:13 -!- MizardX [MizardX@46.230.253.178] has quit [Changing host]
12:13 -!- MizardX [MizardX@unaffiliated/mizardx] has joined #go-nuts
12:16 -!- karpar [~karpar@112.96.255.4] has joined #go-nuts
12:19 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Remote host closed the
connection]
12:32 -!- karpar [~karpar@112.96.255.4] has quit [Ping timeout: 250 seconds]
12:32 -!- zhilihu [~karpar@112.96.224.11] has joined #go-nuts
13:03 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-181-176.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
13:03 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-181-176.clienti.tiscali.it] has
joined #go-nuts
13:20 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
13:21 -!- smw [~smw@conference/pycon/x-mxaqitupfubngdmb] has joined #go-nuts
13:25 -!- smw [~smw@conference/pycon/x-mxaqitupfubngdmb] has quit [Client Quit]
13:26 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
13:35 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts
13:37 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 250 seconds]
13:37 -!- niemeyer [~niemeyer@201-40-152-213.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
13:40 -!- sacho [~sacho@95-42-85-88.btc-net.bg] has joined #go-nuts
13:43 -!- peterdn [~peterdn@dhcp-110-228.new.ox.ac.uk] has quit [Quit: ChatZilla
0.9.86-rdmsoft [XULRunner 1.9.2/20100222071121]]
13:56 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
13:58 < ww> rm445: well its a tradeoff like everything else...  if an
operation in the pipeline is much cheaper than a context switch...
13:59 < ww> processing a lot of data, maybe best to minimise the context
switches...
14:00 < ww> so either find a 32-core laptop or 256-core commodity server...
or dispense with goroutines and channels for bulk data processing...
14:00 < ww> ...  and shed a tear for the loss of elegance
14:25 -!- niemeyer [~niemeyer@201-40-152-213.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 255 seconds]
14:27 -!- pilgrum [~pilgrum@cpe-67-49-71-222.socal.res.rr.com] has quit [Quit:
Leaving]
14:32 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has joined #go-nuts
14:35 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Read error: Connection
reset by peer]
14:42 < skelterjohn> ww if you mean switching between two goroutines in the
same process, calling it a context switch is a bit misleading
14:44 -!- tensorpudding [~user@99.56.160.152] has quit [Read error: Connection
reset by peer]
14:48 -!- zhilihu [~karpar@112.96.224.11] has quit [Quit: Bye!]
14:48 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts
14:50 < wrtp> skelterjohn: it is a context switch though.  just not as heavy
weight as a kernel context switch...
14:50 < skelterjohn> i was under the impression that the switch between
goroutines was very simple
14:50 < aiju> it is a context switch nevertheless
14:50 < skelterjohn> since they share memory, and differ only by a program
counter and a stack pointer
14:51 < aiju> a context switch can be as simple as one instruction on some
architectures
14:51 < skelterjohn> my point is, then, that minimizing context switches is
not very useful in this...  er, context
14:59 -!- sacho [~sacho@95-42-85-88.btc-net.bg] has quit [Read error: Connection
reset by peer]
15:01 -!- sacho [~sacho@46.10.16.35] has joined #go-nuts
15:16 -!- shvntr [~shvntr@116.26.131.43] has quit [Quit: leaving]
15:17 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 276 seconds]
15:18 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Quit: wrtp]
15:26 -!- neshaug [~oyvind@213.239.108.5] has quit [Quit: Lost terminal]
15:28 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
15:29 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Client Quit]
15:30 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
15:36 -!- skejoe [~skejoe@89.249.0.154] has joined #go-nuts
15:41 -!- jokoon [~zonax@feu30-1-82-242-58-229.fbx.proxad.net] has joined #go-nuts
15:51 < steven> uhh, guys
15:52 < steven> when i set runtime.GOMAXPROCS(4) and i watch the go process
thats heavily using goroutines, i only see the process using 1 processor
15:52 < steven> whats the deal?
15:52 < jnwhiteh> its not very good right now?
15:52 < jnwhiteh> goroutine scheduling is still incredibly primitive
15:53 < steven> o
15:54 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has quit [Ping
timeout: 264 seconds]
15:54 < steven> i benchmarked my quicksorts, one using goroutines and one
not, and the goroutine one takes 7.572338 sec and the sync one takes 12.409333 sec
15:55 < steven> at 100000 elements
15:55 < jnwhiteh> Keep in mind that GOMAXPROCS is the number of processes,
not the number of cores to be used
15:55 < steven> so it must know how to do something right
15:55 < jnwhiteh> but its an implication
15:55 < jnwhiteh> =)
15:55 -!- TheMue [~TheMue@p5DDF60E0.dip.t-dialin.net] has joined #go-nuts
15:55 < steven> jnwhiteh: i have 8 cores, 4 dual core processors
15:55 < steven> jnwhiteh: so that shouldnt be an issue
15:55 < jnwhiteh> I'm just saying
15:55 < steven> k
15:55 < jnwhiteh> I don't believe Go jumps through any hoops
15:56 < jnwhiteh> it just uses X OS level threads, afaik
15:58 -!- thomas_b [~thomasb@cm-84.215.47.51.getinternet.no] has quit [Quit:
leaving]
16:01 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts
16:06 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
16:07 -!- vasu [~vasu@202.63.112.184] has quit [Remote host closed the connection]
16:09 < KBme> yeah
16:09 -!- Fish [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has quit [Quit: So
Long, and Thanks for All the Fish]
16:09 < KBme> n:m threading it's called afaik?
16:11 -!- MizardX [MizardX@unaffiliated/mizardx] has quit [Ping timeout: 248
seconds]
16:12 < aiju> Threads created by the user are in 1-1 correspondence with
schedulable entities in the kernel.  This is the simplest possible threading
implementation.
16:12 < aiju> hahahahaha
16:12 < aiju> wikipedia is full of bullshit again
16:13 < skelterjohn> disagree with "simplest"?
16:14 -!- Fish [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has joined #go-nuts
16:14 < aiju> the simplest possible way is having processes which can share
memory
16:15 < aiju> calling the process-thread dichotomy in kernel "simple"..  wow
16:19 < wrtp> steven: if your goroutines are communicating a lot with one
another, the overhead can be considerable if you're aiming for parallel speedup
16:20 < skelterjohn> simplest does not necessarily mean simple
16:22 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Ping timeout:
255 seconds]
16:32 -!- MizardX [~MizardX@46.230.253.178] has joined #go-nuts
16:32 -!- MizardX [~MizardX@46.230.253.178] has quit [Changing host]
16:32 -!- MizardX [~MizardX@unaffiliated/mizardx] has joined #go-nuts
16:40 < ww> skelterjohn: right, context switch is often taken to mean
process or thread, but i meant goroutine
16:41 < ww> so maybe it's context switching, maybe it's copy operations on
the channels, maybe its both
16:41 < ww> but i definitely see a pipeline of groutines being significantly
slower than doing it "by hand"
16:42 < ww> but the pipeline looks mor elegant and will scale better to
parallel hardware
16:44 < ww> but to really exploit this pattern, to construct pipelines of
goroutines as a matter of course without giving it a second thought can only work
well where either the amount of data to be processed is small or we are running on
a massively parallel machine
16:44 < ww> ...  neither of which being a case i'd be inclined to optimise
for at present
16:55 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
16:58 -!- sacho [~sacho@46.10.16.35] has quit [Read error: Connection reset by
peer]
16:58 -!- dju [dju@fsf/member/dju] has quit [Ping timeout: 248 seconds]
17:00 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 276 seconds]
17:01 -!- JusticeFries [~JusticeFr@64.134.153.79] has joined #go-nuts
17:02 -!- MizardX [~MizardX@unaffiliated/mizardx] has quit [Ping timeout: 240
seconds]
17:07 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
17:10 -!- MizardX [~MizardX@unaffiliated/mizardx] has joined #go-nuts
17:10 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has joined
#go-nuts
17:12 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Ping
timeout: 264 seconds]
17:12 < napsy> I'm getting a strange error if I try to cast an interface{}
to list.List inside a type switch: implicit assignment of unexported field 'front'
of list.List in assignment ...  any ideas what this message means?
17:15 -!- MizardX [~MizardX@unaffiliated/mizardx] has quit [Ping timeout: 276
seconds]
17:18 < Namegduf> napsy: list.List contains unexported fields, and thus
cannot be assigned.
17:18 < Namegduf> I don't think the interface{} could contain it.
17:18 < napsy> hum
17:18 < Namegduf> Perhaps you mean a pointer to list.List?
17:18 < Namegduf> (This is what list.New() returns)
17:19 < napsy> oh yes, it works now
17:19 < Namegduf> Great.
17:32 -!- tobik [~tobik@p549FF44C.dip.t-dialin.net] has joined #go-nuts
17:33 -!- TheMue [~TheMue@p5DDF60E0.dip.t-dialin.net] has quit [Quit: TheMue]
17:36 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has joined #go-nuts
17:37 -!- tobik [~tobik@p549FF44C.dip.t-dialin.net] has quit [Quit: WeeChat 0.3.3]
17:40 -!- tobik [~tobik@p549FF44C.dip.t-dialin.net] has joined #go-nuts
17:44 < steven> btw wrtp
17:44 < steven> https://github.com/sdegutis/gorm
17:44 < steven> look at gorm_test.go so far :)
17:45 < steven> hmm, the spec doesnt seem to mention how append() behaves if
the slice passed to it is nil.  i assume because it says "If the capacity of s is
not large enough to fit the additional values, append allocates a new,
sufficiently large slice that fits both the existing slice elements and the
additional values." that implies that nil is not large enough
17:45 < aiju> steven: it works
17:45 < steven> aiju: sweet.
17:46 < aiju> i regularly build slices by piece starting with nil
17:47 < steven> ooh right
17:47 < steven> nil is a valid zero-value for slices, ie an empty slice
17:47 < steven> nice.
17:49 < steven> grr blarg
17:50 < steven> i dont konw what order the return values will be for GetAll
so i dont know how to test that
17:59 < skelterjohn> test the collection
18:00 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Remote host
closed the connection]
18:01 < steven> right but i dont know how to test that the collection
contains exact values, without knowing the order of them.
18:01 < steven> oh i know
18:01 < steven> its ugly but meh
18:01 < skelterjohn> you will probably have to write a loop, or something =p
18:02 -!- napsy [~luka@88.200.96.18] has quit [Read error: Connection reset by
peer]
18:02 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts
18:04 < steven> yep.
18:15 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
18:16 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
18:26 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has joined #go-nuts
18:27 -!- Urmel| [~11087Urme@82-136-196-44.ip.telfort.nl] has quit []
18:30 -!- Urmel| [~11087Urme@82-136-196-44.ip.telfort.nl] has joined #go-nuts
18:35 -!- snearch [~snearch@f053011121.adsl.alicedsl.de] has joined #go-nuts
18:40 -!- sauerbraten [~sauerbrat@p508CB9F7.dip.t-dialin.net] has joined #go-nuts
18:40 -!- PortatoreSanoDiI [~Marvin@82.84.78.19] has joined #go-nuts
18:43 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-181-176.clienti.tiscali.it] has
quit [Ping timeout: 252 seconds]
18:45 -!- piranha [~piranha@port-92-200-9-197.dynamic.qsc.de] has quit [Quit:
Computer has gone to sleep.]
18:51 -!- rafadc [~rafael@108.Red-80-39-57.staticIP.rima-tde.net] has joined
#go-nuts
18:52 -!- rafadc [~rafael@108.Red-80-39-57.staticIP.rima-tde.net] has left
#go-nuts []
19:04 -!- JusticeFries [~JusticeFr@64.134.153.79] has quit [Quit: JusticeFries]
19:05 -!- JusticeFries [~JusticeFr@64.134.153.79] has joined #go-nuts
19:08 -!- zimsim [~simon@87.72.77.195] has quit [Quit: /dev/null]
19:15 -!- snearch [~snearch@f053011121.adsl.alicedsl.de] has quit [Quit:
Verlassend]
19:19 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Quit: wrtp]
19:19 < SirPsychoS> steven: why not return a map[string]Person?
19:20 < steven> SirPsychoS: in my code?
19:20 < steven> in what function?
19:20 < SirPsychoS> GetAll
19:20 < steven> because its a generic interface.
19:20 < steven> meant to be reusable with any struct you might want to
create, assuming the sqlite schema matches.
19:21 < SirPsychoS> well right, not necessarily Person
19:21 < steven> k
19:21 < SirPsychoS> but, by filling a map rather than a slice
19:21 < SirPsychoS> that makes retrieving things easy, at least
19:21 < steven> uh, because, what would the key be?
19:22 < SirPsychoS> whatever the key of the sqlite db is
19:22 < SirPsychoS> integer usually
19:22 < steven> but it could have multiple keys
19:22 -!- rtharper [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed
the connection]
19:22 < SirPsychoS> whatever the primary id / primary key / whatever that's
called is?
19:22 < steven> ie, select persons where name = 'bob' and age = 42;
19:22 < steven> its not written that way.
19:22 < SirPsychoS> ah
19:22 < steven> its written slightly more flexible.
19:22 < steven> ie, you hae to write the where clause yourself
19:22 < steven> :)
19:22 < steven> *have
19:24 < SirPsychoS> all I'd looked at was TestGetMultiple
19:24 < steven> k
19:28 < SirPsychoS> bug report : pluralizeString("octopus") returns
"octopuss" :P
19:29 < steven> fix it ;)
19:29 < |Craig|> needs ...s -> ...ses rules
19:30 < SirPsychoS> that would work, although no matter how many rules you
add it's always going to miss something
19:30 < skelterjohn> or us -> i, in this case
19:30 < nsf> wolf wolves, 'lf' -> 'lv' works too?
19:30 < skelterjohn> SirPsychoS: there is an accepted list of pluralization
rules
19:31 < |Craig|> dont forget ius -> ii sometimes
19:31 < SirPsychoS> and an almost-infinite list of exceptions :O
19:31 < skelterjohn> though they are ambiguous on purpose :)
19:31 < ww> are there known problems on darwin 9.8 (osx leapard) with things
like dns?
19:31 < skelterjohn> SirPsychoS: less than you may think
19:32 < |Craig|> skelterjohn: octopuses is correct apparently, not octopi
19:32 < SirPsychoS> maybe it'd be better to simply add "s" to everything and
call it done
19:32 < SirPsychoS> depends on who's touching the database table names
19:32 < SirPsychoS> i.e., GoRM only or some admin creating tables with real
plural forms
19:33 < skelterjohn> |Craig|: if any dictionary lists octopuses, it will
also list octopi
19:33 < SirPsychoS> what about octopodes
19:33 < SirPsychoS> I believe that's correct too
19:33 < skelterjohn> octopod is a level up from octopus
19:33 < skelterjohn> in the taxonomy
19:34 < SirPsychoS> hmm, well the way I heard about it was that octopus is
actually Greek, not Latin, so if we're following rules from the language of
origin, it'd be octopodes
19:34 < |Craig|> go supports multiple languages.  Doing correct
pluralization in all cases is impossible.
19:35 < SirPsychoS> alternative: just call the table name the singular
19:35 < SirPsychoS> sidestep all the confusion
19:36 < |Craig|> back-formation and over generalization make deciding the
correct form of words based on origin inaccurate.  The only real hope is
statistical analysis of use.
19:37 < skelterjohn> you can just include a dictionary with the library and
look up the plurals
19:37 < |Craig|> if only natural languages were as clean as go, we would
have an easy time....
19:37 < skelterjohn> []octopus
19:37 < nsf> an array of ...?
19:37 < nsf> lol
19:37 < skelterjohn> now you're back in english
19:38 < skelterjohn> i was talking in go
19:38 < nsf> I'm thinking about probability of seeing the word 'octopus' in
someone's source file
19:40 < nsf> oceanarium database software needs that for sure
19:41 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
19:43 < steven> notice that i didnt add checks for that kind of thing
19:43 < steven> for this very reason.
19:43 < steven> its impossible to get it 100% right because language isnt
that simple
19:43 < steven> so im settling for 95% right
19:44 < SirPsychoS> that's what I settled on eventually :P
19:45 < SirPsychoS> although I might suggest just using the singular for the
table name - would that look less weird than having tables named "octupuss" and
"wolfs"?
19:46 < crazy2be> would this function correctly read a big-edian short into
a little-edian int16?
19:46 < crazy2be> http://pastebin.com/XQyeQJ0y
19:46 < crazy2be> (short is two bytes in this case)
19:47 < SirPsychoS> see http://golang.org/pkg/encoding/binary
19:47 < SirPsychoS> I believe that's implemented there
19:47 < nsf> crazy2be: maybe
19:47 < nsf> :)
19:48 < crazy2be> nsf: Under what conditions would it work/fail?  :P
19:48 < aiju> we should put encoding/binary in the topic
19:48 < aiju> i feel like 1/2 of all questions could be answered by "use
encoding/binary"
19:48 < SirPsychoS> aiju: yes please, I facepalmed so hard when I found that
19:48 < nsf> I think if your processor is little-endian, then your statement
is correct
19:48 < nsf> otherwise it's not :)
19:48 < SirPsychoS> wouldn't that have issues with sign extension?
19:48 < SirPsychoS> nevermind
19:48 < SirPsychoS> it's casting from unsigned
19:49 < ww> oh nvm.  osx being stupid with its "do you want to allow foo to
accept connections"...  which of course you don't see when logged in over the
network...
19:49 < nsf> crazy2be: but maybe I'm saying nonsense
19:50 < crazy2be> hmm
19:50 < crazy2be> i'll just try encoding/binary
19:50 < nsf> yeah
19:50 < nsf> that's a good idea
19:51 -!- Fish [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has quit [Quit: So
Long, and Thanks for All the Fish]
19:59 < steven> grrrrr
19:59 < steven> what the crap
20:02 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Quit: wrtp]
20:03 < crazy2be> an, there we go
20:03 < crazy2be> *ah
20:03 < crazy2be> my ReadShort() was working i think, but the floating point
ones were not even close
20:04 < SirPsychoS> were you using math.Float64Bits() ?
20:04 < crazy2be> yeah
20:04 < crazy2be> but my bits were in the wrong order somehow i think
20:04 < SirPsychoS> huh, oh well, encoding/binary makes it easy
20:04 < crazy2be> yeah
20:09 < ww> was thinking about this recently, encoding.binary.  not that it
matters because the implentations are symmetric and don't use the usual C
tricks...  but is there a way to tell the host endianness?
20:10 < SirPsychoS> you mean like detect host endianness from arbitrary go
code?
20:11 < SirPsychoS> bytes := *(*[4]byte)(unsafe.Pointer(some_int32))
20:11 < SirPsychoS> then use encoding.Binary to convert it back with some
endianness, if it matches the original, that's the host endianness, otherwise not
20:12 < aiju> why would you test host endianness?
20:12 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts
20:12 < exch> no need for the binary pkg.  Just check the value at bytes[0].
if it's 1, you have LE, otherwise BE
20:13 < SirPsychoS> good point
20:13 < SirPsychoS> assuming you're using MIN_INT32?
20:13 < SirPsychoS> nevermind, using just 1
20:14 < ww> right...
20:15 < ww> aiju: it is not uncommon in some situations.  if you look at the
networking code in most kernels it will do things like convert data to network
byte order iff host byte order is LE
20:16 < aiju> ww: there are better ways
20:16 < ww> if you were to want to do something close to the metal like that
with go, you'd do it that way too
20:16 < aiju> no
20:16 < aiju> you can simple use multiple files for that
20:16 < exch> interaction with a C lib as well.  If you get a union struct..
go presents that as a fixed size byte array.  If you want to extract an int, you
need to know how it was encoded
20:16 < aiju> one for LE and one for BE
20:18 < SirPsychoS> exch: the way I handled that situation was just make an
identically structured Go struct and cast it through unsafe.Pointer
20:18 < aiju> SirPsychoS: really bad idea
20:18 < SirPsychoS> barring weird struct padding stuff, that should work
20:18 -!- JusticeFries [~JusticeFr@64.134.153.79] has quit [Quit: JusticeFries]
20:18 < SirPsychoS> I wasn't exactly trying to write portable code at the
time
20:18 < aiju> no, it will not work if 8g and gcc happen to align structures
differently
20:19 < SirPsychoS> it worked on my machine, and that's all I wanted, lol
20:19 < crazy2be> hmm is there any way to read a half-byte in go?
20:19 < ww> of course the way it's handled in C is that it disappears in the
preprocessor if the operation is unnecessary, so yes, lacking a preprocessor we'd
better use multiple files...  obviously means a more complex build process so no
goinstall :P
20:19 < aiju> crazy2be: a "half-byte"?
20:20 < aiju> crazy2be: are you running Go on your PDP-10?
20:20 * ww nibbles
20:20 < aiju> ww: "in C"
20:20 < aiju> ww: you mean in bad C
20:20 < crazy2be> aiju: Like a int4
20:20 < ww> aiju: well if you mean the networking code in *BSD and linux is
bad C, I'd half agree with you :P
20:20 < crazy2be> 4 bits long, rather than 8
20:20 < aiju> crazy2be: none of the Go arch can handle an int4 natively
20:20 < SirPsychoS> haha read a byte, bitshift, and mask with 0xF
20:21 < aiju> ww: code with #ifdef is likely to be bad
20:21 < SirPsychoS> every C code I've ever read over 100 lines has an #ifdef
20:21 * ww rofl
20:22 < SirPsychoS> every header file in /usr/include has an #ifdef
20:22 < aiju> yeah, and everyone #define's their int constants
20:22 < aiju> that's not good practice either
20:22 < aiju> /usr/include is a huge pile of crap on GNU systems
20:22 < aiju> try reading ANY of the file, it's impossible
20:22 < SirPsychoS> haha I won't argue with that
20:22 < aiju> twenty layers of #include
20:23 < SirPsychoS> the hundred or so of us in this channel should band
together and reimplement the linux userland in Go
20:23 < tensai_cirno> s/linux/GNU/
20:23 < steven> guys whats the deal with this?
20:23 < steven> https://gist.github.com/867528
20:24 < SirPsychoS> well, it wouldn't be GNU anymore
20:24 < aiju> tensai_cirno: no, i don't want GNU code in Go
20:24 < steven> why cant i set the value of a struct field via reflect?
20:24 < SirPsychoS> i picked "linux" because it'd be meant to run on linux,
and only vaguely similar to GNU's stuff
20:24 < SirPsychoS> maybe plan9 in go
20:24 < tensai_cirno> aiju, i mean it is common problem with GNU code,
bloated by #ifdefs, etc.  Just look at glibc
20:24 < aiju> oh yeah
20:24 < tensai_cirno> static binary weights 600kb
20:24 < aiju> glibc is a huge pile of utter crap
20:24 < steven> haaaalp!
20:24 < tensai_cirno> it's pretty fked up
20:25 < steven> :'(
20:25 < napsy> ce staticno kompajlas se ne pomen da dobis cel libc zraven
20:25 < aiju> what language is this
20:25 < napsy> err wrong chan, sorry
20:26 < aiju> i want to know nevertheless :P
20:26 < steven> please?
20:26 < SirPsychoS> polish?!
20:26 < steven> anyone?
20:26 < napsy> slovenian
20:26 < steven> :'(
20:26 < SirPsychoS> ah, close-ish
20:26 < aiju> hahaha
20:26 < aiju> "close"
20:28 < crazy2be> hmm not sure how to read a single bit.  I tried reading
bools, but it won't let me convert them into bytes
20:28 * ww points aiju at...  for example...
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/include/endian.h?rev=1.41.24.1;content-type=text%2Fplain
20:29 < aiju> crazy2be: bit operations
20:29 < exch> steven: I am going to guess here, but you are giving reflect a
struct value.  Any changes you make to it through reflect are likely done on a
copy.  Try bob := new(Person) instead and modify the code accordingly
20:29 < steven> oooh.
20:29 < aiju> ww: yuck
20:29 < aiju> ww: gee, i just ate
20:29 < steven> im passing it via a function.
20:29 < steven> right.
20:29 < ww> no gnu, no linux, no libc...  but you can make pretty fast
routers out of freebsd...
20:29 < aiju> "fast" and "*BSD"?
20:30 * ww suggest aiju look at http://www.juniper.net/
20:30 < ww> ...  for example...
20:30 < crazy2be> aiju: How can i do that without converting to a byte()?
20:30 < aiju> crazy2be: >>?
20:30 < ww> only they use an asic or two...  pretty sure they have ifdefs in
their vhdl...
20:30 < aiju> (foo >> 5) & 3
20:30 < aiju> et al
20:31 < aiju> ww: what's up witht hat
20:31 < ww> well, you wanted to know about fast bsd routers...
20:31 < crazy2be> aiju: Won't that bit shift the bit out of existance?
20:31 < aiju> crazy2be: well, that was just an example
20:31 < aiju> crazy2be: what do you want to do?
20:31 -!- alkavan_ [~alkavan@IGLD-84-228-184-133.inter.net.il] has joined #go-nuts
20:32 < SirPsychoS> (foo >> n) & 1
20:32 < crazy2be> read a half-byte into a byte (since that's the closest
type in go)
20:32 < aiju> what do you mean by "read"?
20:32 -!- tensorpudding [~user@99.56.160.152] has joined #go-nuts
20:32 < SirPsychoS> oh, (foo >> (0 or 4)) & 0xF
20:32 < crazy2be> read a binary half-byte into a go byte
20:32 -!- alkavan_ [~alkavan@IGLD-84-228-184-133.inter.net.il] has left #go-nuts
[]
20:32 < aiju> you mean a half-byte in the file?
20:32 < aiju> where the fuck are you reading from?
20:33 < crazy2be> well, network stream, but yeah
20:33 < aiju> the smallest unit is one byte
20:33 < steven> fixed.  thanks
20:33 < aiju> you need to read one byte and split it
20:42 < steven> guys
20:42 < steven> just made Get and GetAll work :)
20:42 < steven> https://github.com/sdegutis/GoRM/blob/master/gorm_test.go
20:44 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has quit [Remote
host closed the connection]
20:45 < steven> lines 42 to 47 are the interesting part
21:01 -!- femtooo [~femto@95-89-198-8-dynip.superkabel.de] has joined #go-nuts
21:04 -!- femtoo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Ping timeout:
255 seconds]
21:19 < crazy2be> hmm compress/flate isn't working properly for me
21:19 < crazy2be> is there any way to get a more detailed error?
21:20 < crazy2be> it just says "corrupt input before offset 5"
21:20 < steven> crap
21:20 < steven> this refactoring broke something and i cant figure out how.
21:22 < steven> maybe it has something to do with my return value of this
type: []map[string][]byte
21:22 < steven> hehe
21:22 < steven> (its ugly)
21:22 < crazy2be> array of maps that map strings to byte slices?
21:22 < steven> its not complex, just ugly
21:24 < steven> oh no wait, it didnt break on that end.
21:24 < steven> its my sqlite patch that broke it.heh.
21:30 < steven> fixed.  woot.
21:30 < crazy2be> is the go implementation of Inflate() working properly for
anyone else?
21:36 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4]
21:39 < SirPsychoS> crazy2be: I'm using it to decompress Minecraft maps, so
yes
21:40 < crazy2be> SirPsychoS: You tried decompressing the Map Chunck
packets?
21:40 < crazy2be> *chunk
21:40 < SirPsychoS> yeah, are you working with minecraft too?  lol
21:41 < SirPsychoS> well, I'm reading directly from the region files
21:41 < SirPsychoS> not communicating with the server
21:41 < crazy2be> hmm
21:42 < crazy2be> it made pastebin go durples, but this is what i have:
http://pastebin.com/3kDBg1N3
21:43 < crazy2be> according to the documentation here:
http://mc.kev009.com/Protocol#Map_Chunk_.280x33.29
21:44 < crazy2be> not sure if my bitshifts are correct there for handling
the half-bits, but that's not the part that's giving me trouble
21:44 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Ping timeout: 260
seconds]
21:44 -!- Wiz126 [~Wiz@24.229.245.72.res-cmts.sm.ptd.net] has quit [Ping timeout:
250 seconds]
21:45 < crazy2be> the deflate (or rather, inflate) function doesn't like the
data i give it
21:45 < crazy2be> and gives an error right at the start
21:45 < SirPsychoS> is it possible the protocol changed with 1.3?
21:46 < SirPsychoS> the map format changed
21:46 < crazy2be> hmm
21:47 < SirPsychoS> what are you trying to write, anyway?
21:47 < crazy2be> simple client that can automate routine tasks
21:48 < SirPsychoS> world of minecraft glider?
21:48 < crazy2be> i've so far got it working so that it can maintain a
connection, but it won't read chunk data
21:48 < crazy2be> er?
21:48 < SirPsychoS> lol world of warcraft has a hack thing called glider
that grinds for you
21:49 < crazy2be> ah
21:49 < SirPsychoS> I quit wow long before I started caring enough to use it
:P
21:51 -!- Wiz126 [~Wiz@24.229.245.72.res-cmts.sm.ptd.net] has joined #go-nuts
21:51 < SirPsychoS> why not just use binary.Read* for everything?
21:51 < crazy2be> that's what i'm doing, but that doesn't work for
compressed data
21:52 < crazy2be> well, actually, the ReadByte() functions are because i
didn't know about binary.Read*
21:52 < SirPsychoS> you should be able to read it into a []byte
21:52 < crazy2be> but they use that anyway
21:52 < SirPsychoS> and then deflate on a bytes.Buffer
21:52 < crazy2be> yeah that's what i do :/
21:53 < SirPsychoS> compressed = make([]byte, csize); binary.Read(conn,
whateverendian, &compressed)
21:54 < crazy2be> hrm
21:54 < crazy2be> is it normal to get like 10x compression?
21:54 < crazy2be> e.g.  Chunck is size: 154 (compressed), and 1200
(uncompressed)
21:55 -!- Wiz126 [~Wiz@24.229.245.72.res-cmts.sm.ptd.net] has quit [Ping timeout:
252 seconds]
21:55 < SirPsychoS> there are LOTS of zeros in minecraft chunks
21:55 < SirPsychoS> so, i'd say yes
21:55 < SirPsychoS> tons of repetition
21:55 -!- JusticeFries [~JusticeFr@c-24-9-171-36.hsd1.co.comcast.net] has joined
#go-nuts
21:56 < crazy2be> they all start with [120, 1] as the first two bytes
21:56 < crazy2be> wierd
21:57 -!- Wiz126 [~Wiz@24.229.245.72.res-cmts.sm.ptd.net] has joined #go-nuts
21:59 -!- davisp [~davisp@couchdb/developer/davisp] has quit [Quit: Permission
revoked - dircproxy 1.0.5]
22:02 < SirPsychoS> do the chunk sizes make sense?
22:02 < SirPsychoS> the x,y,z, sx,sy,sz values, that is
22:04 -!- femtooo [~femto@95-89-198-8-dynip.superkabel.de] has quit [Read error:
Connection reset by peer]
22:04 < crazy2be> huh
22:05 < crazy2be> if i slice off the first two bytes it *seems* to work
22:05 < crazy2be> i get things like
22:05 < crazy2be> 2011/03/12 15:07:45 Chunck sent: 48 0 32 15 127 15 5291
22:05 < crazy2be> 2011/03/12 15:07:46 Chunck is size: 5291 (compressed), and
81920 (uncompressed)
22:05 < SirPsychoS> does the decompressed data match the expected size?
22:06 < SirPsychoS> that's the size of one whole chunk
22:06 < SirPsychoS> so yeah, there's two extra bytes of data there
22:06 < crazy2be> well i never reach EOF
22:06 < crazy2be> so i guess
22:07 < SirPsychoS> there's no way it would be the right output size if you
had the wrong data
22:07 < crazy2be> yeah and if i read one more then i reach EOF
22:07 < crazy2be> wierd how there are two extranious bytes
22:08 < SirPsychoS> and they're always 120, 1 for every chunk?
22:08 < crazy2be> yeah for me anyway
22:09 < SirPsychoS> see if that's the case for my server - i'll pm you an ip
22:11 -!- photron [~photron@port-92-201-21-224.dynamic.qsc.de] has quit [Ping
timeout: 250 seconds]
22:13 -!- PortatoreSanoDiI [~Marvin@82.84.78.19] has quit [Quit: E se abbasso
questa leva che succ...]
22:13 -!- sauerbraten [~sauerbrat@p508CB9F7.dip.t-dialin.net] has quit [Remote
host closed the connection]
22:18 -!- ronnyy [~quassel@p4FF1C248.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
22:21 < steven> hey Namegduf
22:22 < steven> get via id,
https://github.com/sdegutis/GoRM/blob/master/gorm_test.go#L41-45
22:22 < steven> get all,
https://github.com/sdegutis/GoRM/blob/master/gorm_test.go#L58-62
22:22 < steven> get single,
https://github.com/sdegutis/GoRM/blob/master/gorm_test.go#L25-29
22:22 < steven> :)
22:25 -!- piranha [~piranha@e180080213.adsl.alicedsl.de] has joined #go-nuts
22:31 -!- skejoe [~skejoe@89.249.0.154] has quit [Quit: Lost terminal]
22:31 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
22:33 -!- dju__ [dju@fsf/member/dju] has joined #go-nuts
22:34 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has quit [Remote host closed
the connection]
22:36 -!- dju_ [dju@fsf/member/dju] has quit [Ping timeout: 250 seconds]
22:54 -!- niemeyer [~niemeyer@189.27.130.232.dynamic.adsl.gvt.net.br] has joined
#go-nuts
23:03 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has quit [Ping
timeout: 276 seconds]
23:08 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping
timeout: 248 seconds]
23:11 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
23:15 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Client Quit]
23:16 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
23:17 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has quit [Client Quit]
23:17 -!- piranha [~piranha@e180080213.adsl.alicedsl.de] has quit [Ping timeout:
255 seconds]
23:18 -!- wrtp [~rog@93-97-137-84.zone5.bethere.co.uk] has joined #go-nuts
23:26 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Ping timeout: 252 seconds]
23:27 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts
23:27 -!- piranha [~piranha@e180067093.adsl.alicedsl.de] has joined #go-nuts
23:28 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts
23:30 -!- ronny [~quassel@p4FF1C248.dip0.t-ipconnect.de] has joined #go-nuts
23:32 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Ping timeout:
615 seconds]
23:32 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
23:34 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping
timeout: 248 seconds]
23:44 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
23:45 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
23:50 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Ping timeout: 246 seconds]
23:54 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts
23:54 < steven> almost done writing gorm.Save now
23:55 < steven> then all that will be left for 1.0 is relationships
23:56 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Ping timeout:
615 seconds]
23:57 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
--- Log closed Sun Mar 13 00:00:55 2011