--- Log opened Wed May 11 00:00:50 2011 00:14 < jeremy_c> uriel: skelterjohn: thanks. I've posted to the ML to see if anyone knows what my problem is. 00:21 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 00:21 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 00:22 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 00:23 -!- l00t [~i-i3id3r_@189.105.6.14] has joined #go-nuts 00:37 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 240 seconds] 00:43 -!- m4dh4tt3r [~Adium@52.sub-75-210-83.myvzw.com] has quit [Ping timeout: 252 seconds] 00:44 -!- KingPhilroy [~kingphilr@shc-nat-newhall.stonehill.edu] has joined #go-nuts 00:44 < whitespacechar> hmm. Does anyone know how to write a test using the testing package to assert that a panic should occur ? 00:44 < skelterjohn> you can recover from it 00:45 < skelterjohn> call the function that should panic, and then t.Fail("should panic before we get here") 00:45 < skelterjohn> but be sure to recover from the panic in a deferred function, otherwise the test will have other problems 00:48 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has quit [Ping timeout: 264 seconds] 00:49 -!- iant [~iant@66.109.105.72] has quit [Quit: Leaving.] 00:49 < skelterjohn> http://pastebin.com/8pLKV4cD 00:52 -!- jbooth1 [~jay@209.249.216.2] has quit [Quit: Leaving.] 00:57 -!- telexicon [~telexicon@unaffiliated/chowmeined] has joined #go-nuts 00:57 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has joined #go-nuts 00:57 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has quit [Ping timeout: 264 seconds] 00:57 < whitespacechar> Thanks! This is what I wrote: https://gist.github.com/965713 00:59 < whitespacechar> oh, yours is much simpler. 01:01 -!- mikespook [~mikespook@183.47.227.136] has joined #go-nuts 01:05 < skelterjohn> looks identical... 01:05 < skelterjohn> functionally 01:11 < whitespacechar> yes. Although when I rewrote to use your version, it didn't seem to recover from a real error. 01:14 < whitespacechar> ie https://gist.github.com/965733 01:15 < whitespacechar> but the anon function version does the right thing. 01:17 < skelterjohn> i was worried that defer recover() might not do it 01:19 -!- flaguy48 [~gmallard@user-0c6s350.cable.mindspring.com] has left #go-nuts [] 01:20 -!- _DerHorst_ [~Horst@e176103040.adsl.alicedsl.de] has quit [Remote host closed the connection] 01:55 -!- kr [~Keith@204.14.152.118] has quit [Ping timeout: 252 seconds] 02:03 -!- fmoo [~Adium@2620:0:1cfe:72:5ab0:35ff:fefd:feeb] has quit [Read error: Operation timed out] 02:20 -!- gaxxx [~woo@219.143.166.16] has joined #go-nuts 02:25 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 02:26 -!- l00t [~i-i3id3r_@189.105.6.14] has quit [Quit: Leaving] 02:26 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 02:31 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Ping timeout: 264 seconds] 02:32 -!- fmoo [~Adium@c-76-102-41-101.hsd1.ca.comcast.net] has joined #go-nuts 02:36 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has quit [Read error: Operation timed out] 02:42 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 02:44 -!- krutcha [~krutcha@S010600045a27676a.vs.shawcable.net] has joined #go-nuts 02:46 -!- Nitro [~Nitro@unaffiliated/nitro] has quit [Ping timeout: 240 seconds] 02:55 -!- l00t [~i-i3id3r_@189.105.6.14] has joined #go-nuts 03:09 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has joined #go-nuts 03:10 -!- richardus [~richardus@2001:470:21:31::4444:63dc] has left #go-nuts [] 03:11 < nteon> I'm having a hard time understanding when I should use pointers to structs (or types in general) and structs 03:12 < nteon> In C, structs are allocated on the stack so they're cheaper. but I can return a reference to a struct and it stays in scope, so there doesn't seem to be the same distinction here 03:14 < skelterjohn> if you ever take the address of something, the compiler allocates it on the heap 03:15 < skelterjohn> or if that something is ever referenced in a closure 03:15 < nteon> skelterjohn: but otherwise its on the stack? 03:15 < skelterjohn> it's possible i missed a case when it gets moved to the heap 03:16 < skelterjohn> it is moved to the heap unless the compiler can prove that it can stay on the stack 03:16 < skelterjohn> at the moment, the compiler has a lot of false positives - it's conservative 03:16 < nteon> sure 03:16 < nteon> still, thats smart 03:17 < skelterjohn> it's possible one day it will get clever about it 03:17 -!- vsmatck [~smack@64-142-40-6.dsl.static.sonic.net] has joined #go-nuts 03:17 < skelterjohn> that would be premature right now 03:17 < nteon> I am continually impressed by go :) 03:17 < skelterjohn> :) 03:18 < skelterjohn> go is memory safe - as long as you don't do stuff with the unsafe package or interface to another language 03:18 < skelterjohn> you are guaranteed to never access garbage memory - either it will be nil or it will be valid 03:21 < nteon> nice 03:22 < telexicon> any plans to try making a vm for go? so it could have an advanced compacting garbage collector and consistent microthreads sort of like erlang's 200 byte processes 03:22 -!- nteon [~nteon@c-98-210-195-105.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 03:23 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 03:24 < skelterjohn> the fact that go doesn't use a VM doesn't stop it from having an advanced garbage collector 03:24 < skelterjohn> i don't know what "consistent microthreads" means 03:25 < telexicon> skelterjohn, oh, i thought it couldnt do precise garbage collection and compaction without a vm 03:25 < skelterjohn> why? 03:26 < telexicon> by consistent i mean, goroutines seem to sometimes go on different os threads depending on the runtime instead of being lightweight 03:26 < telexicon> whereas, erlang consistently maps its lightweight processes (each has only 200 bytes of overhead) to a pool of threads but can always intercept blocking 03:27 < skelterjohn> go also maps its goroutines to a pool of threads 03:27 < skelterjohn> limited in number by GOMAXPROCS, at the moment 03:27 < skelterjohn> what do you mean by "can always intercept blocking"? 03:28 < telexicon> but from what i understood, you can still block the os threads and starve the other goroutines on that thread 03:29 < telexicon> the erlang vm always has scheduling control, you cant block a whole os thread 03:29 < vsmatck> There was a bug like that. I don't know if that bug is still alive. Go shouldn't tie up an OS thread. 03:29 < vsmatck> But I'm referring to is that sleep bug where it'd tie up a OS thread. 03:30 < skelterjohn> i know time.Sleep() had this issue 03:30 < skelterjohn> yeah 03:30 < skelterjohn> ok, since go doesn't run on a VM, when a thread does a syscall, there is no way to do anything with that thread until it returns 03:31 < skelterjohn> it's out of go's hands, as it were 03:32 < telexicon> also, dont goroutines have 4k in overhead 03:33 < vsmatck> yeah 03:33 < telexicon> granted, go is significantly faster than erlang 03:33 < skelterjohn> 4k? 03:34 < telexicon> 4k memory per goroutine for its stack 03:34 < skelterjohn> that seems very high 03:34 < skelterjohn> i thought it was very low per goroutine 03:36 -!- keithcascio [~keithcasc@nat/google/x-jidnpezwklvyvjin] has quit [Quit: Leaving] 03:41 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-vccppinpjrspxdoa] has joined #go-nuts 03:47 -!- l00t [~i-i3id3r_@189.105.6.14] has quit [Quit: Leaving] 03:50 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 03:54 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Ping timeout: 260 seconds] 03:55 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 03:58 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has joined #go-nuts 03:58 -!- niekie [~niek@CAcert/Assurer/niekie] has joined #go-nuts 04:06 -!- foocraft [~ewanas@89.211.232.149] has joined #go-nuts 04:08 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 04:08 -!- mode/#go-nuts [+v iant] by ChanServ 04:12 -!- goraes [~moraes@189.103.176.58] has quit [Ping timeout: 240 seconds] 04:13 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping timeout: 240 seconds] 04:14 < taruti> any more announcements at googleio? 04:14 -!- iant [~iant@216.239.45.130] has joined #go-nuts 04:14 -!- mode/#go-nuts [+v iant] by ChanServ 04:15 -!- rejb [~rejb@unaffiliated/rejb] has quit [Disconnected by services] 04:16 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 04:16 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts 04:31 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 04:39 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has joined #go-nuts 04:40 < hallas> greetings all 04:44 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 241 seconds] 05:00 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 05:02 -!- bubb [~AndChat@S01065cd9985ba2e7.va.shawcable.net] has joined #go-nuts 05:13 -!- vsayer [~vivek@c-67-170-236-166.hsd1.ca.comcast.net] has joined #go-nuts 05:14 -!- krutcha [~krutcha@S010600045a27676a.vs.shawcable.net] has quit [Quit: Leaving] 05:17 -!- brtk [~brtk@c83-248-35-158.bredband.comhem.se] has quit [Ping timeout: 240 seconds] 05:38 -!- comex [comex@c-67-188-10-190.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 05:43 -!- comex [comex@c-67-188-10-190.hsd1.ca.comcast.net] has joined #go-nuts 05:44 -!- nteon [~nteon@c-98-210-195-105.hsd1.ca.comcast.net] has joined #go-nuts 05:53 -!- boscop [~boscop@g230098129.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 06:01 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has quit [Ping timeout: 260 seconds] 06:09 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-vccppinpjrspxdoa] has quit [Ping timeout: 240 seconds] 06:11 -!- gmilleramilar [~gmiller@pool-74-101-133-165.nycmny.fios.verizon.net] has quit [Ping timeout: 240 seconds] 06:13 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has quit [Read error: Operation timed out] 06:14 -!- Paradox924X [~Paradox92@c-68-35-229-34.hsd1.fl.comcast.net] has joined #go-nuts 06:15 -!- gmilleramilar [~gmiller@pool-74-101-133-165.nycmny.fios.verizon.net] has joined #go-nuts 06:17 -!- chressie [~chressie@217.10.9.24] has quit [Quit: WeeChat 0.3.4] 06:24 -!- Paradox924X [~Paradox92@c-68-35-229-34.hsd1.fl.comcast.net] has quit [Changing host] 06:24 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has joined #go-nuts 06:25 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts 06:26 -!- chressie [~chressie@dreggn.in-ulm.de] has joined #go-nuts 06:29 -!- Project_2501 [~Marvin@82.84.91.209] has joined #go-nuts 06:31 -!- chressie [~chressie@dreggn.in-ulm.de] has quit [Client Quit] 06:31 -!- chressie [~chressie@dreggn.in-ulm.de] has joined #go-nuts 06:51 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-173-219.clienti.tiscali.it] has joined #go-nuts 06:53 -!- brtk [~brtk@c83-248-35-158.bredband.comhem.se] has joined #go-nuts 06:54 -!- Project_2501 [~Marvin@82.84.91.209] has quit [Ping timeout: 240 seconds] 06:56 -!- gaxxx [~woo@219.143.166.16] has quit [Ping timeout: 252 seconds] 06:57 -!- gaxxx [~woo@219.143.166.16] has joined #go-nuts 07:01 -!- viirya [~viirya@cml506-25.csie.ntu.edu.tw] has quit [Ping timeout: 258 seconds] 07:04 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 07:16 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Ping timeout: 240 seconds] 07:17 -!- tvw [~tv@212.79.9.150] has joined #go-nuts 07:21 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 07:27 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 260 seconds] 07:27 -!- wrtp [~rog@92.17.111.113] has joined #go-nuts 07:28 -!- GeertJohan [~geertjoha@s51478c91.adsl.wanadoo.nl] has joined #go-nuts 07:29 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has quit [Ping timeout: 240 seconds] 07:30 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 07:34 -!- erus` [~chatzilla@mailgate.ips-international.com] has joined #go-nuts 07:34 < erus`> I owe someone $10 07:34 < erus`> I can't remember who said go would be on app engine 07:36 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 07:37 -!- boscop [~boscop@g226242129.adsl.alicedsl.de] has joined #go-nuts 07:37 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Ping timeout: 240 seconds] 07:40 < str1ngs> C.git_index_add(v.git_index, C.CString(file)) should I worry about freeing the CString in this case? 07:41 < edsrzf> str1ngs: Only if you want to avoid memory leaks. :) 07:42 < str1ngs> I think I just might thank you 07:43 < str1ngs> also is there some way I can test for leaks then? my C is not that very good so might be best if I check for this stuff 07:44 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 07:45 < vegai> str1ngs: does valgrind work? 07:45 < str1ngs> hmm good idea I'll check 07:45 < vegai> actually looks like no: http://code.google.com/p/go/issues/detail?id=782 07:45 < edsrzf> Yeah, pretty sure it doesn't. 07:45 < vegai> then again, perhaps it would work against gcc compiled go programs? 07:46 < edsrzf> There's a better chance, but I've heard that valgrind is fairly C-centric. 07:46 < edsrzf> I haven't used it much myself 07:46 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-152-55.clienti.tiscali.it] has joined #go-nuts 07:47 -!- brtk [~brtk@c83-248-35-158.bredband.comhem.se] has quit [Ping timeout: 276 seconds] 07:49 < str1ngs> ya gc does not work.. 07:49 -!- tav [~tav@92.7.129.170] has quit [Quit: Hakuna Matata] 07:49 < str1ngs> err cgo* 07:50 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-173-219.clienti.tiscali.it] has quit [Ping timeout: 260 seconds] 07:50 -!- tav [~tav@92.7.129.170] has joined #go-nuts 07:50 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 248 seconds] 07:51 < edsrzf> str1ngs: It looks like the only cgo function that allocates is CString. So as long as each call to that frees its memory, you should be fine. 07:52 < edsrzf> And of course you need to free any memory explicitly allocated by malloc or any that the library you're wrapping requires you to free. 07:52 < str1ngs> ah so I should check if the that function free the string? 07:53 < str1ngs> the library seems pretty good at haveing free methods that I can use. mainly the conversions I'm worried about 07:53 < edsrzf> Most C libraries won't have functions that return strings 07:53 < edsrzf> It's usually something more like get_string(char* s, int length) where it lets you allocate and free the memory. 07:54 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 07:54 < str1ngs> ya I'll just have to free CStrings which is fine 07:54 < str1ngs> well anything I convert really 07:58 -!- foocraft [~ewanas@89.211.232.149] has quit [Quit: if you're going....to san. fran. cisco!!!] 07:58 < str1ngs> edsrzf: ok thanks for the help 08:05 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:10 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Read error: Connection reset by peer] 08:11 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:13 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Client Quit] 08:13 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has joined #go-nuts 08:17 < wrtp> oh why is python versioning such an endless nightmare?! 08:18 < vegai> versioning is always a nightmare 08:19 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:19 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Remote host closed the connection] 08:20 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:21 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote host closed the connection] 08:21 < wrtp> sometimes it's worse than others 08:22 < wrtp> the fact that everyone keeps using different mutually incompatible versions of python is frustrating 08:22 < wrtp> like, i'm trying to try out the go app engine stuff, but it insists on python 2.5 08:22 < wrtp> and i've got 2.6 installed 08:23 < wrtp> i can run 2.5 but it complains there's no ssl module, but i haven't worked out yet how to install stuff in a different python version 08:23 < wrtp> i'll get there, but it's annoying 08:28 -!- mikespook [~mikespook@183.47.227.136] has quit [Ping timeout: 240 seconds] 08:29 -!- mikespook [~mikespook@119.131.233.170] has joined #go-nuts 08:29 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:30 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has joined #go-nuts 08:30 < uriel> python versioning is a mess :( 08:31 -!- dforsyth [~dforsyth@ec2-50-18-22-230.us-west-1.compute.amazonaws.com] has quit [Read error: Operation timed out] 08:31 -!- erus` [~chatzilla@mailgate.ips-international.com] has quit [Quit: ChatZilla 0.9.86.1 [Firefox 4.0.1/20110413222027]] 08:32 -!- tsp [~tsp@unaffiliated/tsp] has joined #go-nuts 08:32 < vegai> I wonder if they'll find a neat way to do versioning in go 08:33 < tsp> A cupple quesions. is go producion-read, and does it have an irc library/eas sockets 08:35 < uriel> tsp: http://go-lang.cat-v.org/organizations-using-go and http://go-lang.cat-v.org/pure-go-libs should answer your questions 08:35 < tsp> Can interface with exising C code/libs 08:35 < uriel> see cgo 08:35 < tsp> sorry for my typing, this keyboard needs replacing asap 08:36 < uriel> haha: http://twitter.com/#!/myfreeweb/status/68233010889244672 08:36 * uriel loves clueless people 08:36 < str1ngs> I love that id does that 08:36 < str1ngs> it* 08:38 < mpl> everytime I get that kind of error I'm like "come on compiler, give me a break. ok, ok, you're right, thanks for not letting me code too much like a pig.". 08:41 < uriel> mpl: hahaha 08:42 * ww isn't sure it's cool to put #! in a URI like that 08:43 < str1ngs> grr there was a picture from googleio with a plush gofer I cant find it now 08:43 -!- Pathin [~root@gladsheim.nullbytestudios.net] has joined #go-nuts 08:43 < wrtp> ww: means you can have a relative URL #!/bin/sh which is kinda cool 08:43 < xyproto> wrtp: python 2.7 should be fine as well. If you have the openssl development packages installed somehow, Python should pick it up automatically during configure/make. 08:43 < mpl> str1ngs: http://robpike.posterous.com/gopher-excited-about-app-engine 08:43 < ww> wrtp: i know what it means... just not sure i like it 08:44 < str1ngs> ah thats it thanks 08:44 < str1ngs> anyone know if these are available anywhere or was this a one off for googleio? 08:44 < wrtp> ww: what does the ! mean? 08:45 < ww> well the ! doens't "mean", but does evoke... 08:45 < xyproto> wrtp: ./configure --enable-readline --with-wide-unicode --prefix=/usr; make have worked here, when building a version of Python manually, including ssl 08:45 < uriel> wasn't python supposed to have 'batteries included'? Go has SSL out of the box ;P 08:45 < tsp> I've heard that I need to put braces on the same line as their expression. Can I violate that for functions, or will that cause problems later? I do this in C so I can do /^{ in ed, and be guaranteed to find a function. 08:46 < uriel> (and written in Go, no need to steal from other languages like python's bindings for OpenSSL ;P) 08:46 < xyproto> uriel: python will be built with ssl out of the box, but it will manage to build (and complain about it) if it's missing :) 08:46 < ww> they're cheap alkaline batteries that will run down in 10 mins 08:46 < wrtp> xyproto: it actually seems that it should work with python2.6 (i was conflating the version warning and the exception that happened because it couldn't find the directory) 08:46 < uriel> ww: haha 08:46 < wrtp> so i get further, but get an exception later on 08:46 < wrtp> (when i try to fetch the web page) 08:47 < xyproto> wrtp: in which connection are you trying to fetch a web page with python and/or the python build process? To use the app enginge? 08:48 < xyproto> *engine 08:48 < uriel> oh, the amount of FUD here hurts my eyes: http://www.reddit.com/r/programming/comments/h8755/google_appengine_now_supports_go_language/ 08:48 < wrtp> xyproto: i'm playing with the app engine go demo code 08:54 < xyproto> wrtp: I see 08:55 < Namegduf> "The collective response to Google Go on reddit has been a decisive "meh"." <- Whereby Reddit considers itself the centre of the universe. 08:56 -!- moraes [~moraes@189.103.176.38] has joined #go-nuts 08:56 < Namegduf> This is why I don't visit very often. It's like a version of Digg with a really really high opinion of itself. 08:56 < hallas> http://twitter.com/#!/myfreeweb/status/68233010889244672 is just plain stupid 08:57 -!- randfur [~androirc@58.145.148.115] has joined #go-nuts 08:57 < Namegduf> Yes, it is. 08:58 < ww> well... whenever i write in C i always use -Wall -Werror anyways... 08:58 < Namegduf> Me too. 08:58 < randfur> Google Apps. 08:58 < Namegduf> I would hardly call making that decision a "WTF" option. 08:59 < randfur> This us different to Android Apps? 08:59 < Namegduf> *a "WTF" decision 08:59 < randfur> *is 08:59 < Namegduf> randfur: This is the Go programming language IRC channel 09:00 < xyproto> randfur: there are chrome/chromium plugins that are just called apps as well, and there's apps for android. I also think google categorizes some of their web-apps as "google apps". So, yes. 09:00 < hallas> Same guy who wrote that tweet, says that its insane to type convert in Go. Javascript is just '' + 123 but Go is strconv.Itoa(123). 09:00 < randfur> I mean in relation to the recent news about Go. 09:01 < Namegduf> hallas: If he's incapable of considering static typing as having advantages as a deliberate design choice then he's really not worth thinking about 09:01 < xyproto> hallas: from a js point of view, I understand why, but of course, he's totally missed the point. 09:01 < randfur> I had my hopes up about using Go for Android dev. 09:01 < hallas> Twitter is dangerous, you really risk putting your self out there 09:01 < Namegduf> No recent announcements connect to that. 09:02 < ww> randfur: you can do it together with ASE 09:02 < ww> but no java bridge so nothing too elaborate 09:02 < xyproto> ww: so, you can use Go directly for android programming now, without going via java? 09:03 < ww> xyproto: the ASE gives a JSON -> java bridge via a little server... most pessimal 09:03 < ww> but the best that can be done 09:03 < randfur> I thought ASE only did scripting languages. 09:04 < ww> randfur: https://bitbucket.org/ww/godroid 09:04 < ww> you make a one-line shell script wrapper to get ASE to start up its server, and then your go program talks to that 09:05 < ww> it's not very elegant, but it works 09:06 < moraes> randfur, Google Apps are webapps http://www.google.com/apps/intl/en/business/index.html 09:06 < moraes> it's marginally related to App Engine 09:14 < randfur> Huh, so that gives you access to the phone's functionality? 09:15 -!- boomtopper [~boomtoppe@cpc12-nrte22-2-0-cust249.8-4.cable.virginmedia.com] has joined #go-nuts 09:16 < randfur> @ww 09:17 -!- mikespook [~mikespook@119.131.233.170] has quit [Quit: Leaving.] 09:21 < ww> randfur: not all of it, just what ASE gives you, but yes 09:23 < tsp> What's the go equivalen to the select function on sockets? Been looking everwhere 09:24 < mpl> not that I care so much about it, but I hardcoded like a bastard some /usr/bin/find and /bin/grep calls in a code and I suppose that wouldn't work on Mac for example. where are those located (if at all) on a mac install? 09:26 < taruti> tsp: just use goroutines 09:26 < str1ngs> mpl: use exec.LookPath 09:26 < str1ngs> mpl: also you dont need find 09:26 < str1ngs> mpl: assuming this is go code? 09:26 < ww> in /usr/bin fwiw 09:27 < hallas> tsp: no need to select the sockets, the goroutines are concurrent and very safe, i dont even think there is a equivalent 09:27 < mpl> str1ngs: ah I didn't know LookPath worked for macs as well. 09:27 < mpl> str1ngs: and yes, I do need find. it's faster than what I would write myself ;P 09:28 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has quit [Remote host closed the connection] 09:28 < str1ngs> mpl: instead of find either use filepath.Globe or the walker 09:28 < str1ngs> err Glob 09:29 < str1ngs> my guess is glob is all you need 09:30 < tsp> hallas: This is all confusing right now 09:30 < mpl> str1ngs: still, it's more work for a probably less efficient result so I'll stick to calling find for now. but thx for the tip. 09:31 < str1ngs> mpl: I doubt its faster. and besides you might as well just write it in bash :P 09:31 < str1ngs> or sh 09:31 < mpl> str1ngs: yes, the initial version was written in rc :) 09:31 -!- gmrph [~gmurphy@203-214-86-6.dyn.iinet.net.au] has joined #go-nuts 09:31 < mpl> but it got more complex and I wanted to generalize a few things. 09:32 < str1ngs> give glob a shot its pretty amazing I abuse it all the time 09:32 < xyproto> mpl: "which" should be available on all unix-like systems, if you just want a quickfix 09:32 < hallas> tsp: Hey. Check out http://golang.org/src/pkg/http/server.go?s=24770:24828#L842 start at the highlighted ListenAndServe func. Once you read that source, youll understand how to do networking in Go 09:32 < mpl> xyproto: isn't LookPath doing everything which would do? 09:34 < xyproto> mpl: I haven't looked at LookPath before, but yes, it looks like it. 09:35 < xyproto> mpl: I once wrote a memoized LookPath-like function, btw. The caching makes it really fast, there's usually not that much to cache and programs that use "which"/"LookPath" usually call the function more than once. Recommended. :) 09:36 < mpl> I had forgotten I had used LookPath in another program, should have thought of it... 09:37 < str1ngs> use glob or I'm going to send the gopher after you! 09:38 < mpl> str1ngs: :P 09:39 < mpl> str1ngs: I'll have a look at it. someday... I have this tendency that when a program works for me and I don't get requests from users, I don't touch it much anymore afterwards hehe. 09:39 < wrtp> xyproto: memoizing LookPath is a bad idea 09:39 < str1ngs> mpl: no worries. but glob I would think is less work. forked calls take alot more boiler plate. 09:40 < wrtp> it means if you add a new binary to the path, it won't be picked up 09:40 < wrtp> anyway, the os will do the caching for you 09:41 -!- matt2909 [d98c6015@gateway/web/freenode/ip.217.140.96.21] has joined #go-nuts 09:43 < matt2909> before I file a bug, does anyone know of any issues with xml.Unmarshal and elements that contain underscore characters? 09:44 < wrtp> matt2909: elements that start with underscore characters? 09:45 < matt2909> the case in point is trying to unmarshal an element with an underscore in the element name e.g. <under_score number="1"></under_score> 09:46 < hallas> I've created a type called Buffer which esentially is a []byte. Then I made a function "func (b Buffer) Write(p []byte) (n int, err os.Error)" etc. How do I copy the "p" into my "b" when calling Write? b = p doesnt seem to work :-( 09:48 < wrtp> hallas: i think you want func (b *Buffer) ... 09:48 < wrtp> otherwise you can't change the receiver 09:48 -!- genbattle [~nick@203-173-207-1.dialup.ihug.co.nz] has joined #go-nuts 09:48 < wrtp> hallas: have you looked at bytes.Buffer ? 09:48 < str1ngs> hallas: also there is bytes.Buffer already. which you might want to use instead 09:49 < str1ngs> opps redundant sorry 09:49 < mpl> str1ngs: looks like Glob uses patterns and I need regexes for now. I might be able to change them into a pattern though. I'll see. 09:49 < str1ngs> mpl: no worries just something to keep in mind 09:49 < mpl> str1ngs: yep, thx. 09:49 < str1ngs> mpl: the walker is probably better for this but takes abit to get use to 09:50 < genbattle> hiyas, i've got a problem accessing C arrays from Go; what's the best way to convert a C pointer to a Go array? 09:50 < matt2909> ignore my xml query above (no bug yay!), the struct name is used for pattern matching so it must also contain the underscore 09:50 < hallas> str1ngs / wrtp: Thanks. Stupid me. Need to learn that if theres something I think is clever, the Go team already made it . 09:50 < genbattle> at the moment i'm using "device_ids_go := (*[]C.cl_device_id)(device_ids)", but it doesn't give me anything after the fist item 09:51 < wrtp> genbattle: do you know the number of items in the array? 09:52 < genbattle> yea i've got a length 09:52 < genbattle> the C function i'm passing the array pointer into return a len 09:53 < wrtp> devids := (*[1e9]C.cl_device_id)(device_ids)[0:device_id_count] 09:53 < wrtp> domething like that 09:54 < wrtp> essentially you cast it to a pointer to a sufficiently large (statically sized) array, then slice that to the right size 09:54 < genbattle> that seems like a bit of a hack 09:55 < wrtp> it's only as much of a hack as C using pointers to represent arrays is a hack :-) 09:55 < genbattle> :P 09:55 -!- randfur [~androirc@58.145.148.115] has quit [Ping timeout: 246 seconds] 09:59 < Namegduf> genbattle: The basic problem is that array types have a fixed known size at compiletime in Go. Making it huge as far as the type system is concerned just makes it C-like. 10:00 < Namegduf> You could use unsafe and evil unportable magic to construct a slice out of the pointer directly 10:00 < Namegduf> But really that would be worse. 10:01 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 10:01 < genbattle> what is a slice if not a bounded array pointer 10:02 < Namegduf> That's pretty much what it is, yes. 10:02 < Namegduf> The internal representation is allowed to change, though 10:02 < Namegduf> So building one yourself is very unsafe 10:02 < Namegduf> And allowed to break with new Go 10:03 < Namegduf> At the moment it's just the pointer, followed by len, followed by cap 10:03 < wrtp> devids := *(*[]C.cl_device_id)(unsafe.Pointer(&SliceHeader{uintptr(unsafe.Pointer(device_ids)), count, count})) 10:03 -!- virtualsue [~chatzilla@nat/cisco/x-tztowjjmjedlheyz] has joined #go-nuts 10:03 < wrtp> or something like that 10:03 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 10:03 < wrtp> for the unsafe magic 10:04 < wrtp> s/SliceHeader/reflect.SliceHeader 10:04 < Namegduf> http://golang.org/pkg/reflect/#Value.MakeSlice 10:04 < wrtp> Namegduf: that doesn't do the job 10:04 < wrtp> it allocates the storage for you 10:05 < Namegduf> Oh, I see. 10:05 < genbattle> yea 10:05 < Namegduf> In that case, reflect.New(), followed by reflect.SetLen()... still trying to find a way to set the pointer and cap. 10:05 < wrtp> you can't do it without casting to SliceHeader 10:05 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-174-26.clienti.tiscali.it] has joined #go-nuts 10:06 < wrtp> reflect is not unsafe, but that is an unsafe operation 10:06 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 276 seconds] 10:06 < wrtp> it's inherently unsafe because C is inherently unsafe 10:07 < Namegduf> Hmm, pity. 10:08 < Namegduf> Constructing an arbitrary slice on something is inherently unsafe in that you're relying on the programmer being right in doing so 10:08 < Namegduf> But it could be portable. 10:08 < Namegduf> The array trick works well, at any rate. 10:09 < wrtp> it is portable - my unsafe code above was portable 10:09 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-152-55.clienti.tiscali.it] has quit [Ping timeout: 276 seconds] 10:09 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 260 seconds] 10:09 < Namegduf> The sliceheader stuff isn't. 10:09 < wrtp> it is 10:09 < Namegduf> "SliceHeader is the runtime representation of a slice. It cannot be used safely or portably." 10:10 < wrtp> oh, ok 10:10 < Namegduf> ~ http://golang.org/pkg/reflect/#SliceHeader 10:10 < Namegduf> I guess they could alternatively just declare that header portable. 10:11 < wrtp> well, at least it will work portably across all platforms, because gob uses it, for example 10:11 < wrtp> it just might break in the future 10:11 < Namegduf> Yeah. 10:12 < wrtp> the main problem with the array trick is that if you want to pass the slice out into the wider go world, the capacity remains huge. 10:12 < wrtp> which means that any caller can break things 10:12 < Namegduf> Ah, yeah. 10:12 < wrtp> see also http://code.google.com/p/go/issues/detail?id=1642 10:16 -!- fhs [~fhs@pool-74-101-66-112.nycmny.east.verizon.net] has quit [Quit: leaving] 10:16 -!- telexicon [~telexicon@unaffiliated/chowmeined] has quit [Ping timeout: 252 seconds] 10:19 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 10:23 < xyproto> wrtp: I agree that memoizing LookPath is a bad idea. However, there are cases where a memoized version can be useful, for instance if a windowmanager starts up and wishes to populate the menues based on which binaries are in the path. 10:29 < wrtp> xyproto: i'm not sure that memoizing is the answer there - surely the window manager can simply store the resulting paths itself if it wishes? 10:30 < wrtp> then it would only call LookPath once and there would be no need to maintain a cache 10:32 < xyproto> wrtp: I'm sure there are several ways to do it. Memoization may not be the answer. 10:32 < xyproto> in any case, I wonder what the Go equivalent to the Python "Memoize" decorator is: http://wiki.python.org/moin/PythonDecoratorLibrary#Memoize 10:32 -!- fhs [~fhs@2001:0:4137:9e76:87f:54ac:b59a:bd8f] has joined #go-nuts 10:34 < Namegduf> You could make a function which took a function and returned a memoized version of it, which had a structure keeping cached results closed over by a closure, which is returned. 10:35 < Namegduf> Using reflection. 10:36 < Namegduf> I *think* so, anyway. 10:36 < Namegduf> It might suffer from lack of generics. 10:38 < Namegduf> Easily doable for a given signature, I'm just not sure how easy it'd be to make it work for any. 10:38 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 10:39 < wrtp> Namegduf: i don't think you can do it, because there's no way of creating new functions of arbitrary type using reflection 10:41 < Namegduf> Hmm. 10:41 < wrtp> Namegduf: i'm not sure you'd be able to do it even with generics 10:42 < Namegduf> You could do it by wrapping it in a closure taking ... interfaceP{ 10:42 < Namegduf> *{} 10:42 < Namegduf> And memoizing that 10:42 < Namegduf> But it's getting nasty. 10:43 < wrtp> yeah, the resulting function would be func(...interface{}) interface{}, yuk 10:43 < wrtp> and even then it wouldn't work on functions returning more than one result 10:44 < Namegduf> You could put multiple results into an interface{} by putting a []interface{} into it 10:44 < Namegduf> Or returning a []interface{} 10:44 < Namegduf> Very yuck, though. 10:48 -!- gmrph [~gmurphy@203-214-86-6.dyn.iinet.net.au] has left #go-nuts [] 10:55 -!- boscop [~boscop@g226242129.adsl.alicedsl.de] has quit [Ping timeout: 248 seconds] 10:56 < Namegduf> The true equivalent to a decorator is to just put the "decorator" function in place of the decorated function, with it calling the original function. 10:58 -!- genbattle [~nick@203-173-207-1.dialup.ihug.co.nz] has quit [Quit: Leaving] 10:58 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 276 seconds] 10:58 -!- boscop [~boscop@f050134104.adsl.alicedsl.de] has joined #go-nuts 11:02 -!- Kafo [~Kafo@a91-152-189-15.elisa-laajakaista.fi] has joined #go-nuts 11:03 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 11:05 < wrtp> Namegduf: yeah. otherwise known as a wrapper. 11:07 -!- flaguy48 [~gmallard@user-0c6s350.cable.mindspring.com] has joined #go-nuts 11:12 < wrtp> genbattle: just saw a post on golang-nuts that looks like it might be yours 11:12 < wrtp> didn't we just answer your question? 11:13 -!- foocraft [~ewanas@89.211.232.149] has joined #go-nuts 11:14 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 11:15 < wrtp> oh yeah, i see you acknowledged it 11:17 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 252 seconds] 11:18 < wrtp> oh, you've gone 11:18 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 11:19 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 11:23 -!- jlaffaye [~jlaffaye@24.114.252.243] has joined #go-nuts 11:23 -!- matt2909 [d98c6015@gateway/web/freenode/ip.217.140.96.21] has quit [Quit: Page closed] 11:24 < jlaffaye> you guys know what is arch specific in the go appengine sdk? 11:24 -!- ExtraSpice [~XtraSpice@88.118.35.153] has joined #go-nuts 11:24 < str1ngs> just the testing locally 11:25 < ww> genbattle's in .nz iirc, so bed time i suppose 11:25 < str1ngs> ultimately it runs on 64bit hardware 11:27 -!- fmoo [~Adium@c-76-102-41-101.hsd1.ca.comcast.net] has quit [Quit: Leaving.] 11:27 < jlaffaye> because there are two zip files (386 and amd64) so there is no difference? in fact I want to run it on FreeBSD amd64 but if there are some binary... 11:29 < ww> jlaffaye: you can compile to either architecture with one compiler, the difference is the host OS 11:29 < str1ngs> jlaffaye: all of goroot is OS arch specific 11:29 < ww> also, be careful if you want to use CGO on FreeBSD - it's broken in the most recent release 11:32 < jlaffaye> str1ngs: I see... are you refering to Exception: ('cannot call go-app-builder', OSError(8, 'Exec format error')) ? :) 11:33 < str1ngs> jlaffaye: in your case yes 11:33 < str1ngs> what you probably need to do is find out where the source is hosted and build for bsd/arch 11:33 -!- monsieur_max [~monsieur_@212.234.251.58] has joined #go-nuts 11:34 < monsieur_max> hi everyone 11:38 -!- foocraft [~ewanas@89.211.232.149] has quit [Quit: if you're going....to san. fran. cisco!!!] 11:40 -!- jlaffaye [~jlaffaye@24.114.252.243] has quit [Remote host closed the connection] 11:40 -!- jlaffaye [~jlaffaye@24.114.252.236] has joined #go-nuts 11:43 -!- zerosanity [~josh@8.20.178.82] has joined #go-nuts 11:56 -!- artefon [~thiago@189.59.178.70.dynamic.adsl.gvt.net.br] has joined #go-nuts 11:59 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-mergcazpfaqgwsqi] has joined #go-nuts 12:06 -!- boomtopper [~boomtoppe@cpc12-nrte22-2-0-cust249.8-4.cable.virginmedia.com] has quit [Ping timeout: 258 seconds] 12:08 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 240 seconds] 12:12 < jeremy_c> uriel: skelterjohn: Wei G. on the mailing list gave me the clue necessary to make my iup.go work on Windows... CGo does not support linking to static libraries, which I was doing. Linking to the dynamic libraries caused everything to work. 12:14 -!- Nitro [~Nitro@unaffiliated/nitro] has joined #go-nuts 12:16 -!- cenuij [~cenuij@93.26.129.237] has joined #go-nuts 12:16 -!- cenuij [~cenuij@93.26.129.237] has quit [Changing host] 12:16 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 12:21 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 12:22 -!- brtk [~brtk@c83-248-35-158.bredband.comhem.se] has joined #go-nuts 12:22 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 12:28 -!- marten_ [~marten@62.21.178.171] has joined #go-nuts 12:29 -!- Tanner_ [~tanner@h96-60-249-44.cncrtn.dsl.dynamic.tds.net] has quit [Ping timeout: 258 seconds] 12:31 -!- matt2909 [d98c6015@gateway/web/freenode/ip.217.140.96.21] has joined #go-nuts 12:32 -!- yebyen [~yebyen@martyfunkhouser.csh.rit.edu] has quit [Ping timeout: 240 seconds] 12:32 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Ping timeout: 240 seconds] 12:36 -!- Sep102__ [~Sep102@c-71-231-176-153.hsd1.wa.comcast.net] has quit [Read error: Connection reset by peer] 12:36 -!- Sep102__ [~Sep102@c-71-231-176-153.hsd1.wa.comcast.net] has joined #go-nuts 12:37 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts 12:38 < matt2909> is it possible to generate go code routines at runtime and then compile/execute them? 12:39 -!- bubb [~AndChat@S01065cd9985ba2e7.va.shawcable.net] has quit [Ping timeout: 260 seconds] 12:40 -!- knownow [~Adium@206.205.153.100] has joined #go-nuts 12:43 < niemeyer> matt2909: No, there's no support for generating code at runtime 12:45 -!- knownow [~Adium@206.205.153.100] has quit [Ping timeout: 240 seconds] 12:45 < wrtp> matt2909: closures can sometimes give you similar functionality, depending on what you need 12:45 -!- knownow [~Adium@206.205.153.100] has joined #go-nuts 12:48 < GeertJohan> wouldn't it be possible to just write the generated go code to a file and then compile that using a syscall ? 12:48 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 12:49 < matt2909> GeertJohan: thats the path I'm following right now, but it has the disadvantage of not being able to dynamically load the code, so I'd have to use remote procedure calls and have that associated hit 12:54 < GeertJohan> ah yes :) and how about a wrapper of some sort? say a library file that is empty (call does nothing) when you compile the main program, and then you replace that with a at runtime compiled library that has the same header/signatures, but actually contains stuff to do 12:54 < GeertJohan> *just thinking out loud here, not an expert* 12:55 < matt2909> GeertJohan: its the "replace" part that I think is the issue 12:59 < GeertJohan> hmmyeah 12:59 < GeertJohan> maybe yes, I have no clue how and at what time go loads its executable code... 13:00 < Namegduf> When the program is started, never after. 13:00 < xyproto> matt2909: just an idea, but what happens if you write a c module that calls code from Go, then compile the Go code and then the c .so every time? 13:00 < Namegduf> Go programs do not embed a Go compiler. 13:01 < jeremy_c> On the go package page there are some dynamic scripting languages you can use, it will not be dynamic go, but may do the trick. 13:02 < GeertJohan> Namegduf: uhu, but it is posible to execute commands right? so if `go` is in the PATH env var where the program is executed, it should be posible to create/write a file containing go code, and then compile that using a syscall.. right? 13:02 < Namegduf> GeertJohan: Sure. Then what? 13:02 < Namegduf> Go does not have dynamic loading, 13:02 < GeertJohan> yeah thats what we're trying to figure out now :P 13:02 < Namegduf> s/trying to figure out/trying to ask over and over until the answer changes/ 13:03 < matt2909> jeremy_c: to what package are you refering? 13:03 < matt2909> xyproto: I'm evaluating Go, so ideally I want to just use Go not go back to C, I already know how in C 13:04 -!- zerosanity [~josh@8.20.178.82] has quit [Read error: Connection reset by peer] 13:04 < Namegduf> There are two potential answers: 13:04 < jeremy_c> matt2909: http://godashboard.appspot.com/project ... scroll toward the bottom, "Virtual Machines and Languages" ... Possibly Gelo, GoForth, GoLightly, go-scheme, go-python, go-lua, go-tcl, ... 13:04 < Namegduf> Multiprocess, and "restart while preserving state" 13:08 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has joined #go-nuts 13:09 < skelterjohn> morning 13:09 < jeremy_c> uriel: skelterjohn: Wei G. on the mailing list gave me the clue necessary to make my iup.go work on Windows... CGo does not support linking to static libraries, which I was doing. Linking to the dynamic libraries caused everything to work. 13:09 < uriel> jeremy_c: yes, saw that 13:09 < uriel> thanks 13:09 < skelterjohn> hey great 13:09 < skelterjohn> good to know 13:09 < xyproto> matt2909: I see. Well, I guess that lack of .so-support is a showstopper for maximum efficiency for that particular user case, right now. 13:09 < jeremy_c> uriel: opps. Just used UP/Arrow to let skelterjohn sorry about including you twice. 13:13 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-174-26.clienti.tiscali.it] has quit [Quit: E se abbasso questa leva che succ...] 13:14 < uriel> matt2909: just curious, but why do you need runtime code generation? 13:15 < skelterjohn> wrtp: with the mac draw stuff you're working on - do you 1) have to run the event loop in the main thread and 2) have trouble making the window mesh well with the terminal windows? command-` to switch, can't pop to front etc? 13:16 < skelterjohn> i've got sizable windows that are being drawn on from go, now 13:16 < matt2909> uriel: suppose I want to write a VM? or an emulator framework? 13:16 < uriel> matt2909: a few people have written such things without much trouble 13:17 -!- knownow [~Adium@206.205.153.100] has quit [Ping timeout: 240 seconds] 13:17 < matt2909> uriel: I've noticed that now, and I'll be sure to take a look at their projects 13:17 < uriel> matt2909: see the "virtual machines and languages" section of: http://go-lang.cat-v.org/go-code 13:21 < wrtp> skelterjohn: cool. 13:21 < wrtp> yes, i have to run the event loop in the main thread, but that's not visible from go 13:21 < wrtp> currently the window doesn't mesh with anything! 13:22 < exch> Does the appengine bit of Go handle Cgo packages? 13:22 < wrtp> exch: i would very much doubt it 13:22 < wrtp> you can't import unsafe 13:23 < skelterjohn> not visible from go? how do you manage that? 13:23 < skelterjohn> i have to have gmdgo.Run() at the end of main() 13:23 < exch> good point 13:24 < skelterjohn> gmdgo -> go mac draw... go... maybe i should change the name 13:24 < wrtp> skelterjohn: the event interface is a channel. (see Window.EventChan in http://golang.org/pkg/exp/draw/) 13:24 < skelterjohn> aha - so you put it inside EventChan 13:24 < skelterjohn> that can be a good idea - but other draw impls don't require you to call that from the main thread 13:25 < skelterjohn> also, each window will want its own, but they don't want to run the event loop twice 13:25 -!- iant [~iant@216.239.45.130] has quit [Read error: Connection reset by peer] 13:26 < wrtp> skelterjohn: i've got one event loop that multiplexes out to an event chan for each window 13:27 < wrtp> skelterjohn: what primitives are you using to draw the bitmaps? 13:27 < skelterjohn> :s probably the worst way possible 13:27 < skelterjohn> i draw lots of 1x1 rects 13:27 < wrtp> omg 13:28 < skelterjohn> using CGContext calls 13:28 < skelterjohn> haha 13:28 < skelterjohn> just wanted to get something working :) 13:28 < skelterjohn> also, i haven't yet been able to find some kind of raster-backed image class in the doc 13:29 < wrtp> skelterjohn: this is what i do: http://pastebin.com/S81TD2hY 13:29 < wrtp> it still involves an allocation per render, but it's better than drawing many rectangles! 13:30 < skelterjohn> makes sense 13:31 < skelterjohn> also - when i invoke the library by running a .app the menu bar pops up 13:31 < skelterjohn> but when i run it from go, no such luck 13:31 < skelterjohn> and if i double-click a go program, it brings up a terminal. ithink there is something fundamental about how go programs are built that prevents it 13:32 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has quit [Ping timeout: 240 seconds] 13:38 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 13:38 -!- jbooth1 [~jay@209.249.216.2] has joined #go-nuts 13:40 -!- iant [~iant@67.218.109.241] has joined #go-nuts 13:40 -!- mode/#go-nuts [+v iant] by ChanServ 13:40 < exch> these google I/O announcements for Go certainly cause a lot of github PMs and messages O_o It's been quiet on my account for weeks and now I got 6 in a day 13:42 < skelterjohn> i haven't got any :\ 13:42 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts 13:42 < skelterjohn> of course, i didn't even know that github provided such services 13:43 < exch> you'll see notifications in the lil menu at the top-right of the page 13:43 < exch> or in the activity stream 13:44 -!- boomtopper [~boomtoppe@cpc12-nrte22-2-0-cust249.8-4.cable.virginmedia.com] has joined #go-nuts 13:44 < exch> One of em brings up a good point though. My xmlx package (and consequently the rss package) relies on a cgo package called go-iconv. It allows me to ensure the Go xml tokenizer receives proper UTF-8 data. This cgo dependency will prevent the packages from being useful on Appengine though 13:45 < exch> Either I roll a native Go version of iconv.. which is frankly not something I am looking forward to doing 13:45 -!- res99 [~anonymous@201.237.130.70] has joined #go-nuts 13:45 < wrtp> exch: use go-charset :-) 13:45 < exch> Or I take the dependency out and make it abundantly clear in the docs that the user is responsible for proper conversion 13:45 < exch> mm haven't heard of that 13:46 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has joined #go-nuts 13:49 < exch> ah that looks like it might just be what the doctor ordered 13:50 < exch> it needs some fixes for a recent go release though 13:53 < wrtp> ah, i thought i'd done that. i'll have a look 13:53 < exch> os.Open signatures need some tweaking 13:53 < exch> gofix should take care of that 13:54 < wrtp> exch: oh, i did that, but didn't apply the CL. doh. 13:55 < uriel> 13:22 < exch> Does the appengine bit of Go handle Cgo packages? 13:56 < uriel> exch: it would be quite damned hard to sandbox if you could use cgo 13:56 < mpl> I'm still thinking of the WTF-language tweet. this worthy of becoming a meme imho :) 13:56 < exch> uriel: yes 13:57 -!- boomtopper [~boomtoppe@cpc12-nrte22-2-0-cust249.8-4.cable.virginmedia.com] has quit [Quit: Lost terminal] 14:02 < skelterjohn> ugh - why is the mac API so convoluted 14:02 < skelterjohn> it should always be simple to do simple things 14:04 < wrtp> skelterjohn: it's dreadful, isn't it? 14:05 < xyproto> mpl: the strconv.Itoa one? 14:05 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 14:07 < delinka> Go's tools don't (can't?) output dynamic libs, Go executables are not linked dynamically at runtime. Correct? 14:07 < skelterjohn> correct 14:08 <+iant> 6g/8g do not output shared libraries, yes; but they can generated executables which are linked dynamically to other (non-Go) shared libraries 14:08 < delinka> can I link directly to C static libs? 14:08 < delinka> ah. 14:08 < skelterjohn> oh - yeah you can do dynamic linking via cgo 14:08 < delinka> so, I can link to a .so and it'll be loaded at runtime 14:09 <+iant> you have to do it in the way that cgo does it, which is somewhat awkward when not using cgo 14:09 < skelterjohn> in your go file, before import "C", you can put a comment like 14:09 < skelterjohn> // #cgo LDFLAGS: -lm 14:10 -!- dolch [~ftw@CPE002584096773-CM78cd8e5c9ddd.cpe.net.cable.rogers.com] has joined #go-nuts 14:10 -!- Vigud [u1143@gateway/web/irccloud.com/x-mfsgmatrbsolzzmg] has left #go-nuts [] 14:10 < delinka> I'm not actually doing this at the moment. Just clarifying my thoughts on the subject. and now that skelterjohn has reminded me, I recall reading that. thanks, folks :) 14:12 -!- elephants [~elephants@76.9.192.146] has joined #go-nuts 14:13 < mpl> xyproto: no, that one http://twitter.com/#!/myfreeweb/status/68233010889244672 14:14 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-mergcazpfaqgwsqi] has quit [Ping timeout: 240 seconds] 14:18 < wrtp> exch: i *will* submit the CL after i've worked out what my password should be :-) 14:19 < exch> hehe alright. thanks :) 14:22 < wrtp> exch: done - try updating. 14:22 < exch> alright 14:23 < exch> alrightyup, seems to work now. thanks 14:23 < wrtp> cool 14:25 -!- GeertJohan [~geertjoha@s51478c91.adsl.wanadoo.nl] has quit [Quit: Leaving.] 14:26 < xyproto> mpl: That is incredibly funny. :D I have not seen that tweet before. Do you think he's trolling? 14:26 < Namegduf> I think they're just stupid. 14:27 < Namegduf> I wish I could deny that there would be someone who thinks that programming languages should be designed to let programmers vomit on a page, and have it make sense of it as best it can 14:28 < Namegduf> But "dynamic" languages like that idea, and JavaScript is probably best described that way. 14:28 < Namegduf> Also "giant google androids" 14:29 < Namegduf> Not sure what that has to do with anything 14:31 < mpl> xyproto: no I think he's being honest. 14:32 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 260 seconds] 14:32 < mpl> as stupid as this tweet may be, I still like a lot the WTF-language idiom. :) 14:32 < jeremy_c> When starting with Go, importing "fmt" for debugging then not using it and getting a compiler error was irritating, as well as unused vars. I'm use to it now, but was a stumbling block for a bit. 14:32 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has quit [Ping timeout: 252 seconds] 14:33 < hallas> its alot worse when he tweets that its stupid to have strconv.Itoa when you in Javascript can just do "hallo" + 123 when concatenating a string with an int 14:33 < hallas> Oh well 14:33 < hallas> He doesnt say stupid, he says its insane 14:34 < jbooth1> jeremy_c agreed, although once tooling catches up it'll be a lot less annoying 14:34 < xyproto> I don't think it's insane, of course you want "hallo" + 123 to become "hallo{" ;) 14:34 < hallas> hehe 14:34 < hallas> did you look that up :P ? 14:35 < xyproto> chr(123) in this handy Python interpreter :P 14:36 < hallas> ascii 14:36 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has joined #go-nuts 14:44 < skelterjohn> with go's strict typing, you wouldn't interpret 123 as a char :) 14:45 < skelterjohn> there is only one reasonable way to interpret "hallo"+123 14:45 < skelterjohn> and that is as a compile error 14:45 < skelterjohn> since there is only string+string 14:45 < jeremy_c> http://pastie.org/1889225 isn't a very helpful error message... 14:46 < skelterjohn> jeremy_c: someone is probably using variadics (...) wrong 14:46 < jeremy_c> skelterjohn: yeah, but how about a file and line num? :-) ... someone would be me but I'm not finding anything wrong yet. 14:47 < skelterjohn> fair enough 14:47 < skelterjohn> maybe worth reporting an issue 14:47 < wrtp> in limbo, string(123) gave "123", but there was no way of getting a string with a single integer char in it... on balance i think go is right 14:49 < wrtp> although it was very convenient to do decimal conversions trivially. i rarely use strconv.Itoa - formatted prints are more general 14:49 < skelterjohn> fmt.Sprintf("%c", 123)? 14:49 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts 14:49 < uriel> i think he feel right at home with VBScript 14:49 < uriel> +would 14:50 < wrtp> string(123) 14:50 < wrtp> works fine 14:50 < wrtp> fmt.Sprintf("%d", 123) 14:51 < wrtp> for decimal-formatted number 14:52 < jeremy_c> skelterjohn: I went to make a bug report but cannot reproduce the problem in a simple test case. http://pastie.org/1889248 is the code causing the problem. If I comment out line 8 (yes line 8) then my app compiles fine. Uncomment it and I get the error message stated above. 14:54 -!- imsplitbit [~imsplitbi@64.39.4.132] has joined #go-nuts 14:55 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 14:55 -!- iant [~iant@67.218.109.241] has quit [Quit: Leaving.] 15:01 < jeremy_c> skelterjohn: oh, I see. The C function is a variadic function, I must be calling the C func wrong from Go. 15:01 < skelterjohn> ah 15:02 < skelterjohn> i recommend wrapping it in a C function that isn't variadic 15:02 < jeremy_c> skelterjohn: sounds good, thanks for the tip 15:03 < skelterjohn> also that should help you file an issue - it should definitely say *where* the error is happening 15:03 < hallas> Makes absolutely no sense this. My app engine app goes into loop when serving a file with http.ServeFile, but only when an actual file is request. Its just a simple css file. :O 15:04 -!- gtaylor [~gtaylor@99-5-124-9.lightspeed.gnvlsc.sbcglobal.net] has joined #go-nuts 15:04 < skelterjohn> can css files refer to other css files? is this one referring to itself? 15:04 < hallas> Nope :O 15:05 < hallas> Besides, that should be a browser issue then 15:05 < skelterjohn> you didn't say where the loop was :) 15:05 < hallas> Well, I dunno really if it is a loops, I just know the servers doesnt reply, until it times out 15:05 < Namegduf> Ah. 15:05 < Namegduf> That guy who was complaining about Go is a Ruby user 15:05 < hallas> But it can return the directory of the css file just fine. 15:05 < skelterjohn> haha 15:05 < Namegduf> As well as JS 15:05 < Namegduf> That explains everywhere 15:05 < Namegduf> *everything 15:06 < skelterjohn> hallas: i can't help you, sorry 15:06 < skelterjohn> i know little about web serving, and nothing about app engine 15:07 -!- iant [~iant@nat/google/x-rwtszkmviiuleaqi] has joined #go-nuts 15:07 -!- mode/#go-nuts [+v iant] by ChanServ 15:08 < jeremy_c> skelterjohn: submitted. 15:09 -!- Urmel| [~11087Urme@82-136-196-44.ip.telfort.nl] has quit [Ping timeout: 240 seconds] 15:10 -!- Urmel| [~11087Urme@82-136-196-44.ip.telfort.nl] has joined #go-nuts 15:13 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 15:13 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.] 15:16 -!- virtualsue [~chatzilla@nat/cisco/x-tztowjjmjedlheyz] has quit [Ping timeout: 276 seconds] 15:19 -!- artefon [~thiago@189.59.178.70.dynamic.adsl.gvt.net.br] has quit [Quit: bye] 15:21 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has quit [Quit: leaving] 15:22 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 15:24 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-whcpkyamepaifffg] has joined #go-nuts 15:24 < jeremy_c> How can I cast an unsafe.Pointer to a char* in a C.FunCall() ? 15:25 < wrtp> (*C.char)(myUnsafePointer) 15:25 -!- jnwhiteh [~jnwhiteh@WoWUIDev/WoWI/Featured/Dongle/cladhaire] has quit [Quit: ZNC - http://znc.sourceforge.net] 15:27 -!- agonopol [~Adium@adfbd06.cst.lightpath.net] has joined #go-nuts 15:27 < jeremy_c> wrtp: hm, I thought I had tried that before w/an error. I guess not cause it's working. Thanks. 15:28 -!- marten_ [~marten@62.21.178.171] has quit [Quit: marten_] 15:28 -!- jnwhiteh [~jnwhiteh@WoWUIDev/WoWI/Featured/Dongle/cladhaire] has joined #go-nuts 15:28 < wrtp> np 15:29 < agonopol> I want to use a *bufio.Writer, but open and close the underlying *os.File as many times as I can for the same io.Writer object. For some reason we are getting bad file descriptor after file.Clos() and OpenFile is called. 15:30 < agonopol> has anyone seen this before? 15:31 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has joined #go-nuts 15:32 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has left #go-nuts [] 15:33 < wrtp> agonopol: could you paste some code? 15:33 < wrtp> i don't really understand your question, btw 15:35 < hallas> I believe that he wants to used a buffered writer, which will enable him to open and close the underlying stream without the buffer screwing up 15:35 < hallas> He just wants to Open(), Flush(), Close() ? 15:37 -!- marino0 [~marino0@163.5.72.64] has joined #go-nuts 15:38 < marino0> Hi all ! 15:38 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has joined #go-nuts 15:39 < marino0> I have a question. With GO, can we do polymorphism with functions ? 15:39 < hallas> Nope 15:40 < hallas> marino0: ^^ 15:41 < agonopol> thats correct hallas, im writing up a simple example and ill put it up in a sec 15:46 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has joined #go-nuts 15:47 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 15:50 -!- skelterjohn [~jasmuth@128.6.168.245] has joined #go-nuts 15:51 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 15:52 -!- ako [~nya@fuld-590c7f75.pool.mediaWays.net] has joined #go-nuts 15:53 -!- niemeyer [~niemeyer@conference/ubuntudevelopersummit/x-whcpkyamepaifffg] has quit [Ping timeout: 240 seconds] 15:53 -!- matt2909 [d98c6015@gateway/web/freenode/ip.217.140.96.21] has quit [Quit: Page closed] 15:54 -!- aho [~nya@fuld-590c7f59.pool.mediaWays.net] has quit [Ping timeout: 240 seconds] 15:55 -!- ako [~nya@fuld-590c7f75.pool.mediaWays.net] has quit [Client Quit] 15:55 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has quit [Quit: leaving] 15:55 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has joined #go-nuts 15:58 -!- virtualsue [~chatzilla@nat/cisco/x-kxohtmkujlbikkcd] has joined #go-nuts 15:59 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts 15:59 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 15:59 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 15:59 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 16:04 -!- artefon [~thiago@150.164.2.20] has joined #go-nuts 16:07 -!- fhs [~fhs@2001:0:4137:9e76:87f:54ac:b59a:bd8f] has quit [Quit: leaving] 16:08 < Kafo> Does Google Code or github have a feature similar to CodePlex' "Help Wanted"? 16:08 < dfr|mac> Kafo: what do you mean? 16:09 < Kafo> http://www.codeplex.com/site/search/openings 16:09 < dfr|mac> Kafo: i don't think so.. but that sounds like a great idea for github 16:09 < Kafo> A list where you can submit your project with more detailed information on what you need help on 16:12 -!- merijn [~merijn@inconsistent.nl] has joined #go-nuts 16:17 -!- krutcha [~krutcha@remote.icron.com] has joined #go-nuts 16:18 -!- peapicker [~peapicker@unaffiliated/peapicker] has joined #go-nuts 16:18 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has joined #go-nuts 16:18 -!- moraes [~moraes@189.103.176.38] has quit [Remote host closed the connection] 16:19 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Read error: Operation timed out] 16:19 -!- Venom_X [~pjacobs@66.54.185.131] has joined #go-nuts 16:19 < merijn> Is there a more in-depth/direct overview of Go then the tutorial or is my choice limited to reading that or the language spec? 16:20 < Namegduf> "Effective Go" 16:20 < Namegduf> Is a nice document. 16:20 < str1ngs> http://golang.org/doc/effective_go.html 16:20 < gmilleramilar> does anyone here use transient netchan sockets. That is where a process starts up, opens a netchan, writes some stuff and shuts down? 16:21 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Remote host closed the connection] 16:22 < wrtp> gmilleramilar: yes, and you can make it crash with that 16:22 < wrtp> it's on my "to do" list to look at 16:22 < wrtp> (and to get a small piece of code to reproduce it...) 16:23 < gmilleramilar> SIGPIPE crash? 16:23 < merijn> Namegduf: Yeah, effective Go looked nice, but when I was reading it I missed some of the basics. Like variables in for loops/switch statements and new/make before I could find the details about variable declaration. I found those in the tutorial, but that meant skimming through the prose (which isn't to bad if there's no alternative yet, but never hurts to ask :p) 16:23 < Namegduf> Not really, then. 16:23 -!- dirthead [~chatzilla@68.116.31.34] has joined #go-nuts 16:25 < gmilleramilar> wrtp: what I'm seeing is the "server" app that remains running is doing some CPU intensive stuff and doesn't get around to sending an ack until after the pipe has been closed (see stack trace here: http://pastie.org/private/ek0off9ytrg84jveyvfqcw ) 16:25 < dirthead> I'm trying to build go-gb, but keep getting the error: Command not found. The make system can't find 6g, which is in the path. Anybody else run into this issue? 16:26 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 16:28 < wrtp> merijn: the language spec is really quite readable 16:28 < wrtp> gmilleramilar: no, close of already closed channel 16:29 -!- moraes [~moraes@189.103.176.38] has joined #go-nuts 16:29 < str1ngs> dirthead: you sure its in the path. # which 6g 16:30 < wrtp> gmilleramilar: i haven't seen that 16:31 < dirthead> str1ngs: yes, I verified it was in the path using 'which 6g'. I ran the build command manually and it failed with: build.go:21: can't find import: fmt 16:32 < str1ngs> dirthead: env | grep GO 16:32 -!- monsieur_max [~monsieur_@212.234.251.58] has quit [Quit: Leaving.] 16:35 < skelterjohn> dirthead: i'm the go-gb author - let me take a look at the source to remember what reports that 16:36 -!- cenuij [~cenuij@base/student/cenuij] has quit [Remote host closed the connection] 16:37 < dirthead> skelterjohn: thanks! 16:38 < skelterjohn> oh wait - you're *building* gb? as it not running it? 16:38 < dirthead> str1ngs: GOBIN=/home/tom/src/go/bin GOARCH=amd64 GOROOT=/home/tom/src/go GOOS=linux 16:38 < skelterjohn> then make sure $GOROOT is set 16:38 < dirthead> skelterjohn: yep, and GOROOT is set 16:38 < skelterjohn> hrm 16:38 < skelterjohn> try gomake instead of make 16:38 < skelterjohn> (gomake sets some envs and then runs make) 16:39 < dirthead> skelterjohn: gomake reports the same error 16:39 < skelterjohn> also, if you defined these in your terminal, you need to export them to make them stick 16:39 < dirthead> I used export 16:39 < skelterjohn> and /home/tom/src/go/bin/6g exists? 16:39 < dirthead> yep 16:39 < skelterjohn> bizarre.... 16:39 < skelterjohn> can you build other go programs? 16:39 < skelterjohn> with make 16:40 < dirthead> tom@ug ~/src/go-gb/gb $ which 6g 16:40 < dirthead> /home/tom/src/go/bin/6g 16:40 < dirthead> I haven't tried with make, but I was able to yesterday using 6g 16:40 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Ping timeout: 240 seconds] 16:40 < str1ngs> dirthead: ls $GOROOT/pkg 16:41 < skelterjohn> what happens if you do > 6g *.go 16:41 < skelterjohn> oh, can't find fmt 16:41 < skelterjohn> i feel like the problem is definitely with the env vars 16:42 < skelterjohn> because if $GOROOT/pkg/linux_amd64/fmt exists, it should find it 16:42 < str1ngs> right but if you mix arch up.. you get the idea 16:42 -!- agonopol [~Adium@adfbd06.cst.lightpath.net] has left #go-nuts [] 16:42 < dirthead> yeah, I must have something effed up 16:42 < str1ngs> dirthead: whats in $GOROOT/pkg ? 16:42 < dirthead> output from 6g *.go: doc.go:159: package documentation; expected main 16:42 < str1ngs> and what OS ARCH do you have 16:43 -!- vsmatck [~smack@64-142-40-6.dsl.static.sonic.net] has quit [Ping timeout: 240 seconds] 16:43 < skelterjohn> oh - everything except doc.go :) 16:43 < dirthead> GOARCH is amd64 16:43 < skelterjohn> dirthead: does $GOROOT/pkg/linux_amd64 exist? 16:44 < dirthead> ls ${GOROOT}/pkg gives linux_amd64 16:44 < str1ngs> find $GOROOT/pkg | grep fmt 16:44 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Quit: Venom_X] 16:44 < str1ngs> sorry didnt know you are linux so I made find some what portable 16:45 < dirthead> oops 16:45 < dirthead> that's supposed to be just the output 16:45 < dirthead> so find did find fmt.a 16:45 < dirthead> home/tom/src/go/pkg/linux_amd64/fmt.a 16:45 < dirthead> there 16:45 < str1ngs> hmm that looks right 16:46 < hallas> dirthead: 16:46 < dirthead> I must have my current term screwed up somehow 16:46 < skelterjohn> did you define the GO env vars in ~/.bashrc or did you enter them manually? 16:46 < hallas> Are you cross compiling? 16:50 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Read error: Connection reset by peer] 16:50 < dirthead> no 16:51 < str1ngs> purge your vars. run ./clean.bash in src 16:51 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 16:51 < hallas> dirthead: seems weird your errors. try to remove the go dir, and all the environment stuff, re install and only add the path to the go/bin dir. 16:51 < hallas> dirthead: or purge as the awesone str1ngs says 16:52 < hallas> You do not need the goarch and stuff unless you're cross compiling as Go can detect those things it self 16:52 < str1ngs> dirthead: then reset you vars and ./all.bash 16:52 < hallas> Once ./all.bash is done it will tell you which compiler to use as well 16:53 < str1ngs> if you are lazy like me use ./make.bash :P 16:53 -!- merijn [~merijn@inconsistent.nl] has left #go-nuts [] 16:53 -!- peapicker [~peapicker@unaffiliated/peapicker] has left #go-nuts ["Leaving."] 16:55 < hallas> That pizza better soon arrive! Got some lame comedy movie ready @ the couch! 16:56 < skelterjohn> in europe? 16:56 < hallas> Yes :-) 16:56 < skelterjohn> they have pizza over there? 16:56 < hallas> For us lazy computer guys they do 16:56 < hallas> And my usual means of food is out of town for two days 16:56 < skelterjohn> haha aw 16:57 < hallas> speaking of the devil 16:58 < Bigbear1> microsoft buys skype how long till skype is ruined 16:58 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:5e9:7e17:7ee4:5254] has joined #go-nuts 16:59 * delinka guesses less than 5 years 17:02 < skelterjohn> dirthead: any luck? 17:02 < dirthead> sorry, I got distracted by work. :P 17:02 < dirthead> I'm going to reset my vars in my .bashrc and open a new term 17:03 < skelterjohn> "work" 17:05 -!- TheMue [~TheMue@p5DDF7617.dip.t-dialin.net] has joined #go-nuts 17:05 < str1ngs> dirthead: no need just unset each GO var. edit .bashrc make sure its right . the source ~/.bashrc 17:06 < dirthead> well, ummm, it works now. I think I had my vars all effed up between my .bashrc and export commands. 17:06 < skelterjohn> cool - glad it's resolved 17:06 < str1ngs> I think so to 17:06 < dirthead> Thanks guys! 17:06 < skelterjohn> let me know if you have any gb questions 17:07 < dirthead> skelterjohn: cool! Another dev here started using gb last week. He thinks it's the best thing since go! :D 17:07 < skelterjohn> hah, thanks :) 17:07 < skelterjohn> you guys use go for work? or just a common hobby between coworkers? 17:08 < Bigbear1> gb? 17:08 < skelterjohn> http://go-gb.googlecode.com 17:08 < skelterjohn> it's a build tool i made for go projects 17:09 -!- prip [~foo@host33-131-dynamic.47-79-r.retail.telecomitalia.it] has quit [Read error: Operation timed out] 17:10 -!- tvw [~tv@212.79.9.150] has quit [Read error: Connection reset by peer] 17:10 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has quit [Ping timeout: 248 seconds] 17:11 < Bigbear1> cool 17:13 < dirthead> skelterjohn: We are adopting go for a commercial product we are just starting to develop. 17:13 < skelterjohn> nice 17:14 < jeremy_c> dirthead: why go (just for learning)? I may be using Go for a new project (tool) at my work. 17:15 < skelterjohn> go is starting to pop up in more and more workplaces 17:15 < dirthead> jeremy_c: we have used Python in the past, however we find it too slow for certain applications we have. We speed AND a nice language. 17:16 < jeremy_c> my reasoning is it's pretty simple, interfaces with C easily, fast, compiled, good std lib, community is building fast. 17:16 < jeremy_c> compiled = easy distribution. 17:17 < dirthead> We were thinking about going to C++ for speed until one of our devs championed go. 17:17 < skelterjohn> good - C++ is more trouble than it's worth 17:17 < skelterjohn> too easy to get lost in the features 17:17 -!- keithcascio [~keithcasc@nat/google/x-hqwsfmqsuumvtwjt] has joined #go-nuts 17:17 < dirthead> agreed! 17:17 < skelterjohn> and start overloading operators to make things "easier" 17:18 < Bigbear1> can Go overload operators? 17:18 < dirthead> no 17:18 < exch> thank god for that 17:18 < Bigbear1> why 17:18 < Bigbear1> I like overloaded operators 17:18 < Bigbear1> can you use + to concatenate strings? 17:18 < dirthead> yes 17:19 < jeremy_c> I also like overloaded operators for many things. 17:19 < jeremy_c> but can't have everything I guess :-/ 17:19 < dirthead> the + operator is overloaded, but you can't additionally overload operators 17:19 < skelterjohn> overloading operators, when done properly, is great 17:19 < skelterjohn> but C++ makes no restrictions on "proper" 17:19 < skelterjohn> if you have two matrices and you want to add them, then overloading + makes sense 17:20 < dirthead> yep, did that in C++ years ago 17:20 < skelterjohn> if you define + to be something bizarre, then it breaks down 17:20 < jeremy_c> skelterjohn: but go doesn't prevent that... func sayHello() { fmt.Printf("Goodbye") } 17:20 < pharris> If you have a string that you want to output, overloading the bitshift operator is just silly. 17:20 < skelterjohn> jeremy_c: but you can't overload sayHello either :) 17:20 < gmilleramilar> pharris: I was going to give the same example 17:20 < gmilleramilar> I feel like those operators are the most abused for some reason 17:21 < skelterjohn> there is only one sayHello 17:21 < jeremy_c> but it does somethign silly because of a silly programmer. No language can prevent dumb programmers. 17:21 < jeremy_c> from doing dumb things that is. 17:21 < skelterjohn> right, but with operator overloading you don't even know it's happening 17:21 < skelterjohn> if someone overloads operator+(int a, int b) 17:22 < skelterjohn> i don't know if that is actually possible, but with C++ i assume everything is possible 17:22 -!- vsayer [~vivek@c-67-170-236-166.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 17:24 < Bigbear1> how would you regulate how you can use an operator? 17:24 < skelterjohn> also it's nice to escape from class hierarchies 17:24 < Bigbear1> is there a cms written in Go? 17:24 < skelterjohn> Bigbear1: I have no idea. I'm not saying that there is a "right" way to do operator overloading 17:25 < skelterjohn> or even that operator overloading is "wrong". i'm just saying it's easy to abuse and create subtle errors 17:25 < Namegduf> Bigbear1: A function can do something non-obvious, but it is obvious that there is a function call there, mapping to an implementation somewhere. 17:25 < wrtp> Bigbear1: one nice thing about Go is that you can look at some code created by a total moron (possibly me) and have strong *guarantees* about what's going on, without having to use any tools 17:26 < Namegduf> If you're in Go and not an insane hyperoverloaded function, you can even find the source and know you're not having it overloaded 17:26 < Namegduf> Operator overloading is bad because it is non-obvious that there is a function call there to some arbitrary code 17:26 < wrtp> with C++, anything could be happening... 17:27 < skelterjohn> hidden in header files filled with macros 17:27 < skelterjohn> another thing i like about go - no macros 17:27 < wrtp> yeah 17:27 < Namegduf> And what's more, you're not *supposed* to be thinking about that. 17:27 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has quit [Quit: leaving] 17:27 < Namegduf> + is not supposed to be thought about, it's supposed to "just work". 17:27 < wrtp> you know, one of the things that i continue to really enjoy in go is... you declare everything only once. 17:27 < wrtp> no header files to keep in sync 17:28 < skelterjohn> i was jsut getting irritated by that when writing ObjC 17:28 < skelterjohn> perhaps that's what made you think of it, too 17:28 < wrtp> skelterjohn: yeah 17:28 < wrtp> but also writing C too 17:28 < Kafo> Speking of macros; I almost got a heart attack from this earlier today: http://code.google.com/p/scanmem/source/browse/trunk/scanroutines.c 17:28 < wrtp> Kafo: lol 17:28 < skelterjohn> omg 17:29 < wrtp> i've seen worse 17:29 < Kafo> That looks horrible enough. 17:30 < wrtp> there was a classic in some mail handler code i saw years ago 17:31 < wrtp> it had a 160 line macro with all kinds of unportable shit, comparing strings against hex constants, etc... but at heart the algorithm was O(n^3) 17:31 < wrtp> i deleted it, changed it to use strstr, and it went from taking 60s to process a 1MB mailbox to 0.5s... 17:32 -!- monsieur_max [~monsieurm@ip-78.net-89-2-171.rev.numericable.fr] has joined #go-nuts 17:32 -!- gtaylor [~gtaylor@99-5-124-9.lightspeed.gnvlsc.sbcglobal.net] has quit [Quit: gtaylor] 17:32 < exch> I'm guessing it was an entry for a contest on how to do shit as horrible and inefficiently as possible 17:32 < skelterjohn> the problem is that people who write such code feel very clever afterwards 17:32 < skelterjohn> when it all works 17:32 < Kafo> wrtp: Sounds great. 17:33 -!- res99 [~anonymous@201.237.130.70] has quit [Remote host closed the connection] 17:33 < wrtp> exch: it was from the imap code 17:34 < wrtp> i will never have anything to do with imap after that experience 17:34 < exch> hehe can't blame you for that I guess 17:34 < exch> oh btw. the xmlx package now uses go-charset instead of go-iconv 17:34 < exch> Should be able to use it on AppEngine now 17:35 < wrtp> here it is: http://www.koders.com/c/fid53CD199B25A3F6E297BF236895F49F1998436C29.aspx 17:35 < wrtp> except it's better than it was - no hex constants now :-) 17:36 < uriel> Kafo: that is nothing, see http://code.google.com/p/v8/source/browse/trunk/src/v8-counters.h#53 17:36 < uriel> (there is a reason why ken expelled most of the preprocessor from his Plan 9 C compiler collection) 17:37 < Kafo> A good reason that is 17:38 < wrtp> uriel: actually i don't that's too bad really. at least it's regular 17:41 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 17:44 -!- keidaa [~keidaa@cm-84.210.56.138.getinternet.no] has joined #go-nuts 17:46 -!- tobym [~tobym@75-139-118-127.dhcp.mant.nc.charter.com] has joined #go-nuts 17:46 < monsieur_max> hi people, i'm in need of advice from you. I'm a total go newbie, i never coded anything in C, but i'm rather good at Java and using openGL ES ( through Java on Android). I'm thinking since a while about learning a new language for desktop games using open gl. I was thinking about learning go rather than good old C to achieve my evil plan of world domination. Do you think it's a good choice ? ( please note that as the topic s 17:47 < wrtp> monsieur_max: your text finished at "as the topic s" 17:48 < wrtp> but in general, you're asking in the right place for us to answer "yes!" 17:48 < monsieur_max> oh no :( 17:48 < Namegduf> XD 17:48 < Namegduf> Go would be an excellent language for writing games. High performance, safe, maintainable, and simple- plus it's an area that concurrency and parallelism being essentially free helps a lot. 17:49 < Namegduf> The primary sticking point would be the quality of the OpenGL bindings and support for the desired target OSes 17:49 < wrtp> monsieur_max: depends a bit on what you want to dominate the world with, mind 17:49 < Namegduf> I'm not sure of those myself. 17:49 < Kafo> Someone mentioned the garbage collector might cause problems but otherwise it should be great. 17:50 < monsieur_max> good good :) 17:51 < monsieur_max> Namegduf: yeah i stumbled upon a project that seems quite advanced on the open gl bindings 17:51 < monsieur_max> of course windows will be probably be a bit tricky 17:52 < gmilleramilar> is valgrind at all useful in analyzing cgo programs? 17:52 < Namegduf> I'm not sure 17:52 < Namegduf> Probably best to link the C parts into a separate test app in pure C to valgrind them 17:52 < Namegduf> Valgrind does not particularly like Go, I think 17:52 < gmilleramilar> yeah, that's kinda what I'm wondering 17:52 < Namegduf> Not designed for GCed things 17:52 < jeremy_c> I've not had any luck with Valgrind and Go. 17:53 < Kafo> I just realised my gpu supports only OpenGL 1.4. :D 17:56 -!- pphalen [~pphalen@66.92.11.149] has joined #go-nuts 17:56 < skelterjohn> XNA is garbage collected - people write games using it 17:56 < skelterjohn> they just have to be careful with allocation, which isn't a bad idea overall 17:57 < skelterjohn> i had fun writing BSP stuff with C#/XNA and garbage collection 17:58 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has joined #go-nuts 17:58 < Namegduf> XNA: Because MS didn't have enough of a grip over gaming. 17:58 < skelterjohn> i don't fault them for this 17:59 < skelterjohn> i do fault them for not including a serviceable geometry library in there somewhere, though 17:59 < jeremy_c> Any C and Go expert want to help with wrapping a complex function that is part of Iup? http://www.tecgraf.puc-rio.br/iup/en/dlg/iupgetparam.html (iup project: https://github.com/jcowgar/iup.go) 18:00 < Kafo> Is the garbage collector still stop-the-world type? 18:02 <+iant> Kafo: yes 18:03 < wrtp> jeremy_c: which function? 18:03 < jeremy_c> wrtp: http://www.tecgraf.puc-rio.br/iup/en/dlg/iupgetparam.html 18:03 < wrtp> oh yeah, that's only one function, sorry 18:04 < jeremy_c> wrtp: np. Look at the example towards the bottom, that'll give a clearer picture than the docs I think. 18:04 < jeremy_c> I don't even know if it's possible to wrap. 18:05 < wrtp> jeremy_c: i think it is, but you might have problems with the callback. 18:05 < wrtp> there's an outstanding issue 18:05 < skelterjohn> is there some doc on the helper functions available in C? C.CString, C.GoString, etc? 18:05 < monsieur_max> Writing games on android ( in Java ) helps a lot about avoiding allocations 18:05 < jeremy_c> I'd take it w/o callback support over not having it at all. It's a *super* handy function. 18:05 < wrtp> skelterjohn: no, but they're not too tricky 18:06 < wrtp> jeremy_c: i haven't tried cgo with variable argument functions before 18:06 < skelterjohn> well, if i can't remember how to free something created by C.CString, it'd be nice to have a list :) 18:06 -!- vsmatck [~smack@64-142-40-6.dsl.static.sonic.net] has joined #go-nuts 18:06 < jeremy_c> skelterjohn: defer C.free(unsafe.Pointer(theCString)) 18:06 < str1ngs> C.free(unsafe.Pointer(s)) 18:06 < skelterjohn> there isn't a C.FreeCString? 18:07 * jeremy_c shrugs his sholders 18:07 < skelterjohn> i don't like using unsafe if I can avoid it 18:07 < str1ngs> meh you are making C calls anyways 18:07 < wrtp> skelterjohn: if you're using cgo you're unsafe 18:07 < skelterjohn> i understand that, but that doesn't mean i have to import it 18:07 < wrtp> skelterjohn: you can't call much C code without it 18:08 < skelterjohn> not without C.FreeCString, anyway! 18:08 < str1ngs> you can make one :P 18:09 < wrtp> jeremy_c: just try experimenting with small C functions. you'll soon work out what's possible with cgo. 18:09 < skelterjohn> anyone know where C.CString is implemented? 18:09 < str1ngs> jeremy_c: if you figure out how to pass ... let me know 18:09 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has joined #go-nuts 18:09 < jeremy_c> wrtp: I've wrapped a large portion of Iup so far. 18:10 < jeremy_c> str1ngs: I'd like to know, but I left those ones to do last. Luckly Iup doesn't *require* them for 99% of programs. 18:11 < str1ngs> jeremy_c: I have the same problem here https://github.com/libgit2/libgit2/blob/development/include/git2/commit.h#L289 18:11 < wrtp> jeremy_c: are all the ... params of the same type? 18:12 < jeremy_c> wrtp: nope, not in this function. 18:13 < wrtp> jeremy_c: all with the same sizeof? (he says, hopefully) 18:13 < jeremy_c> wrtp: and to make matters worse, they are two way.... i.e. int age = 10; IupGetParam("Age: %i", &age); ... presents a dialog with a spinner containing 10 and label of "Age". When clicking OK, age will now be whatever the user entered. 18:13 < wrtp> they're all pointers? 18:13 < jeremy_c> wrtp: all pointers. 18:13 < wrtp> that makes things easier 18:13 < wrtp> much easier 18:13 < jeremy_c> so I guess they could be void* 18:13 < wrtp> yeah 18:13 < wrtp> strictly speaking it's unportable, but noone's looking 18:13 < jeremy_c> wrtp: scroll to the bottom of that page, there is a good example. 18:15 < wrtp> looks like a security hole waiting to happen, to me. 18:15 < wrtp> no way for it to know how big those string buffers are 18:15 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has quit [Quit: Leaving.] 18:15 < str1ngs> Any C function that returns a value may be called in a multiple assignment context to retrieve both the return value and the C errno variable as an os.Error. For example: 18:16 < str1ngs> I didnt know this 18:16 < str1ngs> n, err := C.atoi("abc") 18:16 < wrtp> to call with varargs, just create a wrapper function with as many extra void* arguments as you ever might need (say 50) 18:16 < jeremy_c> wrtp: I think there is a format param to tell it how large the buffer is. 18:17 < wrtp> jeremy_c: they're not using it though... 18:17 < jeremy_c> true. 18:17 < str1ngs> wrtp: in my case all the ... are the same type 18:17 < str1ngs> wtf is that even called again I forget 18:18 < wrtp> str1ngs: it doesn't really matter - it's easy to create a slice of unsafe.Pointers 18:18 < jeremy_c> variadic 18:18 < wrtp> each pointing to a different type 18:19 < str1ngs> wrtp: so something like []unsafe.Pointers{foo,bar} ? 18:19 < str1ngs> with & of course 18:19 < wrtp> yeah 18:19 < str1ngs> an the pass up... ? 18:19 < wrtp> actually probably more like *[30]unsafe.Pointers{&foo, &bar} 18:20 < wrtp> erm 18:20 < str1ngs> ok how do I pass that though 18:20 < str1ngs> pointers... iirc 18:20 < wrtp> maybe &[30]unsafe.Pointers{...} 18:20 < wrtp> i dunno if you can do that 18:21 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 264 seconds] 18:21 < wrtp> yeah you can, cool 18:22 < wrtp> str1ngs: you'd pass the pointer and its size to C; then the C would call the function with 30 parameters, each tediously picked from the array 18:22 < str1ngs> oh really 18:23 < str1ngs> I'll try this 18:24 -!- vinisterx [~ryan@74-129-201-27.dhcp.insightbb.com] has quit [Read error: Operation timed out] 18:25 -!- vinisterx [~ryan@74-129-201-27.dhcp.insightbb.com] has joined #go-nuts 18:25 < str1ngs> hmm nope I still get unexpected type: ... 18:27 < jeremy_c> str1ngs: I just filed a bug report on better error handling for that message. It was accepted. 18:27 < str1ngs> jeremy_c: whats the bug? 18:27 < jeremy_c> An easy test is: C.printf(C.CString("hello")) that'll fail 18:28 < str1ngs> oh nice test 18:28 -!- artefon [~thiago@150.164.2.20] has quit [Quit: bye] 18:28 < str1ngs> so how does ... get handled should it be? 18:28 -!- photron_ [~photron@port-92-201-54-223.dynamic.qsc.de] has joined #go-nuts 18:28 < jeremy_c> str1ngs: have not figured that out and my bug report doesn't handle that, just proper reporting of the error. 18:29 < jeremy_c> http://code.google.com/p/go/issues/detail?id=1800 18:31 < wrtp> jeremy_c: something along the lines of this: http://pastebin.com/3EdSRnt8 18:32 < str1ngs> wrtp: ah thats a good idea 18:32 < wrtp> not wildly efficient, but something like that should work (assuming IupGetParam doesn't fill in args after it's returned 18:33 -!- huin [~huin@91.85.171.238] has joined #go-nuts 18:33 < jeremy_c> wrtp: thanks, I'll give it a go and see how much damage I can do :-) 18:39 -!- stalled [~stalled@unaffiliated/stalled] has quit [Quit: ...] 18:39 -!- Sake [~Sake@163.5.72.40] has joined #go-nuts 18:40 < Sake> Hi everybody 18:40 -!- tobym [~tobym@75-139-118-127.dhcp.mant.nc.charter.com] has quit [Ping timeout: 258 seconds] 18:40 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 18:41 < skelterjohn> hi 18:41 -!- tobym [~tobym@75-139-118-127.dhcp.mant.nc.charter.com] has joined #go-nuts 18:42 < Sake> I have a question : int, string or float are special type in go or they inherited from an initial object ? 18:43 < str1ngs> Sake: go is not like say ruby. they are defined types 18:44 < Namegduf> Go has no base Object thing. 18:44 < Namegduf> Go doesn't even have a hierarchy. 18:44 < Namegduf> Or inheritance. 18:44 < Namegduf> So, yeah, nothing is inherited from anything. 18:44 < Sake> Hum ok, thanks ;) 18:44 < iTonnerre> Unless explicitly 18:45 < skelterjohn> there is no "float" type 18:45 < Namegduf> You can explicitly do things that may do some of the same things inheritance does in other languages 18:45 < Namegduf> There is no "inheritance" in the language itself, explicit or otherwise, though 18:45 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 18:46 < Sake> ok 18:46 < wrtp> break away from the tyranny of hierarchy! :-) 18:46 < skelterjohn> int, string and float64 are primitives. if you come from java, it's like the lower case int and float 18:46 < skelterjohn> though java has no string primitive 18:46 < aiju> skelterjohn: also, they don't suck 18:46 < aiju> unlike java primitives 18:46 < Namegduf> If you come from Ruby, forget everything and relearn programming from scratch. :P 18:46 < skelterjohn> i don't know what about java primitives sucks, specifically, but i won't argue the point 18:47 < Sake> I come from Java and c++ 18:47 < aiju> skelterjohn: they are limited in all kinds of ways 18:47 < Namegduf> Go's a lot more lightweight and simple than a lot of "dynamic" languages, and focused on directly solving stuffs 18:47 < aiju> Go is actively hostile to huge bloated libraries 18:47 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts 18:48 < NBGuest> rob 'go' pike speaking at Twitter tomorrow 18:48 < aiju> since when is he called rob 'go' pike? 18:48 -!- oki__ [58985233@gateway/web/freenode/ip.88.152.82.51] has joined #go-nuts 18:48 < skelterjohn> is twitter a place? 18:48 -!- bthomson [~bthomson@pool-71-114-64-197.washdc.dsl-w.verizon.net] has joined #go-nuts 18:48 < aiju> i call him rob 'mux' pike 18:48 < NBGuest> twitter is in your mind 18:48 < skelterjohn> his google groups alias is rob "commander" pike 18:49 < Namegduf> He's Commander Rob. 18:49 < aiju> Reichspropagandaminister Rob 18:49 < aiju> an alliteration! 18:49 < Namegduf> Supreme Leader of the Go Battle Fleets. 18:49 < jeremy_c> wrtp: I'm having two problems, 1: *p = C.int(*a) results in an error: invalid indirect of a (type interface{ }) 18:49 -!- pharris1 [~Adium@rhgw.opentext.com] has joined #go-nuts 18:50 < jeremy_c> i.e. line 20 of your example: http://pastebin.com/3EdSRnt8 18:50 -!- pharris [~Adium@rhgw.opentext.com] has quit [Read error: Connection reset by peer] 18:50 < aiju> using cgo makes baby jesus cry 18:50 < gmilleramilar> aiju: agreed 18:51 < skelterjohn> jeremy_c: well, you can't dereference an interface 18:51 < skelterjohn> maybe "switch x := a.(type)" 18:51 < oki__> hi go'ers(?) ... are there any go benchmark comparisons? python / go maybe .... motivation is app engine obviously 18:51 < skelterjohn> and "x" instead of "*a" 18:52 < skelterjohn> oki__: app engine specific benchmarks or in general? 18:52 < Namegduf> http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=go&lang2=python3 18:52 < oki__> general 18:52 < skelterjohn> there is some code shootout benchmark collection that does it in general 18:52 < Namegduf> For Go vs Python 3 18:52 < aiju> benchmarks are meaningless 18:52 < aiju> well, almost 18:52 < skelterjohn> meaning is meaningless 18:52 < jeremy_c> skelterjohn: great, that fixed the first problem. 18:52 < Namegduf> The high results are due to a slow regex implementation 18:52 < Namegduf> And do not reflect upon Go as a language 18:53 < wrtp> jeremy_c: oops, yes, should be switch a := a.(type) { 18:53 < wrtp> skelterjohn: no need to invent a new name 18:54 < skelterjohn> no need to use the same one? :) 18:54 < aiju> shadowing names is worse than goto 18:54 < jeremy_c> wrtp: skelterjohn: second problem is: C.callIt(cFormat, cargs) ... complains about cargs, "cannot use cargs (type *[3]unsafe.Pointer) as type *unsafe.Pointer) in function argument" 18:54 < skelterjohn> oh your case is *int 18:54 < wrtp> skelterjohn: better to use the same one, then you can't accidentally use the original 18:54 < skelterjohn> so you do want to dereference whatever is in the interface 18:54 < wrtp> aiju: bollocks 18:54 < skelterjohn> wrtp: he didn't say goto was bad 18:55 < skelterjohn> perhaps he thinks it's the best think since println 18:55 < aiju> haha 18:55 -!- bthomson [~bthomson@pool-71-114-64-197.washdc.dsl-w.verizon.net] has left #go-nuts ["WeeChat 0.3.3-dev"] 18:55 < skelterjohn> &unsafe.Pointer(*cargs) 18:55 < wrtp> i don't think that'll work 18:56 < jeremy_c> nope, doesn't work. 18:56 < skelterjohn> &unsafe.Pointer(**cargs) 18:56 < wrtp> the converted expression isn't addressable 18:56 < skelterjohn> ah 18:56 < skelterjohn> well, easy to get around that. 18:56 < jeremy_c> cannot convert *cargs (type [3]unsafe.Pointer) to type unsafe.Pointer 18:56 < jeremy_c> ** doesn't work either. 18:57 < skelterjohn> ** was wrong for a number of reasons 18:57 < skelterjohn> forget i said it 18:57 < wrtp> i wonder if declaring callIt as void callIt(char *fmt, void *args[maxArgs]) 18:57 < wrtp> would work 18:57 < jeremy_c> invalid indirect of *cargs (type [3]unsafe.Pointer) 18:57 < skelterjohn> x := unsafe.Pointer(*cargs); &x 18:58 < skelterjohn> oh - thought cargs was a *[3]unsafe.Pointer 18:58 < str1ngs> jeremy_c: hehe when you get this figure out let me know 18:58 < jeremy_c> str1ngs: it'll be on github as soon as I do, I'll let you know the url. 18:58 < wrtp> skelterjohn: no need to make a new pointer. callIt(fmt, (*unsafe.Pointer)(unsafe.Pointer(cargs))) will probably work 18:59 < jeremy_c> wrtp: nope, same error when using void *args[3] in the C func signature. 18:59 < str1ngs> jeremy_c: ok thanks. I'm kind busy now but I can look at it later atleast 18:59 < wrtp> cgo could do better there 19:00 < skelterjohn> what is cargs's type, and what is the type in the C signature? 19:01 < jeremy_c> skelterjohn: http://pastebin.com/3EdSRnt8 19:02 -!- gedevan [~gedevan@83.167.106.253] has joined #go-nuts 19:02 -!- oki__ [58985233@gateway/web/freenode/ip.88.152.82.51] has left #go-nuts [] 19:02 < jeremy_c> skelterjohn: the ultimate goal is to wrap: http://www.tecgraf.puc-rio.br/iup/en/dlg/iupgetparam.html 19:03 < wrtp> jeremy_c: did my last suggestion work? callIt(fmt, (*unsafe.Pointer)(unsafe.Pointer(cargs))) 19:03 < jeremy_c> hm, missed that, trying now. 19:03 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Ping timeout: 276 seconds] 19:05 -!- snearch [~snearch@f053002142.adsl.alicedsl.de] has joined #go-nuts 19:05 < jeremy_c> wrtp: it compiled, the dialog appears but it contains no data... Looking at my C code now making sure I am calling it right. 19:06 -!- artefon [~thiago@189.59.178.70.dynamic.adsl.gvt.net.br] has joined #go-nuts 19:06 -!- artefon [~thiago@189.59.178.70.dynamic.adsl.gvt.net.br] has left #go-nuts [] 19:07 -!- Mr_Dark [~dk@poviko.demon.nl] has quit [Quit: Pokemon Universe MMORPG - #pokemon-universe - http://pokemon-universe.com] 19:09 < jeremy_c> wrtp: ah... forgot, format has to be terminated with \n... "Age: %i" will not work, "Age: %i\n" does work. So... the first part is working (only with integers). Now to make the second part (reading back from the array to the Go values). 19:09 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts 19:10 -!- TheSeeker2 [~n@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has joined #go-nuts 19:10 -!- TheSeeker [~n@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has quit [Disconnected by services] 19:10 < skelterjohn> wrtp: did you have any issues with the image you try to draw being just black? 19:11 < skelterjohn> seems to happen independent of what i put in the data 19:12 -!- nictuku [~yvesj@unaffiliated/nictuku] has quit [Quit: Leaving] 19:12 < jeremy_c> wrtp: skelterjohn: it's working! (with Integers), now the other types... 19:13 < skelterjohn> what does this library do, anyway? 19:13 < jeremy_c> skelterjohn: iup is a cross platform gui library that uses native widgets. 19:13 < skelterjohn> ah 19:13 < skelterjohn> get it working for mac :) 19:14 < jeremy_c> http://www.tecgraf.puc-rio.br/iup/ 19:14 < jeremy_c> Initial work is done for mac, but not yet officially supported. 19:14 -!- m4dh4tt3r [~Adium@c-98-210-145-213.hsd1.ca.comcast.net] has joined #go-nuts 19:14 -!- tobym [~tobym@75-139-118-127.dhcp.mant.nc.charter.com] has quit [Ping timeout: 240 seconds] 19:15 -!- tobym [~tobym@75-139-118-127.dhcp.mant.nc.charter.com] has joined #go-nuts 19:15 -!- Venom_X [~pjacobs@216-188-225-44.dyn.grandenetworks.net] has joined #go-nuts 19:17 < wrtp> jeremy_c: cool 19:19 -!- lyddonb [~beaulyddo@205-237-115-38.web-filings.isupark.org] has joined #go-nuts 19:19 < keidaa> how to get http.ResponseWriter to work with gorutines? 19:19 -!- lyddonb [~beaulyddo@205-237-115-38.web-filings.isupark.org] has left #go-nuts [] 19:19 < skelterjohn> keidaa: not sure what you mean 19:19 < keidaa> I'm trying to create a noneblocking server 19:20 < keidaa> I create a dummy handlerfunc witch starts the actual handlerfunc in a gorutine 19:21 -!- tncardoso [~thiago@189.59.134.202] has joined #go-nuts 19:21 < skelterjohn> if you give it the response writer, and no other goroutines write to it, there should be no problem 19:21 < jeremy_c> https://github.com/jcowgar/iup.go/blob/master/iup/dialog.go and usage https://github.com/jcowgar/iup.go/blob/master/demos/getparam.go 19:22 < jeremy_c> wrtp: skelterjohn: thanks for your help with this. This is the most complex C function I have to wrap, so everything else should be cake. 19:22 * jeremy_c is crossing his fingers at least 19:22 < skelterjohn> pleasure 19:24 < wrtp> np 19:28 -!- fmoo [~Adium@c-76-102-41-101.hsd1.ca.comcast.net] has joined #go-nuts 19:28 < skelterjohn> wrtp: nevermind - figured out my draw issue. just some pixel width/offset issues that i needed to suss out 19:30 < wrtp> skelterjohn: my problem at the moment is that if i do a window flush in one thread, the actual drawing happens in another thread, and by that time the flushing thread has gone on to change the source graphics 19:30 < wrtp> this causes flickering 19:31 < wrtp> i'm not quite sure how to deal with it. perhaps by using a pthread condition, yeuch 19:31 < wrtp> personally i think if i call flushWindow, it should only return when the window has actually flushed 19:34 < skelterjohn> might it be easier to synchronize it on the go side? 19:34 -!- NBGuest [~adium@unaffiliated/nbguest] has quit [Quit: leaving] 19:36 < wrtp> i don't think that's possible. the only time you know it's safe to draw from the window image is during the FlushImage call 19:36 -!- tvw [~tv@e176002031.adsl.alicedsl.de] has joined #go-nuts 19:36 < wrtp> and the problem is that that's returning before the window image has actually been called. 19:37 < wrtp> i think i need to do some thread synchronisation 19:39 -!- Bigbear11 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 19:40 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Ping timeout: 276 seconds] 19:44 -!- Bigbear11 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Ping timeout: 240 seconds] 19:45 -!- nictuku [~yvesj@84-72-7-79.dclient.hispeed.ch] has joined #go-nuts 19:45 -!- nictuku [~yvesj@84-72-7-79.dclient.hispeed.ch] has quit [Changing host] 19:45 -!- nictuku [~yvesj@unaffiliated/nictuku] has joined #go-nuts 19:45 -!- Sake [~Sake@163.5.72.40] has quit [Ping timeout: 260 seconds] 19:48 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 19:49 -!- zanget [~zanget@hurf.durf.me] has quit [Read error: Operation timed out] 19:50 < keidaa> skelterjohn: when I put it in front of http.Handle like so: go http.Handle("/", http.HandlerFunc(dispatch)) 19:50 < keidaa> it shows, but now it's blocking.. 19:51 < skelterjohn> perhaps GOMAXPROCS is 1? 19:51 < wrtp> skelterjohn: GOMAXPROCS shouldn't make a difference to correct go programs 19:51 < wrtp> other than in performance 19:51 < keidaa> I thought goroutines wasn't dependent on cpus? 19:51 < wrtp> keidaa: they're not 19:52 -!- Sake [~Sake@163.5.70.135] has joined #go-nuts 19:53 < keidaa> am I testing it right: if test { 19:53 < keidaa> test = false 19:53 < keidaa> time.Sleep(5000000000) 19:53 < keidaa> } 19:53 < keidaa> test is a global bool 19:53 < keidaa> this is in the function that shows the index page 19:54 -!- gedevan [~gedevan@83.167.106.253] has quit [Ping timeout: 252 seconds] 19:54 < keidaa> so first attempt should sleep while second attempt should go through 19:54 < Kafo> keidaa: Yes. 19:55 < keidaa> so I have duplicate tabs open, second tabs waits for first request which it shouldn't 19:55 < keidaa> I must be doing something wrong with the goroutine.. 19:56 < skelterjohn> time.Sleep() is problematic 19:56 < Kafo> keidaa: Can you post the code you use? 19:56 < skelterjohn> it will make the whole process sleep 19:56 -!- Sake [~Sake@163.5.70.135] has quit [Client Quit] 19:56 < skelterjohn> if you want other goroutines to run, use <-time.After(whatever) 19:56 < skelterjohn> that will cause thec urrent goroutine to wait, but not block the whole process 19:57 < Kafo> Shouldn't go then create another thread to execute other goroutines? 19:57 < skelterjohn> time.Sleep is a syscall, and grabs the whole process 19:57 < skelterjohn> it's out of go's hands 19:57 < skelterjohn> if it only has that one process, there is no way it can execute any logic to move goroutines around 19:57 < Kafo> Oh, okay 19:57 < keidaa> hmm.. is there a better way to fake a block? 19:58 < skelterjohn> whenever you'd write "time.Sleep(x)", instead write "<-time.After(x)" 19:58 < skelterjohn> also, "select{}" 19:58 < skelterjohn> will block forever, and allow other things to keep going 19:58 < keidaa> ok I'll try 19:59 < Kafo> I didn't know I can do "<-time.After(x)". I've always used "c := time.After(x); <-c" D: 20:00 -!- nutate [~rseymour@cacsag4.usc.edu] has joined #go-nuts 20:00 < skelterjohn> time.After(x) is a channel :) 20:00 < Kafo> Yeah, it's obvious now but I haven't thought about it earlier 20:01 < keidaa> replaced time.Sleep with select{}, still blocks :/ 20:01 < Namegduf> Go should probably implement time.Sleep() using time.After() 20:01 < Namegduf> IMO 20:01 -!- vinisterx [~ryan@74-129-201-27.dhcp.insightbb.com] has quit [Ping timeout: 240 seconds] 20:01 -!- vzx [~ryan@74-129-201-27.dhcp.insightbb.com] has joined #go-nuts 20:01 < Namegduf> Equivalent behaviour, no massive number of syscalls 20:02 < wrtp> skelterjohn: time.Sleep doesn't grab the whole process. 20:02 < skelterjohn> that's what i was told 20:02 < wrtp> skelterjohn: GOMAXPROCS has no bearing on threads created for blocking syscalls 20:02 < skelterjohn> but the conversation is foggy - i might be misrepresenting 20:02 < wrtp> Namegduf: it's the other way around - time.After is implemented using time.Sleep 20:02 < wrtp> Namegduf: Sleep is the more primitive operation 20:03 < wrtp> (currently) 20:03 < wrtp> keidaa: is this in the app engine? 20:03 < skelterjohn> then why does time.Sleep cause this issue when <-time.After() does not? 20:03 < keidaa> wrtp: no 20:03 < nutate> I'm going to start translating some parallel molecular dynamics code from C to Go 20:03 -!- photron_ [~photron@port-92-201-54-223.dynamic.qsc.de] has quit [Ping timeout: 258 seconds] 20:04 < wrtp> skelterjohn: i don't know - i'd have to see the code 20:04 < skelterjohn> nutate: i think go is great for scientific coding, i use it for my machine learning stuff 20:04 < nutate> When I say start... there is probably a 5% chance of it going anywhere due to PhD thesis writing, but... has anyone done much MPI to Go 20:04 -!- snearch [~snearch@f053002142.adsl.alicedsl.de] has quit [Quit: Verlassend] 20:04 < nutate> (I say without having googled) 20:05 < wrtp> skelterjohn: if time.After is working then time.Sleep is running in the background already with no problems 20:05 < wrtp> so there's something else wrong with the code 20:05 < wrtp> keidaa: can you paste some code that demos the problem? 20:06 < keidaa> yes just a sek 20:06 -!- Sake [~Sake@163.5.70.30] has joined #go-nuts 20:06 < wrtp> keidaa: what's your cpu usage like when your program is blocked? 20:07 < nutate> What's funny is I've done pthreads, CUDA, MPI, C, Fortran, Python, Ruby... but I have this fear with Go that I won't do it "right" 20:07 < nutate> (not that I did any of those "right" :-) 20:08 < keidaa> wrtp: normal <10% 20:08 < nutate> I'm going to write a few pages of thesis then get back to this 20:08 < wrtp> nutate: IMO there are less ways to get it "wrong" in go 20:08 < wrtp> because everything's so orthogonal 20:08 < nutate> wrtp: i should say that Perl was my first language (after BASIC) 20:08 < nutate> wrtp: which... broke me for life 20:08 * wrtp has never used perl 20:09 < nutate> It's something. 20:09 < nutate> Certainly paid my bills before I went back to school... I just feel like now there aren't jobs for crappy programmers like there were 10 years ago 20:10 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 20:11 < keidaa> wrtp: http://pastie.org/1890399 20:17 < Kafo> I should get a new computer. 20:17 < ww> if guess go has something like mpi almost built in, with netchan and rpc packages 20:17 < Kafo> Because I have a spare GeForce 9600GT GPU waiting to be used. 20:18 < ww> if you were to combine that with doozer to find cluster nodes and coordinate handing out jobs... it could work very well 20:18 < nutate> ww, we do big cluster jobs 20:18 < nutate> 1024 cores 20:18 < nutate> but we generally have that laid out 20:19 < nutate> 64-1024 cores, spread out over 32-256 nodes 20:19 < nutate> (or more) 20:19 < nutate> so I would really like to see it run like MPI where it doesn't really care if it is on a core on the same node or not 20:19 < ww> most of the pieces that you need are there 20:20 < nutate> yeah, i'll look into netchan 20:20 -!- zanget [~zanget@hurf.durf.me] has joined #go-nuts 20:20 < ww> but i'm not aware of anything that will actually do the coordination - that would be a very valuable library to write 20:20 -!- grumpytoad [~niel@t1004.greatnet.de] has left #go-nuts ["WeeChat 0.3.0"] 20:20 -!- kr [~Keith@c-24-5-193-165.hsd1.ca.comcast.net] has joined #go-nuts 20:20 < nutate> yeah... MPI has like MPI_COMM_WORLD 20:21 < nutate> where all of the processes join, and it magically figures things out 20:21 < nutate> in mpich2 it runs as a daemon 20:21 < nutate> so just handing out ids is non-trivial 20:22 < ww> yes, i would use doozer for that - shared place where everybody joins, guaranteed consistent small data store basically 20:22 < ww> the magic part is missing though :) 20:22 < nutate> it always is 20:22 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276 seconds] 20:23 -!- monsieur_max [~monsieurm@ip-78.net-89-2-171.rev.numericable.fr] has quit [Quit: Leaving.] 20:25 < nutate> hmmm doozer does look like it could handle it 20:26 < nutate> in the end that's pretty much what MPI does, but I only know MPI from a user perspective 20:26 < nutate> in MPI on doozer you'd pretty much do one write and one read from each client at the start 20:30 < skelterjohn> wrtp: how do you deal with the 22 pixels under the title bar? 20:33 < wrtp> skelterjohn: i don't know what you mean. 20:33 < wrtp> perhaps you're getting your coord tranformations wrong? 20:35 < skelterjohn> the point 0,0 in mac window coords is the upper left of the title bar 20:36 -!- ExtraSpice [~XtraSpice@88.118.35.153] has quit [Read error: Connection reset by peer] 20:36 < skelterjohn> the first pixel below the title bar is at 0, 22 20:37 * huin wonders if a channel exported with netchan.Send is supposed to break once a client disconnects 20:39 < wrtp> skelterjohn: i thought the mac coords started at bottom left 20:39 < skelterjohn> doesn't seem like it in the code i'm running 20:39 < wrtp> actually, it depends on the transformation for the view you're drawing into 20:40 < wrtp> huin: i think that's a bug really 20:40 < huin> wrtp: it does seem like one. i'll check the tracker 20:40 < wrtp> skelterjohn: so what's happening in the 22 pixels under the title bar for you? 20:40 < wrtp> (i haven't got a title bar... nothing so advanced, i'm stuck on update synchronisation) 20:41 < skelterjohn> can't see them - but it was offsetting my image 20:41 < skelterjohn> so i moved my NSImageView frame down 22 pixels 20:41 < skelterjohn> problem solved 20:42 < wrtp> ah, so you mean the 22 pixels *of* the title bar? 20:42 < skelterjohn> yes 20:42 < skelterjohn> i didn't mean under as in y-1 20:42 < wrtp> i dunno, i'll burn that bridge when i cross it 20:42 < skelterjohn> i meant under as in being overlaid 20:42 < wrtp> ahh 20:42 < skelterjohn> sorry 20:42 < wrtp> i think the go api should expose only the pixels outside the title bar 20:43 < wrtp> (unless you ask otherwise, i guess) 20:43 < skelterjohn> i think so too 20:43 < skelterjohn> this happens on iphone apps too 20:43 < skelterjohn> i had to trial-and-error to figure out exactly how thick it is 20:43 < skelterjohn> 22. 20:43 < skelterjohn> possible i'm doing something silly, certainly 20:44 < skelterjohn> but i blame an overly convoluted API 20:45 < skelterjohn> btw - trying to turn a go []byte into a C UInt8* - is unsafe.Pointer(&theSlice) correct? 20:45 < skelterjohn> i feel like it isn't 20:45 < aiju> everything is allowed in love, war and cgo 20:46 < skelterjohn> i feel like it's the UInt8** 20:46 < skelterjohn> but i'm having trouble getting the syntax together to dereference it 20:46 < skelterjohn> i can't unsafe.Pointer(theSlice) :\ 20:48 < skelterjohn> unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(&theSlice))) 20:48 < skelterjohn> :s 20:48 -!- Sake [~Sake@163.5.70.30] has left #go-nuts [] 20:48 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:5e9:7e17:7ee4:5254] has quit [Quit: Leaving.] 20:49 < skelterjohn> unsafe.Pointer(*(*unsafe.Pointer)(unsafe.Pointer(&theSlice))) 20:49 < skelterjohn> that works 20:50 < aiju> hahaha 20:53 < ww> 0unsafe.Pointer(&theSlice[0]) 20:53 < skelterjohn> ahhhh 20:53 < skelterjohn> yes of course 20:53 < skelterjohn> theSlice[0] 20:54 < skelterjohn> thank you 20:54 < ww> np :) 20:55 < ww> i sometimes get the feeling that cgo should relax type conversion/casting rules 20:55 < ww> one library i was dealing with gave values char ** 20:56 < ww> each element of the array was null terminated as strings are wont to be 20:56 < ww> and the array itself was null terminated 20:56 < ww> dealing with that from go was a nightmare 21:00 < skelterjohn> wrtp: so the issue you're dealing with now is that CGImageCreate returns immediately and does its work in a different thread, right? 21:01 < wrtp> ww: if in doubt, cast to *[1e9]T... 21:01 < skelterjohn> or rather, it lazily accesses the data to draw 21:01 < wrtp> no, it's that [window display] and/or [window flushImage] does that 21:01 < wrtp> (sometimes! which is my current problem) 21:03 < wrtp> basically, if one thread calls [window display], then another (probably the main thread) gets invoked to do the job 21:03 < skelterjohn> hmm - i don't use either of those methods 21:03 < skelterjohn> i just set the image of an NSImageView and it takes care of it 21:03 < skelterjohn> drawing in another goroutine *appears* to be fine, but who knows really 21:03 < skelterjohn> could be getting lucky 21:03 < wrtp> are you doing any kind of animation? 21:04 < ww> i've not looked at the os x special sauces... is NS the NeXTSTEP heritage? 21:04 < skelterjohn> yes - changing the pattern every second 21:04 < wrtp> ww: yes 21:04 < skelterjohn> ww: yes 21:04 < wrtp> jinx 21:04 < skelterjohn> :x 21:04 < Namegduf> Just in case you forgot which OS you were on, it stuck its name in all its APIs. 21:04 < skelterjohn> heh 21:04 < Namegduf> And then the name was wrong. 21:05 < ww> <g> 21:05 < skelterjohn> there are more than the NS functions 21:05 < ww> i thought that looked familiar 21:05 < wrtp> Namegduf: the obj c method namespace is global, so they need to disambiguate somehow... 21:05 < skelterjohn> each framework has its own prefix, really 21:05 < wrtp> contract with Go. 21:05 < wrtp> s/contract/contrast/ 21:05 < Namegduf> wrtp: Since they're basically the only people using that language, why didn't they just fix it? 21:05 * ww fondly remembers the surplus 68040 slab that i had in university 21:05 < wrtp> Namegduf: because they didn't know how 21:06 * wrtp still has a nextcube 21:06 -!- keidaa [~keidaa@cm-84.210.56.138.getinternet.no] has quit [Quit: Leaving] 21:06 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has quit [Remote host closed the connection] 21:06 < wrtp> Namegduf: they didn't know how 21:06 < wrtp> years ago i thought that objective c should move to a protocol-based type system 21:06 < ww> wrtp: colour? 21:06 < wrtp> black 21:06 < ww> nono, the screen 21:07 < wrtp> but they moved to something more like java instead 21:07 < ww> b&w or colour? 21:07 < wrtp> ww: no, 2 bit 21:07 < ww> yeah! 21:07 < wrtp> ww: they were really nice machines 21:08 < wrtp> took until last year before Go did it right 21:08 < skelterjohn> did what right 21:09 < ww> i remember my first compsci class... they were using a language called OOT... the first day they said, go to the bookstore and buy your windows copy... i raised my hand and... 21:09 < wrtp> did a decent protocol-based type system 21:09 < skelterjohn> and "until last year" doesn't really indicate that they took a long time 21:09 < skelterjohn> :) 21:09 < ww> got sent to a dungeon underneath the physics building where someone pointed me at an ftp site... i still had to buy the windows copy though... 21:10 < wrtp> windows hardly existed when i was at uni 21:10 < wrtp> at least, i don't remember it. maybe it was still dos. when did windows come out? 21:11 < ww> 95 had just come out 21:11 < skelterjohn> before my conscious computer memory 21:11 < ww> in... errm... 94 iirc 21:11 < nutate> I had took "non-honors" comp sci... in C... honors was in Java. 21:11 -!- dforsyth [~dforsyth@ec2-50-18-22-230.us-west-1.compute.amazonaws.com] has joined #go-nuts 21:11 < wrtp> i lie, windows 2.0 was out... 21:11 -!- moraes [~moraes@189.103.176.38] has quit [Quit: Leaving] 21:11 < Namegduf> nutate: Ew 21:12 < nutate> that was the only A+ I ever got in my life... still proud. 21:12 < skelterjohn> java came out mid-highschool for me 21:12 * wrtp feels old 21:12 < skelterjohn> i think it made it to the AP exam 2 years after i graduated 21:12 < skelterjohn> <- 29 21:12 < nutate> <- 32 21:13 < wrtp> <- 43 21:13 < nutate> born in 3 different decades 21:13 * ww repairs http://en.wikipedia.org/wiki/Object-Oriented_Turing 21:13 < skelterjohn> i was writing C code when i was the age you were when i was born 21:13 -!- fmoo [~Adium@c-76-102-41-101.hsd1.ca.comcast.net] has quit [Quit: Leaving.] 21:14 < wrtp> i didn't write any C till i was 19 21:14 < wrtp> bbc basic was my thing 21:14 < wrtp> marvellous it was 21:14 < wrtp> and 6502 assembler 21:14 < dforsyth> you guys are old 21:15 < skelterjohn> :( 21:15 < skelterjohn> i'm in my 20s! barely 21:15 < dforsyth> but c ftw 21:15 < skelterjohn> that means i'm young 21:15 < wrtp> dforsyth: feel the wisdom :-) 21:15 < dforsyth> :) 21:15 < dforsyth> i feel old 21:15 < skelterjohn> wrtp: you're the same age as my academic advisor 21:15 < dforsyth> im 22 and spent the last 3+ years writing lots of c 21:15 < dforsyth> while all my friends were making internet on rails or something 21:16 < skelterjohn> cool group of friends 21:16 < skelterjohn> my friends and i played halo 21:16 < skelterjohn> that was pretty cool too 21:16 < dforsyth> i remember halo 21:16 < dforsyth> spent much or freshman year doing that 21:16 < skelterjohn> it's not like it's gone... 21:16 < dforsyth> of* 21:16 * wrtp played Elite 21:16 < dforsyth> its gone for me, i dont have an xbox anymore 21:16 < skelterjohn> is that an arcade? 21:16 < wrtp> that was stupendous for its time 21:16 < dforsyth> i move across the country to make internets on rails 21:17 < skelterjohn> commodore64? 21:17 < dforsyth> and left my xbox behind 21:17 -!- huin [~huin@91.85.171.238] has quit [Quit: bedtime] 21:17 < wrtp> skelterjohn: http://en.wikipedia.org/wiki/Elite_(video_game) 21:17 < ww> oh now that's ironic 21:17 < ww> there's now a http://code.google.com/p/opent/ which runs in the JVM 21:17 < skelterjohn> definitely never heard of a bbc micro before today 21:17 < wrtp> it fitted a multi-galaxy 3d first-person shooter/trader into 32K inc video memory 21:18 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 21:18 < wrtp> astonishing 21:18 < ww> and oot was replaced with... java... the year after i finished 21:18 < wrtp> with no external storage at all 21:18 < skelterjohn> and quake claims to be the first true 3d FPS! 21:18 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 21:19 < wrtp> well, elite probably cheated, but it did hidden line removal, even if it didn't fill the polygons 21:19 < skelterjohn> i made 3d pong in HS 21:19 < skelterjohn> that was fun, and got me some fame among the students 21:20 < skelterjohn> well...fame might be the wrong word 21:20 < dforsyth> anyone know what app.yaml needs to look like for go? 21:20 < wrtp> dforsyth: there's an example on the website 21:21 < dforsyth> the mustacheio app, right? 21:21 < dforsyth> i made mine look like that and i get compile errors or something 21:21 < wrtp> no, the hello app 21:21 -!- moraes [~moraes@189.103.176.38] has joined #go-nuts 21:21 < ww> hrmmm... TuringPlus - "a concurrent systems programming variant" 21:22 < wrtp> first thing you come do 21:22 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 21:22 < dforsyth> that doesnt show the handlers part of the file 21:23 < wrtp> dforsyth: i don't think you need one 21:23 < wrtp> handlers are specified in the go program 21:23 < dforsyth> mustachio has it set, so i figured i needed it 21:23 < dforsyth> ill try it without them later, i guess 21:23 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has joined #go-nuts 21:24 < wrtp> oh, i haven't looked a mustachio 21:25 < ww> hmmm... sounds like plan9 borrowed some indeas from TUNIS... which was implemeted in a language that sounds a lot like Go's ancestor 21:26 < wrtp> i've not heard of TUNIS 21:27 -!- NBGuest [~adium@unaffiliated/nbguest] has quit [Quit: leaving] 21:27 < ww> not much info on wikipedia, i hadn't heard of it before i just followed my nose there... 21:27 -!- Nitro [~Nitro@unaffiliated/nitro] has quit [Ping timeout: 240 seconds] 21:27 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 21:27 < wrtp> ww: what do you think plan9 borrowed from TUNIS? 21:27 < ww> but concurrent euclid (ancestor of turing+) sounds go-like 21:28 < wrtp> in what way? 21:30 < ww> the co/goroutine "processes" as concurrent euclid calls them, used in a system programming language 21:30 < wrtp> coroutines are an old paradigm 21:30 < ww> and as for tunis, maybe the modularity without being too mach-like 21:31 < ww> wrtp: sure, but for writing a unix clone? afaik that's only been seriously done in c 21:31 < wrtp> the core of plan 9 is really the name space 21:32 < wrtp> ww: plan 9 didn't use coroutines 21:32 < ww> agreed, no i'm going to backtrack on my claim that plan9 may have been influenced by tunis 21:33 -!- TheMue [~TheMue@p5DDF7617.dip.t-dialin.net] has quit [Quit: TheMue] 21:33 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has left #go-nuts [] 21:34 < ww> but the idea of using a coroutine-language for systems programming is go's thing now... but that was done in the early 80s at uoft 21:35 < wrtp> ww: goroutines are a bit different because they turn into thread/processes when necessary 21:35 < ww> trouble is that was also the time of no free software and it probably seemed reasonable to them to just run it at uoft and maybe license it one day to somewhere else so it withered 21:36 < wrtp> inferno's model was very similar (except that they didn't run in parallel) 21:36 -!- marino0 [~marino0@163.5.72.64] has quit [Quit: Leaving] 21:36 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 21:36 < wrtp> ww: what language are you referring to? 21:36 < ww> hard to say with any certainty, just speculating... i'm 5000 miles from toronto now and even then you might need an archaeologist to find out what tunis actually did with concurrent euclid 21:36 < wrtp> :-) 21:36 < ww> apparently, concurrent euclid 21:38 < ww> which i learned is a... great-uncle? of object oriented turing, which is what comp sci courses were taught in at utoronto when i was there 21:39 -!- XenoPhoenix [~Xeno@cpc13-aztw24-2-0-cust23.aztw.cable.virginmedia.com] has quit [Remote host closed the connection] 21:39 < wrtp> i think universities liked pascal-like syntax. my first lang at uni was pascal 21:40 -!- imsplitbit [~imsplitbi@64.39.4.132] has quit [Quit: Bye!] 21:40 < wrtp> an utterly flawed language 21:41 < aiju> haha 21:41 < aiju> wrtp: have you read the kernigham paper? ;P 21:41 < wrtp> aiju: of course 21:42 < wrtp> long after i'd stopped programming in pascal though 21:42 -!- XenoPhoenix [~Xeno@cpc13-aztw24-2-0-cust23.aztw.cable.virginmedia.com] has joined #go-nuts 21:43 < str1ngs> ww: you are from the TO area? 21:43 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 21:44 < ww> montreal actually, but i went to school there 21:44 < str1ngs> ah I'm from outside toronto originally now I'm in BC 21:45 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Read error: Connection reset by peer] 21:48 -!- yudishtira [~Adium@pool-71-165-239-253.lsanca.dsl-w.verizon.net] has joined #go-nuts 21:48 -!- Tonnerre [tonnerre@netbsd/developer/tonnerre] has quit [Quit: Foo] 21:49 -!- dlowe2 [~dlowe@64.1.210.2.ptr.us.xo.net] has joined #go-nuts 21:49 -!- dlowe2 [~dlowe@64.1.210.2.ptr.us.xo.net] has quit [Client Quit] 21:51 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has quit [Remote host closed the connection] 21:53 < skelterjohn> can anyone point me at an example of giving a go function as a callback to cgo? 21:55 < ww> oh, skelterjohn if you're trying to do what i think you are, i had to jump through a c wrapper 21:56 < skelterjohn> well, certainly C code will be involved... 21:56 < ww> https://bitbucket.org/ww/goraptor/src/be0acaa10b1c/craptor.c 21:56 < skelterjohn> but i can't poll from the go side, or anything 21:56 < skelterjohn> rather, i don't want to 21:56 < skelterjohn> craptor...lol 21:57 < wrtp> skelterjohn: http://stackoverflow.com/questions/4312894/c-callbacks-and-non-go-threads/5153178#5153178 21:57 < ww> the functions in there set up a callback that raptor uses that calls into go 21:57 < ww> couldn't make those calls directly 21:57 < wrtp> skelterjohn: you only have to do the thread synchronisation thing if the callback is from a non-Go-created thread 21:57 < skelterjohn> it isn't, in my case 21:58 < wrtp> that's ok then. it's not too hard, assuming the callback function has a void* context pointer 21:59 < skelterjohn> what is a context pointer :s 22:00 < wrtp> skelterjohn: just some data that you pass to the code that will call the callback function 22:00 < wrtp> and it calls the callback function with that data 22:01 < ww> does it involve trying to pass a go function to a c function that expects a function argument? 22:01 < wrtp> ww: you asking me? 22:01 < ww> no, skelterjohn's problem 22:02 < skelterjohn> i am writing both the C code and go code involved 22:02 < ww> if it does, that's what i had to work around with those wrappers - icouldn't get the type conversion to make the compiler happy 22:02 < skelterjohn> so i don't have to bend things to suit some common way of doing it 22:03 < ww> in that case there should be nothing special to do apart from //export the go functions involved 22:03 < wrtp> skelterjohn: the basic technique is to export a Go function that takes an argument that holds the closure; it then calls the closure. 22:03 < yudishtira> anyone have any luck with xcode4 syntax highlighting? 22:04 < wrtp> it's slightly complicated by the fact that you can't convert a func to unsafe.Pointer. 22:05 < skelterjohn> yudishtira: no - i had xcode 3 syntax coloring work, but not xcode 4 22:05 < wrtp> but i'm sure you can work it out 22:05 < skelterjohn> i appreciate the (possibly unwarranted) confidence 22:06 < yudishtira> wrtp - yeah same - guess it's textmate then! 22:06 < skelterjohn> i use eclipse 22:06 < skelterjohn> :\ 22:07 < yudishtira> yeah not a fan of it on os x 22:07 < wrtp> i use acme. who needs coloured text? :-) 22:07 < yudishtira> haha 22:07 < skelterjohn> well, right now i'm using text wrangler because i don't want eclipse and xcode open at the same time 22:07 < ww> Aquamacs! 22:08 * skelterjohn investigates 22:09 < skelterjohn> i'd really like a simple, light-weight editor that used the filesystem for project organization and gave me a code outline for the file i'm looking at 22:09 < skelterjohn> i don't want it to have tons of building utilities - i wrote my own already and i like it 22:12 < yudishtira> i tend to fallback to textmate/terminal 22:16 -!- elephants [~elephants@76.9.192.146] has quit [Remote host closed the connection] 22:19 < skelterjohn> ww: with Aquamacs, do you know how to use it from the command line? 22:19 < skelterjohn> i'd like to go > aquamacs file.go 22:19 < skelterjohn> and have it launch/open 22:19 < skelterjohn> i can set it up so it launches (make a script that opens the app) but i don't know how to send file.go to it 22:20 -!- nictuku [~yvesj@unaffiliated/nictuku] has quit [Ping timeout: 240 seconds] 22:20 -!- prip [~foo@host131-130-dynamic.36-79-r.retail.telecomitalia.it] has joined #go-nuts 22:22 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has joined #go-nuts 22:23 < uriel> "Is there any planing using go on the web without computer and any operating sistem. 22:23 < uriel> " 22:23 < uriel> hahaha 22:23 < exch> wouldn't that be awesome 22:24 -!- wrtp [~rog@92.17.111.113] has quit [Quit: wrtp] 22:24 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 22:25 -!- NBGuest [~adium@unaffiliated/nbguest] has quit [Quit: leaving] 22:26 < uriel> as somebody answered on the list, you can use pen and paper! 22:27 < ampleyfly> if you're good you might even do correctness proofs 22:27 -!- skelterjohn [~jasmuth@128.6.168.245] has quit [Quit: skelterjohn] 22:27 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 22:27 -!- yudishtira [~Adium@pool-71-165-239-253.lsanca.dsl-w.verizon.net] has left #go-nuts [] 22:32 -!- kr [~Keith@c-24-5-193-165.hsd1.ca.comcast.net] has quit [Quit: WeeChat 0.3.4] 22:34 -!- virtualsue [~chatzilla@nat/cisco/x-kxohtmkujlbikkcd] has quit [Ping timeout: 276 seconds] 22:38 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Ping timeout: 258 seconds] 22:38 -!- NBGuest [~adium@unaffiliated/nbguest] has quit [Quit: leaving] 22:40 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 22:42 -!- jbooth1 [~jay@209.249.216.2] has left #go-nuts [] 22:43 -!- NBGuest [~adium@unaffiliated/nbguest] has quit [Client Quit] 22:47 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 22:48 -!- NBGuest [~adium@unaffiliated/nbguest] has joined #go-nuts 22:48 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has quit [Quit: Leaving.] 22:49 -!- Venom_X [~pjacobs@216-188-225-44.dyn.grandenetworks.net] has quit [Quit: Venom_X] 22:51 -!- whitespacechar [~whitespac@24-176-0-18.dhcp.klmz.mi.charter.com] has joined #go-nuts 23:00 -!- Tonnerre [tonnerre@netbsd/developer/tonnerre] has joined #go-nuts 23:05 -!- davisp [~davisp@couchdb/developer/davisp] has quit [Quit: Terminated with extreme prejudice - dircproxy 1.0.5] 23:09 -!- hungrygruffalo [~hungrygru@host86-135-59-30.range86-135.btcentralplus.com] has quit [Read error: Connection reset by peer] 23:18 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by peer] 23:19 -!- aho [~nya@fuld-590c6580.pool.mediaWays.net] has joined #go-nuts 23:20 -!- pharris1 [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.] 23:25 -!- Wiz126 [~Wiz@24.229.245.72.res-cmts.sm.ptd.net] has quit [Ping timeout: 276 seconds] 23:44 -!- tvw [~tv@e176002031.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 23:47 -!- kr [~Keith@c-24-5-193-165.hsd1.ca.comcast.net] has joined #go-nuts 23:55 -!- DerHorst [~Horst@e176096154.adsl.alicedsl.de] has joined #go-nuts 23:59 -!- saracen [~saracen@81-5-140-201.dsl.eclipse.net.uk] has joined #go-nuts --- Log closed Thu May 12 00:00:50 2011