--- Log opened Sun Dec 26 00:00:01 2010 00:16 -!- xash [~xash@d075168.adsl.hansenet.de] has joined #go-nuts 00:23 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has joined #go-nuts 00:28 -!- napsy [~luka@88.200.96.18] has quit [Quit: Lost terminal] 00:32 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has quit [Quit: vdrab] 00:32 -!- ap3xo [~apexo@daedalus.isaco.de] has joined #go-nuts 00:33 -!- enferex_ [~enferex@users.757.org] has joined #go-nuts 00:33 -!- tdnrad_ [~darndt@terminal.research.cs.dal.ca] has joined #go-nuts 00:33 -!- suiside_ [tajnyman@bakery.awkwardcake.net] has joined #go-nuts 00:33 -!- c9s_ [~c9s@59-126-64-204.HINET-IP.hinet.net] has joined #go-nuts 00:33 -!- taruti_ [taruti@ultra.violetti.org] has joined #go-nuts 00:33 -!- drd_ [~eric@compassing.net] has joined #go-nuts 00:33 -!- GilJ_ [~gilles@zeus.ugent.be] has joined #go-nuts 00:38 -!- Netsplit *.net <-> *.split quits: taruti, enferex, tdnrad, apexo, suiside, drd, c9s, GilJ, jesusaurus 00:51 -!- yebyen [~yebyen@cpe-67-253-244-26.rochester.res.rr.com] has joined #go-nuts 00:53 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 272 seconds] 00:55 -!- tav_ [~tav@92.7.68.30] has joined #go-nuts 00:56 -!- ExtraSpice [~XtraSpice@88.118.33.48] has quit [Ping timeout: 276 seconds] 00:56 -!- tav [~tav@92.24.231.145] has quit [Ping timeout: 255 seconds] 01:00 -!- Tuller [~tuller@pool-98-117-92-241.rcmdva.fios.verizon.net] has joined #go-nuts 01:06 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 01:17 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 265 seconds] 01:19 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has quit [Ping timeout: 240 seconds] 01:33 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has joined #go-nuts 01:39 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit [Ping timeout: 264 seconds] 01:39 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined #go-nuts 01:42 -!- Scorchin [~Scorchin@host86-181-88-13.range86-181.btcentralplus.com] has quit [Quit: Scorchin] 01:45 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 255 seconds] 01:47 -!- nettok [~quassel@200.119.167.28] has joined #go-nuts 01:49 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has quit [Quit: vdrab] 02:00 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Quit: Leaving] 02:14 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has joined #go-nuts 02:18 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 02:19 -!- nettok [~quassel@200.119.167.28] has quit [Ping timeout: 240 seconds] 02:19 -!- Project_AFK [~Marvin@82.84.98.59] has quit [Ping timeout: 276 seconds] 02:23 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240 seconds] 02:27 -!- nettok [~quassel@200.119.167.28] has joined #go-nuts 02:32 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 02:38 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 250 seconds] 02:46 -!- xash [~xash@d075168.adsl.hansenet.de] has quit [Ping timeout: 255 seconds] 02:56 -!- boscop [~boscop@f055203132.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 03:01 -!- ryanu [~ryan_@c-98-200-189-134.hsd1.tx.comcast.net] has joined #go-nuts 03:04 -!- nettok [~quassel@200.119.167.28] has quit [Ping timeout: 240 seconds] 03:15 -!- nettok [~quassel@200.119.167.28] has joined #go-nuts 03:23 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined #go-nuts 03:31 -!- thomas_b [~thomasb@cm-84.215.47.51.getinternet.no] has joined #go-nuts 03:32 < adu> hi all 03:40 < Eko> sup adu 03:41 < Eko> Namegduf: fixing the way I send messages to the client goroutines made my 300user*100channels test go from 18sec to 6sec 03:42 < Namegduf> Eko: Interesting. What change did that involve? 03:43 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit: adu] 03:43 < Eko> Namegduf: I originally sent a pointer to a type Event struct { Command string; Args map[string]{}interface; Result map[string]{}interface; Reply chan bool } 03:44 < Eko> and I had a giant switch on Event.Command 03:44 < Eko> and each one would do things like ev.Args["name"].(string) 03:44 < Eko> and they'd set any "return" values in the result and the sender would decode similarly 03:44 < Namegduf> So the bulk of your time was spent in type assertions? 03:45 < Eko> type assertions, map lookups and sets, yeah 03:45 < Eko> so now I have a different structure for each "event" 03:45 < Eko> and a single type assertion switch 03:45 < Eko> and then all of the members can be accessed directly, both on the client and user side 03:45 < Namegduf> Neat. 03:45 < Eko> (of the event structure) 03:46 < Eko> so, a LOT less overhead. 03:46 < Eko> now the thing I'm running into is weird error "write tcp: broken pipe" issues with too many clients 03:46 < Eko> like, 500 or so 03:46 < Namegduf> How do you handle commands which touch a channel and users, like messages? 03:47 < Eko> hmm, that one successfully did 400 users on 300 channels each in 30 seconds without the broken pipe =. 03:47 * Eko tries 500 03:47 < Eko> Namegduf: I use the communication more for events than for get/set 03:48 < Namegduf> So your Event.Command options don't directly connect to IRC commands? 03:48 < Eko> so, for instance, the client goroutine will make sure that the channel exists (by asking the server) before sending the message to the channel coroutine to be dispatched to its clients 03:48 < Namegduf> Ah, I see. 03:48 < Namegduf> Hmm. 03:48 < Namegduf> What happens if the channel stops existing between those two things? 03:49 < Eko> Bad Things, I'm sure. 03:49 < Namegduf> I used to have my clients work like that. 03:49 < Namegduf> It made quitting an entertaining exercise. 03:49 < Eko> haha 03:50 < Eko> actually, no, a channel will never cease to exist while a client is still on it 03:51 < Namegduf> So as long as you can't send commands to channels you aren't on, you're okay? 03:51 < Namegduf> Hmm. 03:51 < Namegduf> Or remove other users. 03:51 < Eko> well, the server properly handles +n, not sure what you're asking 03:51 < Namegduf> Users 1 and 2 are on the channel. User 1 kicks user 2, then parts. User 2 is at the same time sending a message to the channel. 03:51 < Eko> oh, I see 03:52 < Namegduf> If user 1's commands resolve first entirely 03:52 < Namegduf> Then user 2 will not know they aren't on the channel at the time they send a message to it 03:52 < Namegduf> Is that possible? 03:52 < Eko> or if you try to send to a channel you aren't on and the last person parts after your client gets the channel from the server and before the message is dispatched 03:52 < Namegduf> Yeah. 03:53 < Namegduf> I found I *couldn't* make it so everyone would know reliably, so I had to do something very slow 03:53 < Namegduf> And have all messages to clients go through a "client goroutine" which would be updated on the live/deadness of a client reliably before a client's goroutine would go away. 03:54 < Eko> either one could be bad. 03:56 < Eko> damn concurrency :P 03:56 < Namegduf> Yeah. 03:56 < Namegduf> Every so often I kick myself. 03:57 < Namegduf> Right now, I realised that the hooks on various write events are not guaranteed at all to happen in the order the writes do. 03:57 < Namegduf> Well, that was a day ago. 03:57 < Namegduf> I'm readding synchronisation to things which were lockless due to magic. :( 03:57 < Eko> actually, I could do something really sneaky 03:57 < Eko> and essentially use channels to lock the server/channel coroutine 03:58 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined #go-nuts 03:58 < Namegduf> Are you using buffered channels, as a matter of interest? 03:58 < adu> Eko!! 03:59 < adu> my parser is nearly done 03:59 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has quit [Ping timeout: 265 seconds] 03:59 < Eko> basically have a no-op event would hang in the coroutine's event loop until the client read the "completion" status from the reply channel 03:59 < Eko> nope 04:00 < Eko> hullo adu 04:00 < Eko> haha, nice 04:00 < Eko> my IRC server is coming along quite nicely 04:00 < Eko> modes are all implemented, though not all of them do anything 04:00 < Eko> (notably, +blk) 04:00 < Eko> Namegduf was being nice enough as to stab holes in my design methodologies with a battering ram. 04:00 < adu> Eko: http://pastie.org/1405899 04:00 < Eko> I think I'm just going to pretend that they don't exist for now though, lol 04:01 < Eko> adu: I thought you were doing a parser just for the literal syntax, not for the whole language 04:01 < Eko> because we have go/ast for that 04:02 < Namegduf> Eko: I'm being lazy and not writing +k 04:02 < adu> Eko: yes, the whole language 04:02 < Namegduf> But I'm trying to design "a good communications server" and that involves correcting certain bad design decisions in early IRC 04:02 < adu> I just happen to like the literal syntax 04:02 < Eko> oh, this is for dsgc 04:02 < Namegduf> :P 04:02 < adu> Eko: dsgo 04:02 < adu> yes 04:02 < Eko> neat 04:02 < Eko> what's dsgo written in? 04:03 < adu> Haskell 04:03 < Eko> noes! 04:03 < Eko> who's working on a Go compiler for Go! 04:03 < Eko> nobody :( 04:03 < adu> I really like haskell's features 04:03 < Eko> the name "gogo" is even wide open (at least last time I checked) 04:03 < adu> want me to paste the parser file? 04:03 < Eko> haskell makes my brain hurt. 04:04 < Eko> so I'll just trust the input/output :) 04:04 -!- falconindy [~noclaf@unaffiliated/falconindy] has quit [Quit: leaving] 04:04 < Eko> though my various repositories have thousands of lines of go source if you want to try your parser on them ;) 04:05 -!- falconindy [~noclaf@unaffiliated/falconindy] has joined #go-nuts 04:05 < adu> http://hpaste.org/42550/go_parser 04:06 < Eko> *brain hurts* 04:06 < Eko> dang, I"ve been off IRC too long 04:06 * Eko 's brain hurts 04:06 < adu> my favorite part is "goCVSpecs" 04:06 < Eko> I am great with imperative languages... functional langues take a lot of work. 04:07 < adu> Eko: but they save you a lot of work too 04:07 < Eko> this is true. 04:07 < adu> some of those one liners end up being pages of C 04:07 < Eko> HLint doesn't like you ;) 04:07 < adu> how os? 04:07 < adu> so 04:08 -!- nettok [~quassel@200.119.167.28] has quit [Ping timeout: 264 seconds] 04:08 < Eko> the hlint output at the bottom of the hpaste page? 04:08 < adu> oh i see 04:09 < adu> ya, I can probably get rid of those $ 04:09 < adu> Eko: do you know why I like $ so much? 04:09 < Eko> because you like $? 04:10 < adu> but it turns F a (b c (d e)) into F a $ b c $ d e 04:10 < adu> its why Haskell has fewer parens than lisp 04:10 < Eko> lol, parens. 04:10 < Eko> I've only done scheme, never true lisp 04:11 < adu> anyways, back to #go 04:11 < Eko> and I took one look at Haskell and ran away. 04:11 * Eko pets Go 04:12 < adu> I took 2,654,299 looks at Go, then I stayed 04:12 < Eko> lol 04:13 < adu> my favorite part is how unambiguous it is 04:13 < adu> also, it makes a great language for program transformation research 04:13 < Eko> all I had to hear was (a) compiled system language (b) emphasizes concurrency (c) garbage collected 04:13 < Eko> which I heard within a few minutes of hearing about Go 04:13 < Eko> and then I went and compiled it and tried it that night. 04:13 < adu> (not as good as lisp/scheme, but still a good choice) 04:14 < Eko> dayum, 500 users on 100 channels in 8.6 seconds. 04:14 < Eko> now my broken pipe issue happens at 600 users. 04:14 < Namegduf> Are you doing all the channel joins in one operation? 04:15 < Namegduf> Mine all happen as separate "events", so to speak. 04:17 < adu> Eko: take a look at "goTypeLit" isn't that beautiful? 04:21 -!- nettok [~quassel@200.119.167.28] has joined #go-nuts 04:22 < Eko> write tcp: broken pipe 04:22 < Eko> anyone have any idea? 04:22 < Eko> I haven't a clue if that's on the client side or the server side. 04:22 < Eko> or does the fact that the first error on the server side is "read: read tcp: connection reset by peer" mean that it's a client-side issue? 04:22 < Eko> I would test it out on a real IRC server, but I'm pretty sure I'd get banned faster than you can say "wtf botnet" 04:22 -!- dju [~dju@fsf/member/dju] has quit [Read error: Connection reset by peer] 04:23 -!- Netsplit *.net <-> *.split quits: Eko, nsf, XenoPhoenix, Guest55373 04:26 -!- Netsplit over, joins: Eko 04:28 < adu> wb 04:30 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit: adu] 04:30 * Eko waves to adu 04:31 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds] 04:32 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined #go-nuts 04:33 < Eko> wb adu 04:33 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 04:35 -!- Guest55373 [~irc@209.17.191.58] has joined #go-nuts 04:35 -!- XenoPhoenix [~Xeno@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com] has joined #go-nuts 04:36 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 04:54 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit: adu] 04:57 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 04:58 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined #go-nuts 05:05 -!- Tuller [~tuller@pool-98-117-92-241.rcmdva.fios.verizon.net] has quit [Remote host closed the connection] 05:09 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit: adu] 05:11 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 265 seconds] 05:12 -!- ios_ [~ios@180.191.132.172] has joined #go-nuts 05:19 -!- araujo [~araujo@190.38.50.25] has joined #go-nuts 05:19 -!- araujo [~araujo@190.38.50.25] has quit [Changing host] 05:19 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 05:24 -!- coldturnip [~COLDTURNI@118-166-68-186.dynamic.hinet.net] has joined #go-nuts 05:25 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has joined #go-nuts 05:25 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has quit [Changing host] 05:25 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 05:26 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has joined #go-nuts 05:37 < adu> Eko: did you fix the pipe issue? 05:43 < Eko> adu: not yet =/ 05:43 < Eko> I think I just somehow got within a few inches of hanging my system trying to debug it >_< 05:43 < adu> inches? 05:44 < adu> you mean cycles? 05:44 < Namegduf> Eko: 20k psuedousers, 20 channels each, 30 seconds, here; but my module system is a lot more complicated and most of it isn't very optimised. 05:44 < Eko> figurative language meaning that I think I was pretty close... unrelated parts of my system started not wanting to respond (like ps aux) 05:45 < Eko> Namegduf: I discovered that my fake users weren't reusing channels, so my numbers aren't comparable 05:45 < Namegduf> Reusing channels? 05:45 < Eko> yeah, the channels they were using were all different, so instead of having 300 users on 100 channels, 300 users were on 300*100 channels 05:45 < Namegduf> Ah. 05:45 < Eko> Oops. 05:45 < Namegduf> Mine are kind of like that, kind of not. 05:46 < Namegduf> They randomise channel names to generate channels of different sizes. 06:14 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 265 seconds] 06:19 < Eko> Namegduf: I couldn't come up with a good way to make channels of different sizes 06:19 < Eko> maybe generate X channels and then pick Y of them to join? 06:19 < Namegduf> Eko: Randomise channel name for each join. 06:19 < Eko> I did that 06:19 < Namegduf> Have five be #big_1-100 06:19 < Eko> but it ended up with 1, maybe 2 users per join 06:19 < Namegduf> Five be #medium_1-1000 06:20 < Eko> interesting. 06:20 < Namegduf> And ten be #small_1-whatever 06:20 < Eko> ah. 06:20 < Namegduf> Is what I did. 06:22 -!- dju [~dju@at.dmz.me] has joined #go-nuts 06:22 -!- dju [~dju@at.dmz.me] has quit [Changing host] 06:22 -!- dju [~dju@fsf/member/dju] has joined #go-nuts 06:29 < Eko> hmmmmmm. 06:32 < Eko> so, I must have some sort of race condition or something, because when I get to 200 users all registering simultaneously, it hangs with somewhere between 170 and 200 users in each channel but no more JOINs are being sent back... or something... 06:41 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts 06:42 < adu> race conditions suck 06:46 < zozoR> nsf: your gocode daemon, is it possible to make the it work with gedit? 06:46 < nsf> zozoR: if you'll make a plugin for gedit, yes 06:46 < nsf> fuzzybyte is doing something at the moment 06:46 < nsf> for gedit 06:47 < nsf> ask him too 06:47 < nsf> or just considering doing, I don't know 06:48 < nsf> I can say that integrading gocode with gedit is not a big problem, gedit supports python-based scripts 06:48 < nsf> it's basically running a subprocess with args and parsing the output 06:48 < nsf> the hard part is presenting all the stuff to the user 06:49 < nsf> it requires a bit of gtk knowledge I guess 06:49 < zozoR> i used to do a lot of wx in my days :D 06:49 < nsf> wx is far from gtk 06:49 < zozoR> i know -.- 06:49 < zozoR> its sad 06:49 < zozoR> wx is easy 06:49 < zozoR> :P 06:49 < zozoR> well, anyway, it works with eclipse so ill just use that from now on 06:49 < zozoR> i gotta say, your autocompletion is magical :) 06:50 < nsf> kinda works, I hope 06:50 < nsf> it's not magical 06:50 < nsf> yesterday I've found another infinite loop bug :( 06:50 < zozoR> hehe 06:50 < nsf> the problem with Go 06:51 < nsf> that infinite loops which are based on a recursion eat all the memory 06:51 < nsf> well, yeah, the proper name here is infinite recursion 06:51 < nsf> but still 06:51 < nsf> in C it blows the stack 06:51 < nsf> in Go it blows the memory :) 06:51 < zozoR> heh true 06:51 < zozoR> it om nom noms the memory :D 06:52 < zozoR> i still think its epic you made it :) 06:52 < nsf> :) 06:55 < adu> why the difference? 06:55 < nsf> Go's stack is dynamic 06:56 < adu> does it have to be? 06:56 < nsf> it provides better memory safety guarantees 06:57 < nsf> for example in C there is a feature in C99 06:57 < nsf> that you can dynamically allocate arrays on the stack 06:57 < nsf> int myarray[non_const_var]; 06:57 < nsf> but it's pretty much useless 06:58 < nsf> because it's very easy to explode the stack that way 06:58 < nsf> in my opinion in future Go will allocate much more stuff on the stack than it does currently 06:59 < nsf> because it's one way to decrease pressure on garbage collector 07:00 < adu> i prefer RC to GC 07:00 < nsf> so.. in theory there are reasons to have a dynamic stack 07:00 < nsf> RC? 07:00 < adu> reference counting 07:01 < nsf> oh.. it sucks in mutlithreaded environment 07:01 < nsf> and Go has this shared memory model 07:01 < nsf> reference counting is a no-no for Go 07:01 < nsf> definitely :) 07:01 < adu> why? 07:02 < nsf> because reference counter operations require synchronization 07:02 < nsf> it means they will be slow 07:02 < nsf> and commonly used data structure such as tree will suck 07:02 < nsf> structures* 07:02 < Eko> interesting...... I just made my client write coroutine have a buffered input channel, and it dramatically changed throughput 07:04 < nsf> adu: on the other hand 07:04 < nsf> ref counting will deliver a nice property of a memory manager 07:04 < adu> what about Go requires a shared memory model? 07:04 < nsf> such as stability and predictability 07:04 < nsf> adu: what about it? it just does// 07:04 < nsf> ..* 07:05 < nsf> for some reason 07:05 < adu> nsf: the word "shared" appears once in the gospec 07:06 < nsf> http://golang.org/doc/go_mem.html 07:07 < nsf> it is called shared, because every bit of memory is shared between all goroutines 07:07 < nsf> Go doesn't mention thread local storages or goroutine local storages 07:08 < adu> not necessarily 07:10 < nsf> Go's semantics says almost nothing about memory ownage 07:10 < adu> hmm 07:11 < adu> this is why I like Haskell 07:11 < nsf> I hate Haskell 07:11 < Eko> night y'all 07:11 < adu> why? 07:11 < adu> night Eko 07:11 < nsf> because it has nothing to do with real practical programmig 07:11 < nsf> programming* 07:11 < nsf> people disagree though 07:11 < adu> http://book.realworldhaskell.org/ 07:11 < adu> i disagree 07:11 < nsf> I know, and I don't care :) 07:11 < adu> I'm writing a parser for Go in Haskell 07:12 < nsf> also I can't be taken seriously 07:12 < nsf> I don't know haskell 07:12 < zozoR> people who study math use haskell 07:12 < zozoR> :) 07:13 < nsf> but I'm pretty much sure, that in 2030 still no one will use haskell for production work, we will never see a photoshop CS10 written in haskell 07:13 < zozoR> xD 07:13 < zozoR> true 07:13 < zozoR> it is ofcourse written in go 07:13 < adu> http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=ghc&lang2=go 07:14 -!- theos [~theos@unaffiliated/theos] has joined #go-nuts 07:15 < zozoR> go is slow :o 07:15 < adu> http://shootout.alioth.debian.org/u32/benchmark.php?test=threadring&lang=all 07:15 -!- theos [~theos@unaffiliated/theos] has left #go-nuts ["sleep time"] 07:15 < adu> do you see which language is at the top? 07:16 < zozoR> haskell :o 07:16 < zozoR> lol 07:16 < nsf> it tells me that haskell sorts stuff very nicely 07:16 < zozoR> benchmarks only tells more about the testing environment than the actual language 07:17 < zozoR> remove only from that sentence :D 07:17 < vsmatck> This conversation gets dumber by the second. 07:17 < zozoR> :D 07:17 < nsf> oh, wait 07:18 < vsmatck> People get pretty 1 dimensional when talking about performance sometimes. 07:18 < nsf> I thought it's a sorting benchmark 07:18 < nsf> it's even something more abstract and useless 07:18 < adu> it's a threading benchmark 07:19 < nsf> not really 07:19 < nsf> I'm looking at the Go example 07:19 < nsf> and for some reason I'm pretty sure that it runs on a single thread :) 07:19 < zozoR> haha 07:20 < nsf> but it's good 07:20 < nsf> most likely with GOMAXPROCS > 1 it will be slower 07:20 < nsf> let's test it 07:21 < vsmatck> This conversation is getting smarter by the second. :) 07:22 < nsf> also note 07:22 < nsf> it's a 32 bit machine 07:22 < nsf> Go is faster on 64 bit machines 07:22 < adu> anyways, it's supposed to illustrate that Haskell doesn't use complicated synchronization primitives 07:22 < nsf> the question is 07:23 < nsf> whether it helps you to develop applications 07:23 < nsf> or not 07:23 < adu> it helps me 07:23 < nsf> I tend to think that all haskell programmers are fanatics 07:23 < nsf> maybe I'm wrong 07:24 < nsf> btw, I was damn right about Go example 07:24 < adu> yes, I am a fan of Haskell, but I like lots of other languages for other reasons 07:24 < nsf> with GOMAXPROCS=4 it takes ages 07:24 < nsf> on my 2 core machine 07:25 < vsmatck> I'm doing HTTP stuff and I've found that performance goes up for me all the way to about GOMAXPROCS=64. 07:25 < vsmatck> No idea why tho. 07:25 < vsmatck> 2 CPU computer. 07:26 < adu> vsmatck: lots of benchmarks have an upper limit 07:26 < nsf> http://pastie.org/1406077 07:26 < nsf> how about that 07:26 < adu> vsmatck: I remember reading somewhere that statistically, the CPU limit it 4 07:26 < nsf> the benchmark from the link above 07:26 < adu> don't know about thread limit 07:26 < zozoR> ll 07:27 < zozoR> lol :D 07:27 < nsf> with GOMAXPROCS=4 it's 6-7 times slower 07:27 < adu> sweet 07:27 -!- nettok [~quassel@200.119.167.28] has quit [Ping timeout: 276 seconds] 07:27 < vsmatck> Maybe there's a speedup on IO stuff somehow. 07:28 < zozoR> i recall io in go is slower than in python 07:28 < zozoR> atleast to stdout 07:28 < nsf> zozoR: you mean fmt or something else? 07:29 < zozoR> through fmt :D 07:29 < vsmatck> http://pastie.org/1406079 Basically web.go with some database stuff. 07:29 < nsf> fmt can be slow 07:30 < zozoR> true 07:30 < zozoR> if you write directly to stdout its probably faster 07:30 < nsf> it depends 07:30 < nsf> buffered io is a must in some cases 07:31 < nsf> like if you're planning to write zillion of bytes, one byte at a time 07:31 < nsf> although, that's just a theory 07:31 < zozoR> :) 07:31 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts 07:31 < nsf> I have no idea whatsoever how bad direct syscall usage is 07:32 < nsf> frequent usage I mean 07:37 < zozoR> me neither 07:42 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Read error: Connection reset by peer] 07:43 -!- illya77 [~illya77@133-111-133-95.pool.ukrtel.net] has joined #go-nuts 07:43 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts 07:43 < zozoR> arg, vlc ate my memory D: 07:44 < nsf> or maybe it was a gocode? 07:44 < nsf> :) 07:45 < zozoR> i start gocode manually :P 07:45 < nsf> and it means? 07:45 < nsf> gocode wasn't running? 07:46 < zozoR> i dont run it when i dont use it :) 07:46 < nsf> i see 07:46 < zozoR> also, when i top'ed in the terminal, 80% memory hogged by vlc :D 07:46 -!- prip [~foo@host107-121-dynamic.47-79-r.retail.telecomitalia.it] has quit [Ping timeout: 265 seconds] 07:46 < zozoR> it didnt even have enough memory to kill it : | 07:46 < zozoR> (or time) 07:46 < zozoR> :D 07:46 < nsf> yeah, I use swap for that 07:47 < nsf> although sometimes it doesn't help 07:48 < zozoR> at least go programs die when i tell them to : | 07:51 < taruti_> Has anyone have gocode working with emacs? 07:52 < nsf> taruti: I have no idea 07:56 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 07:58 -!- prip [~foo@host196-197-dynamic.17-79-r.retail.telecomitalia.it] has joined #go-nuts 08:07 -!- ExtraSpice [~XtraSpice@88.118.33.48] has joined #go-nuts 08:08 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has joined #go-nuts 08:14 -!- adu [~ajr@pool-173-66-253-179.washdc.fios.verizon.net] has quit [Quit: adu] 08:22 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has quit [Ping timeout: 276 seconds] 08:23 -!- Davidian1024 [~Davidian1@cpe-173-88-174-84.neo.res.rr.com] has joined #go-nuts 08:34 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org] 08:35 -!- brad_ [621a78e5@gateway/web/freenode/ip.98.26.120.229] has quit [Ping timeout: 265 seconds] 08:38 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 240 seconds] 08:40 -!- DerHorst [~Horst@e176097059.adsl.alicedsl.de] has joined #go-nuts 08:41 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:49 -!- ryanu [~ryan_@c-98-200-189-134.hsd1.tx.comcast.net] has quit [] 08:51 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 08:52 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 09:04 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 09:11 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276 seconds] 09:31 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3] 09:36 -!- illya77 [~illya77@133-111-133-95.pool.ukrtel.net] has quit [Read error: Connection reset by peer] 09:42 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts 09:54 -!- Project_2501 [~Marvin@82.84.98.88] has joined #go-nuts 10:00 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Quit: Morten. Desu~] 10:08 -!- Scorchin [~Scorchin@host86-186-246-246.range86-186.btcentralplus.com] has joined #go-nuts 10:22 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has joined #go-nuts 10:22 -!- araujo [~araujo@190.38.52.109] has joined #go-nuts 10:22 -!- araujo [~araujo@190.38.52.109] has quit [Changing host] 10:22 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 10:58 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 11:05 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276 seconds] 11:07 -!- Guest26237 [~shaman@120-170.77-83.cust.bluewin.ch] has joined #go-nuts 11:10 -!- piranha_ [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts 11:10 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Read error: Connection reset by peer] 11:15 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 11:17 -!- foocraft [~dsc@78.101.178.79] has joined #go-nuts 11:18 -!- tvw [~tv@e176007121.adsl.alicedsl.de] has joined #go-nuts 11:20 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has quit [Quit: vdrab] 11:33 -!- tvw [~tv@e176007121.adsl.alicedsl.de] has quit [Remote host closed the connection] 11:43 -!- ptilol [~shaman@120-170.77-83.cust.bluewin.ch] has quit [Ping timeout: 250 seconds] 11:54 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has joined #go-nuts 12:03 -!- shaman [~shaman@182-188.76-83.cust.bluewin.ch] has joined #go-nuts 12:10 -!- shvntr [~shvntr@116.26.136.124] has joined #go-nuts 12:26 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has quit [Quit: vdrab] 12:31 -!- Guest47367 [~shaman@182-188.76-83.cust.bluewin.ch] has quit [Remote host closed the connection] 12:35 -!- illya77 [~illya77@49-242-133-95.pool.ukrtel.net] has joined #go-nuts 12:44 -!- thomas_b [~thomasb@cm-84.215.47.51.getinternet.no] has quit [Ping timeout: 265 seconds] 12:45 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has joined #go-nuts 12:46 -!- thomas_b [~thomasb@cm-84.215.47.51.getinternet.no] has joined #go-nuts 12:53 -!- vdrab [~vdrab@pd3e9b4.kyotnt01.ap.so-net.ne.jp] has quit [Quit: vdrab] 12:54 -!- xash [~xash@d026000.adsl.hansenet.de] has joined #go-nuts 13:08 -!- chickamade [~chickamad@116.118.63.154] has joined #go-nuts 13:31 < foocraft> hi all 13:31 < foocraft> I have a question relating to generic work-arounds 13:32 < foocraft> so I've looked at the sort package 13:32 < foocraft> and it can sort anything that implements a certain interface 13:33 -!- chickamade [~chickamad@116.118.63.154] has quit [Ping timeout: 240 seconds] 13:33 < foocraft> so I'm wondering, what's a good way to go(in go) about declaring a generic container.. 13:35 < exch> The only way you can do that, is by having it contain values of type interface{}. Or your own interface if you want a little more specificity 13:36 < exch> The sort package doesn't really care what is in the container. All it deals with is the sort.Sort interface, which your type must implement 13:37 < exch> That's not a generic implementation though. It simply has no need to know about the actual container type 13:38 < exch> As long as your own container implements 'Less(int, int) bool', 'Swap(int, int)' and 'Len() int', you can use it for sorting 13:40 < foocraft> so for a graph, I would probably need Equals ( ) implemented for the vertices and the edges need to connect two vertices, each 13:40 < foocraft> I feel like I'm stepping down to java lane...:p 13:41 < Namegduf> In gneeral, you "can'", and unless you need to, shouldn't. 13:41 < Namegduf> *can't 13:41 < Namegduf> interface{} as the contents works, though. 13:41 < Namegduf> You can do basically anything you could in C. 13:42 < Namegduf> I don't know much about graphs, but I'd implement types specifically for what I needed, not a generic one. 13:43 < aiju> how is this implemented BTW? 13:43 < aiju> more like dynamic typing or more like C++ templates? (or something completely different?) 13:43 < Namegduf> ...neither. 13:43 < Namegduf> Well. 13:43 < Namegduf> What's "this"? 13:44 < aiju> interfaces 13:44 < Namegduf> interface{} is a two-word structure 13:44 < Namegduf> A pointer to an itable (like a vtable) and a pointer to the data 13:45 < Namegduf> If the data fits in a word (significant example: interfaces satisfied by a pointer to a struct or such) it's stored directly 13:47 < foocraft> that's a neat optimization :) 13:47 < foocraft> I wonder what's going on with GC right now 13:48 < Namegduf> Me too. 13:49 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 260 seconds] 13:54 < exch> it 13:54 < exch> *it's probably eating christmas dinners atm and will therefor be out of comission for the next 2 weeks :p 13:55 < Namegduf> XD 13:55 < Namegduf> I suppose I didn't mean right now. :P 13:57 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 14:04 < foocraft> make( []xmas, MERRY ) 14:05 < Namegduf> Same to you. 14:05 < Namegduf> make([]wine, 100) 14:05 < Namegduf> I made you a box of wine. 14:07 < foocraft> hmm, we need to pass the wine through a channel, and spawn all the guests to drink from it... 14:07 < foocraft> give me that box, nao! 14:09 -!- exch [~exch@h78233.upc-h.chello.nl] has quit [Read error: Connection reset by peer] 14:09 -!- exch [~exch@h78233.upc-h.chello.nl] has joined #go-nuts 14:11 < nsf> I remember someone complained about my llvm bindings, that it's broken with the new cgo 14:11 < nsf> I've just uploaded a fix for that 14:18 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 14:18 -!- DerHorst [~Horst@e176097059.adsl.alicedsl.de] has quit [Remote host closed the connection] 14:18 -!- ios_ [~ios@180.191.132.172] has quit [Quit: Leaving] 14:37 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 14:40 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has quit [Quit: tdc] 14:50 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 14:56 -!- foocraft [~dsc@78.101.178.79] has quit [Quit: Leaving] 14:58 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3] 15:04 -!- foocraft [~dsc@78.101.178.79] has joined #go-nuts 15:07 -!- boscop [~boscop@g226235228.adsl.alicedsl.de] has joined #go-nuts 15:08 -!- shvntr [~shvntr@116.26.136.124] has quit [Ping timeout: 264 seconds] 15:18 -!- shvntr [~shvntr@123.64.92.2] has joined #go-nuts 15:19 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has joined #go-nuts 15:19 -!- sacho_ [~sacho@90.154.208.35] has joined #go-nuts 15:20 -!- sacho [~sacho@87-126-6-67.btc-net.bg] has quit [Ping timeout: 240 seconds] 15:22 -!- shvntr [~shvntr@123.64.92.2] has quit [Ping timeout: 260 seconds] 15:23 -!- shvntr [~shvntr@123.64.92.2] has joined #go-nuts 15:36 -!- nettok [~quassel@200.119.153.135] has joined #go-nuts 15:37 -!- xash [~xash@d026000.adsl.hansenet.de] has quit [Ping timeout: 272 seconds] 15:41 -!- XenoPhoenix [~Xeno@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com] has quit [Ping timeout: 240 seconds] 15:42 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 15:44 -!- nettok [~quassel@200.119.153.135] has quit [Ping timeout: 272 seconds] 15:50 -!- bfrank [621a78e5@gateway/web/freenode/ip.98.26.120.229] has joined #go-nuts 15:51 < bfrank> is there anyway to compile all the compilers for different targets? 15:51 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 15:59 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Ping timeout: 260 seconds] 16:02 < exch> bfrank: the target depends on your Go environment vars. I suppose you could write a lil shellscript which sets them to whatever target you need, then build, then change the vars and build again, etc 16:03 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-171-190.clienti.tiscali.it] has joined #go-nuts 16:06 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 16:07 -!- Project_2501 [~Marvin@82.84.98.88] has quit [Ping timeout: 276 seconds] 16:10 -!- bfrank [621a78e5@gateway/web/freenode/ip.98.26.120.229] has quit [Ping timeout: 265 seconds] 16:12 -!- yebyen [~yebyen@cpe-67-253-244-26.rochester.res.rr.com] has quit [Ping timeout: 250 seconds] 16:30 -!- nettok [~quassel@200.119.153.135] has joined #go-nuts 16:37 -!- nettok [~quassel@200.119.153.135] has quit [Ping timeout: 260 seconds] 16:37 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts 16:39 -!- jesusaurus [jesusaur@firefly.cat.pdx.edu] has joined #go-nuts 16:45 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 240 seconds] 16:46 -!- sav [~lsd@jagat.xored.org] has joined #go-nuts 16:46 -!- sav [~lsd@jagat.xored.org] has quit [Excess Flood] 16:52 -!- shvntr [~shvntr@123.64.92.2] has quit [Quit: leaving] 16:57 -!- ildorn [~ildorn@212.23.105.25] has joined #go-nuts 17:22 -!- Project_2501 [~Marvin@82.84.84.135] has joined #go-nuts 17:24 < aiju> writing Go destroys one's ability to write other languages 17:25 < aiju> i just forgot all the break;s in a switch 17:25 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-171-190.clienti.tiscali.it] has quit [Ping timeout: 240 seconds] 17:28 -!- Project_2501 [~Marvin@82.84.84.135] has quit [Quit: E se abbasso questa leva che succ...] 17:29 -!- Project_2501 [~Marvin@82.84.84.135] has joined #go-nuts 17:29 < mpl> aiju: yep that happened to me several time when writing java after writing go 17:30 < mpl> and that's nastier to spot than forgotten semi colons. 17:38 -!- bfrank [621a78e5@gateway/web/freenode/ip.98.26.120.229] has joined #go-nuts 17:38 -!- XenoPhoenix [~Xeno@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com] has joined #go-nuts 17:41 < fuzzybyte> and i keep forgetting to initialize my variables because of go 17:45 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Read error: Operation timed out] 17:45 -!- TheMue [~TheMue@p5DDF6CA4.dip.t-dialin.net] has joined #go-nuts 17:49 < taruti> go has warts too 17:49 < taruti> like shadowing variables without warnings 17:52 < bfrank> yeah and forcing curlys up a line 17:52 < bfrank> really quite annoying 17:52 < Namegduf> I don't find it particularly annoying. 17:53 < bfrank> I do 17:53 < taruti> curly braces are ok 17:53 < taruti> that is just a style matter 17:53 < taruti> shadowing creates bugs 17:53 < bfrank> it forces it on you 17:53 < Namegduf> Yep. 17:53 < bfrank> you should have a choice 17:53 < Namegduf> Nope. 17:53 < bfrank> next it will be forcing tabs and spacing 17:53 < Namegduf> It pretty much does. 17:53 < Namegduf> gofmt. 17:53 < bfrank> obnoxious 17:53 < Eko> ono python! 17:53 < taruti> one does not have a choice on most real software projects 17:54 < Namegduf> Choice is super so long as you're the one making the choice and it's only your own code you need to read ever. 17:54 < Namegduf> Otherwise the penalty of different styles overwhelms any benefit from using yours. 17:55 < bfrank> if style is keeping you from being able to read code, then there are likely deeper problems 17:55 < aiju> syntax issues are largely bikeshed 17:55 < Namegduf> bfrank: Same to you. 17:55 < bfrank> the language shouldn't be forcing layout 17:55 < Namegduf> Why not? 17:55 < bfrank> because that is obnoxious 17:55 < Namegduf> Why? 17:55 < TheMue> and that's great, helping to create a code base that many people are able to read 17:55 < Namegduf> The alternative is that each project forces layout 17:56 < Namegduf> Which is no different except that projects differ 17:56 < bfrank> I guess that is why it is good there are alternatives 17:56 < aiju> i haven't seen C code with { on the next line in a loooooong while 17:56 < bfrank> just because you haven't doesn't mean it doesn't happen. And it doesn't mean go should be forcing a style 17:57 < Namegduf> Your response there didn't make sense. 17:57 < Namegduf> It is good there are alternatives to what? 17:57 < bfrank> ha, nor does forcing a style 17:57 < Namegduf> Alright. 17:57 < Namegduf> Let's optimise this conversation 17:57 < aiju> the forcing of style wasn't intended 17:57 < Namegduf> I'm going to go get a cup of tea 17:57 < bfrank> I'm going to go for a walk 17:57 < aiju> just a sideeffect of the semicolon heuristics 17:57 < Namegduf> You can say the same thing you'd be saying if I was replying 17:57 < Namegduf> Which is constantly repeating your assertion without backing logic 17:58 < bfrank> gofmt could have just as easily added semicolons 17:58 < Namegduf> Me saying anything is redundant 17:58 < Namegduf> :P 17:58 < bfrank> forcing the curly up a line because people didn't want to type a semicolon is asinine 17:58 < Namegduf> No, gofmt couldn't have. 17:58 < Namegduf> gofmt reads valid Go and outputs valid Go. 17:58 < TheMue> In which way is forcing a style wrong? 17:59 < aiju> TheMue: it's not politically correct! 17:59 < aiju> the language shouldn't force me to use arabic numbers either 17:59 < TheMue> Oh, ok, gooooood argument. *lol* 17:59 < aiju> or english keywords 17:59 < aiju> language localization! 17:59 < bfrank> there are languages that actually let you do that 18:00 < aiju> wow. 18:00 < TheMue> I onced worked with such a programming lang, it has different keywords in different langs. 18:00 < aiju> never underestimate software bloat 18:00 < TheMue> Seen it in English and German, and the code wasn't portable. *sigh* 18:00 < TheMue> Bad idea. 18:01 < aiju> the commercial code i've seen so far is already bilingual 18:01 < aiju> using non-english in programming should be a criminal offence… 18:01 < bfrank> if you speak english it should be 18:01 < TheMue> Like forcing a codestyle? 18:04 < TheMue> I really like it, hacking fast and then just type :make format and everything is fine. 18:04 < aiju> bfrank: really, how many non-english speaking programmers are there? 18:04 < Namegduf> I did some work in the Czech Republic with a programming group 18:04 < Namegduf> They all spoke great English 18:05 < aiju> compare that to non-german speaking programmers 18:05 < aiju> you don't have to write novels 18:05 < aiju> nobody gives a shit if your grammar is off 18:05 < taruti> as a non-english programmer I prefer code in english entirely 18:05 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts 18:05 < taruti> mixed natural language code is a horrible mess 18:06 < TheMue> we even comment in english, it's more simple than the continuous switching between comment and code languege 18:07 < TheMue> only visible parts for the UI follow typical I18N patterns 18:08 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has joined #go-nuts 18:09 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has quit [Read error: Connection reset by peer] 18:09 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has joined #go-nuts 18:11 -!- foocraft [~dsc@78.101.178.79] has quit [Quit: Leaving] 18:12 < zozoR> if i write the code in my own language, i feel the code speaks to me, and thats creepy and i end up feeling stupid 18:14 < TheMue> *rofl* 18:14 < zozoR> and im glad go chose the brace at the end style 18:15 < zozoR> all the empty lines you get from having the brace on the next line is really confusing 18:15 < zozoR> makes it harder to read : | 18:15 < zozoR> atleast for me :D 18:16 < zozoR> especially with alot of nesting. its hideous! >.< 18:17 < taruti> lots of nesting is hideous ;) 18:18 < taruti> write helper functions 18:22 < Eko> okay, here's a fun problem... I have a program that's meant to battle-test my IRC server, so it spawns off N goroutines each of which makes an independent net.Conn to the server. If I make more than some number of connections (say, 230), I start getting "connection reset by peer" and "read: EOF" and "broken pipe" errors all over the place 18:23 < Eko> to try to rule out my server, I wrote a server that blindly accepts all connections on a port in a loop and printfs "." 18:23 < Eko> (and I get the same behavior) 18:23 < Eko> Anyone have any ideas what might be wrong or what I should try? 18:28 -!- niemeyer_ [~niemeyer@200-203-59-56.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 18:42 -!- xash [~xash@d026000.adsl.hansenet.de] has joined #go-nuts 18:49 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 240 seconds] 18:53 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has quit [Ping timeout: 250 seconds] 18:55 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 255 seconds] 19:07 -!- foocraft [~dsc@78.101.178.79] has joined #go-nuts 19:21 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 19:25 < Tv> Eko: sounds like you're hitting a 256 fd limit 19:25 < Tv> smells either like windows or ulimit 19:27 < vsmatck> linux is generally default 1024. I know for windows you have to manually set FD_SETSIZE because it's rediculously low (not sure what go windows sets it to). 19:27 < vsmatck> If you're on windows, windows has syn flood protection. If you do non-blocking connect too fast that can happen. 19:27 < vsmatck> I don't know how Go does it but I'm betting it's non-blocking connect. 19:27 < Eko> Tv: my ulimit -n is over 2000, and the number isn't consistent 19:28 < Eko> the number of connections it can sustain 19:28 < Eko> now for some reason I'm having trouble duplicating the behavior with the blind accept client, so I am even more confused. 19:29 < vsmatck> If you close the program with a ton of connections open linux won't ehh "free" them for about a minute. 19:29 * Tv hugs netstat -nt 19:29 < Tv> (or "ss", these days, if i could ever remember how to use it) 19:30 < vsmatck> Ah, netstat would tell you if the ports are still being used. It'd have a ton of crap listed. 19:30 < vsmatck> I've never heard of ss *googles*. 19:31 < Tv> ifconfig & route : ip :: netstat : ss 19:32 < Eko> is ip a command? if not, I don't get your analogy... 19:32 < Tv> yup 19:32 < Eko> never used it. 19:33 < Eko> hmm, yes, interesting 19:33 < Eko> I just did my fake client thing on my server and there are now two lingering tcp6 connections to the server even after the fake client program is dead. 19:34 < Eko> closing the server put them in FIN_WAIT_2 and CLOSE_WAIT (which I remember from my massive TCP connection state diagram) 19:38 -!- neur [~neuro@unaffiliated/neurosys/x-283974] has quit [Ping timeout: 276 seconds] 19:39 < Urtie> A question about booleans.. A "binary.Write(buf, binary.BigEndian, true)" (where true is actually a boolean variable) doesn't actually seem to write anything to the buffer. That doesn't seem right to me? I can obviously change to using an int8 instead, but it was still interesting. 19:51 < ampleyfly> just guessing here, but you might need to flush 19:51 < Urtie> I am :). It's not the only value I'm writing, I just happened to notice the bool was never pushed to the buffer. 19:55 < Eko> Urtie: Looks like a bug. 19:55 < Eko> http://golang.org/src/pkg/encoding/binary/binary.go?h=value#L343 19:56 < Eko> notice none of those are BoolValue 19:57 < Eko> unless, of course, they don't intend you to be able to send booleans. 19:57 < Eko> (in which case an error should be returned) 19:58 -!- Zoopee [alsbergt@zoopee.org] has quit [Ping timeout: 240 seconds] 19:59 < Urtie> Eko: Ok, thanks! 19:59 < Eko> Urtie: let me know if you don't want to file a bug report for it, and I will. 20:00 < Urtie> Eko: Feel free :) 20:01 -!- Zoopee [alsbergt@zoopee.org] has joined #go-nuts 20:03 -!- GoBIR [~gobir@adsl-76-251-235-206.dsl.ipltin.sbcglobal.net] has quit [Ping timeout: 276 seconds] 20:04 -!- Eko [~eko@adsl-76-251-235-206.dsl.ipltin.sbcglobal.net] has quit [Ping timeout: 240 seconds] 20:08 -!- xash [~xash@d026000.adsl.hansenet.de] has quit [Ping timeout: 246 seconds] 20:11 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has joined #go-nuts 20:15 -!- Eko [~eko@adsl-76-251-235-206.dsl.ipltin.sbcglobal.net] has joined #go-nuts 20:29 -!- ryanu [~ryan_@c-98-200-189-134.hsd1.tx.comcast.net] has joined #go-nuts 20:34 -!- makkalot [~makkalot@85.101.150.117] has joined #go-nuts 20:34 < makkalot> hi i'm trying the rot13 example, when compile it sasy it cant find the rot13 any ideas ? 20:43 < taruti> Is there an idiom for iterating over a golang map with sorted keys (or values) ? 20:50 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Remote host closed the connection] 20:51 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has joined #go-nuts 20:52 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 20:54 -!- xash [~xash@d026000.adsl.hansenet.de] has joined #go-nuts 20:56 -!- Project-2501 [~Marvin@82.84.78.38] has joined #go-nuts 20:57 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 20:59 -!- Project_2501 [~Marvin@82.84.84.135] has quit [Ping timeout: 260 seconds] 21:03 -!- xash [~xash@d026000.adsl.hansenet.de] has quit [Ping timeout: 260 seconds] 21:06 < TheMue> taruti: No short one. First get all keys in a slice, then sort them, and then get all values for those keys. 21:06 < TheMue> taruti: Or build a key-value-type according to your map, a slice type with those kvs and then sort this slice. 21:06 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Quit: Leaving] 21:14 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 21:16 < Namegduf> You inherently can't 21:16 < Namegduf> They're hash tables, they don't store keys sorted 21:18 -!- illya77 [~illya77@49-242-133-95.pool.ukrtel.net] has quit [Read error: Connection reset by peer] 21:27 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 276 seconds] 21:27 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 21:30 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has joined #go-nuts 21:30 -!- DarthShrine [~angus@58-6-93-222.dyn.iinet.net.au] has quit [Changing host] 21:30 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has joined #go-nuts 21:32 -!- pothos_ [~pothos@111-240-221-153.dynamic.hinet.net] has joined #go-nuts 21:33 -!- makkalot [~makkalot@85.101.150.117] has quit [Remote host closed the connection] 21:34 -!- pothos [~pothos@111-240-229-100.dynamic.hinet.net] has quit [Ping timeout: 265 seconds] 21:35 < taruti> Does append double the size of the underlaying slice or just grow it by the number of elements? 21:35 -!- ronnyy [~quassel@drsd-4dbda0d7.pool.mediaWays.net] has joined #go-nuts 21:39 < taruti> i.e. is code calling it in a loop appending one element going to be O(n^2) 21:44 < TheMue> just try it, append so that the slice grows and compare len() and cap() 21:47 < taruti> it doubles them :) 21:48 < TheSeeker> No fibonacci growth? :( 21:49 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 21:55 -!- SoniaKeys [Alliebloom@c-24-91-112-191.hsd1.ma.comcast.net] has joined #go-nuts 21:57 -!- neur [~neuro@81.214.95.216] has joined #go-nuts 22:01 -!- Project-2501 [~Marvin@82.84.78.38] has quit [Quit: E se abbasso questa leva che succ...] 22:03 -!- napsy [~luka@88.200.96.18] has quit [Quit: leaving] 22:06 -!- tdc [~santegoed@host217-44-173-250.range217-44.btcentralplus.com] has quit [Quit: tdc] 22:27 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 22:28 -!- TheMue [~TheMue@p5DDF6CA4.dip.t-dialin.net] has quit [Quit: TheMue] 22:41 < Eko> taruti: you can preallocate the slice and use append() to set it by setting slice := make(type[], 0, estimatedsize) 22:41 -!- zozoR [~zozoR@56346ed3.rev.stofanet.dk] has quit [Quit: Morten. Desu~] 22:42 < Eko> then your append() won't reallocate unless you exceed estimatedsize. 22:43 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 22:43 -!- DarthShrine [~angus@pdpc/supporter/student/DarthShrine] has quit [Quit: DarthShrine] 23:09 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by peer] 23:11 -!- ildorn [~ildorn@212.23.105.25] has quit [Quit: Leaving.] 23:12 -!- ymasory [~ymasory@adsl-2-112-153.mia.bellsouth.net] has quit [Ping timeout: 260 seconds] 23:17 -!- ryanu [~ryan_@c-98-200-189-134.hsd1.tx.comcast.net] has quit [] 23:38 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts 23:39 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 23:42 -!- SoniaKeys [Alliebloom@c-24-91-112-191.hsd1.ma.comcast.net] has quit [] 23:44 -!- bfrank [621a78e5@gateway/web/freenode/ip.98.26.120.229] has quit [Ping timeout: 265 seconds] --- Log closed Mon Dec 27 00:00:01 2010