--- Log opened Tue May 17 00:00:23 2011 --- Day changed Tue May 17 2011 00:00 < Tonnerre> uriel: hum, where? I didn't find any; just the hint that there's a Go patch for libthrift 00:02 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 00:02 < uriel> hmmm... you might be right, I can't find any after looking around for a second :/ 00:02 < uriel> so maybe libthrift is the way to go :) 00:02 -!- boscop_ [~boscop@f055241211.adsl.alicedsl.de] has joined #go-nuts 00:05 -!- boscop [~boscop@g226231178.adsl.alicedsl.de] has quit [Ping timeout: 246 seconds] 00:06 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 00:12 -!- dfr|bohconf [~dfr|work@173-166-160-241-washingtondc.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 00:13 -!- genbattle [~nick@203-114-137-9.wir.sta.inspire.net.nz] has joined #go-nuts 00:17 -!- rael_wiki [~chatzilla@unaffiliated/rael-wiki/x-8420294] has joined #go-nuts 00:19 < rael_wiki> hello, I guess it's quite OS-dependent but since goroutines are essentially threads do they get executed by different cores even though they belong to the same process? 00:22 < genbattle> the go runtime allows you to specify how many threads and processes your program uses i think 00:22 < genbattle> i've only ever played around with the threads value though 00:22 < genbattle> http://golang.org/pkg/runtime/#GOMAXPROCS 00:24 < rael_wiki> genbattle: so depending on the value I set there the compiler decides whether to build a new process or a new thread as a goroutine? 00:24 < genbattle> it's not controlled in the compiler, it's controlled by the runtime 00:25 < genbattle> golang has a chunk of code called the runtime that it shops with all applications that controls aspects of the application such as the garbage collection and process/thread management 00:25 < genbattle> *ships 00:25 < genbattle> it compiles it right into the binary executables 00:26 < mjard> which is why applications start out at about a meg 00:26 < rael_wiki> interesting.... 00:28 -!- danilo04 [~danilo04@rm2348358874.student.rit.edu] has joined #go-nuts 00:31 -!- moraes [~moraes@189.103.179.31] has joined #go-nuts 00:33 -!- AmourDeZombi [~jphillips@c-68-41-9-175.hsd1.mi.comcast.net] has joined #go-nuts 00:36 -!- AmourDeZombi [~jphillips@c-68-41-9-175.hsd1.mi.comcast.net] has quit [Client Quit] 00:37 -!- twopoint718 [~chris@fsf/member/twopoint718] has joined #go-nuts 00:38 -!- AmourDeZombi [~jphillips@c-68-41-9-175.hsd1.mi.comcast.net] has joined #go-nuts 00:47 < kevlar> mjard: actually, that's because everything that you use is statically linked. The runtime is a very tiny part of the executable. 00:49 < mjard> ok, runtime + standard library 00:51 < kevlar> mjard: not really even the standard library; only what you use. 00:51 < mjard> right 00:53 < mjard> no imports: -rwxrwxr-x 1 mjard mjard 224K May 16 17:56 6.out 00:53 < kevlar> now, as soon as you import "fmt" your exe goes from 224K to 1M, lol 00:53 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 00:53 < kevlar> (an empty C executable is something like 10-15k) 00:54 -!- boscop_ [~boscop@f055241211.adsl.alicedsl.de] has quit [Ping timeout: 246 seconds] 00:54 -!- gmilleramilar1 [~gmiller@cpe-67-247-23-50.nyc.res.rr.com] has joined #go-nuts 00:55 < gmilleramilar1> does gotest look for packages in GOPATH? 00:55 -!- boscop_ [~boscop@f055196092.adsl.alicedsl.de] has joined #go-nuts 01:01 -!- genbattle [~nick@203-114-137-9.wir.sta.inspire.net.nz] has quit [Quit: Leaving] 01:03 < rael_wiki> um... now I have another question. As far as I have understood the runtime environment decides whether to create a new process or a new thread for each goroutine, right? 01:03 < kevlar> no 01:03 < kevlar> goroutines are completely decoupled from OS threads 01:03 < kevlar> and the runtime never creates new processes 01:04 < rael_wiki> kevlar: um... then what's going on when I start a goroutine? 01:04 < kevlar> depending on the number processors in GOMAXPROCS, the runtime will schedule any unblocked goroutine on any available processor (read: thread) whenever that processor's goroutine yields control. 01:05 < rael_wiki> ok 01:06 < kevlar> !gofaq goroutines 01:06 < GoBIR_> kevlar: Q. goroutines - http://golang.org/doc/go_faq.html#goroutines 01:06 < GoBIR_> kevlar: Q. closures and goroutines - http://golang.org/doc/go_faq.html#closures_and_goroutines 01:06 < rael_wiki> kevlar: um... scheduling on available processors isn't an OS task? 01:06 < rael_wiki> ok now I check the links 01:07 < kevlar> There are also some caveats to be aware of when using GOMAXPROCS > 1: 01:07 < kevlar> !gofaq concurrency 01:07 < GoBIR_> kevlar: Q. Concurrency - http://golang.org/doc/go_faq.html#Concurrency 01:08 < kevlar> rael_wiki: Scheduling on multiple processors uses OS tasks/threads, yes, but a goroutine is not a thread. Goroutines can move between threads and share an address space with any other goroutine that has, will, or is executing on that thread. 01:10 < kevlar> (I might also point out that, at present, Go on AppEngine only supports one thread of execution.) 01:12 < rael_wiki> kevlar: ok, I'm following you but I don't get how the runtime can decide about the scheduling of the routines, which should be decided by the OS scheduler 01:12 -!- GoBIR [~gobir@70-90-168-189-SFBACalifornia.hfc.comcastbusiness.net] has joined #go-nuts 01:12 -!- GoBIR_ [~gobir@70-90-168-189-SFBACalifornia.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer] 01:14 -!- dju__ [dju@fsf/member/dju] has quit [Read error: Connection reset by peer] 01:14 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts 01:15 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 01:16 -!- nteon [~nteon@c-98-210-195-105.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 01:18 < kevlar> rael_wiki: the OS scheduler handles scheduling threads. The Go runtime handles multiplexing all of your goroutines onto the OS threads. 01:18 < kevlar> For instance, if you have a goroutine that's waiting for the disk to spin up, the runtime can schedule another routine that's sending something over the network while it's waiting 01:19 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 01:19 < kevlar> or, commonly, if you have a goroutine that's waiting on a read from a channel, the runtime can schedule another goroutine (possibly the one who's going to write to that channel) to run while it waits 01:20 -!- gmilleramilar1 [~gmiller@cpe-67-247-23-50.nyc.res.rr.com] has left #go-nuts [] 01:21 < rael_wiki> kevlar: ok, now I got how it's done, I still have a doubt anyway: as far as I know (but maybe it's OS-dependent) different processes can use different cores but the threads of a single process will always be run on the same core of the process they belong, right? 01:22 -!- boscop_ [~boscop@f055196092.adsl.alicedsl.de] has quit [Ping timeout: 246 seconds] 01:23 < rael_wiki> I mean: if my program creates 2 goroutines that don't get blocked theese two goroutines will execute on the same proc core, there's no way for them to execute on different cores, right? 01:25 -!- boscop_ [~boscop@g227144043.adsl.alicedsl.de] has joined #go-nuts 01:26 -!- achoo [~achoo@host-134-71-204-221.allocated.csupomona.edu] has quit [Quit: achoo] 01:30 -!- aho [~nya@fuld-590c644d.pool.mediaWays.net] has quit [Quit: EXEC_over.METHOD_SUBLIMATION] 01:38 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 01:40 -!- AmourDeZombi [~jphillips@c-68-41-9-175.hsd1.mi.comcast.net] has left #go-nuts ["sleep"] 01:43 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 01:51 < kevlar> rael_wiki: rael_wiki no, goroutines are COMPLETELY decoupled from the OS thread 01:52 < kevlar> You can lock them on a core if you want, but that's abnormal. 01:53 -!- achoo [~achoo@host-134-71-203-246.allocated.csupomona.edu] has joined #go-nuts 01:53 < kevlar> rael_wiki: any goroutine that can execute will execute on whatever thread the runtime can schedule it on. 01:53 < kevlar> Just start writing programs and see how it all works. I think you'll find that the runtime is a lot better than you might worry. 01:55 < rael_wiki> kevlar: ok, thank you for the explanations 02:01 -!- rael_wiki [~chatzilla@unaffiliated/rael-wiki/x-8420294] has quit [Quit: ChatZilla 0.9.86.1 [Iceweasel 3.5.19/20110430164311]] 02:04 -!- pearle [~pearle@blk-224-181-222.eastlink.ca] has quit [Ping timeout: 240 seconds] 02:06 -!- bthomson [~bthomson@pool-71-114-64-197.washdc.dsl-w.verizon.net] has quit [Quit: WeeChat 0.3.3-dev] 02:10 -!- ab3 [~abe@83.101.90.66] has quit [Ping timeout: 276 seconds] 02:18 -!- twopoint718 [~chris@fsf/member/twopoint718] has quit [Ping timeout: 250 seconds] 02:23 -!- pearle [~pearle@blk-224-181-222.eastlink.ca] has joined #go-nuts 02:23 -!- ab3 [~abe@83.101.90.66] has joined #go-nuts 02:35 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 02:54 -!- kr [~Keith@204.14.152.118] has quit [Ping timeout: 246 seconds] 03:03 -!- achoo [~achoo@host-134-71-203-246.allocated.csupomona.edu] has quit [Quit: achoo] 03:04 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Read error: Connection reset by peer] 03:04 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #go-nuts 03:12 -!- niemeyer [~niemeyer@200-102-196-125.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 263 seconds] 03:15 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 03:21 -!- allengeorge_ [~allengeor@c-24-7-17-50.hsd1.ca.comcast.net] has joined #go-nuts 03:24 -!- danilo04 [~danilo04@rm2348358874.student.rit.edu] has quit [Ping timeout: 240 seconds] 03:25 -!- allengeorge [~allengeor@c-24-7-17-50.hsd1.ca.comcast.net] has quit [Ping timeout: 260 seconds] 03:26 -!- achoo [~achoo@71-80-179-102.dhcp.wsco.ca.charter.com] has joined #go-nuts 03:31 -!- achoo [~achoo@71-80-179-102.dhcp.wsco.ca.charter.com] has quit [Client Quit] 03:33 -!- pearle [~pearle@blk-224-181-222.eastlink.ca] has quit [Ping timeout: 246 seconds] 03:37 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote host closed the connection] 03:58 -!- danilo04 [~danilo04@rm2348358874.student.rit.edu] has joined #go-nuts 03:59 -!- alc [~arx@222.128.150.92] has joined #go-nuts 04:01 -!- dfr|bohconf [~dfr|work@173-166-160-241-washingtondc.hfc.comcastbusiness.net] has joined #go-nuts 04:11 -!- danilo04 [~danilo04@rm2348358874.student.rit.edu] has quit [Quit: Saliendo] 04:13 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts 04:15 -!- rejb [~rejb@unaffiliated/rejb] has quit [Disconnected by services] 04:15 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 04:17 -!- gaxxx [~woo@219.143.166.16] has quit [Ping timeout: 260 seconds] 04:18 -!- gaxxx [~woo@li119-190.members.linode.com] has joined #go-nuts 04:18 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Quit: Leaving...] 04:24 -!- angasule [~angasule@190.2.33.49] has quit [Remote host closed the connection] 04:33 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined #go-nuts 04:39 -!- alc [~arx@222.128.150.92] has quit [Read error: Connection reset by peer] 04:39 -!- alc [~arx@222.128.150.92] has joined #go-nuts 04:40 -!- nteon [~nteon@c-98-210-195-105.hsd1.ca.comcast.net] has joined #go-nuts 04:41 -!- CodeWar [~KRTsdfsd@c-24-23-206-137.hsd1.ca.comcast.net] has joined #go-nuts 04:45 -!- gtaylor [~gtaylor@99-5-124-9.lightspeed.gnvlsc.sbcglobal.net] has quit [Quit: gtaylor] 04:58 -!- keithcascio [~keithcasc@nat/google/x-ctkgrgeplirnptth] has quit [Quit: Leaving] 05:02 -!- virtualsue [~chatzilla@nat/cisco/x-huaqqowbnjuknful] has quit [Ping timeout: 264 seconds] 05:10 -!- dfr|bohconf [~dfr|work@173-166-160-241-washingtondc.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 05:14 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has left #go-nuts ["Leaving"] 05:18 -!- CodeWar [~KRTsdfsd@c-24-23-206-137.hsd1.ca.comcast.net] has quit [Quit: Leaving] 05:25 -!- ExtraSpice [XtraSpice@78-57-204-104.static.zebra.lt] has joined #go-nuts 05:27 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Ping timeout: 246 seconds] 05:30 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 05:49 -!- photron [~photron@port-92-201-222-15.dynamic.qsc.de] has joined #go-nuts 05:58 -!- monsieur_max [~monsieur_@212.234.251.58] has joined #go-nuts 06:09 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 06:12 -!- sebastianskejoe [~sebastian@188.114.142.217] has joined #go-nuts 06:17 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Read error: Connection reset by peer] 06:26 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts 06:34 -!- wrtp [~rog@92.17.93.207] has joined #go-nuts 06:44 -!- kris928 [~kris928@c-71-202-36-215.hsd1.ca.comcast.net] has joined #go-nuts 06:52 -!- tvw [~tv@212.79.9.150] has joined #go-nuts 06:55 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has joined #go-nuts 06:59 -!- Project_2501 [~Marvin@82.84.80.208] has joined #go-nuts 07:04 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 07:04 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Remote host closed the connection] 07:04 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 07:06 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by peer] 07:06 -!- nictuku [~yvesj@unaffiliated/nictuku] has quit [Ping timeout: 240 seconds] 07:11 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has quit [Remote host closed the connection] 07:19 -!- slav0nic [~o@pdpc/supporter/student/slav0nic] has joined #go-nuts 07:19 -!- slav0nic [~o@pdpc/supporter/student/slav0nic] has left #go-nuts ["Ухожу"] 07:27 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 260 seconds] 07:31 -!- randfur [~androirc@58.145.148.114] has joined #go-nuts 07:37 -!- sebastianskejoe [~sebastian@188.114.142.217] has quit [Quit: Lost terminal] 07:38 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has joined #go-nuts 07:42 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 07:48 -!- kris928 [~kris928@c-71-202-36-215.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 07:50 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has quit [Read error: Operation timed out] 07:54 -!- randfur [~androirc@58.145.148.114] has quit [Ping timeout: 240 seconds] 07:59 -!- moraes [~moraes@189.103.179.31] has quit [Ping timeout: 260 seconds] 08:04 -!- gaxxx [~woo@li119-190.members.linode.com] has quit [Ping timeout: 246 seconds] 08:07 -!- napsy [~luka@193.2.66.6] has joined #go-nuts 08:18 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:21 -!- chowmeined [~chow@unaffiliated/chowmeined] has quit [Ping timeout: 248 seconds] 08:22 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has joined #go-nuts 08:23 -!- chowmeined [~chow@unaffiliated/chowmeined] has joined #go-nuts 08:25 -!- gaxxx [~woo@219.143.166.16] has joined #go-nuts 08:32 -!- gregschlom [~quassel@187.118.210.62.te-dns.org] has joined #go-nuts 08:38 < tav> hmz 08:38 < tav> anyone around ? 08:38 < str1ngs> hello tav 08:38 < tav> hey str1ngs! 08:38 < tav> thanks again for the github poke btw 08:38 < str1ngs> np 08:40 < Ekspluati> How can I use cgo on Winodws? 08:45 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 248 seconds] 08:49 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 08:49 < ww> tav! 08:49 < wrtp> Ekspluati: i don't think cgo works on Windows 08:49 < tav> hey ww... 08:49 < tav> apologies, have we met? 08:50 < ww> briefly passed by your place in london a year or more ago with zool 08:50 < ww> actually... maybe that was two or three years ago... 08:50 * ww remembers something vague about nutella 08:50 < tav> ah 08:51 < tav> hehe 08:51 < tav> hey =) 08:51 < tav> you have a good memory! 08:51 < tav> how is zool nowadays? haven't seen her in ages! 08:52 < ww> she's quite well 08:52 < ww> rewriting plex (?) in go? 08:52 < tav> well, it's called "ampify" now, and yes =) 08:52 < wrtp> you guys london based? 08:53 < tav> wrtp: aye, you? 08:53 < ww> edinburgh, me 08:53 < wrtp> newcastle, not far :-) 08:53 < tav> perhaps we should do a golang uk get-together? 08:53 < wrtp> i think that's a great idea 08:53 < wrtp> there will be at least three of us! 08:53 < tav> mid-summer maybe? when there's nothing else happening 08:54 < wrtp> this summer's totally mad for me 08:54 < tav> oh? 08:54 < wrtp> not a chance until at least sept 08:54 < tav> !! 08:54 < wrtp> going away, getting married, possible new job... 08:55 < tav> oooh, congrats man! 08:55 < wrtp> ta 08:55 < tav> major life changes 08:55 < wrtp> i still think a uk golang get-together is a great idea 08:56 < tav> yup, we should do it 08:56 < tav> when's good for you? 08:56 < tav> mid-sept? 08:56 * ww suggests somewhere south of me and north of tav 08:57 < wrtp> newcastle? :-) 08:57 < tav> wait, there is no north of the M25 ;p 08:57 < wrtp> infinity or not-a-number? 08:58 < wrtp> i'll have to hold off any commitment until certain things are sorted out 08:58 < wrtp> october is probably a better bet. yeah i know it's ages away. 08:58 < tav> heh! 08:59 < tav> and then in the winter of 2012, the golang gathering finally took place =) 09:00 < ww> might be worthwhile to send a note to the list to find out if there are any more of us on this little island 09:01 < wrtp> good idea 09:01 < tav> aye 09:02 < tav> did any of you follow the nosql summer thing last year? 09:02 < tav> was an interesting experience 09:03 < wrtp> haven't heard of it 09:03 < wrtp> link? 09:03 < tav> http://nosqlsummer.org/ 09:04 < wrtp> interesting. i haven't encountered nosql as a term before 09:05 < wrtp> no newcastle or edinburgh there :-) 09:05 < tav> it was useful a few years ago — unfortunately, it's so overused by now to mean pretty much anything and has thus lost all meaning 09:06 < ww> graph databases are popular at ed.ac.uk these days 09:06 < tav> ever play with the one that the microsoft dudes worked on? 09:06 < tav> it actually looked quite interesting, but never managed to get round to checking it out 09:06 < tav> http://research.microsoft.com/en-us/projects/trinity/ 09:07 < ww> no, i generally can't or won't run microsoft things 09:07 < tav> sure, but this one did look interesting and microsoft research is quite a different beast to big daddy 09:09 < wrtp> ThreadPool.QueueUserWorkItem(newWaitCallback(PassActionScript), tp)); 09:09 < wrtp> snippet from some of the C# code on that site 09:10 < wrtp> how to do c <- x in C# 09:10 < tav> hehe 09:11 < Namegduf> Seems as elegant as doing anything in a Java-derived language 09:16 < uriel> 08:49 < wrtp> Ekspluati: i don't think cgo works on Windows 09:16 < uriel> wrtp: cgo does work on windows, damn it 09:19 -!- akiwiguy [~akiwiguy@ip-118-90-137-188.xdsl.xnet.co.nz] has joined #go-nuts 09:19 < wrtp> uriel: ok, good. i'm probably misremembering some comment from ages ago. go develops so quickly! 09:28 -!- napsy [~luka@193.2.66.6] has quit [Quit: leaving] 09:29 < str1ngs> uriel: thanks for adding gur to cat-v I had some other things you might want to add. not my stuff but package related things for archlinux 09:29 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 240 seconds] 09:30 < uriel> str1ngs: just send me an email and I will check them out when I have time :) 09:31 < str1ngs> uriel: ok thanks 09:31 < uriel> thank to you for doing the work :) 09:31 < str1ngs> ah np. not I could just get them to take my patch to fix godoc in the gc package 09:32 < str1ngs> now* 09:32 < ww> is this the godoc symlink patch or something else? 09:32 < ww> (did that ever go in?) 09:32 < str1ngs> for archlinux? 09:33 < ww> well... anywhere... i think that was in the context of a debian or ubuntu bug report... but made the patch for by freebsd development host because i like to ln -s ~/src/foo ~/go/src/pkg/foo 09:34 < ww> probably you're talking about something different 09:34 -!- edsrzf [~edsrzf@122-61-221-144.jetstream.xtra.co.nz] has quit [Remote host closed the connection] 09:34 < str1ngs> ya might not be related. but my guess is ubuntu and debian have simular issue packaging 09:35 < str1ngs> anyways the archlinux package godoc does not work at all. and it could in theory work just not very FHS friendly 09:35 < ww> actually that was rejected f(before the patch was submitted) or imo dumb reasons: http://code.google.com/p/go/issues/detail?id=1540 09:36 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 09:38 < str1ngs> https://bugs.archlinux.org/task/19730 09:38 < str1ngs> only been a year :( 09:39 -!- milkline [~chatzilla@218.240.155.99] has joined #go-nuts 09:39 -!- moraes [~moraes@189.103.179.31] has joined #go-nuts 09:41 < milkline> hello everybody, I'm new here 09:42 < milkline> can you tell me how can i get the 5g and 5l command on a i386 machine? 09:42 < Tonnerre> GOARCH= 09:42 < milkline> of cause i set this GOARCH=arm 09:43 < milkline> but i still got 8g 8l 09:44 -!- virtualsue [~chatzilla@nat/cisco/x-vmotawhaonvhahyl] has joined #go-nuts 09:44 < milkline> anybody can help me on this? 09:45 -!- rovieJR [~rovie@cpe-98-30-33-49.woh.res.rr.com] has joined #go-nuts 09:47 -!- rovieJR [~rovie@cpe-98-30-33-49.woh.res.rr.com] has left #go-nuts ["Ex-Chat"] 09:49 < jnwhiteh> milkline: I just ran GOARCH=arm ./make.bash and it build 5g/5l 09:49 < jnwhiteh> its very likely you didn't set the environment variable properly 09:50 < str1ngs> milkline: did you export it? 09:52 < milkline> but I set this like you did 09:53 < jnwhiteh> run set | grep GOARCH 09:54 < jnwhiteh> if you didn't do that it wasn't properly exported. You can do "export GOARCH=arm" and it should show up 09:54 < milkline> you mean before or after ./all.bash? 09:54 < jnwhiteh> until you get it working, I'd just do ./make.bash instead of ./all.bash 09:54 < jnwhiteh> to avoid all the testing/etc. 09:54 < jnwhiteh> so run export GOARCH=arm 09:54 < jnwhiteh> and then ./make.bash 09:55 < milkline> ok,i see, i'll try this 09:55 < milkline> thank you 09:56 < milkline> and if i want both 8g and 5g, i set twice,right? 09:56 < jnwhiteh> no 09:56 < jnwhiteh> you'd have to both of those twice 09:56 < jnwhiteh> for each architecture you want 09:57 < jnwhiteh> err, you need to export GOARCH and then run make.bash for each architecture you'd want. 09:57 -!- snearch [~snearch@f053006158.adsl.alicedsl.de] has joined #go-nuts 09:57 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 09:57 < milkline> yes, i meaned what you said,:) 09:57 < milkline> thank you 09:57 < Tonnerre> meant 09:57 < milkline> ok 09:57 < milkline> sorry 09:58 < Tonnerre> No reason to get apologetic :) 09:58 < milkline> for my bad english 09:59 < milkline> btw, do i need do these as root or user? 10:00 < jnwhiteh> don't see why you would need to do them as root 10:00 < jnwhiteh> that depends on where your GOBIN/GOROOT is set to 10:00 < jnwhiteh> if the user can write to both of those, then user is fine. 10:01 < milkline> ok, but i compiled fail 10:02 < jnwhiteh> what error message are you getting? 10:03 -!- shvntr [~shvntr@116.26.128.56] has joined #go-nuts 10:03 < milkline> "/home/milkline/go/src/cmd/5l/asm.c:292:6: error: variable 'strtabsize' set but not used [-Werror=unused-but-set-variable] 10:03 < milkline> /home/milkline/go/src/cmd/5l/asm.c:291:17: error: variable 'w' set but not used [-Werror=unused-but-set-variable] 10:03 < milkline> /home/milkline/go/src/cmd/5l/asm.c:291:9: error: variable 'va' set but not used [-Werror=unused-but-set-variable] 10:03 < milkline> cc1: all warnings being treated as errors 10:03 < milkline> make[1]: *** [asm.o] Error 1 10:03 < milkline> make[1]: Leaving directory `/home/milkline/go/src/cmd/5l' 10:03 < jnwhiteh> whoa. 10:03 < milkline> make: *** [5l.install] Error 2 10:04 < milkline> make: *** Waiting for unfinished jobs...." 10:04 < jnwhiteh> please don't paste them here.. 10:04 < jnwhiteh> use a pastey site like pastebin.ca and friends 10:04 < jnwhiteh> I'm not sure why you are getting those errors 10:05 < milkline> anyway, i'll try it tommorrow. thank you all 10:06 < milkline> i‘m getting off work and go back home 10:06 < milkline> see you 10:06 -!- milkline [~chatzilla@218.240.155.99] has quit [Quit: ChatZilla 0.9.86.1 [Firefox 4.0.1/20110429133311]] 10:07 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 10:07 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 10:16 < jnwhiteh> is a map ever compacted if elements are removed? 10:17 -!- akiwiguy [~akiwiguy@ip-118-90-137-188.xdsl.xnet.co.nz] has quit [Ping timeout: 240 seconds] 10:21 -!- ctimmerm [~ctimmerm@83.150.80.193] has joined #go-nuts 10:22 -!- alehorst [~alehorst@189.114.234.79.dynamic.adsl.gvt.net.br] has joined #go-nuts 10:27 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 10:29 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Client Quit] 10:37 < manveru> jnwhiteh: doesn't look like... 10:37 < jnwhiteh> ah well, I'll deal with that for now, thanks =) 10:37 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 10:37 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 10:38 < wrtp> jnwhiteh: the code's in runtime/hashmap.c. at first glance it doesn't look like it does, as manveru says 10:38 < manveru> my C might be horribly off... 10:38 < jnwhiteh> thanks, I didn't know if anyone knew off the top of their head. Sorry for being lazy =) 11:07 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 11:07 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 11:13 -!- Fish- [~Fish@coss6.exosec.net] has quit [Quit: So Long, and Thanks for All the Fish] 11:13 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 11:19 -!- alehorst [~alehorst@189.114.234.79.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 246 seconds] 11:20 < taruti> Is there a way to get uintptr with 8c without includes? 11:22 -!- Fish [~Fish@exo3753.pck.nerim.net] has joined #go-nuts 11:23 -!- Fish [~Fish@exo3753.pck.nerim.net] has quit [Client Quit] 11:23 -!- Fish [~Fish@exo3753.pck.nerim.net] has joined #go-nuts 11:24 -!- hernan43 [~ray@dev.reslife.msu.edu] has quit [Quit: Ex-Chat] 11:29 -!- alehorst [~alehorst@201.47.22.33.dynamic.adsl.gvt.net.br] has joined #go-nuts 11:38 -!- tncardoso [~thiago@189.59.181.197.dynamic.adsl.gvt.net.br] has joined #go-nuts 11:38 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 11:38 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 11:38 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts 11:39 -!- pearle [~pearle@blk-224-181-222.eastlink.ca] has joined #go-nuts 11:39 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has joined #go-nuts 11:40 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Client Quit] 11:41 -!- alehorst [~alehorst@201.47.22.33.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 246 seconds] 11:47 -!- tncardoso [~thiago@189.59.181.197.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 246 seconds] 11:56 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has joined #go-nuts 12:00 -!- tncardoso [~thiago@189.115.131.65] has joined #go-nuts 12:04 -!- cw [~anticw@parsec.stupidest.org] has quit [Ping timeout: 240 seconds] 12:05 -!- cw [~anticw@parsec.stupidest.org] has joined #go-nuts 12:08 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has joined #go-nuts 12:08 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 12:08 < hallas> greets 12:08 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 12:11 -!- fabled [~fabled@83.145.235.194] has joined #go-nuts 12:11 < taruti> Is there a better way to allocate N bytes than unsafe.NewArray(byte(0), N) ? 12:12 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 12:13 < wrtp> taruti: make([]byte, N) ? 12:13 < taruti> wrtp: thanks. need more coffee :( 12:13 < wrtp> np 12:14 < hallas> taruti: an odd question indeed 12:14 -!- dfr|bohconf [~dfr|work@173-166-160-241-washingtondc.hfc.comcastbusiness.net] has joined #go-nuts 12:14 < hallas> taruti: you looking at the unsafe package before reading the documentation? 12:23 -!- gaxxx [~woo@219.143.166.16] has quit [Read error: Connection reset by peer] 12:24 < wrtp> hallas: taruti is currently obsessed with cache efficiency :-) 12:31 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has joined #go-nuts 12:34 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 12:37 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts 12:39 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 12:39 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 12:41 -!- niemeyer [~niemeyer@200-102-196-125.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 12:43 -!- frW [~frW@smartit.se] has joined #go-nuts 12:43 -!- frW [~frW@smartit.se] has left #go-nuts [] 12:46 < electro> I have a bigEndian in the form of a bytearray [0 0 4 210] (=1234), how would i go about parsing that and getting a int out of it? 12:47 < electro> imageSize := fmt.Sprintf("%s",bytesFileSize) 12:47 < electro> imageSizeInt64, err := strconv.Atoi64(imageSize) 12:47 < electro> is not working too well 12:47 -!- dfr|bohconf [~dfr|work@173-166-160-241-washingtondc.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 12:48 < wrtp> electro: binary.BigEndian.Uint32(bytes) 12:48 < wrtp> (from the encoding/binary package) 12:49 < hallas> yes that package is godsend 12:54 < hallas> If you're reading that BigEndian bytearray from a network stream, you might aswell use the binary package to read aswell. 12:54 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has quit [Quit: whitespacechar] 12:55 < electro> wrtp: that fixed that problem, thank you. Need to fix some more errors before i can try it 12:55 < electro> hallas: yes i might do just that 12:55 -!- sebastianskejoe [~sebastian@95.142.159.29] has joined #go-nuts 12:56 -!- Tasser [~freak@subtle/contributor/Tass] has left #go-nuts ["WeeChat 0.3.5-dev"] 12:58 < electro> wrtp: yes that very much solved that particular problem 12:59 < electro> thank you, very helpful answers as usual 12:59 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it] has joined #go-nuts 12:59 < electro> and now than im employed as a Go coder, perhaps i'll be able to answer some questions here eventually... 13:03 < Fib> Cool, which company? 13:04 < hallas> electro: damn lucker :-) 13:04 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 13:05 -!- whitespacechar [~whitespac@24-247-159-7.dhcp.klmz.mi.charter.com] has joined #go-nuts 13:09 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 13:09 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 13:10 < exch> getting paid to write Go code? nice 13:11 < wrtp> electro: nice 13:14 < electro> Fib: rather small swedish company 13:14 < electro> hallas: thank you 13:14 < electro> exch: yeah im very happy 13:14 < electro> wrtp: thank you 13:15 -!- iant [~iant@216.239.45.130] has quit [Ping timeout: 276 seconds] 13:15 -!- sunfmin [~sunfmin@115.197.37.44] has joined #go-nuts 13:15 < sunfmin> Hi 13:16 < sunfmin> How Can I convert Vector to Slice? 13:19 < exch> sunfmin: A vector is already a slice. If you have a StringVector, just use a type case: myslice := []string(myvector). If it's a Vector of interface{} values that you want to turn into a slice of type T, you will have to manually allocate a new slice and copy the values over with the appropriate type assertion 13:19 < exch> s/case/cast/ 13:20 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts 13:20 < sunfmin> Thank you very much 13:20 < wrtp> electro: np 13:21 < wrtp> sunfmin: in general, unless you want to use it to satisfy an interface, it's not usually worth using Vector 13:21 < hallas> Not since append was added 13:23 < sunfmin> For example I wanted to load a list of Record from a database table, I usually define a type that has field of columns of table 13:23 < sunfmin> And I want to load a list of result from a table 13:23 < sunfmin> That's easy to do with a Slice? not a vector? 13:23 < wrtp> sunfmin: yeah 13:24 -!- thomas_b [~thomasb@cm-84.215.47.51.getinternet.no] has quit [Quit: leaving] 13:24 < exch> vectors should really be considered deprecated imho. There's no real reason for them to exist anymore 13:24 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has quit [Remote host closed the connection] 13:24 < hallas> A vector is a slice, anything you can with a vector, you can do with a slice 13:25 < hallas> Essentially :P 13:26 < wrtp> exch: a vector is useful because you can sort it, use it as a heap etc 13:26 < exch> you can do that with a slice to 13:26 < wrtp> (without defining Len, Swap etc methods on it) 13:26 < sunfmin> Is that typically do like this? https://gist.github.com/976466 13:27 < sunfmin> Or some kind of framework I can use? 13:28 < wrtp> func (v *Video) Subtitles() []Subtitle { 13:28 < wrtp> var result []Subtitle 13:28 < wrtp> result = append(result, myrow) 13:28 < sunfmin> ohh, cool 13:28 < wrtp> and bob's yer uncle 13:29 -!- snearch [~snearch@f053006158.adsl.alicedsl.de] has quit [Quit: Verlassend] 13:29 < sunfmin> I saw somewhere it says added `append` method, but didn't connect it to Slice, ;-) 13:31 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has joined #go-nuts 13:31 < sunfmin> Does my code common in Go world, Or nobody uses MySQL if with Go? 13:32 < sunfmin> I still trying to find something like ActiveRecord, But is that the Go way? 13:32 < wrtp> i haven't used sql from go 13:33 < sunfmin> whats typically used? Mongo? 13:33 < aiju> the Go way is not to use databases ;P 13:33 < exch> Ive only used sqlite in one project 13:33 < hallas> I havent used any sql yet 13:33 < fzzbt> is activerecord ORM? 13:33 < hallas> or mongo for that matter 13:34 < exch> I doubt there is anything typical. it just depends on what yuo need/want 13:34 -!- sebastianskejoe [~sebastian@95.142.159.29] has quit [Ping timeout: 240 seconds] 13:35 < sunfmin> yeah, I am talking about the ActiveRecord in Rails / ruby 13:35 < sunfmin> Since I am from that background. 13:38 < fzzbt> there's "gouda", but i think it's dead now. also some other project too whose name i cant remember 13:39 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 13:39 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 13:43 -!- iant [~iant@67.218.110.18] has joined #go-nuts 13:43 -!- mode/#go-nuts [+v iant] by ChanServ 13:43 < electro> sunfmin: we use mongo for our project 13:44 < sunfmin> So just use the Mongo Driver is fine? did you abstract some kind of library? 13:44 < fzzbt> yeah 13:44 < fzzbt> sunfmin: niemayer's driver is probably the best 13:45 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has joined #go-nuts 13:45 < electro> we use Garyburds driver for mongoDB, havent used niemayer so cannot say anything about that 13:45 -!- musicMonster [~musicMons@c-98-247-221-98.hsd1.wa.comcast.net] has joined #go-nuts 13:46 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has quit [Remote host closed the connection] 13:46 < fzzbt> yeah, it's fairly new, but developing very quickly. 13:47 < sunfmin> One more question, Do I have to check the `err` after every sentence I wrote? 13:47 < electro> if you dont want to check it, use _ instead of err 13:48 < electro> like: 13:48 < electro> someVar, _ := someFunc() 13:48 < sunfmin> But if something is wrong, it continue 13:48 < sunfmin> with invalid value. 13:48 <+iant> yes, checking err is a good idea 13:48 <+iant> for exactly that reason 13:48 < sunfmin> Is that too much code for err checking? 13:49 -!- shvntr [~shvntr@116.26.128.56] has quit [Quit: leaving] 13:49 <+iant> depends; the easy way is to write a check function which takes a value of type os.Error and calls panic if the value is not nil 13:49 -!- jyxent [~jyxent@129.128.191.96] has quit [Read error: Operation timed out] 13:49 <+iant> then you have one line per call to a function which returns an error value 13:50 <+iant> it's hard to see a better approach overall 13:50 < sunfmin> won't be nice if it's a default behaviour? 13:50 <+iant> having every function panic on error can't be the right answer in general 13:50 < sunfmin> ohh, right. 13:51 -!- bomboozal [~bombuzal@cpc5-newc14-2-0-cust836.gate.cable.virginmedia.com] has joined #go-nuts 13:52 < sunfmin> It would be nice if you do: someVar, _ := someFunc(), It doesn't panic 13:52 < sunfmin> But If you do: 13:52 < sunfmin> someVar := someFunc() 13:52 < sunfmin> It panic 13:52 < aiju> if err != nil { return err } 13:52 < aiju> is it that much? 13:52 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 13:52 < sunfmin> it's after almost every line of code right? 13:53 < aiju> no 13:53 < aiju> almost only I/O 13:53 < sunfmin> ok, So I/O is the thing make it complicated. 13:53 < jnwhiteh> you can do something like the checkerror() function that Andrew/Russ use in their Real World Go examples if it bothers you that much =) 13:54 -!- bombuzal [~bombuzal@unaffiliated/bombuzal] has quit [Ping timeout: 246 seconds] 13:54 < sunfmin> then, checkerror() after every line of code, :-) 13:54 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 250 seconds] 13:54 < sunfmin> (every line of I/O code, ;-) 13:55 < jnwhiteh> well, shouldn't you check whether or not your program is in an error state? 13:55 < jnwhiteh> I'm not sure why people always want to avoid that =) 13:58 < hallas> sunfmin: thing is, I/O code is error prone, in fact, thats just life 13:58 -!- bombuzal [~bombuzal@unaffiliated/bombuzal] has joined #go-nuts 13:58 < sunfmin> yeah, lazy to decide specifically on each line of code. 13:58 < hallas> sunfmin: Code that doesnt check after every I/O state change is bad and shouldnt be used, you need to handle those cases. I think that handling errors can be done in a pretty pattern none the less. 13:59 < aiju> sunfmin: so you want exceptions or something? 13:59 < aiju> what are you trying to tell us? 13:59 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 14:00 < sunfmin> kind of get used to exception. 14:00 < sunfmin> So trying to find that. 14:00 -!- bomboozal [~bombuzal@cpc5-newc14-2-0-cust836.gate.cable.virginmedia.com] has quit [Ping timeout: 246 seconds] 14:01 < sunfmin> Anyway, trying to learn here, not trying to argue anything. 14:02 < sunfmin> The reason that Go don't have Exception is that it's cost too much? for the performance reason right? 14:02 < aiju> no 14:02 -!- r_linux [~r_linux@smtp.mandique.com.br] has joined #go-nuts 14:02 < wrtp> sunfmin: the reason is that ubiquitous use of exceptions makes for code that is hard to understand 14:03 < aiju> exception handling and concurrency don't go well with each other 14:03 < aiju> where would an exception go if it hit the top of a goroutine? 14:03 < sunfmin> the end of goroutine? 14:03 < sunfmin> Actually I don't know. 14:04 < aiju> also, it's google coding style not to use exceptions 14:04 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has joined #go-nuts 14:04 < aiju> http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions 14:05 < sunfmin> that's interesting, In Google's Java code also? 14:05 < aiju> no clue 14:05 < musicMonster> hi 14:08 < musicMonster> i am trying to install go, when i cd go/src terminal returns no such file or directory, does this mean i did not fetch the repository correctly? 14:08 < aiju> it means you are in the wrong directory ;P 14:09 < musicMonster> ok lol thanks 14:09 -!- nighty__ [~nighty@x122091.ppp.asahi-net.or.jp] has joined #go-nuts 14:09 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 14:09 -!- tncardoso [~thiago@189.115.131.65] has quit [Ping timeout: 246 seconds] 14:09 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 14:10 -!- tncardoso [~thiago@189.59.160.82] has joined #go-nuts 14:12 -!- alc [~arx@222.128.150.92] has quit [Remote host closed the connection] 14:13 < musicMonster> ok this is gonna sound real dumb im sure, but do you know which directory im supposed to be in? The install page does not seem to clarify. http://golang.org/doc/install.html#install 14:13 < hallas> go into the src folder 14:13 < hallas> in the go folder that you fetched with mercurial 14:14 < hallas> musicMonster: and nothing is dumb 14:14 <+iant> following the instructions precisely should work, so look carefully at anything you might have done differently 14:14 < musicMonster> hallas: thank you good sir 14:16 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has quit [Quit: Page closed] 14:20 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has quit [Remote host closed the connection] 14:21 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has joined #go-nuts 14:27 -!- moraes [~moraes@189.103.179.31] has quit [Ping timeout: 240 seconds] 14:27 -!- Adys [~Adys@unaffiliated/adys] has quit [Read error: Connection reset by peer] 14:28 < mpl> so I'm having a problem with detecting an error. I'm creating a symlink and it can happen that this symlink already exists, in which case it's fine and I just want to go on. so I've done something like if err != nil && err != os.EEXIST { exit only in that case} ... but I'm still tripping on the error. I get the "file exists" error string. any idea? 14:31 < Rennex> perhaps try (err != nil) && (err != os.EEXIST) 14:31 -!- chomp [~chomp@dap-209-166-184-50.pri.tnt-3.pgh.pa.stargate.net] has joined #go-nuts 14:31 < Rennex> at least with some languages there's a gotcha regarding the operator precedence of == and && || (or was it & | ) 14:32 -!- Adys [~Adys@unaffiliated/adys] has joined #go-nuts 14:32 <+iant> Rennex: that is not a problem in Go, though 14:32 < Rennex> other than that, err is then probably something else than os.EEXIST :) 14:32 < mpl> lol, thx, figured as much. 14:33 < mpl> (especially since EEXIST is supposed to be "file already exists" not "file exists" 14:33 <+iant> mpl: os.Symlink returns a LinkError, so you need to do something like err.Error == os.EEXIST 14:33 < gmilleramilar> mpl: I ran into this. os.EEXIST and the return value from Fstat or whatever are different types 14:33 < gmilleramilar> you're allowed to compare them because they both implement os.Error. 14:34 < musicMonster> am i supposed to download go? so i can enter go's src folder to build it. cause i dont see where go was downloaded. did i not fetch the repository correctly? 14:34 < mpl> iant, gmilleramilar kthx, trying. 14:34 <+iant> musicMonster: we don't know what you did 14:34 < Rennex> iant: it's the same problem in Go 14:34 <+iant> mpl: http://golang.org/pkg/os/#LinkError 14:35 < mpl> aah embedded error, thx. 14:35 <+iant> Rennex: the precedence of == is higher than the precedence of && in Go 14:35 <+iant> which is as it should be 14:35 < sunfmin> another question: https://gist.github.com/976466 14:36 < Rennex> iant: yeah but lower than & and |, so that can be a gotcha? well i'm not sure, i don't remember the problematic cases :) 14:36 < sunfmin> FeliMac:perapera sunfmin$ make 14:36 < sunfmin> 6g -o _go_.6 perapera.go 14:36 < sunfmin> perapera.go:72: append(result, myrow) not used 14:36 < sunfmin> make: *** [_go_.6] Error 1 14:36 <+iant> Rennex: the problematic case is C, in which the precedence of & and | is lower than == 14:36 < mpl> yeah I don't know my precedences well, but I was pretty sure I could get away without parens for that one. 14:36 <+iant> that is surprising for many people 14:36 < prudhvi> goes go has some imap package or something? 14:37 < Rennex> iant: hmm. oh, righty, so & and | being too low was the problem :) 14:37 -!- GeertJohan [~Squarc@clal-0-227.eduroam.inholland.nl] has joined #go-nuts 14:37 < sunfmin> Why it says append not called in 34 line of the code? 14:37 -!- Adys [~Adys@unaffiliated/adys] has quit [Remote host closed the connection] 14:37 < wrtp> the only reason for that in C AFAIK is that & and | were once used as logical operators in C, before && and || existed 14:37 -!- Adys [~Adys@unaffiliated/adys] has joined #go-nuts 14:37 < aiju> wrtp: no, B 14:37 < aiju> C always had && and || 14:38 < wrtp> ok 14:38 <+iant> sunfmin: you probably want result = append(result, myrow) 14:38 < aiju> wrtp: in fact, they were used for both .. depending on the context :) 14:38 < musicMonster> awesome forgot to sudo lol 14:39 < wrtp> aiju: not quite... "Rapid changes continued after the language had been named, for example the introduction of the && and || operators." 14:39 < wrtp> but you're right in essence. 14:39 -!- moraes [~moraes@189.103.179.31] has joined #go-nuts 14:39 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 14:40 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 14:41 < aiju> wrtp: very very early C 14:42 < fzzbt> how did they live without && and || 14:42 < aiju> fzzbt: & and | 14:42 < aiju> compiler hack 14:49 < wrtp> aiju: not really - short circuiting is a feature that other languages survived without (pascal for example AFAIR) 14:50 < wrtp> and the BASIC i started with 14:50 <+iant> wrtp: but short-circuiting was on Kernighan's famous list of problems with Pascal 14:51 < wrtp> yup, i'm not saying it was *pleasant*, just that it wasn't a compiler hack 14:51 < aiju> what are you talking aout 14:51 < aiju> *about 14:51 < aiju> & and | were a compiler hack 14:51 <+iant> nothing that has anything to do with Go.... 14:51 < aiju> they were context dependent 14:51 -!- aho [~nya@fuld-590c7b71.pool.mediaWays.net] has joined #go-nuts 14:52 < aiju> & had entirely different meanings in "if(1 & 2)" and "x = 1 & 2;" 14:52 < wrtp> really? 14:53 < wrtp> oh yeah, cool 14:53 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has joined #go-nuts 14:53 < wrtp> because B did actually have short circuiting 14:55 < Soultaker> why did it have different meanings? 14:55 < Soultaker> ah wait, I see your point for | at least. 14:56 < Soultaker> and I guess due to side-effects for & too 14:56 < prudhvi> yes, why does it have different meanings? 14:56 < wrtp> Soultaker: see http://cm.bell-labs.com/who/dmr/chist.html 14:56 < wrtp> search for Neonatal C 14:56 -!- fabled [~fabled@83.145.235.194] has quit [Quit: Ex-Chat] 15:00 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [] 15:00 -!- nighty__ [~nighty@x122091.ppp.asahi-net.or.jp] has quit [Ping timeout: 264 seconds] 15:00 -!- iant [~iant@67.218.110.18] has quit [Quit: Leaving.] 15:00 < aiju> wrtp: i'm not talking about short circuiting at all 15:00 < wrtp> aiju: no? 15:01 < wrtp> it sounds from the description like that's what was happening 15:01 < wrtp> but what were you talking about? 15:02 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it] has quit [Quit: ucasano] 15:03 < aiju> wrtp: i'm talking about context dependentness of the & operator 15:03 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has joined #go-nuts 15:03 < aiju> short circuiting plays a role in this, yeah 15:03 < wrtp> aiju: that's the reason for it 15:03 < aiju> not quite 15:04 < aiju> the C expressions 1 & 2 and 1 && 2 have different values 15:04 < aiju> (well, it's both a reason) 15:04 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 15:04 < aiju> e.g. if(a & b == 2) was common for "if a is non-zero and b is equal to 2" 15:04 < wrtp> maybe they used ~0 as true previously 15:04 < aiju> doesn't matter 15:04 < aiju> 1 & 2 is zero 15:04 < skelterjohn> freaking dinosaurs 15:05 < wrtp> :- 15:05 < wrtp> ) 15:06 -!- fabled [~fabled@83.145.235.194] has joined #go-nuts 15:07 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has joined #go-nuts 15:10 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 15:10 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 15:13 -!- tncardoso [~thiago@189.59.160.82] has quit [Quit: bye] 15:14 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has quit [Quit: Leaving.] 15:14 < Soultaker> wrtp: thanks, that looks interesting! 15:15 -!- jarbox [~rovie@cpe-98-30-33-49.woh.res.rr.com] has joined #go-nuts 15:16 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 240 seconds] 15:17 -!- jarbox [~rovie@cpe-98-30-33-49.woh.res.rr.com] has left #go-nuts ["Ex-Chat"] 15:19 -!- virtualsue [~chatzilla@nat/cisco/x-vmotawhaonvhahyl] has quit [Ping timeout: 246 seconds] 15:21 -!- allengeorge_ [~allengeor@c-24-7-17-50.hsd1.ca.comcast.net] has joined #go-nuts 15:22 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has quit [Remote host closed the connection] 15:22 -!- dfr|bohconf [~dfr|work@nat/google/x-djxpzydffdzuayhq] has joined #go-nuts 15:23 -!- allengeorge [~allengeor@c-24-7-17-50.hsd1.ca.comcast.net] has quit [Ping timeout: 258 seconds] 15:23 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.] 15:23 -!- jarbox [~rovie@cpe-98-30-33-49.woh.res.rr.com] has joined #go-nuts 15:25 < sunfmin> Does go have a MVC framework? 15:27 < skelterjohn> sure - the V is http, the M is one of the sql packages, and then you write the C 15:27 < TheMue> sunfmin: http://golang.org/pkg/ 15:27 -!- niemeyer [~niemeyer@200-102-196-125.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 240 seconds] 15:28 < TheMue> skelterjohn: You also can take any nosql package for M. *smile* 15:28 < skelterjohn> did you write one? O:-) 15:28 < TheMue> skelterjohn: And C is http (the handlers) while V is template. 15:29 < skelterjohn> sunfmin: probably in a more direct answer to your question - MVC is not something that should be provided for you. it serves best as a guideline for writing your own components and helping you decide where to draw lines of functionality 15:29 < TheMue> skelterjohn: Eh, hm, hmmpf, eeh ... yop! 15:29 < sunfmin> ok, thanks. 15:29 < Namegduf> Design patterns are distinguished from designs in that they are ideas for how to go about making a design, not a design in and of themselves. 15:29 -!- wrtp [~rog@92.17.93.207] has quit [Quit: wrtp] 15:29 < sunfmin> why there are lots of MVC framework in other language 15:29 < sunfmin> like Java 15:29 < skelterjohn> because lots of people have lots of time on their hand 15:30 < skelterjohn> hands 15:30 < skelterjohn> and they think they're helping 15:30 < Namegduf> Because they simplify certain other things, depending on the task 15:30 < Namegduf> As a side effect 15:31 < Namegduf> It is better to look for things making the specific stuff you want to do simpler. 15:31 < musicMonster> is anyone using goclipse on linux? 15:31 < Namegduf> I don't know exactly what they do, so I couldn't advise on how to replace them. 15:31 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 15:31 < hallas> musicMonster: nope, using vim :-)))9 15:32 < Namegduf> They could provide a template and a toolkit for building certain kinds of application in an MVC way, but I don't really know. 15:32 < TheMue> ah, vim, the pure one and only 15:32 < hallas> simply the best 15:32 < hallas> :D 15:33 < musicMonster> so to set my environment variables is that in /etc/environment? 15:33 < hallas> for Goclipse you should go to the preferences for the plugin it self 15:33 < hallas> It is so you can compile with eclipse, no? 15:33 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 15:34 < musicMonster> yes but i dont believe they have a build for it yet. its in the git hub 15:34 < jeremy_c> Anyone know how to get the pointer to a C function into a go variable? When I do things like v := C.strcpy (dumb example), the compiler says I must call C.strcpy 15:36 < musicMonster> i added PATH="/home/go/bin" to /etc/environment/ but does not allow me to use godoc. any thoughts? 15:36 * uriel is quite convinced that MVC has become completely devoid of meaning by now 15:36 < uriel> just as "Object Oriented" 15:37 < uriel> people have used and abused the term so much, that it is hard to know what anyone means when they use it, other than that they want to tick a certain checkbox to make ignorant people happy 15:37 -!- snearch [~snearch@f053006158.adsl.alicedsl.de] has joined #go-nuts 15:38 -!- virtualsue [~chatzilla@nat/cisco/x-uqglrezequnacvzf] has joined #go-nuts 15:38 * Namegduf is dubious of design patterns at the best of times 15:40 < uriel> at best "design patterns" are a sign of defficiencies in the language 15:40 -!- TheMue [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Read error: Connection reset by peer] 15:40 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has joined #go-nuts 15:40 -!- gregschlom [~quassel@187.118.210.62.te-dns.org] has quit [Read error: Connection reset by peer] 15:43 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has joined #go-nuts 15:45 -!- krutcha [~krutcha@remote.icron.com] has joined #go-nuts 15:45 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has quit [Remote host closed the connection] 15:46 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has joined #go-nuts 15:49 -!- ctimmerm [~ctimmerm@83.150.80.193] has quit [Ping timeout: 240 seconds] 15:49 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 15:51 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 15:51 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 15:53 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has quit [Quit: Computer has gone to sleep.] 15:54 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 15:54 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 15:57 -!- musicMonster [~musicMons@c-98-247-221-98.hsd1.wa.comcast.net] has quit [Quit: #go-nuts] 15:57 -!- monsieur_max [~monsieur_@212.234.251.58] has quit [Quit: Leaving.] 16:06 -!- TheMue_ [~TheMue@wlan-hotspot-019.ewe-ip-backbone.de] has quit [Quit: TheMue_] 16:10 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has joined #go-nuts 16:11 -!- iant [~iant@nat/google/x-ilxwbbkzkefdjald] has joined #go-nuts 16:11 -!- mode/#go-nuts [+v iant] by ChanServ 16:12 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has quit [Client Quit] 16:12 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has joined #go-nuts 16:16 < sunfmin> Hi again 16:16 < sunfmin> How Can I clone a type struct? 16:16 < sunfmin> I mean I have a value &Subtitle{}, I want to clone it 16:17 -!- tobier_ [~tobier@c-1e9de055.712-1-64736c11.cust.bredbandsbolaget.se] has quit [Read error: Operation timed out] 16:18 -!- tncardoso [~thiago@150.164.2.20] has joined #go-nuts 16:18 -!- danilo04 [~danilo04@129.21.40.28] has joined #go-nuts 16:18 < Namegduf> There's no easy way to do a "deep copy". 16:22 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Read error: Connection reset by peer] 16:22 < ebering> other than write it yourself 16:23 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 16:26 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 16:26 < sunfmin> ok, thanks. 16:26 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-148-158.clienti.tiscali.it] has joined #go-nuts 16:27 < sunfmin> What's this mean? 16:27 < sunfmin> throw: init rescheduling 16:27 < sunfmin> I had a init like this: 16:28 < sunfmin> var db *mysql.Client 16:28 < sunfmin> func init() { 16:28 < sunfmin> db, _ = mysql.DialTCP("localhost", "root", "", "lingotv_dev") 16:28 < sunfmin> panic(err) 16:28 < sunfmin> } 16:28 < sunfmin> */ 16:28 < sunfmin> } 16:29 -!- ctimmerm [~ctimmerm@cs181050011.pp.htv.fi] has joined #go-nuts 16:29 < delinka> please use a pastebin 16:29 -!- Project_2501 [~Marvin@82.84.80.208] has quit [Ping timeout: 258 seconds] 16:31 < sunfmin> sorry, here: https://gist.github.com/976466 16:32 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has quit [Quit: leaving] 16:32 < sunfmin> https://gist.github.com/976466, Pasted the error there too 16:33 < exch> Just guessing here, but there a possible race condition somewhere. Trying to initialize a new connection in an init() function might preceed the execution of necessary init()s in the mysql lib. Put that code in main() instead. 16:33 -!- niemeyer [~niemeyer@200-102-196-125.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 16:34 < gmilleramilar> is there any way to make gotest and goinstall play nicely. 16:34 < gmilleramilar> ? 16:34 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Read error: Connection reset by peer] 16:34 < gmilleramilar> that is gotest doesn't appear to respect GOPATH 16:35 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 16:35 < sunfmin> exch: thanks, that does solve the problem 16:36 < sunfmin> thank you guys, go to sleep now. bye. 16:38 -!- sunfmin [~sunfmin@115.197.37.44] has quit [Quit: sunfmin] 16:39 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 16:39 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has quit [Remote host closed the connection] 16:40 -!- danilo04 [~danilo04@129.21.40.28] has quit [Quit: Saliendo] 16:41 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 260 seconds] 16:42 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 16:45 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has quit [Ping timeout: 252 seconds] 16:55 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has joined #go-nuts 16:55 -!- zaero [~eclark@2001:470:1f11:b82:697f:fb72:fe0a:4828] has joined #go-nuts 16:56 < skelterjohn> afternoon 16:57 < niemeyer> skelterjohn: yo 16:58 -!- welterde [welterde@thinkbase.srv.welterde.de] has quit [Quit: WeeChat 0.3.5-dev] 17:01 -!- monsieur_max [~maxime@ip-78.net-89-2-171.rev.numericable.fr] has joined #go-nuts 17:05 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has joined #go-nuts 17:06 -!- welterde [welterde@thinkbase.srv.welterde.de] has joined #go-nuts 17:07 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has joined #go-nuts 17:10 < jeremy_c> Anyone with an idea to shorten up the creation/setting/calling of a callback? https://github.com/jcowgar/go-iup/blob/master/iup/callback.go ... Right now I 1. Create an extern statement for the Go func, 2. Create a C callback that will then call the Go func. 3. Create a Go func that handles the disbatching to the real Go func, 4. Create a Go func to allow the setting of the callback. 17:10 < jeremy_c> Seems it could be trimmed somehow, just not sure where yet. 17:10 < skelterjohn> it's not convenient right now, that's for sure 17:14 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has joined #go-nuts 17:15 -!- Venom_lnch [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Quit: Venom_lnch] 17:15 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has quit [Remote host closed the connection] 17:16 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has joined #go-nuts 17:19 -!- twopoint718 [~chris@fsf/member/twopoint718] has joined #go-nuts 17:20 < skelterjohn> jeremy_c: what i'm about to suggest may be exactly what you described - i'm having a bit of trouble following it 17:20 < skelterjohn> but what i'd do is set up an exported go function "func DoCallback(unsafe.Pointer callback, param1 type1, param2 type2)" 17:21 < skelterjohn> foo := *(*func (param1 type1, param2 type2))(callback) 17:21 < skelterjohn> foo(param1, param2) 17:22 < skelterjohn> you'd also have to make a type for that callback so you can wrap it in an unsafe.Pointer 17:22 < skelterjohn> since i don't think you can wrap things with anonymous types (all top level functions) in unsafe.Pointers 17:23 -!- dfr|bohconf [~dfr|work@nat/google/x-djxpzydffdzuayhq] has quit [Remote host closed the connection] 17:24 -!- hogst [~kvirc@blfd-4d0839e9.pool.mediaWays.net] has joined #go-nuts 17:26 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has quit [Remote host closed the connection] 17:27 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has joined #go-nuts 17:29 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 17:29 -!- tobier [~tobier@c-ae9de055.712-1-64736c11.cust.bredbandsbolaget.se] has joined #go-nuts 17:30 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection] 17:32 -!- KBme [~KBme@2001:470:cabe:666:666:666:666:666] has joined #go-nuts 17:37 -!- hogst [~kvirc@blfd-4d0839e9.pool.mediaWays.net] has quit [Ping timeout: 276 seconds] 17:38 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 17:38 -!- danilo04 [~danilo04@rm2348358874.student.rit.edu] has joined #go-nuts 17:46 -!- tncardoso [~thiago@150.164.2.20] has quit [Quit: bye] 17:46 -!- tncardoso [~thiago@150.164.2.20] has joined #go-nuts 17:56 -!- hogst [~kvirc@blfd-4d0839e9.pool.mediaWays.net] has joined #go-nuts 17:57 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has joined #go-nuts 17:58 -!- hogst [~kvirc@blfd-4d0839e9.pool.mediaWays.net] has quit [Client Quit] 18:00 -!- huin [~huin@91.85.171.238] has joined #go-nuts 18:02 -!- keithgcascio [~keithcasc@nat/google/x-trubcwgemlmfdsqd] has joined #go-nuts 18:03 -!- ExsysTech [~ExsysTech@50-46-213-60.evrt.wa.frontiernet.net] has quit [Read error: Connection reset by peer] 18:03 < jeremy_c> skelterjohn: here's what I do, this is everything needed for 1 callback. https://gist.github.com/977007 18:04 < jeremy_c> widget := iup.Button(); widget.SetMapFunc(myMapFunc); 18:04 -!- ExsysTech [~ExsysTech@50-46-213-60.evrt.wa.frontiernet.net] has joined #go-nuts 18:09 -!- kr [~Keith@204.14.152.118] has joined #go-nuts 18:10 -!- jstemmer [~cheetah@mrpwn.stemmertech.com] has joined #go-nuts 18:16 -!- krutcha [~krutcha@remote.icron.com] has quit [Quit: Leaving] 18:22 -!- allengeorge [~allengeor@c-24-7-17-50.hsd1.ca.comcast.net] has quit [Quit: allengeorge] 18:25 -!- homa_rano [~ede@30-51-251.dynamic.csail.mit.edu] has quit [Quit: Changing server] 18:27 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has quit [Read error: Connection reset by peer] 18:28 -!- tobym [~tobym@cpe-72-229-2-6.nyc.res.rr.com] has quit [Ping timeout: 240 seconds] 18:29 -!- Bigbear1 [~Cody@d173-181-43-12.abhsia.telus.net] has joined #go-nuts 18:32 -!- homa_rano [~ede@30-51-251.dynamic.csail.mit.edu] has joined #go-nuts 18:34 -!- ExtraSpice [XtraSpice@78-57-204-104.static.zebra.lt] has quit [Read error: Connection reset by peer] 18:37 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 18:39 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:6126:f8f:d994:c0e1] has joined #go-nuts 18:40 -!- GeertJohan [~Squarc@clal-0-227.eduroam.inholland.nl] has quit [Quit: Leaving.] 18:44 -!- tux21b [~tux21b@chello213047047175.3.graz.surfer.at] has joined #go-nuts 18:45 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 18:46 -!- tobier [~tobier@c-ae9de055.712-1-64736c11.cust.bredbandsbolaget.se] has quit [Read error: Operation timed out] 18:50 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Ping timeout: 260 seconds] 18:51 -!- fabled [~fabled@83.145.235.194] has quit [Quit: Ex-Chat] 18:52 < exch> nice. that bit of code you pasted helped me sort out callbacks for libglfw 18:53 < exch> @ jeremy_c 18:53 < jeremy_c> exch: great! 18:53 < exch> ya 18:54 < jeremy_c> Just hope it's a good pattern to follow :-D 18:54 < exch> I went with a slightly different approach, more suitable to my needs. But it works :) 18:55 < jeremy_c> exch: anywhere I can take a peek? 18:55 < exch> Not yet. Just cleaning some stuff up and then i'll commit it to github 18:55 < jeremy_c> k 18:55 < exch> i'll let you know when it's there 18:55 < jeremy_c> thanks. I didn't find too many exampls on how to do this and mine seems a bit convoluted. 18:56 -!- Venom_X [~pjacobs@66.54.185.131] has joined #go-nuts 18:56 < exch> Mine isn't any less convoluted I'm afraid :p 18:57 < jeremy_c> well, I guess for now it gets the job done. For the end user it's easy enough to use, so if a better way comes about as long as the API for the user is good to start with... 19:01 < Venom_X> Hi, is there a way to typecast an int to a float64? 19:01 <+iant> Venom_X: float64(i) 19:03 -!- virtualsue [~chatzilla@nat/cisco/x-uqglrezequnacvzf] has quit [Ping timeout: 240 seconds] 19:04 < Venom_X> iant: well, it's a bit more complex than that, I guess. I'm getting a result from mongodb, that I had thought was going to be float64s, however there are some ints in there. I'm adding the results up, and my unmarshalled result is of type bson.M which is an interface{}. So, I get: "panic: interface conversion: interface is int, not float64" when I try: "tally += float64(result["weight"].(float64))". Any ideas? 19:05 < chomp> you could use a type switch 19:05 < hallas> Venom_X: that is code ugly code 19:06 < hallas> First of all, it looks your you're type asserting something and then type casting it to the same type float64? 19:06 < hallas> try 19:06 < Venom_X> hallas: it is. I had a struct before, but getting the mongo result into a property of type float64 was problematic 19:06 < Namegduf> Venom_X: You have to still use .(int) to take the value of the interface 19:07 < Venom_X> right. If I don't type assert, it says I have to type assert 19:07 < Namegduf> Because it's an int type inside the interface 19:07 < Namegduf> ANd then convert that int type to float64 19:07 < Namegduf> The type assert and type conversion are separate operations- get the int out, then convert it. 19:07 < Namegduf> If it's clearer, you could split them onto separate lines. 19:07 < hallas> Venom_X: what namegduf says, hes a fast typer 19:07 < hallas> :-) 19:08 < chomp> switch r := result["weight"]; r.(type) { case *int: tally += float64(r.(int)); case *float64: tally += r.(float64) } 19:08 < Venom_X> that's what I was looking for, awesome! 19:08 < Venom_X> thanks chomp 19:08 < chomp> that may not be the best way to do it, but as a scrub go noob, that's my offering :) 19:09 < hallas> if myint, ok := result["weight"].(float64); ok { tally += 19:09 < hallas> woops 19:09 < hallas> Accidently pressed enter ;-) 19:09 -!- gregschlom [~quassel@187.118.210.62.te-dns.org] has joined #go-nuts 19:10 < chomp> ah yeah, forgot type assertions are multivalue and all that 19:10 < hallas> if myint, ok := result["weight"].(int); ok { tally += float64(myint); } 19:10 < hallas> Should do it 19:10 < chomp> ^ much nicer :) 19:10 < Venom_X> ah, hallas thanks. I see the difference 19:10 < chomp> however that doesn't cover the case where weight is already a float64 19:11 < chomp> assuming there are cases where it is, if i understood the question correctly 19:11 < Venom_X> yes, there are cases where it's a float64 19:11 < hallas> Venom_X: its really odd though, if an interface{} can assert to and int 19:11 < hallas> and not a float64 19:11 < hallas> I mean 19:12 < hallas> asserting directly with my code, to float64, should work for ints and floats 19:12 < Namegduf> Asserts are not conversions. 19:12 < chomp> why? you can assert an int to float64? hat would seem broken. 19:12 < chomp> that* 19:12 < Namegduf> Asserts assert that the type inside the interface already is the given type 19:13 < Namegduf> And takes it out of the interface for you. 19:13 < Namegduf> It does not do any type conversion, and does not make anything a type it wasn't before. 19:13 < Namegduf> Type conversions are completely orthagonal. 19:13 < hallas> An assert figures out if the thing inside the interface can become what you want it to be 19:13 < Namegduf> No, it doesn't. 19:13 < hallas> ie. satisfies interfaces etc 19:14 < hallas> Like asserting from a net.Conn to at net.TCPConn 19:14 < Namegduf> Asserting an interface is kinda special. In general, no, it doesn't assert if it can "become" something. 19:14 < Namegduf> It asserts if it "is" something. 19:14 < hallas> Yes that what I mean, im not expressing it well enough 19:14 < Namegduf> It meeting an interface is consider as "being" it. But it is not considered as being it if it is a different concrete type to the type you're asking for. 19:15 < hallas> Namegduf: it comes down to how the compiler treats "it" 19:15 < Namegduf> More to do with how it treats "is". 19:15 < Namegduf> But yes. And not so much the compiler as the spec. 19:16 < hallas> But then 19:16 < Namegduf> In this case, if you ask for a concrete type you will never have it meet it if it does not contain literally that concrete type. 19:16 < Namegduf> If you ask for an interface, you will get it if the type inside meets that interface. 19:16 < hallas> An int and a float64 wrapped in a interface{} should be able to be asserted to a float64 with the same piece of code 19:16 < Namegduf> No, they can't. 19:16 < hallas> Ok :-( 19:17 < Namegduf> They are different types and an instance of one is not an instance of the other. 19:17 < Namegduf> The only case the thing you pointed out is true for is interfaces; it will NEVER work for a concrete type. 19:18 < hallas> I dont want to sound like what i am saying is fact btw :P Im just asking qusetions sorry :P 19:18 < hallas> I was a bit uncertain how assertions worked, seems its very low level 19:19 < Namegduf> They're fairly simple. Ignoring interfaces, assertions check if the type in question is inside the interface, and if it is, returns it to you. 19:19 < Namegduf> No conversions, no magic. 19:19 < Namegduf> Pretty much what you'd expect in a strictly-typed language. 19:22 < hallas> Ineed 19:22 < hallas> Indeed* 19:22 < hallas> It does make sense of course 19:23 < hallas> Do you know if the same thing applies for int16, int32 etc? 19:23 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 264 seconds] 19:24 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has quit [Ping timeout: 252 seconds] 19:24 -!- m4dh4tt3r [~Adium@c-98-210-145-213.hsd1.ca.comcast.net] has joined #go-nuts 19:24 < hallas> I dont really know what sort of level of abstraction there is regarded those types 19:24 < Namegduf> It applies to every distinct type. 19:25 < Namegduf> Those are distinct types. 19:27 < chomp> int16 is not int32. therefore type-asserting int16 on an int32 will fail. there are no real subtleties or gotchas to be aware of. a type is a type is a type. 19:28 < chomp> even if you were to do something like: type foo int16; func main() { var i interface{} = int16(3); i.(foo) } it would fail 19:28 < chomp> because a foo is not an int16. 19:28 < hallas> Hmm what? 19:30 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 246 seconds] 19:30 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has joined #go-nuts 19:31 < chomp> didn't mean to confuse be bringing type declarations into the mix :p what specifically don't you get about it 19:31 < Namegduf> If you make your own type based on an existing type 19:31 < chomp> confuse by* bringing. augh. 19:31 < Namegduf> It is still a distinct type. 19:32 < hallas> So, its all about interfaces then :D ? 19:32 < chomp> no, it's all about types 19:32 < hallas> yes but assertion between them 19:33 < Namegduf> Assertion between interfaces is different, yes. 19:33 < chomp> a value has a concrete type. type assertion asserts whether or not that concrete type is a specific one. 19:33 < Namegduf> It asserts that the type meets that interface, rather than being that interface type. 19:33 < hallas> Yes exactly 19:34 < Namegduf> Interfaces are different from concrete types there. 19:34 < chomp> i think i would prefer the two assertions to use some differing syntax 19:35 < exch> jeremy_c: Here's how I did it https://github.com/jteeuwen/glfw/blob/master/callback.go 19:35 < Namegduf> I think it's okay as is 19:35 < Namegduf> The assertion asserts that it meets an interface or a specific type 19:35 < exch> In my case, the callback handlers are global to the glfw library. That simplifies things a bit 19:35 < chomp> surely a real dynamic type assertion can be useful for interface types, and interface assertion could be useful for non-interface types (e.g. fooint.(Numeric) or somesuch) 19:35 < Namegduf> No, it'd be wrong. 19:35 < Namegduf> Interface assertion is at runtime. 19:35 < chomp> actually i retract the first part, indeed 19:36 < Namegduf> Whether a type meets an interface or not is determined at compile-time 19:36 < Namegduf> And can be "asserted" by the type conversion, which will fail at compile-time if it can't work, like all other type conversions. 19:37 < exch> skelterjohn: https://github.com/jteeuwen/glfw this should now actually be useful, now that callbacks are working :) 19:38 < hallas> So how does it check? By looking at the underlying value, and simply sees if its fits the type to be asserted to? 19:38 < hallas> does that differ from type assertion to interface assertion? 19:38 < Namegduf> An interface is two bits. 19:38 < Namegduf> A pointer to the value, or the value if it fits in something the same size as a pointer 19:39 < Namegduf> And a pointer to an "itable" 19:39 < Namegduf> Which contains a table of pointers to the functions provided by the interface for that type 19:39 < Namegduf> And a pointer to a type structure 19:39 < Namegduf> Which says which type it is. 19:39 < Namegduf> This is set whenever something is stored in an interface. 19:39 < hallas> two bytes? 19:39 < Namegduf> Two words. 19:40 < Namegduf> Four bytes each on x86. 19:40 < hallas> yes yes 19:40 < Namegduf> By "bits" I meant "pieces", not bit bits. 19:40 < Namegduf> Sorry. 19:41 < hallas> ;) I figured, must be careful thoug 19:41 < hallas> though ^ 19:41 -!- tobier [~tobier@c-1c9de055.712-1-64736c11.cust.bredbandsbolaget.se] has joined #go-nuts 19:41 < Namegduf> The code storing something in an interface knows what type it was originally, it's typed in that context 19:42 < Namegduf> And so the compiler can emit code that sets the interface appropriately. 19:42 < Namegduf> An interface assertion will likely look up the type, then try to construct a new interface value for that type in the given interface and say it fails if it fails. 19:42 < Namegduf> I'm guessing a bit there. 19:43 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-161-107.clienti.tiscali.it] has joined #go-nuts 19:44 < hallas> Just to understand you perfectly, an interface{} value has a type pointer so to speak? 19:44 < Namegduf> Yes. 19:44 < hallas> Alright 19:44 < Namegduf> It's a pointer to a structure which has a type pointer and the function pointers 19:44 < Namegduf> But yeah. 19:44 < hallas> makes sense 19:45 < Namegduf> The structure is shared between all interfaces of the same interface type storing the same real type. 19:45 < Namegduf> The type structure is the same for all references to that real type. 19:46 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-148-158.clienti.tiscali.it] has quit [Ping timeout: 240 seconds] 19:47 < hallas> How about int32 then, does it have a pointer that says im to be treated as an int32, and a pointer thats says, im really an int32? 19:47 < Namegduf> No. 19:47 < Namegduf> An int32 is not an interface type. 19:48 < Namegduf> It's just four bytes. 19:48 < Namegduf> The compiler always knows at compile time what type it is 19:48 < Namegduf> And has no reason to store it at runtime 19:49 < hallas> So if something of interface{} is really an int32, what does it point to, in order to know this? 19:49 < Namegduf> A type structure. 19:49 < Namegduf> An interface{} is two words; the value, and a pointer to the itable, which points to the type structure. 19:49 < Namegduf> Actually 19:49 < Namegduf> An interface{} is just the value and a pointer to the type structure 19:50 < Namegduf> Since it has no functions, it can skip the itable. 19:50 -!- gregschlom [~quassel@187.118.210.62.te-dns.org] has quit [Ping timeout: 240 seconds] 19:50 < Namegduf> Since the compiler knows at compile-time when an interface is an interface{}, it can generate code to handle that right. 19:50 < Namegduf> But that's an optimisation. 19:50 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has quit [Quit: Computer has gone to sleep.] 19:52 < hallas> Alright 19:53 < hallas> I understand perfectly know 19:53 < hallas> now 19:54 < hallas> Namegduf: thanks alot 19:56 -!- tncardoso [~thiago@150.164.2.20] has quit [Quit: bye] 19:57 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has joined #go-nuts 20:07 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has joined #go-nuts 20:16 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org] 20:17 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has quit [Quit: Leaving.] 20:19 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has joined #go-nuts 20:27 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Remote host closed the connection] 20:27 -!- huin [~huin@91.85.171.238] has quit [Quit: leaving] 20:29 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 20:29 -!- snearch [~snearch@f053006158.adsl.alicedsl.de] has quit [Quit: Verlassend] 20:34 -!- monsieur_max [~maxime@ip-78.net-89-2-171.rev.numericable.fr] has quit [Quit: Leaving.] 20:36 -!- Ekspluati [5b9c45fc@gateway/web/freenode/ip.91.156.69.252] has joined #go-nuts 20:39 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has quit [Quit: ~] 20:44 < Ekspluati> What could be better than changing hundreds of "i = 0"s to "int i = 0" to get a project to compile? 20:45 < Namegduf> Not writing hundreds before trying to compile the first time. 20:45 < Namegduf> Also i := 0 is pretty 20:45 < Namegduf> Also it's var i int = 0 in Go. 20:45 < skelterjohn> you should probably compile more often, yes 20:45 < Namegduf> Not int i 20:45 < Namegduf> That's C. 20:46 < Ekspluati> Wanted a "LOL C++?!?!" answer. 20:46 < Namegduf> I wanted a pony. 20:46 < Namegduf> Then I got one. 20:46 < Namegduf> It was the happiest day of my life until I got bored with it. 20:47 < hallas> true story 20:47 < Ekspluati> It's a C++ project from 1999 or something. I understand now why my friend asked me to get it working on a more recent compiler. 20:48 < Namegduf> Are you billing them for the time? 20:48 < skelterjohn> what old version of C++ allowed you to say "i = 0" without declaring i somewhere? 20:48 < aiju> 22:49 < Ekspluati> What could be better than changing hundreds of "i = 0"s to "int i = 0" to get a project to compile? 20:48 < Ekspluati> VS 2003, in for loops 20:48 < aiju> ed is your friend 20:48 < Namegduf> Oh god 20:48 < skelterjohn> that's not C++'s fault 20:48 < skelterjohn> that is MS's faut 20:48 < skelterjohn> fault 20:48 < aiju> everything is MS' fault 20:48 < Ekspluati> "for( i = 0; balhblah) {" 20:48 < aiju> when in doubt, blame MS 20:49 < aiju> Ekspluati: ,s/for\( i = 0/for(int i = 0/g 20:49 < aiju> or something 20:49 < Namegduf> Linux would have no problems if MS wasn't deliberately sabotaging the market against it, thus turning large amounts of developer resources away 20:49 < aiju> haha 20:49 < KirkMcDonald> Namegduf: Nonsense, it is the year of the Linux desktop. 20:50 < Namegduf> KirkMcDonald: I just decided the year of the Linux desktop was when I used Linux 20:50 < Namegduf> On my desktop, most of the time. 20:50 < Namegduf> Because I realised I don't actually *care* about lusers 20:50 < skelterjohn> it's always the year of the linux desktop 20:50 < aiju> every year is the year of the Plan 9 desktop 20:51 < jeremy_c> skelterjohn: would go-gb help any in building optional modules? For example, with go-iup you may not wish to build iup/pplot or iup/glcanvas because you don't have supporting libs and don't desire that functionality. 20:51 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 20:51 < Namegduf> Optional modules are tricky 20:51 < Namegduf> You have to write backwards and optionally build files. 20:51 < skelterjohn> jeremy_c: you can put a file called target.gb with the only contents being a "-" 20:51 < Namegduf> By "write backwards" I mean have the optional things call into the required things 20:51 -!- Paradox924X [~Paradox92@c-68-35-229-34.hsd1.fl.comcast.net] has joined #go-nuts 20:51 -!- Paradox924X [~Paradox92@c-68-35-229-34.hsd1.fl.comcast.net] has quit [Changing host] 20:51 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has joined #go-nuts 20:51 < skelterjohn> and it will ignore that directory 20:51 < Namegduf> Using init() to "hook" stuff 20:52 < Namegduf> Or set an interface somewhere to reference them, or a block of function pointers, or blah. 20:52 < skelterjohn> or it was a pretty gb specific question :) 20:52 < Namegduf> ...that true. 20:52 < skelterjohn> i think he just means "don't run the compiler on some particular source" 20:52 < Namegduf> *too 20:53 < Namegduf> I should look at go-gb. 20:53 < jeremy_c> right now you need quite a few libraries to build iup. I am hoping to split it up into logical parts and reduce the entry barrier. 20:53 < Namegduf> My plan was to write my own mini-tool for my own project. 20:53 < skelterjohn> that's what gb started as 20:53 < Namegduf> What's its licence? 20:53 < skelterjohn> which is why the source is a bit awkward 20:53 < skelterjohn> i forget 20:53 < skelterjohn> something convenient 20:53 < Namegduf> I could just mutilate it. 20:53 < jeremy_c> ha! 20:53 < skelterjohn> and normal 20:53 < skelterjohn> feel free 20:54 < skelterjohn> you have my blessing to fork/mutilate 20:55 < Namegduf> It'll sadly be a while before I have more time, but thanks. 20:55 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 20:56 -!- tvw [~tv@e176008032.adsl.alicedsl.de] has joined #go-nuts 20:57 -!- tvw [~tv@e176008032.adsl.alicedsl.de] has quit [Remote host closed the connection] 20:58 -!- tvw [~tv@e176008032.adsl.alicedsl.de] has joined #go-nuts 20:58 < jeremy_c> Namegduf: I was thinking they would just be seperate packages. import "iup", import "iup/glcanvas", ... 20:59 < jeremy_c> the would all rely on "iup" -- core 20:59 < skelterjohn> oh you mean you want to provide all the source, but have gb only compile based on what libraries are available? 20:59 < skelterjohn> that is not something gb can do 20:59 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has joined #go-nuts 20:59 < skelterjohn> unless you had some script insert the target.gb files before hand 20:59 < jeremy_c> or what the user says to build? gb iup iup/glcanvas ? 21:00 < skelterjohn> if you spec a dir on the command line, it builds that dir and all its subdirs 21:00 < skelterjohn> use -e for exclusive 21:00 -!- tobym [~tobym@cpe-72-229-2-6.nyc.res.rr.com] has joined #go-nuts 21:00 < skelterjohn> actually - that may not do it 21:00 < skelterjohn> hrm 21:01 < skelterjohn> -e just doesn't follow deps 21:01 < skelterjohn> *shrug* 21:01 < skelterjohn> :) 21:03 < Tonnerre> Hm, wasn't there a a lis tof people who packaged Go? 21:04 -!- dju__ [dju@fsf/member/dju] has joined #go-nuts 21:05 < skelterjohn> you mean the contributors list? 21:05 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:6126:f8f:d994:c0e1] has quit [Quit: Leaving.] 21:05 < skelterjohn> $GOROOT/CONTRIBUTORS 21:05 < skelterjohn> and $GOROOT/AUTHORS 21:07 -!- dju_ [dju@fsf/member/dju] has quit [Ping timeout: 276 seconds] 21:11 -!- jarbox [~rovie@cpe-98-30-33-49.woh.res.rr.com] has quit [Remote host closed the connection] 21:14 < skelterjohn> usually when you draw a point at coord 0, 0 onto a rastered window, it's at the top left, right? 21:14 < skelterjohn> top left, correct? 21:14 * jeremy_c is graphically challenged. 21:15 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has quit [Remote host closed the connection] 21:15 < exch> opengl's coordinate system is a bit topsy-turvy 21:15 < exch> 0,0 is bottom-left 21:15 < hallas> skelterjohn: yes usually 21:16 < skelterjohn> exch: with opengl it depends completely on your projection matrix 21:16 < skelterjohn> so saying 0, 0 is bottom-left doesn't mean much 21:16 < hallas> in the html5 canvas its top left thats 0,0 21:16 < skelterjohn> but mac's coordinate system has 0, 0 at the bottom left 21:17 -!- photron [~photron@port-92-201-222-15.dynamic.qsc.de] has quit [Ping timeout: 260 seconds] 21:17 < skelterjohn> but i'm just deciding where to put the origin for my mac impl of exp/draw 21:18 < skelterjohn> which is mostly working except for events i don't forward and for window resizing screwing up the draw buffer 21:18 < ww> i can't remember... can you give an arbitrary (e.g. affine) transformation matrix to opengl? 21:18 < skelterjohn> affine means not necessarily centered at the origin, right? 21:18 < skelterjohn> that word has always been a bit of a mystery to me 21:19 < ww> i think it means with basis vectors that are not necessarily orthogonal 21:19 -!- twopoint718 [~chris@fsf/member/twopoint718] has quit [Quit: Leaving] 21:19 < skelterjohn> oh 21:19 < skelterjohn> the transformation matrix can be composed of translations, rotations and scalings 21:20 < skelterjohn> i don't know if that leaves room for non-orthogonality or not 21:20 < skelterjohn> i'm not an expert at such things 21:20 < skelterjohn> but intuitively i think they remain orthogonal 21:20 < ww> no i don't think it does 21:23 < ww> if it had them you could play funny perspective games i guess... not sure how useful that would be... which is probably why it wasn't included... 21:23 < kamaji> Weiiiird... i'm getting "Permission denied" when I compile go programs now 21:23 < hallas> kamaji: do you have permission to the source files youre trying to compile :-)? 21:24 < kamaji> er 21:24 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts 21:24 < kamaji> I mean run 21:24 < kamaji> it compiles fine and produces an executable 21:24 < hallas> Same question then :D 21:24 < kamaji> yes :p 21:25 < hallas> try chmod +x <yourfile> 21:25 < kamaji> I did, doesn't work 21:25 < kamaji> even as root 21:25 < kamaji> what did I do 0_o 21:25 < skelterjohn> what's it say in "ls -l" 21:25 < hallas> No other error than the "permission denied" thing ? 21:25 < kamaji> -rw-r--r-- for source 21:25 < skelterjohn> for the executable 21:25 < kamaji> zsh: permission denied: ./scb 21:25 < kamaji> -rwxr-xr-x 21:26 < skelterjohn> bizarre 21:26 < hallas> very :o 21:26 < kamaji> I know :| 21:26 < skelterjohn> remove it, try again 21:26 < skelterjohn> when in doubt, clean-build 21:26 < kamaji> tried that a few times :P 21:26 < kamaji> i moved the directory everything was in 21:26 < kamaji> now it works 21:26 < ww> actually, i'm on crack. affine is the wrong word for what i mean 21:26 < kamaji> what. the. fuck. 21:26 < skelterjohn> i meant your whole computer 21:26 < kamaji> lol 21:26 < hallas> ww: affine its that transformation invertibility propery right? 21:27 < hallas> property* 21:27 < skelterjohn> i think it's my origin property 21:27 < skelterjohn> an affine transformation is a linear transformation plus an offset 21:28 < ww> according to wikipedia... yes, exactly 21:28 < mpl> iant: re: the symlink error, do I need to make a type assertion? because when I try to compare err.Error it tells me that err doesn't have an Error member. (because it is of type os.Error, not os.LinkError). 21:29 <+iant> yes, you need a type assertion there to get back to Linkerror 21:29 < ww> what i was particularly thinking about was scaling the axes independently though 21:29 < skelterjohn> you can do that 21:30 < skelterjohn> that doesn't make them non orthogonal, though 21:30 < ww> of course, that was just my mind wandering 21:30 < skelterjohn> ah 21:32 < mpl> uhm 21:32 < mpl> impossible type assertion: err (type os.Error) cannot have dynamic type os.LinkError (missing String method) 21:32 < Namegduf> mpl: Does LinkError's string method have a different signature? 21:33 < ww> so you can do special relativity then (where v gets treated as constant per rendered frame) 21:33 <+iant> mpl: os.LinkError definitely has a String method 21:33 < mpl> func (e *LinkError) String() string { 21:34 < Namegduf> Aha. 21:34 < Namegduf> No, os.LinkError does not have a String method 21:34 <+iant> but you want *os.LinkError 21:34 < Namegduf> *os.LinkError does 21:34 < Namegduf> Yeah. 21:34 <+iant> sorry 21:34 < Namegduf> That'll be it. 21:34 < mpl> ah damn 21:34 < mpl> thx 21:35 * Namegduf didn't mean to say it was wrong as a statement, just to point out the technicality. 21:35 -!- jstemmer [~cheetah@mrpwn.stemmertech.com] has quit [Quit: leaving] 21:36 < mpl> iant: all good now, thanks. 21:38 -!- tux21b [~tux21b@chello213047047175.3.graz.surfer.at] has quit [Ping timeout: 246 seconds] 21:47 -!- Venom_X_ [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 21:49 < hallas> How do you guys handle your foo, err := func() stuff? check if err is nil after each call or is there a smarter way? 21:50 < hallas> cleaner way 21:50 < hallas> dynamic way 21:50 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Ping timeout: 246 seconds] 21:53 -!- freetz [~fritz@bc-proxy-2.sandia.gov] has quit [Ping timeout: 276 seconds] 21:54 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.] 21:56 -!- alehorst [~alehorst@189.114.239.84.dynamic.adsl.gvt.net.br] has quit [Quit: Leaving.] 22:00 -!- dju__ [dju@fsf/member/dju] has quit [Read error: Connection reset by peer] 22:01 -!- dju__ [dju@fsf/member/dju] has joined #go-nuts 22:04 -!- dlowe [~dlowe@ita4fw1.itasoftware.com] has quit [Quit: Leaving.] 22:08 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has quit [Remote host closed the connection] 22:09 -!- awidegreen [~quassel@h-170-226.A212.priv.bahnhof.se] has quit [Remote host closed the connection] 22:10 -!- krutcha [~krutcha@remote.icron.com] has joined #go-nuts 22:11 < str1ngs> check(err) :P 22:11 < str1ngs> but that is not always the best way 22:12 < skelterjohn> hallas: if the function params and returns are all different, then i'll do "if err != nil { return }" after each 22:12 < skelterjohn> and err will be a named return value for the function 22:14 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn] 22:15 -!- chomp [~chomp@dap-209-166-184-50.pri.tnt-3.pgh.pa.stargate.net] has quit [Quit: Leaving] 22:18 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has quit [Quit: gtaylor] 22:18 -!- krutcha [~krutcha@remote.icron.com] has quit [Read error: Connection reset by peer] 22:19 -!- r_linux [~r_linux@smtp.mandique.com.br] has quit [Quit: Lost terminal] 22:20 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined #go-nuts 22:20 -!- elephants [~elephants@76.9.192.146] has quit [Remote host closed the connection] 22:21 -!- tncardoso [~thiago@189.59.160.82] has joined #go-nuts 22:22 < jeremy_c> Splitting go-iup isn't working too well. Every widget has a type of *Ihandle. Outside of the package where Ihandle is defined, it cannot be used as a receiver... That leaves me in a real pickle. 22:23 < exch> Cant you create a type for it in your lib? like: type Handle *IHandle 22:24 < jeremy_c> How then would I pass the resulting new type to the 80 or so functions in the core lib as an Ihandle? 22:24 < exch> That'll require some extra covnersion code in the lib itself, but it makes the whole thing accessible outside 22:24 < exch> cast it to back to the appropriate type 22:24 < jeremy_c> make the user of the lib cast it back? 22:25 < hallas> How do I use the image package to actually draw say an image.Rect on an image? 22:25 -!- PortatoreSanoDiI [~Marvin@dynamic-adsl-94-36-161-107.clienti.tiscali.it] has quit [Quit: E se abbasso questa leva che succ...] 22:25 -!- xash [~xash@d003120.adsl.hansenet.de] has joined #go-nuts 22:25 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 22:25 < exch> no, your lib should do that internally.. anyone outside just uses the Handle type 22:25 < exch> I'm just poking in the dark here though. I may just misunderstand your issue 22:26 < jeremy_c> exch: no, I think you understand it, just not too excited about the solution :-/ 22:26 < exch> https://github.com/jteeuwen/go-pkg-libvlc/blob/master/libvlc/media.go#L112 here's an example of what I mean 22:26 < exch> Media and *Media are the types the user of this lib works with 22:26 < exch> (*C.libvlc_media_t)(this) is what gets passed to the C code 22:27 < exch> Media basically just aliases C.libvlc_media_t 22:28 < jeremy_c> I think our two problems are slightly different. 22:28 < exch> do you have some example code? 22:28 < jeremy_c> I have a package "iup" that defines type Ihandle. There are ~80 functions that work on Ihandle as the receiver. 22:29 < exch> ok 22:30 < jeremy_c> So, now I want to make a package "iup/pplot" which is the plotting widget. I want it to be seperate so that one could compile/use it if they want or not if they don't. 22:30 < jeremy_c> i.e. lib dependencies on pplot. 22:30 < exch> ah ok 22:31 < jeremy_c> Those ~80 functions in "iup" should also work on "iup/pplot", but in iup/pplot I have methods also that are pplot specific that should work on it, but in iup/pplot I cannot define: func (ih *iup.Ihandle) DoSomething() 22:31 < exch> right, I see what you mean 22:32 < exch> the only way around that is to 'alias' IHandle inside the pplot package 22:32 < Namegduf> Two options: 22:32 < Namegduf> 1) Make iup/pplot define its own type, which embeds IHandle. 22:32 < Namegduf> 2) Make them functions. 22:32 < exch> or that 22:32 < Namegduf> Aliasing it will not work because then code outside the package can't use it as an IHandle 22:33 < exch> not without casting anyways 22:33 < jeremy_c> If I create a specific type, type PPlot Ihandle, that'll allow me to add new methods to PPlot, but how then can a user take the result of a PPlot and send it via a receiver to a method iup.Abc() ... 22:33 < Namegduf> Does the base IHandle have actual data? 22:34 < jeremy_c> Right now it does, it has "H *C.Ihandle" ... I was thinking I'd need more data, but now I don't think I will. 22:34 < jeremy_c> type Ihandle struct { H *C.Ihandle } 22:34 < Namegduf> Hmm. 22:34 < Namegduf> And a C.Ihandle is? 22:34 < hallas> Sorry to ask again but, 22:34 < jeremy_c> a void * basically 22:34 < hallas> http://www.lostgarden.com/2007/05/dancs-miraculously-flexible-game.html 22:34 < hallas> Argfg 22:34 < hallas> Sorry 22:34 < hallas> That was a bad copy paste 22:34 < hallas> Ignore that link 22:34 < str1ngs> jeremy_c: that's what I've been doing wrapping them in go structs 22:34 < Namegduf> Pointing to one of the iup implementations? 22:35 < jeremy_c> yes, that I never access, nor need to nor should. It's contents is all internal to iup 22:35 < str1ngs> jeremy_c: not sure about voids though. 22:35 < Namegduf> Make everything operating on Ihandle take an interface. 22:35 < Namegduf> And turn them into functions. 22:36 < Namegduf> Have the implementations implement concrete types that the main package's functions will operate on. 22:36 < jeremy_c> dlg.Show() just seems so much nicer than iup.Show(dlg) 22:36 < Namegduf> In general, methods are per-implementation, functions are not. 22:36 < Namegduf> Yes, but you're getting into nasty design stuff to get a tiny bit of syntactic sugar. 22:36 < Namegduf> And it's not idiomatic in Go. 22:36 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has quit [Read error: Operation timed out] 22:37 < Namegduf> Go has functions as well as methods and you should use them for stuff not attached to a specific implementation. 22:37 < Namegduf> It's much better than the design hackery you have to do, which tends to involve type embedding. 22:38 < Namegduf> (You would emebed the base type in the extended types, not visa versa, and it would work. But don't do that just so it's a method, not a function, that's ew.) 22:38 < jeremy_c> dlg := iup.Dialog(child).Attrs("abc", "xyz") vs. iup.Attrs(iup.Dialog(child)) .Attrs() is something familiar to those using iup. 22:38 < Namegduf> Go bindings should be idiomatic Go. 22:38 < Namegduf> Not idiomatic something else. 22:38 < Namegduf> Wrapping the external API to be more Go-like is a *good* thing, not a bad thing. 22:38 < str1ngs> easier said then done 22:39 < Namegduf> Neither is particularly idiomatic as code goes, but making things methods instead of functions just to do that isn't. 22:39 < jeremy_c> hm. that's gonna take a good deal of time to change. I guess if that is what has to be done. 22:40 < Namegduf> It's a matter of orthagonality. 22:41 < Namegduf> It's nicer to cleanly say "this is implementation-dependent" and "this isn't" and not need multiple layered implementations of things, one of which does nothing but have methods. 22:42 < jeremy_c> well, I think I'm gonna take a break before tackling this. 22:44 < str1ngs> jeremy_c: take a look at the gtk bindings maybe that will help 22:45 < exch> Or drive you completely insane 22:45 -!- chomp [~chomp@c-67-186-35-69.hsd1.pa.comcast.net] has joined #go-nuts 22:47 -!- ctimmerm [~ctimmerm@cs181050011.pp.htv.fi] has quit [Ping timeout: 276 seconds] 22:53 -!- jbooth1 [~jay@209.249.216.2] has quit [Quit: Leaving.] 22:56 -!- iant [~iant@nat/google/x-ilxwbbkzkefdjald] has quit [Ping timeout: 240 seconds] 23:01 < jeremy_c> Is there a best practice for directory structure of a lib that contains multiple packages and demo programs? I look around and see many different styles. 23:02 < exch> Not that I am aware of. I'm guessing people just use what they deem apropriate 23:08 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Quit: Venom_X] 23:11 < chomp> my preference is examples/ and src/package1 src/package2, etc. but it's just a preference 23:11 < Namegduf> src always makes me a little annoyed, even though I use it 23:11 < Namegduf> Because it makes godoc do wrong things 23:11 < chomp> yeah it's not my favorite, but it feels right to have some grouping of all library source paths 23:11 < Namegduf> I agree. 23:12 < Namegduf> Eventually I just renamed my packages to include the src/ 23:12 < chomp> plus, old habits... i've been brainwashed by unix 23:12 < Namegduf> But that's only because there's also a lib/ and modules/ 23:12 < Namegduf> I might merge the last and the first at some point. 23:12 < ab3> where can i find a practical example of the json Encoder/Decoder types, i am trying to filter a json by decoding it and only selecten a select set of attributes and then encode it back into a Buffer. How do I add a array to the encoder without knowing the elements I have to filter first 23:15 < str1ngs> ab3: you can use http://golang.org/pkg/json/#RawMessage for your field types to skip marshal is that what you mean? 23:19 -!- tmk [~TMKCodes@unaffiliated/tmkcodes] has quit [Ping timeout: 246 seconds] 23:22 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has quit [Quit: Leaving.] 23:32 -!- iant [~iant@67.218.110.18] has joined #go-nuts 23:32 -!- mode/#go-nuts [+v iant] by ChanServ 23:32 -!- Squeese [~squeese@cm-84.209.17.156.getinternet.no] has quit [Remote host closed the connection] 23:34 -!- tobym [~tobym@cpe-72-229-2-6.nyc.res.rr.com] has quit [Ping timeout: 246 seconds] 23:35 -!- dfr|bohconf [~dfr|work@host-12-159-175-242.bccexpo.com] has joined #go-nuts 23:39 -!- tvw [~tv@e176008032.adsl.alicedsl.de] has quit [Remote host closed the connection] 23:41 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has joined #go-nuts 23:48 -!- rcrowley [~rcrowley@ip67-90-234-94.z234-90-67.customer.algx.net] has quit [Quit: Computer has gone to sleep.] 23:50 < Tonnerre> Is there some kind of debugger for Go and friends? 23:55 < hallas> How can I paint an entire picture black? I dont understand how to use the image.Image resource to paint anything. 23:55 < Namegduf> Tonnerre: gdb works. 23:56 < Tonnerre> Well, cgo crashes and gdb tells me there's no stack frame but well 23:56 -!- twopoint718 [~chris@fsf/member/twopoint718] has joined #go-nuts --- Log closed Wed May 18 00:00:50 2011