--- Log opened Sat Feb 26 00:00:29 2011 00:06 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 00:06 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 00:15 -!- sven_ [~sven@mnhm-4d006b50.pool.mediaWays.net] has quit [Quit: Ex-Chat] 00:15 -!- skelterjohn [~jasmuth@c-68-45-238-234.hsd1.nj.comcast.net] has joined #go-nuts 00:20 -!- coldturnip1 [~COLDTURNI@118-166-65-74.dynamic.hinet.net] has joined #go-nuts 00:22 -!- coldturnip [~COLDTURNI@118-166-65-74.dynamic.hinet.net] has quit [Ping timeout: 264 seconds] 00:22 < ww> hrmmm... how can i get the address of the go function to pass it in as a callback? 00:22 -!- _DerHorst_ [~Horst@e176101047.adsl.alicedsl.de] has joined #go-nuts 00:22 < Namegduf> The function itself. 00:22 < Namegduf> Its name, rather. 00:23 -!- DerHorst [~Horst@e176103235.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] 00:23 < ww> looks like i have to cast it somehow: 00:23 < ww> cabinet.go:84[cabinet.cgo1.go:87]: cannot use itemVisitor (type func(kbuf *_Ctype_char, ksiz _Ctypedef_size_t, vbuf *_Ctype_char, vsiz _Ctypedef_size_t, sp *_Ctypedef_size_t, opq unsafe.Pointer) *_Ctype_char) as type *[0]uint8 in function argument 00:25 < Namegduf> Sounds like they aren't expecting a function. 00:26 < ww> no, they are. in the c header that argument is: 00:26 -!- coldturnip1 [~COLDTURNI@118-166-65-74.dynamic.hinet.net] has quit [Ping timeout: 250 seconds] 00:26 < ww> ypedef const char* (*KCVISITFULL)(const char* kbuf, size_t ksiz, const char* vbuf, size_t vsiz, size_t* sp, void* opq); 00:30 < Namegduf> Hmm, not sure what to suggest. 00:31 -!- cbeck [cbeck@gateway/shell/pdx.edu/x-yahieyqzeecvjzmg] has quit [Read error: Connection reset by peer] 00:31 -!- ako [~nya@fuld-590c7a05.pool.mediaWays.net] has joined #go-nuts 00:31 -!- matti__ [~mumboww@c-24-6-22-101.hsd1.ca.comcast.net] has joined #go-nuts 00:33 < matti__> this isn't Go specific.... but what is RPC good for? 00:33 < skelterjohn> distributed computing 00:33 < skelterjohn> in general 00:34 < matti__> like logging and collecting stats? 00:34 < skelterjohn> like spreading work out over multiple machines 00:34 < skelterjohn> think about the SETI project 00:34 < skelterjohn> there is a lot of data to process 00:34 < skelterjohn> so the central server sends out bits of it to other computers 00:34 < skelterjohn> via something like an RPC 00:34 -!- aho [~nya@fuld-590c7a05.pool.mediaWays.net] has quit [Ping timeout: 240 seconds] 00:34 < skelterjohn> i don't know what protocol they use, though 00:34 -!- Adys [~Adys@unaffiliated/adys] has quit [Quit: Quit] 00:34 -!- KBme_ [~KBme@9angled-2-pt.tunnel.tserv5.lon1.ipv6.he.net] has joined #go-nuts 00:34 -!- KBme [~KBme@9angled-2-pt.tunnel.tserv5.lon1.ipv6.he.net] has quit [Read error: Connection reset by peer] 00:35 < Namegduf> Actually, I believe SETI work units are requested by the workers 00:35 < exch> ya 00:35 -!- Adys [~Adys@unaffiliated/adys] has joined #go-nuts 00:35 -!- cbeck [cbeck@gateway/shell/pdx.edu/x-cehjfhnjvgfolgok] has joined #go-nuts 00:35 < matti__> that's pretty interesting... 00:35 < skelterjohn> well, same idea 00:35 < Namegduf> In general, RPC is useful whenever you want to ask another machine to do something or give you information 00:35 < Namegduf> And the same protocol can be used to notify of events, too. 00:36 -!- rup_ [~rupert@deathknight.net] has joined #go-nuts 00:36 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Quit: No Ping reply in 180 seconds.] 00:36 -!- niekie [~niek@CAcert/Assurer/niekie] has joined #go-nuts 00:36 < matti__> something like notifications for messages in Facebook? 00:37 < skelterjohn> they could use RPC to do that 00:37 < skelterjohn> or if you have a program that wants to query facebook for information, RPC would be one solution 00:37 -!- _Kim [~kim@gw-gbg.ilait.se] has joined #go-nuts 00:37 -!- rup [~rupert@deathknight.net] has quit [Ping timeout: 240 seconds] 00:37 -!- Belg [~kim@gw-gbg.ilait.se] has quit [Ping timeout: 240 seconds] 00:37 < Namegduf> It's common to use it in client/server arrangements 00:37 < Namegduf> As well as others, of course. 00:37 < Namegduf> It's a very general concept. 00:38 < matti__> is RPC more common than REST? 00:38 < Namegduf> Remote procedure call, it just means asking them to do something. 00:38 -!- grncdr [~stephen@sdo.csc.UVic.CA] has quit [Remote host closed the connection] 00:38 -!- grncdr [~stephen@sdo.csc.UVic.CA] has joined #go-nuts 00:38 < matti__> or more beneficial than REST? 00:38 < skelterjohn> right, RPC isn't a particular technology 00:38 < Namegduf> REST is a specific thing for the web 00:38 < skelterjohn> it's an idea - that there is some way to ask a remove machine to do something 00:38 < exch> REST could be considered a form of RPC I suppose 00:39 < Namegduf> I'm not sure how to compare them better because most of the definition of REST seems to be, well, definitions of terms. 00:39 -!- chressie [~chressie@dreggn.in-ulm.de] has quit [Ping timeout: 242 seconds] 00:40 < matti__> i only asked because i heard that one of the differences between Thrift and Protobufs was that Thrift has RPC, but i wasn't totally sure what RPC was... 00:41 < Namegduf> It's a way of requesting the other server do something and (optionally) send you a response. 00:42 < matti__> ah ok, thanks guys :) 00:43 < rl> It's kind of like ordering a pizza.. One process calls up another one, tells it what it wants, and the other process takes some action and possibly returns something (a pizza?) 00:44 -!- coldturnip [~COLDTURNI@111-250-17-139.dynamic.hinet.net] has joined #go-nuts 00:44 < Namegduf> That's a good idea, rl 00:44 < Namegduf> I want a pizza, 00:44 < matti__> pepperoni for me please lol 00:45 < rl> I'm afraid I don't export any OrderPizza service :p 00:45 -!- chressie [~chressie@dreggn.in-ulm.de] has joined #go-nuts 00:47 -!- AndyP [~andyp@ubuntu/member/andyp] has quit [Ping timeout: 250 seconds] 00:48 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Read error: Operation timed out] 00:50 -!- niekie [~niek@CAcert/Assurer/niekie] has joined #go-nuts 00:51 < skelterjohn> i thought protobuf was an RPC protocol 00:53 < ww> panic: runtime error: SIGNONE: no trap 00:53 < ww> :P 00:53 < ww> forced it to compile by dodgy manipulation of unsafe and reflect though... 00:54 -!- AndyP [~andyp@ubuntu/member/andyp] has joined #go-nuts 00:55 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 00:56 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Read error: Operation timed out] 00:58 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts 00:59 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Ping timeout: 276 seconds] 01:00 -!- AndyP [~andyp@ubuntu/member/andyp] has quit [Ping timeout: 260 seconds] 01:11 < rl> skelterjohn: if you mean the google provided protocol buffers it's just a lightweight way of storing data, with libraries for reading it available in different languages 01:11 < skelterjohn> ah 01:11 < skelterjohn> cool 01:11 < rl> so it's not really an RPC protocol, but it's properties make it a good candidate to use in RPCs 01:13 < rl> s/it's/its 01:13 -!- comex_ [~comex@67.188.10.190] has quit [Quit: ZNC - http://znc.sourceforge.net] 01:14 -!- nettok [~quassel@200.119.189.112] has joined #go-nuts 01:16 -!- boscop [~boscop@f055192144.adsl.alicedsl.de] has quit [Ping timeout: 240 seconds] 01:17 -!- comex [comex@c-67-188-10-190.hsd1.ca.comcast.net] has joined #go-nuts 01:17 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has joined #go-nuts 01:21 -!- comex [comex@c-67-188-10-190.hsd1.ca.comcast.net] has quit [Client Quit] 01:21 -!- comex [comex@c-67-188-10-190.hsd1.ca.comcast.net] has joined #go-nuts 01:23 -!- AndyP [~andyp@ubuntu/member/andyp] has joined #go-nuts 01:29 < rl> http://pastie.org/1608358 <- Blasphemy, or acceptable (ab)use of go? 01:30 < Namegduf> Blasphemy. :P 01:30 < rl> (In particular, the use of the full-stops at EOL to force the line to continue) 01:30 < Namegduf> Don't try to simulate subtyping 01:31 < exch> I do that to sometimes. It has it's uses 01:31 < rl> subtyping? 01:31 < Namegduf> Interfaces are more powerful and more useful, and do not require using ahead of time 01:31 < rl> It's the builder pattern 01:31 < exch> chaining of method calls that is 01:31 < Namegduf> Yes, don't use it. 01:31 < rl> Hm 01:31 < rl> Care to justify the blanket statement? 01:31 < Namegduf> Yes. 01:32 < Namegduf> You're using patterns instead of solving problems. 01:32 < Namegduf> The default solution is simple, elegant, and pretty. 01:32 < rl> So if you had an object which was created slightly differently with different parameters 01:32 < Namegduf> You don't have objects. 01:32 < rl> *depending on the parameters 01:32 < Namegduf> Go does not have objects. 01:32 < rl> Humor me, you know what I mean 01:32 < rl> A struct 01:32 < Namegduf> No, I don't. 01:32 < rl> Fine, be difficult :p 01:32 < Namegduf> How can you "create a struct" different? 01:33 < Namegduf> It's a block of values. 01:33 < rl> The values of the fields 01:33 < rl> Yes 01:33 < Namegduf> Okay, so you're instantiating a struct and have a constructor function which sets different values. 01:34 < Namegduf> This sounds okay. 01:34 < rl> Basically IMO the builder pattern is for the cases where you have n parameters, m of which may be missing 01:34 < Namegduf> That does not. 01:35 < rl> Neither does your sentence :p 01:35 < Namegduf> Instead, just make it and then use set methods. 01:35 < Namegduf> Simpler, elegant, no horrible pattern overkill. 01:35 < rl> But what if you want to make sure any value you create is valid? 01:35 < rl> You want to have the values protected and not modified after creation 01:35 < Namegduf> "don't" 01:36 < rl> Thanks, very helpful :) 01:36 < Namegduf> Helping programmers produce good code is good. 01:36 < rl> Have you never seen the value in making it obvious and certain that member values wont' change for the lifetime of an object? 01:36 < Namegduf> No. 01:36 < Namegduf> Trying to stop them from deliberately bad code by shitting on your design is stupid and far, far more harmful than good. 01:37 < Namegduf> If it's illegal to change things once <x> then document that. 01:37 < rl> C'mon, that's just as much shitting on your design. 01:37 < Namegduf> But I have never seen it happen for anything user code could want to change. 01:37 < rl> You should enforce design through code, not documentation. 01:37 < Namegduf> No, you shouldn't. 01:37 < rl> Code doesn't fail to compile if it doesn't adhere to documentation 01:37 < rl> Changing underlying code doesn't cause compile errors if you forget to update documentation 01:38 < Namegduf> Firstly, this usecase is ridiculously unlikely, 01:38 < rl> Well, humor me :) 01:38 < Namegduf> There are very few values you could want to set from outside, but which cannot be changed while in use. 01:39 < Namegduf> You can set them in the constructor. If the entire stdlib doesn't have this issue and you do you are probably doing something very wrong. 01:40 < rl> Ok, let me try to come up with a concrete example, since there doesn't seem to be a "Secondly" coming 01:40 < Namegduf> You want to create a whole additional set of "builder" types calling each other just to protect against programmers not making an accidental mistake, but against one deliberately doing something illegal, in a case which is unlikely to happen in real code. That is abuse of patterns. 01:40 < rl> ? 01:40 < foocraft> this can seem silly, but is there any equivalent to Integer.parseInt ( string ); which is in java, in Go? 01:41 < KBme> Itoa 01:41 < KBme> and Atoi 01:41 < KBme> strconv package 01:41 < rl> Namegduf: It's actually making the code easier to read. Haven't you ever had to read code other people have written, and spent a while trying to make sure a value isn't modified for example? 01:41 < foocraft> thanks KBme 01:41 < Namegduf> rl: No, it isn't. 01:41 < rl> Personally I don't trust other people. I can hardly trust myself. 01:42 < Namegduf> It's adding another type to the program. It is complicating it. 01:42 < rl> So I don't trust them to not have made mistakes 01:42 < rl> What you're essentially saying is 01:42 < rl> Assume programmers are perfect 01:42 < Namegduf> No. 01:42 < rl> Don't bother to write code which assumes they aren't 01:42 < Namegduf> Don't bother to write code that tries to prevent deliberate erros. 01:42 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has quit [Remote host closed the connection] 01:43 < rl> Understanding the internals of your objects should not be a requirement to using them 01:43 < Namegduf> Go does not have objects. 01:43 < rl> See now you're just being difficult again :) 01:43 * KBme goes get some popcorn 01:43 < Namegduf> No, I'm not. 01:43 < Namegduf> Go puts the encapsulation boundary at the package, not the type. 01:43 < Namegduf> Design as such. 01:43 < niemeyer> rl: built := Builder{Foo: "foo", Bar: "bar", Baz: "baz"} 01:43 < rl> Ok, let me rephrase it for your benefit 01:43 < rl> Understanding the internals of your packages should not be a requirement to using them 01:44 < Namegduf> That is correct. Your suggestion does nothing in aid of that, however. You need to justify it in better ways than throwing out design idioms. 01:44 < rl> It would be great if all programmers understood that changing some value would cause things to break 01:44 < skelterjohn> built := NewBuilder(BuilderParams{Foo:"foo", Bar:"bar"}) 01:44 < skelterjohn> if you don't want to actually have Foo and Bar fields 01:44 < Namegduf> Ew. 01:44 < Namegduf> skelterjohn: BuilderParams is kinda unnecessary 01:44 < rl> But I think we both agree that programmers aren't perfect 01:45 < skelterjohn> the builder might want to process Foo and Bar 01:45 < skelterjohn> in its initialization 01:45 < Namegduf> Okay. 01:45 < skelterjohn> rather than just setting that value 01:45 < Namegduf> Look. 01:45 < Namegduf> YOU asked whether it was idiomatic or abuse. 01:45 < Namegduf> I gave my opinion. 01:45 < rl> Well, it sounded like you wanted to discuss it :) 01:45 < Namegduf> If you weren't interested in my opinion and are just going to spout OO design ideas 01:45 < rl> I wanted to explore your opinion 01:45 < rl> To see if there was some merit to it 01:45 < Namegduf> You're ignoring the important parts of it. 01:45 < rl> If you're not interested in discussing it further just say so 01:45 < Namegduf> Like "the kind of value you brought up is really rare" 01:46 < rl> Yes, I read that, and asked you to humor me 01:46 < Namegduf> Seriously, it does NOT occur in the stdlib 01:46 < rl> I.e. for sake of argument, assume the situation comes up 01:46 * foocraft throws snickers bars at rl and Namegduf 01:46 < rl> Again, your participation in this discussion is entirely voluntary 01:46 < comex> so, I'm trying to compile gccgo on OS X; so far there's SIGRTMIN not defined, and the linker not liking go_export as a section name... 01:46 < skelterjohn> anyone here who uses web.go know how to quick-fix it? it broke with the latest go release 01:47 < Namegduf> You not only have some which are unchangeable once it is in use, but enough you can't pass them to a constructor? 01:47 < Namegduf> I would reconsider my type, to start with, because it sounds like it's a complicated type 01:47 < niemeyer> skelterjohn: What's the breakage? 01:47 < Namegduf> Go types are data, not units of a program, so being that complicated is weird 01:47 < skelterjohn> https://github.com/hoisie/web.go/issues/#issue/52 01:47 < skelterjohn> the type of something in http.Request got changed 01:47 < skelterjohn> or http.Response, i forget which 01:48 < rl> So it could work with a ctor, and maybe that's the go-idiomatic way, but if not all parameters are always present that seems a bit messy 01:48 < Namegduf> If a zeroed type is not valid, a ctor is normal, yes 01:48 < Namegduf> The idiomatic thing is for a zeroed type to be valid. 01:48 < skelterjohn> rl: you don't like my suggestion? 01:48 < Namegduf> Again, types are data, not units of a program. 01:48 < Namegduf> Zero being valid is good. 01:48 < Namegduf> A zeroed sync.Mutex is an unlocked mutex, etc 01:49 < skelterjohn> a zeroed map causes seg faults :) 01:49 < rl> skelterjohn: yeah I saw it, was just caught up in a discussion about the deeper issue of whether or not a builder is actually necessary :) 01:49 < Namegduf> Yeah, and so a map has a contructor 01:49 < Namegduf> What I would do, anyway, if the ctor was becoming so horribly complicated, would be to pass a map 01:49 < Namegduf> As suggested 01:49 < skelterjohn> niemeyer: oh - the guy whofiled that issue gives a fix, too 01:49 < skelterjohn> maybe i'll just pull it 01:50 < Namegduf> That's considered code smell and I've never needed it, but it's been suggested from time to time as a solution and it's better than adding a whole new type and chaining passing them to each other to build up a value 01:50 < rl> So you would rather have a ctor that accepts a map? Ok, fair enough 01:50 < niemeyer> skelterjohn: Ah, cool 01:50 < skelterjohn> i'm a git novice...how to i grab mattn's change? 01:50 < skelterjohn> rl: that wasn't a map 01:50 < Namegduf> rl: Beats having another type exported and building a value in a chain. 01:50 < skelterjohn> it was a struct with fields named Foo and Bar 01:50 < rl> skelterjohn: I was referring to Namegduf's comment 01:50 < Namegduf> Actually, yeah, there's maps and structs 01:50 < Namegduf> Both work 01:50 < skelterjohn> sorry 01:51 < Namegduf> I was wrong to call it a map. 01:51 < Namegduf> You can use either. 01:51 < Namegduf> A struct is more typesafe, though 01:51 < rl> Ok, so let's have a struct 01:51 < Namegduf> As it can only contain things it is supposed to contain. 01:51 < rl> that stores the parameters 01:51 < rl> And you would pass that struct to the ctor function? 01:51 < Namegduf> Beats having a struct like it with a method that does weird chainy stuff, yeah. 01:51 < Namegduf> Again, though, this is a contrived example. 01:51 < rl> So what if you gave the struct a "Build" function instead, which worked the same as the ctor function? 01:52 < Namegduf> Uglier. 01:52 < rl> Because...? 01:52 -!- _DerHorst_ [~Horst@e176101047.adsl.alicedsl.de] has quit [Remote host closed the connection] 01:52 < Namegduf> Because you've another function call involved, you can't see what's happening so easily. 01:52 < rl> Well no, it's the same # of function calls 01:52 < skelterjohn> not gonna lie, rl, that code you pastebinned looked kind of silly 01:52 < Namegduf> But again, my primary point is tht this shoudl never be used because it's horribly contrived 01:52 < rl> It's just that in one case the ctor has a struct as a receiver, in the other case an arg 01:53 < rl> skelterjohn: Yeah, I think the struct approach with naming the fields works better :) I didn't think of that. 01:53 < Namegduf> Structs with fields which are settable at construction and never later are weird and rare, structs with lots of fields are complicated and maybe bad, structs with lots of separate settable only at construction... 01:53 < rl> Yeah 01:53 < Namegduf> It's possible but it's a special case. 01:53 < rl> Well, welcome to non-academic programming 01:54 < Namegduf> I've done plenty of that. 01:54 < foocraft> is there any way to refer to a function's nth return value, without having to explicitly store that into a variable and accessing that? 01:54 < rl> And you've never had to deal with non-ideal code? 01:54 < skelterjohn> it's tempting, when speculating about "patterns", to allow anything that "can" happen, and not to focus on only allowing things that "should" happen 01:54 < skelterjohn> foocraft: no 01:54 < Namegduf> I have. I just don't normally define "patterns" around it and then start throwing them on everything. 01:54 < rl> skelterjohn: It seems to be the other way around; that it's tempting to think only about what should happen, rather than what can 01:54 < Namegduf> I also don't apply OO idioms in Go 01:55 < rl> I think you're overreacting here, but that's understandable 01:55 < rl> I also dislike abuse of patterns, and tend to assume that any use of them is abuse 01:55 < Namegduf> I think you're behaving like you're instantiating a complicated type which is actually a unit of a proram 01:55 < skelterjohn> rl: i disagree. focus on the good stuff... that stuff that "can" happen is not the only way of achieving the task. make people do it the way they "should" 01:55 < Namegduf> Which is not something that happens in Go 01:55 < rl> After all people tend to use them in a lot of places where they aren't appropriate 01:55 < Namegduf> Go types are often just wrapping around a few fields 01:55 < Namegduf> Or not that many, anyways. 01:56 < rl> But just because an idea is often abused, doesn't mean it's a bad idea 01:56 < Namegduf> Simplicity is good and the solution to complex code is to simplify it, not complicate it further to make it prettier 01:56 < Namegduf> In general. 01:56 < rl> skelterjohn: Well often stuff has already happened, you don't always have the benefit of writing code from scratch 01:56 < skelterjohn> be a part of the solution 01:56 < skelterjohn> write good code 01:57 < Namegduf> You don't, but you shouldn't layer stuff on to make bad code pretty. 01:57 < rl> Work smarter not harder eh? 01:57 < Namegduf> Let bad code be bad. 01:57 < Namegduf> And look bad. 01:57 < Namegduf> It should. 01:57 < rl> Why should it? 01:57 < Namegduf> Because it's bad. 01:57 < Namegduf> Making bad code look bad and good code look good and wrong code look wrong helps write good code. 01:57 < rl> Are you arguing that adding a builder is making the code look good, now? :) 01:57 < rl> It sounded like you were saying it made it look worse 01:58 < Namegduf> I'm responding to the general idea of using patterns to "solve" things like constructors with too many arguments 01:58 < rl> So you would rather re-write the underlying code? 01:58 < Namegduf> Well, you're inside the same package 01:58 < Namegduf> So you're absolutely able to 01:59 < Namegduf> (The concept of being inside a package but not able to change parts of it is... kinda awful) 01:59 < Namegduf> (They ARE the unit of encapsulation and blah) 01:59 < skelterjohn> rl: if someone wants to define a weird builder API, and that's what you have to work with, that's one thing 01:59 < skelterjohn> but in this case, you are writing the API 01:59 < skelterjohn> don't be weird! 01:59 < Namegduf> Exporting another type with its own methods will mean a whole new section in godoc! 01:59 < Namegduf> Not nice. 02:00 < Namegduf> Bigger API. 02:00 < Namegduf> Big is bad. 02:00 < rl> Let bad code be bad right? :P 02:00 < Namegduf> Don't write bad code. :P 02:00 < Namegduf> Look at unsafe, for example. 02:00 < Namegduf> Casting unsafely is possible but you have to go via the unsafe package, which makes it incredibly obvious that something unsafe is going on 02:01 < Namegduf> This helps programmers write safe code, because when you're being unsafe it's very obvious. 02:01 < Namegduf> Type assertions and nil maps/pointers leave other holes, but it helps. 02:02 < Namegduf> (Type assertions are in themselves an obvious sign that you are asserting something and the programmer is making it their job to ensure it's correct, to be avoided IMO) 02:03 < Namegduf> I guess we're in agreement, now, though, anyway 02:03 < Namegduf> It's an unusual case, stuff that complex is major code smell, there were nicer solutions anyway which hadn't come to mind. 02:04 < Namegduf> With the struct and such. 02:04 < rl> Well, calling a function on the struct as opposed to having a function which takes a struct as an argument seem to be about the same 02:04 < rl> Anyway I'll agree it comes up rarely. In this case the builder is simply building a string 02:05 < rl> And the string looks differently depending on what "parts" of it are present 02:05 < KBme> it really isn't since you can't have multiple functions with the same name 02:05 < rl> Like if you wanted to build a URL, it might do to have a class where you could set up the parameters 02:06 < rl> Before calling the final function which actually constructs the url from the parts you provided 02:06 < Namegduf> Eh. 02:06 < Namegduf> Maybe. 02:06 < Namegduf> Assuming it returned a string, not another type. 02:06 < Namegduf> I don't think there are that many parameters, though. 02:07 < rl> protocol, host, path, query parameters (which can be url encoded or otherwise), fragment 02:07 < rl> more if you're talking about URIs 02:07 < Namegduf> ("http", "www.blah.com" "path/foo.html", <map of query stuff>) 02:07 < Namegduf> All compulsory. 02:07 < rl> port number as well 02:08 < rl> username/password in really obscure cases 02:08 < Namegduf> You'd want set functions, for that, though. :P 02:08 < Namegduf> It can't hurt to call them, because it's just data representing a URL. 02:09 < rl> Yes, of course, but you set it on some struct 02:09 < Namegduf> It is the struct. 02:09 < rl> And then once you're done, you call .Build or .Assemble or .MakeUrl or whatever 02:09 < rl> voila, Builder 02:09 < Namegduf> Hmm. 02:09 < skelterjohn> just make a String() method 02:10 < Namegduf> I'm not sure if it's a Builder pattern thing if it isn't made to go with another custom type. 02:10 < rl> skelterjohn: that would probably be even better 02:10 < Namegduf> That's the case which seems really odd. 02:10 < Namegduf> And yeah, add a String() method and you can pass it to fmt.Printf 02:10 < Namegduf> And throw it as an error if you really must, although it seems useless 02:11 < Namegduf> Well, throw. Return as an os.Error. 02:11 < rl> Well, for that case I can't think of an example, so it might indeed be odd :) Though I'm sure I've used builders for more complex types before, but not in Go (and possibly due to restrctions of code around me) 02:11 < Namegduf> Well, I think more complex types are common in OO-land 02:11 < Namegduf> Where types are not just whatever the coherent block of data is, but units of functionality 02:11 < Namegduf> But Go isn't in OO-land 02:12 < rl> I'll come back if I ever have to build anything more complex than a string with a builder :p 02:12 < Namegduf> AbstractChickenFactoryBuilderFactory types are not idiomatic. :P 02:12 < Namegduf> (That is an exaggeration, don't take it too seriously. XD) 02:13 < rl> Complete with an AbstractChickenFactoryBuilderFactoryImpl 02:13 < Namegduf> Haha. 02:46 -!- perdix [~mkhl@sxemacs/devel/perdix] has quit [Ping timeout: 264 seconds] 02:48 -!- irc_ [~irc@209.17.191.58] has quit [Quit: leaving] 02:49 < skelterjohn> In the template package, it has instructions to "Set @ to the value of the field" 02:49 < skelterjohn> then I do, for instance 02:49 < skelterjohn> {.repeated section GoFiles} @\ {.end} 02:50 < skelterjohn> and it just prints out a bunch of @s 02:50 < skelterjohn> so I think I'm missing something 02:51 < skelterjohn> ah, "{@}", not "@" 02:51 < skelterjohn> makes sense 02:53 -!- niemeyer [~niemeyer@189-10-154-99.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 250 seconds] 02:53 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Ping timeout: 600 seconds] 02:55 -!- perdix [~mkhl@sxemacs/devel/perdix] has joined #go-nuts 02:59 -!- charme_g [~charme_g@163.5.84.215] has quit [Ping timeout: 246 seconds] 03:05 -!- charme_g [~charme_g@163.5.84.215] has joined #go-nuts 03:10 -!- charme_g [~charme_g@163.5.84.215] has quit [Ping timeout: 264 seconds] 03:13 -!- charme_g [~charme_g@163.5.84.215] has joined #go-nuts 03:21 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 276 seconds] 03:28 -!- Macpunk [48b11add@gateway/web/freenode/ip.72.177.26.221] has joined #go-nuts 03:28 -!- Macpunk [48b11add@gateway/web/freenode/ip.72.177.26.221] has quit [Client Quit] 03:29 -!- Macpunk [48b11add@gateway/web/freenode/ip.72.177.26.221] has joined #go-nuts 03:39 -!- Macpunk [48b11add@gateway/web/freenode/ip.72.177.26.221] has quit [Quit: Page closed] 04:00 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined #go-nuts 04:12 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 04:18 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 246 seconds] 04:22 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 246 seconds] 04:31 -!- keithcascio [~keithcasc@nat/google/x-wutkgbcdcwyynnnj] has quit [Quit: Leaving] 04:35 -!- sav [~user@67.18.186.221] has quit [Remote host closed the connection] 04:39 < nsf> OOP cult is a much greater evil than I thought :( 04:44 < inv_arp> ? 04:45 < Viriix> ^ 04:45 < nsf> oh, nevermind, I'm just watching Rob Pike's part 2 interview to infoq, and there was a question: "but how do you write code [without classes]?" 04:45 < nsf> I think it's a very stupid question 04:46 < nsf> :) 04:47 < inv_arp> ah 04:48 < nsf> and let's just pretend that interviewer meant something else other that it sounds like 04:48 < nsf> :D 04:50 < Namegduf> I think that question represents a significant number of users 04:50 < Namegduf> There's people who use OO languages but understand programming in general 04:51 < Namegduf> And there's this other population who've only ever used OO languages and "think" in terms of them and cannot break out of that mindset 04:51 < nsf> naive *ahem*Java*ahem* students 04:51 < Namegduf> Yeah. 04:51 < nsf> :) 04:51 < nsf> yeah, I pretty much understand what you mean 04:51 < Namegduf> I think that has something to do with it. 04:51 < Namegduf> Java is really popular at universities, and academia seems dominated by OO, at least here. 04:52 < nsf> oh, if by "here" you mean USA, which is the center of all IT industry 04:52 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts 04:52 < nsf> all other world is just repeating all the bad stuff 04:52 < Namegduf> Actually, I mean the UK 04:52 * Namegduf is British 04:52 < nsf> well, anyway :) 04:53 < nsf> OOP cult is a global thing 04:54 < Namegduf> Yeah. 04:55 < skelterjohn> I need someone who knows all about html and javascript to help me do stuff 04:55 < skelterjohn> :\ 04:55 < Namegduf> I know JS, and am drunk enough to code it 04:55 < skelterjohn> heh 04:55 < Namegduf> Which is not very drunk, but a little 04:55 < nsf> skelterjohn: do you have something concrete to ask? 04:55 < skelterjohn> at the moment, i do, yes 04:56 < skelterjohn> i want a textarea and a button 04:56 < nsf> go for it :) 04:56 < skelterjohn> and the button should grab the text, and send it in a POST 04:56 -!- nettok [~quassel@200.119.189.112] has quit [Ping timeout: 240 seconds] 04:56 < skelterjohn> in general, i'm toying with the idea of making a go IDE that runs a local webserver for GUI 04:56 < Namegduf> Hmm. 04:56 < nsf> maybe a google can help you? :) 04:56 < skelterjohn> it's possible 04:56 < nsf> it's a very trivial thing to do 04:57 < skelterjohn> but i need more than just this 04:57 < skelterjohn> and i'd rather someone just did it for me 04:57 < skelterjohn> tbh 04:57 < skelterjohn> :) 04:57 < nsf> ah, I see 04:57 < skelterjohn> the html/js bit 04:57 < nsf> you need different kind of help 04:57 < |Craig|> I like how my university made students who may have never seen anything beyond intro java classes write machine code in hex. That class is awesome. 04:57 < nsf> |Craig|: :D 04:58 < nsf> that's cruel 04:58 < Namegduf> Awesome. 04:58 < Namegduf> Mine started with Python, then Java, and this year has C and Haskell 04:58 < nsf> but I'm sure it gives a lot of understanding 04:58 < Namegduf> Well, Lisp and C, Haskell is a side mention 04:58 < skelterjohn> neat 04:59 < Namegduf> Yeah, it's the kinda way I feel is good. Sadly the software engineering people are on some major OO koolaid 04:59 < skelterjohn> my undergrad was mostly java-based, with brief forays into C 04:59 < skelterjohn> and prolog : \ 04:59 < skelterjohn> i hate prolog 04:59 < |Craig|> so far it has covered pipelined processors internals. machine code, assembly, caching (instruction, l1, l2), virtual memory, a tad of C, calling conventions and a few other goodies. All just basically explained with very minimal work. 04:59 < Namegduf> Nice. 05:00 < nsf> very good stuff 05:00 < Namegduf> We have experts in HCI, which I still feel is only part of CS because no other "science", will take it 05:00 < |Craig|> professor claimed its the first time the department has tried to explain how stuff acutually works 05:01 < skelterjohn> so, I guess no one wants to be my js slave, then 05:01 < Namegduf> We had architecture first year, but it ignored caching and only mentioned and discussed pipelining, no implementation details 05:01 < nsf> skelterjohn: T_T 05:01 < Namegduf> Well, they mentioned it existed but didn't discuss it, as it didn't alter semantics. 05:03 < nsf> hehe, Rob Pike still believes that they can solve garbage collection problem 05:03 < nsf> interesting 05:03 < Namegduf> Oh? Link? 05:03 < skelterjohn> nsf: I posted about that in the ML 05:04 < nsf> Namegduf: uhm.. one sec 05:04 < nsf> http://www.infoq.com/interviews/pike-google-go 05:04 < nsf> skelterjohn: I'm not reading it anymore :( 05:04 < skelterjohn> whys that? 05:04 < nsf> skelterjohn: can you give me a link? 05:04 -!- mbone [~mbone2@216-80-120-74.mart-bsr1.chi-mart.il.static.cable.rcn.com] has quit [Ping timeout: 250 seconds] 05:04 < Namegduf> At least it has fewer Java/C# people insisting Go needs <OO feature> 05:05 < skelterjohn> to my post? i guess... rob replied briefly, sidestepping my question 05:05 < Namegduf> The number of people who keep trying to apply their idioms hasn't gone down, though 05:05 < nsf> skelterjohn: a very little amount of info is interesting in it 05:05 < skelterjohn> http://groups.google.com/group/golang-nuts/browse_frm/thread/6b8bb35a63144f50 05:05 < nsf> skelterjohn: thanks 05:06 -!- viirya_ [~viirya@cml506-25.csie.ntu.edu.tw] has quit [Ping timeout: 250 seconds] 05:06 < nsf> Namegduf: well, ML is mostly for people learning the language and trying to understand it, sharing ideas, etc. 05:06 < Namegduf> Ah. And the people are OO broken and the ideas are awful. 05:06 < Namegduf> I get it. 05:06 < nsf> and I'm interested in Go projects mostly 05:06 < skelterjohn> I also troll it for people getting frustrated with make, so I can pawn gb off on them 05:06 < nsf> would be nice to have a separate Go announce ML 05:07 < Namegduf> XD 05:07 -!- viirya [~viirya@cml506-25.csie.ntu.edu.tw] has joined #go-nuts 05:07 -!- mbone [~mbone2@216-80-120-74.mart-bsr1.chi-mart.il.static.cable.rcn.com] has joined #go-nuts 05:08 < skelterjohn> i think i am bad at googling js queries 05:08 < skelterjohn> because none of this makes any sense 05:09 < skelterjohn> and just reaffirms my belief that js is bad 05:09 < nsf> I think js is quite simple 05:09 < nsf> the only hard thing for understanding there is an event/rendering model of the browser 05:09 < nsf> it isn't that bad :) 05:09 -!- foocraft [~dsc@78.101.228.183] has quit [Remote host closed the connection] 05:10 < skelterjohn> so, how might i get a button to POST the contents of a textarea? :) 05:10 < nsf> js is actually one of the first C-like languages that says: "f**k semicolons" 05:10 < nsf> skelterjohn: :D 05:10 < nsf> http://www.w3schools.com/html/html_forms.asp 05:10 < skelterjohn> all the js that has come up has semicolons 05:11 -!- `Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 05:11 < skelterjohn> nsf: not what i want - I don't want it to display a new page 05:11 -!- Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has quit [Disconnected by services] 05:11 < skelterjohn> i want it to silently send the data back home 05:11 -!- `Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has quit [Client Quit] 05:11 < nsf> ah, I see 05:11 < skelterjohn> and, perhaps, get a confirmation message back 05:12 < nsf> well, you need to use AJAX for that apparently 05:12 < nsf> but how, I can't tell 05:12 -!- Wiz126 [~Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 05:12 < nsf> I'm not that experienced with JS 05:12 < skelterjohn> you lead me on 05:12 < skelterjohn> what a tease 05:12 < nsf> (luckily :D) 05:13 < nsf> http://nsf.github.com/go/ 05:13 < nsf> that's basically all my JS experience summed up 05:14 < nsf> and I'm partially responsible for "all graphs on one page" here: http://speed.pypy.org/timeline/ 05:14 -!- `Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 05:14 < nsf> but that's it 05:14 < nsf> no more JS :D 05:14 -!- Wiz126 [~Wiz@h29.117.232.68.ip.windstream.net] has quit [Disconnected by services] 05:15 -!- `Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has quit [Client Quit] 05:15 < skelterjohn> aren't you interested in learning more, and at the same time helping me make this editor? 05:15 < nsf> oh no 05:15 < nsf> :) 05:15 -!- Wiz126 [~Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 05:17 < skelterjohn> how do you write a raw "{" or "}" with the template pkg? 05:18 < skelterjohn> it's messin up my js 05:20 < nsf> skelterjohn: hm.. 05:21 < nsf> I'm looking at template's source code 05:21 < skelterjohn> i made it into a .js file and include it, rather than leaving it in the template 05:21 < Viriix> skelterjohn, change the delimeters 05:21 < Viriix> i tend to change it tot {{ and }} 05:21 < nsf> yeah, I guess it's the only way 05:22 < nsf> Template.SetDelims is the method 05:29 -!- irc [~irc@209.17.191.58] has joined #go-nuts 05:34 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has quit [Quit: This computer has gone to sleep] 05:36 < skelterjohn> how about this: why does the script (https://github.com/skelterjohn/gbide/blob/master/html/editor.js) invoked by pushing the button (https://github.com/skelterjohn/gbide/blob/master/templates/editor.template) not actually send a request 05:37 -!- binarypie [~binarypie@66.215.133.18] has joined #go-nuts 05:37 * nsf has no idea 05:37 < skelterjohn> :< 05:38 < nsf> I slept 4 hours today, probably trolling is the only thing that I'm capable of right now :) 05:40 < nsf> skelterjohn: what chromium's js/dev console says? 05:40 < skelterjohn> save is not defined 05:41 < nsf> interesting 05:43 < nsf> and sadly, that's all I can say :( 05:44 < nsf> try to include the script before form html stuff 05:44 < skelterjohn> i did something dumb 05:44 < skelterjohn> now i'm onto a new error, which will probably also be dumb in retrospect 05:45 < nsf> you're writing a javascript-based IDE, that's an error :) 05:45 < nsf> sorry if it sounds rude 05:45 < skelterjohn> well, i'm not married to js 05:45 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Ping timeout: 240 seconds] 05:45 < skelterjohn> it just seems to be the way to have nice looking interactive GUI through a web page 05:46 < skelterjohn> and my new error was pretty dumb, too 05:46 < skelterjohn> it's posting, hooray! 05:46 < nsf> I hope we'll have nice and responsive web GUIs with nativeclient soon 05:47 < skelterjohn> nacl sounds nicer, yeah 05:52 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 05:54 < marekweb> you're writing a IDE in javascript? 05:56 < marekweb> skelterjohn "gb as the builder" what's gb? 05:56 < skelterjohn> gb is a tool i made to build go projects 05:56 < skelterjohn> http://go-gb.googlecode.com 05:56 -!- karpar [~karpar@112.96.224.14] has joined #go-nuts 05:56 < plexdev> http://is.gd/msuDoV by [Nigel Tao] in go/src/pkg/compress/lzw/ -- compress/lzw: don't use a closure in NewReader, which avoids having 05:57 < skelterjohn> more accurately, i want someone else to write an IDE in javascript, and I can do the go part 05:57 < marekweb> that's a neat idea 05:57 < nsf> a html/js slave was a very precise name for that :D imho 05:58 < skelterjohn> every great project has a good division between labor and management 05:58 < marekweb> are you familiar with the old bespin project (or skywriter or whatever it's called now) 05:58 < skelterjohn> no, i'm not 05:58 < skelterjohn> what is it? 05:58 < nsf> bespin.mozilla.com 05:59 < marekweb> it was supposed to be an IDE in javascript basically 05:59 < nsf> oops 05:59 < nsf> it's no longer available 05:59 < nsf> http://cloud9ide.com/ 05:59 < nsf> check this out 05:59 < nsf> that one is really cool 05:59 < skelterjohn> oh neat 05:59 < skelterjohn> talking about skywriter, that is 05:59 < skelterjohn> now i'll look at cloud9ide 06:00 < skelterjohn> hmm, i don't really want to edit in the cloud 06:00 < skelterjohn> but the ACE thing looks neat 06:00 < marekweb> I think they had a pretty good editor part, but they didn't know how to do the back end 06:01 < skelterjohn> wow, thanks a lot for the reference 06:01 < skelterjohn> now if only i can find a js slave to embed it in my project 06:03 < nsf> it's funny that the license is GPL 06:03 < nsf> and not AGPL 06:03 < skelterjohn> MPL/GPL/LGPL 06:03 < nsf> http://en.wikipedia.org/wiki/Affero_General_Public_License 06:03 < nsf> I mean the cloud9 ide 06:04 < nsf> GPL doesn't force people to show their server's source code to the end user 06:04 < nsf> AGPL do 06:04 < nsf> does* 06:05 < marekweb> hmm they are running it on nodejs 06:05 < marekweb> so the whole friggin thing is in javascript 06:05 < nsf> weird, but whatever 06:06 * skelterjohn sleeps 06:11 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined #go-nuts 06:17 -!- coldturnip [~COLDTURNI@111-250-17-139.dynamic.hinet.net] has quit [Read error: Connection reset by peer] 06:19 -!- coldturnip [~COLDTURNI@111-250-17-139.dynamic.hinet.net] has joined #go-nuts 06:26 -!- coldturnip [~COLDTURNI@111-250-17-139.dynamic.hinet.net] has quit [Ping timeout: 252 seconds] 06:27 -!- coldturnip [~COLDTURNI@111-250-25-45.dynamic.hinet.net] has joined #go-nuts 06:35 -!- mrsrikanth [~chatzilla@59.92.13.41] has joined #go-nuts 06:36 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has quit [Quit: This computer has gone to sleep] 06:43 -!- mrsrikanth [~chatzilla@59.92.13.41] has quit [Quit: ChatZilla 0.9.86 [Firefox 3.6.13/20101206121845]] 06:46 -!- joatmon54 [~engest@cpe-98-155-50-70.san.res.rr.com] has joined #go-nuts 07:02 -!- binarypie [~binarypie@66.215.133.18] has quit [Remote host closed the connection] 07:03 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 07:25 -!- marekweb [~marek@bas1-montreal48-1176173369.dsl.bell.ca] has quit [Quit: Leaving] 07:30 -!- fabled [~fabled@83.145.235.194] has joined #go-nuts 07:38 -!- karpar [~karpar@112.96.224.14] has quit [Quit: Bye!] 07:47 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has joined #go-nuts 08:12 -!- mbernstein [~michael@cpe-70-113-7-72.austin.res.rr.com] has quit [Ping timeout: 260 seconds] 08:20 -!- ShadowIce [~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has joined #go-nuts 08:20 -!- ShadowIce [~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has quit [Changing host] 08:20 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 08:21 -!- Project_2501 [~Marvin@82.84.93.245] has joined #go-nuts 08:30 -!- photron [~photron@port-92-201-107-215.dynamic.qsc.de] has joined #go-nuts 08:46 -!- frewsxcv [~frewsxcv@109.169.57.37] has joined #go-nuts 08:47 < frewsxcv> does go adopt pythons (beautiful) synatax like this: if (4 < x < 7): 08:48 < fzzbt> nope 08:48 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 09:00 < frewsxcv> well it's obviously superior 09:00 < tobier> frewsxcv: then use python? 09:03 -!- edsrzf_ [~kelvan@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 09:03 < frewsxcv> but i want the speed that go has 09:04 < frewsxcv> or is python faster on average? 09:04 -!- Urmel| [~11087Urme@82-136-196-44.ip.telfort.nl] has quit [Ping timeout: 250 seconds] 09:04 -!- edsrzf [~kelvan@122-61-221-144.jetstream.xtra.co.nz] has quit [Ping timeout: 240 seconds] 09:04 < tobier> frewsxcv: if you want to use Go, then you have to use it's apparently inferior syntax 09:05 < tobier> not that it's inferior in my opinion; I find it easy to use 09:05 < frewsxcv> i'm going to fork Go and make a superior language called Go Better 09:05 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 09:06 < tobier> frewsxcv: go nuts (oh the pun!) 09:07 * frewsxcv plays a rimshot 09:12 < wm_eddie> I have a progra that takes 59 seconds to run with Python. The same algorithm takes only 3 seconds in Go. 09:13 -!- aconran [~aconran-o@38.104.129.126] has quit [Ping timeout: 272 seconds] 09:30 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-164-126.clienti.tiscali.it] has joined #go-nuts 09:33 -!- Project_2501 [~Marvin@82.84.93.245] has quit [Ping timeout: 240 seconds] 09:37 < schmrkc> omg python syntax :( 09:39 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has quit [Ping timeout: 250 seconds] 09:39 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Quit: JusticeFries] 09:39 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has joined #go-nuts 09:42 < wm_eddie> Other than the braces and def -> func what's the difference? 09:46 < schmrkc> well I guess go doesn't break if you don't indent stuff :) 09:47 < schmrkc> Is there some tool for generating FFI-bindings? 09:47 < KirkMcDonald> wm_eddie: := ? 09:49 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving] 09:50 < schmrkc> seems a bit of a pain to write 'em by hand when it is all just a buncha func Foo() { C.foo() } (: 09:50 < taruti> schmrkc: perl ;) 09:51 * schmrkc snickers. 09:52 < schmrkc> refresh parsing skills vs. bitching about there not being a ready tool .. hmmmMMmm 09:52 < taruti> well there is swig 09:52 < taruti> not sure whether it works atm 09:53 < schmrkc> Me neither. I'll just do it by hand. Not that much anyway. 09:54 * schmrkc goes back to learning go. 09:54 < wm_eddie> schmrkc: If you don't indent stuff I hate you. 09:54 < jnwhiteh> I've never understood why people come into a channel of a different programming language and then claim that syntax is "beautiful" or any other word like that O.o 09:54 < schmrkc> wm_eddie: well normally emacs indents for me ;) 09:54 < wm_eddie> It indents python for me too. 09:54 < schmrkc> wm_eddie: I was mostly poking fun of of someone earlier claimed python had (beautiful) syntax. 09:55 < wm_eddie> jnwhiteh: Good point. 09:55 < schmrkc> jnwhiteh: Right. :) 09:55 < jnwhiteh> syntax is syntax 09:55 < jnwhiteh> it always sucks =) 09:55 < schmrkc> wm_eddie: I'm a smug lisp weenie. I find everything ugly ;) 09:55 < wm_eddie> schmrkc: You too :-) 09:56 -!- tensorpudding [~user@99.23.127.179] has quit [Read error: Connection reset by peer] 09:56 < schmrkc> go looks really pleasent. Just finished trying to grok the tutorial and wrote a wiki. But the step from here on to actually understanding this concurrency stuff and goroutines etc. seems a bit long. 09:57 < schmrkc> Are there any recommendations from where to go from here? I figured I'd just start writing a roguelike and look at code, and see what happens. 09:57 < wm_eddie> concurrency is complicated. And when you start with go, you're (probably) going to get a bunch of deadlock warnings. But once it works, it's awesome. 09:57 < fzzbt> schmrkc: here is superior guide to go http://miek.nl/files/go/ 09:58 < schmrkc> wm_eddie: ah cool. My problem with my "play around project" is that it'd not really use any of the goroutines. :D 09:58 < schmrkc> fzzbt: thanks 09:58 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 09:58 < wm_eddie> Try multi-threading some project euler problems. 09:59 < wm_eddie> I have a go routine that generates primes. 09:59 < schmrkc> oof. 09:59 < schmrkc> yees. there was one of those in the tutorial. 10:00 < schmrkc> fzzbt: This looks like a pleasent read. :) 10:01 < KirkMcDonald> schmrkc: I do recommend just reading the spec, start to finish. It's not particularly long, as these things go. 10:01 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 10:02 < KirkMcDonald> A thrilling read, in fact, if you're into programming language specs. 10:02 < schmrkc> KirkMcDonald: Ya I was thinking that too. I'm just confused about the whole channels and goroutines thing. :) 10:02 < aiju> programming language specs make me hot 10:02 < schmrkc> KirkMcDonald: meh.. I'm a lisper. My bible is the common lisp hyperspec ;) 10:02 < aiju> ()((()))))(((())))(((())) 10:03 < schmrkc> KirkMcDonald: This does look incredibly short. 10:03 < schmrkc> fzzbt: Will this book appear in print? 10:03 < aiju> i'm probably the only one in here who doesn't consider the go spec a great work of literature 10:04 < KirkMcDonald> aiju: Oh, but it has everything! Adventures, twists, turns, curly braces. 10:05 < schmrkc> aiju: haven't read it yet, but I'll be over there with you NOT thinking it is a great work of literature :) 10:05 * aiju has to write a Go cheatsheet eventually 10:07 < aiju> Go has the nice feature (which it shares with C) that you can expect any reasonably large program to feature all language features 10:07 < taruti> the go spec just changes quite often 10:07 < aiju> taruti: also that 10:08 < taruti> there really should be a collected changelog of the spec 10:08 < KirkMcDonald> Isn't the spec in the repository? 10:09 -!- dshep [~user@24.130.32.125] has joined #go-nuts 10:13 < fzzbt> schmrkc: idk 10:13 < schmrkc> Hey this godoc is nice. Has anyone written some vim plugin for it? 10:14 < aiju> can't you just set a variable for this? 10:15 < aiju> set keywordprg=godoc or something 10:15 < schmrkc> I'm not sure it works so well with the foo/bar thing automagically. 10:15 < aiju> foo/bar thing? 10:16 < schmrkc> like godoc container/vector 10:16 < aiju> uh huh 10:19 -!- shvntr [~shvntr@116.26.138.64] has joined #go-nuts 10:20 < aiju> can godoc look up single functions? 10:20 -!- wrtp [~rog@92.17.33.100] has joined #go-nuts 10:22 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 10:22 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has joined #go-nuts 10:22 * schmrkc has no idea. 10:23 < schmrkc> go seems like plenty fun. Is it any useable for real time work? 10:23 < schmrkc> I see it has the GC, and that tends to get in the way. 10:24 < aiju> schmrkc: i don't imagine it to be suitable 10:25 < schmrkc> yeah too bad. 10:25 -!- wrtp [~rog@92.17.33.100] has quit [Client Quit] 10:36 -!- dshep [~user@24.130.32.125] has quit [Ping timeout: 272 seconds] 10:37 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Read error: Connection reset by peer] 10:40 -!- ayo [~nya@fuld-4d00d0ce.pool.mediaWays.net] has joined #go-nuts 10:43 -!- ako [~nya@fuld-590c7a05.pool.mediaWays.net] has quit [Ping timeout: 240 seconds] 10:45 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 10:53 -!- Wiz126 [~Wiz@h29.117.232.68.ip.windstream.net] has quit [Ping timeout: 240 seconds] 10:53 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has joined #go-nuts 10:53 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has joined #go-nuts 10:58 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal] 10:59 -!- Wiz126 [Wiz@h29.117.232.68.ip.windstream.net] has joined #go-nuts 11:08 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has joined #go-nuts 11:11 -!- belkiss [~kvirc@drn13-1-78-235-168-105.fbx.proxad.net] has joined #go-nuts 11:15 -!- foocraft [~dsc@78.101.228.183] has joined #go-nuts 11:17 -!- Scorchin [~Scorchin@host109-157-106-80.range109-157.btcentralplus.com] has joined #go-nuts 11:21 -!- boscop [~boscop@g227154024.adsl.alicedsl.de] has joined #go-nuts 11:23 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-164-126.clienti.tiscali.it] has quit [Quit: E se abbasso questa leva che succ...] 11:40 -!- DerHorst [~Horst@e176101047.adsl.alicedsl.de] has joined #go-nuts 12:11 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 12:15 -!- cenuij [~cenuij@78.112.41.178] has joined #go-nuts 12:15 -!- cenuij [~cenuij@78.112.41.178] has quit [Changing host] 12:15 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 12:15 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Ping timeout: 260 seconds] 12:15 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 12:19 < aiju> strings is totally unorthogonal *sigh* 12:22 < ww> to? 12:22 < aiju> it's unorthogonal per se 12:27 -!- visof [~visof@unaffiliated/visof] has quit [Quit: Leaving] 12:27 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 12:28 < ww> strings span? 12:33 -!- visof [~visof@unaffiliated/visof] has quit [Ping timeout: 240 seconds] 12:33 < skelterjohn> i don't follow either 12:33 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 12:34 < aiju> take e.g. FieldsFunc and Split 12:34 < aiju> what i'm in need for is a function which combines both 12:35 < aiju> (actually i just wrote one; proving my prejudice about libraries not helping at all in pratice) 12:37 -!- drry [~drry@unaffiliated/drry] has quit [Ping timeout: 240 seconds] 12:38 < skelterjohn> did your function use the provided FieldsFunc and Split? 12:38 < aiju> no 12:38 < skelterjohn> then you're right - clearly no use for libraries 12:47 -!- drry [~drry@unaffiliated/drry] has joined #go-nuts 12:49 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 12:53 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 12:55 -!- drry [~drry@unaffiliated/drry] has quit [Excess Flood] 13:01 -!- drry [~drry@unaffiliated/drry] has joined #go-nuts 13:11 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has joined #go-nuts 13:12 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Read error: Operation timed out] 13:13 -!- drry [~drry@unaffiliated/drry] has quit [Ping timeout: 276 seconds] 13:18 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 250 seconds] 13:30 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 13:30 -!- drry [~drry@unaffiliated/drry] has joined #go-nuts 13:32 -!- femtoo [~femto@95-89-249-74-dynip.superkabel.de] has joined #go-nuts 13:38 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 13:40 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 13:41 -!- Fish- [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has joined #go-nuts 13:48 -!- TheMue [~TheMue@p5DDF532C.dip.t-dialin.net] has joined #go-nuts 13:48 < sauerbraten> It seems to me as if fmt.Printf() ignores "\t"s after a "µ" char in a string :/ fmt.Printf("%.2f ms\t\telapsed.\n", dt*1e-6) prints two tabs between ms and elapsed, but fmt.Printf("%.2f µs\t\telapsed.\n", dt*1e-3) doesn't :( 13:49 < sauerbraten> Oh, not only after, it doesn't print "\t"s at all if "µ" is in the string 13:50 < TheMue> sauerbraten: Try the numerical encoding, maybe it's a unicode problem. 13:50 < aiju> works fine here 13:51 < aiju> could it be your terminal? 13:51 < aiju> (or you running an old Go version?) 13:52 < TheMue> sauerbraten: Funnily my irc client shows "inkompatible Kodierung". A charset issue? Which OS you're using? 13:52 < sauerbraten> well I run it in eclipse, but I just realized that my browser can't display some UTF-8 symbols, too o.O I'm on debian 6.0 13:53 < TheMue> Iirks, eclipse ... *scnr* 13:54 < aiju> i blame eclipse 13:54 < skelterjohn> i blame eclipse too 13:55 < sauerbraten> nah it seems to be my locales :/ 13:55 < sauerbraten> what's your problem with eclipse? 13:55 < aiju> en_US.UTF-8 or gtfo 13:56 < aiju> sauerbraten: eclipse is HUGE 13:56 < TheMue> sauerbraten: For me it's just too bloated. I like my vi. 13:56 < sauerbraten> actually locale tells me I'm using en_US.utf8 :/ 13:56 < aiju> even EMACS is lightweight compared to eclipse 13:56 < TheMue> aiYep 13:56 < skelterjohn> i'm experimenting with making a local webserver-based IDE 13:57 < skelterjohn> using ace 13:57 < aiju> "webserver-based IDE"? 13:57 < sauerbraten> mhm, I'm fine with eclipse 13:58 < aiju> is this related to clown computing? 13:58 < skelterjohn> aiju: it starts up a webserver and launches the browser to do GUI 13:58 < skelterjohn> helps with cross-platform issues 13:58 < skelterjohn> ace is pretty slick 13:58 < aiju> this sounds really ugly 13:58 < skelterjohn> http://ajaxorg.github.com/ace/build/editor.html < - demo 13:59 < sauerbraten> any idea why I can't display the chinese letters from the hello world on golang.org in chrome, though I use UTF8? 13:59 < aiju> could people please stop using abusing web browsers for all kind of shit? 13:59 < aiju> sauerbraten: those are japanese letters 13:59 < skelterjohn> why is it abuse? 13:59 < sauerbraten> any idea why I can't display the japanese letters from the hello world on golang.org in chrome, though I use UTF8? 13:59 < skelterjohn> go doesn't seem to have a nice solution for GUI 13:59 < skelterjohn> so i'm using what i can 13:59 < aiju> sauerbraten: maybe you don't have a japanese font installed? 14:00 < sauerbraten> shouldn't they be included in UTF-8? 14:00 < aiju> or fontconfig is broken ... in that case ... God help you 14:00 < aiju> sauerbraten: UTF-8 is just the encoding for Unicode characters .. you still need a font 14:01 < sauerbraten> it's a simple sans font 14:01 < aiju> i mean, you need a font with the characters 14:01 < aiju> バカ <-- do you see that? 14:01 < sauerbraten> may I blame debian for that? and how do I get those? 14:01 < sauerbraten> no I can't 14:02 < aiju> look in your repos 14:03 -!- mbernstein [~michael@cpe-70-113-7-72.austin.res.rr.com] has joined #go-nuts 14:05 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has quit [Remote host closed the connection] 14:06 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has joined #go-nuts 14:06 < sauerbraten> arghs 14:12 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has quit [Remote host closed the connection] 14:12 -!- photron [~photron@port-92-201-107-215.dynamic.qsc.de] has quit [Read error: Connection reset by peer] 14:13 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has joined #go-nuts 14:13 -!- sauerbraten [~sauerbrat@p508CAF83.dip.t-dialin.net] has quit [Remote host closed the connection] 14:18 < schmrkc> is there anything like folding on these slices? 14:19 < skelterjohn> you mean the list operation? 14:20 < skelterjohn> if so, not by default 14:23 < schmrkc> ya. 14:24 < schmrkc> trying to calculate the average of a float64 slice here. Figured I'd sum it up the normal way :) 14:24 < schmrkc> Hmmm.. should be easy enough to write a fold func. 14:25 * schmrkc gets crackin' 14:25 < aiju> s/easy enough/trivial 14:25 < schmrkc> right 14:26 < schmrkc> which is what I need to learn go-ism :) 14:26 < skelterjohn> the idiomatic go way to do it would not involve fold 14:26 < aiju> skelterjohn: bs 14:26 < skelterjohn> :) 14:26 < aiju> i often write map and fold if they turn out to be handy 14:26 -!- mattn_jp [~mattn_jp@112-68-79-195f1.hyg1.eonet.ne.jp] has joined #go-nuts 14:26 < skelterjohn> well, we can range over the slice and pump the values into a channel 14:26 < schmrkc> the idiomatic schmrkc way though. 14:27 < skelterjohn> aiju: ok, but it's finding the average of a float slice 14:27 * schmrkc has not gotten to the channel chapter yet :P 14:27 -!- edsrzf_ [~kelvan@122-61-221-144.jetstream.xtra.co.nz] has quit [Read error: Operation timed out] 14:27 < skelterjohn> the only language in which you'd use fold is lisp 14:27 < skelterjohn> because there are no loops 14:27 < schmrkc> wat? 14:27 < schmrkc> I LOOP in lisp all the time. 14:27 < skelterjohn> recursively 14:27 -!- visof [~visof@unaffiliated/visof] has quit [Ping timeout: 264 seconds] 14:28 < schmrkc> (loop for x from 1 to 17 doing (print x)) 14:28 < skelterjohn> that is valid lisp? 14:28 -!- Glasswalker [~Glasswalk@CPE002369b3cd1a-CM00222d53f155.cpe.net.cable.rogers.com] has quit [] 14:28 < skelterjohn> oh how the mighty have fallen 14:28 < schmrkc> it has been part of common lisp since it was set in stone back in 94 14:29 < skelterjohn> cool. 14:29 < schmrkc> http://clhs.lisp.se/Body/m_loop.htm#loop 14:29 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 14:29 < schmrkc> of course some hate it because it is not "lispy" 14:29 < skelterjohn> anyway, "var avg float64; for _, val := range myFloatSlice { avg += val } avg /= float64(len(myFloatSlice)" 14:30 < schmrkc> right that is pretty much what I did. 14:30 -!- binarypie [~binarypie@66.215.133.18] has joined #go-nuts 14:30 -!- binarypie [~binarypie@66.215.133.18] has quit [Remote host closed the connection] 14:30 < skelterjohn> for fun, about a year ago, i wrote a concurrent reduce http://code.google.com/p/goconc/source/browse/reduce.go 14:31 < schmrkc> hahaha 14:31 < skelterjohn> this is before semicolons got removed 14:31 < schmrkc> wget on that url did not turn out like I wanted 14:31 < schmrkc> (not laughing at the code) 14:31 -!- photron [~photron@port-92-201-107-215.dynamic.qsc.de] has joined #go-nuts 14:31 < schmrkc> Got me a html page >< 14:31 < schmrkc> ok here we go. I will look at this 14:32 < schmrkc> I just started poking around yesterday. 14:32 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 14:32 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Client Quit] 14:35 < schmrkc> skelterjohn: thanks. This was a good read. 14:35 * schmrkc goes back to the pdf :) 14:36 < skelterjohn> glad you enjoyed it 14:36 < skelterjohn> don't ask me how it works 14:36 < skelterjohn> i've long since forgotten 14:36 < schmrkc> :D 14:37 < aiju> 15:29 < skelterjohn> the only language in which you'd use fold is lisp 14:37 < aiju> bs 14:37 < skelterjohn> :) 14:37 < skelterjohn> and cousins 14:37 < aiju> APL and K as well 14:37 < skelterjohn> and also, i meant for this particular task 14:38 -!- Fish- [~Fish@bus77-2-82-244-150-190.fbx.proxad.net] has quit [Quit: So Long, and Thanks for All the Fish] 14:38 < aiju> {(+/x)%#x} 14:38 < skelterjohn> should i know what that means? 14:38 < aiju> averaging in K 14:38 < skelterjohn> oh 14:38 < aiju> is the fold functor 14:39 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 14:39 < skelterjohn> and that is why K is ridiculous. 14:39 < aiju> eh +/ 14:39 < aiju> this is why K is cool 14:39 -!- belkiss [~kvirc@drn13-1-78-235-168-105.fbx.proxad.net] has quit [Quit: KVIrc 4.0.2 Insomnia http://www.kvirc.net/] 14:39 < skelterjohn> if something is completely unreadable unless you study the language, then i think that's silly 14:41 < aiju> many languages are completely unreadable unless you know them 14:43 < skelterjohn> and...i think they're silly 14:43 < aiju> like english ... :P 14:43 < aiju> languages only become readable by being similar to what you already know 14:44 < skelterjohn> certainly if we had to choose a language for a new planet of people to speak, it wouldn't be english 14:44 < schmrkc> folding is pretty common in the whole world of functional languages 14:44 < skelterjohn> i'm fine with folding 14:44 -!- mattn_jp [~mattn_jp@112-68-79-195f1.hyg1.eonet.ne.jp] has quit [Quit: Leaving...] 14:44 < skelterjohn> i'm not fine with {(+/x)%#x} 14:45 < schmrkc> I don't even understand what that does :) 14:45 < skelterjohn> it averages x, according to aiju 14:45 < aiju> all of mathematical notation is unreadable unless you know it 14:45 < skelterjohn> by folding 14:45 < aiju> not x, it's a lambda function 14:45 * schmrkc finds minimalistic syntax a bit.. not brilliant. 14:45 < aiju> {(+/x)%#x} 1 2 3 would yield 3 14:45 < aiju> eh 14:45 < aiju> 2 14:45 < skelterjohn> average of 1 2 3 isn't 3 :) 14:45 < skelterjohn> ok 14:46 < aiju> that one is fairly readable actually 14:46 < schmrkc> :D 14:46 < aiju> `0:,/" ",',/"\n",'$,/({x,'}'X)@'{[x]300_{[y]x*y*1-y}\[400;0.5]}'X 14:46 < schmrkc> I have not heard of K. what is it good for? 14:46 < skelterjohn> i've been staring at it for 10 minutes and i still have no idea how it gets average 14:46 < schmrkc> oh 14:46 < aiju> http://aiju.phicode.de/code/k/ 14:46 < aiju> winning contests "write X in the shortest amount of code" 14:46 < skelterjohn> schmrkc: i think economists like K? 14:47 < schmrkc> oh ok. 14:47 < aiju> skelterjohn: + is the addition operator, / is folding, % is division and # is number of elements 14:47 < schmrkc> I know some economists.. they don't seem to mostly like trading ;) 14:47 < skelterjohn> ah, see i figured / was division 14:48 < schmrkc> oh geesh. stepmom is here. must stop being nekkid. 14:48 < skelterjohn> now it makes sense 14:48 * schmrkc finds clothes interfere with programming. 14:48 < aiju> {} is an anonymous function 14:48 < skelterjohn> i got that 14:48 < aiju> http://aiju.phicode.de/code/k/tictactoe 14:49 < skelterjohn> why is % division? how do you do mod? 14:49 < aiju> ! 14:49 < aiju> i have no clue 14:49 < aiju> many operators are poorly chosen imho 14:49 < schmrkc> :D 14:49 < skelterjohn> well, that's what happens when you try to map them all to the top half of the number row on the keyboard 14:50 < aiju> http://k.phicode.de/?f=\%2B 14:50 < aiju> all operators 14:51 < skelterjohn> oh great, two meanings for each operator 14:51 < skelterjohn> mod is "!"! 14:51 < aiju> yeah 14:51 < aiju> 15:51 < aiju> ! 14:51 < skelterjohn> yeah, my impression of K has not improved 14:51 < skelterjohn> oh! 14:51 < schmrkc> I see an example of a recursive function in Go here in this text. Makes me curious to know.. does go handle tail recursion like I think it should? 14:51 < skelterjohn> i thought you were like "wow! good question!" 14:52 < skelterjohn> schmrkc: not yet, no reason it can't in the future 14:52 < aiju> schmrkc: i wouldn't be surprised if it did 14:52 < aiju> *didn't 14:52 < skelterjohn> :) 14:52 * schmrkc nods. 14:52 < aiju> i see no sense in tail recursion optimiziation 14:52 < aiju> -i 14:52 < schmrkc> I guess it is not really something one would do in go anyhoo. 14:52 < aiju> in imperative languages, that is 14:52 < schmrkc> ya 14:52 < skelterjohn> um 14:52 < aiju> start: ... goto start 14:53 < jnwhiteh> because even in imperative programs tail recursion is a natural way to write programs? 14:53 < skelterjohn> there are lots of good reasons to do tail recursion well 14:53 < schmrkc> buuut.. common lisps tend to be tail recursion optimizing, and it is an imperative language ;) 14:53 -!- shvntr [~shvntr@116.26.138.64] has quit [Quit: leaving] 14:53 < aiju> LISP is functional … 14:53 < schmrkc> aiju: oh come on . no one has spelled it LISP for ages. 14:53 < schmrkc> aiju: common lisp is functional if you want. (: 14:54 < schmrkc> skelterjohn: I'm thinking that there is no reason to *not* do handle tail recursion well. 14:54 < aiju> jnwhiteh: show me an example 14:54 * schmrkc should move this irc window off somewhere. 14:54 < aiju> i don't think the compiler should take the burden of efficient code of the programmer 14:55 < jnwhiteh> its a minor optimisation.. 14:55 < jnwhiteh> one that is an implementation detail of the language 14:55 < jnwhiteh> what about mutually recursive functions? 14:56 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined #go-nuts 14:56 < aiju> yup, you end up with thousands of "minor optimizations" just to wipe the programmer's ass 14:57 < TheMue> like GCs, defers, channels, goroutines ... 14:57 < TheMue> good old asm is best 14:57 < jnwhiteh> inline asm should be the only way to write go programs, clearly. 14:57 < skelterjohn> this function could benefit from tail recursion https://github.com/petar/GoLLRB/blob/master/llrb/llrb.go#L58 14:57 < aiju> haha *facepalm* 14:57 < TheMue> hehe 14:57 < schmrkc> ok. next time I have some random question on the top of my head I'll be quiet :P 14:58 < jnwhiteh> schmrkc: don't, not everyone responds that way 14:58 < skelterjohn> though, aiju is usually around, so chances are high ;) 14:58 < schmrkc> meh. I just didn't expect a long discussion. nor that I would actually write recursive code. 14:58 < aiju> haha see 14:58 < schmrkc> (I hardly ever do recursion.. I'm a lisper.) 14:58 < TheMue> I liked tail recursion in erlang a lot, but I don't really miss it in go 14:58 < aiju> gcc optimizes printf("%s\n", foo) to puts(foo) 14:59 < aiju> a perfect example of an optimization which is totally pointless, but hey adding pointless code doesn't hurt anyone! \o/ 14:59 < skelterjohn> good for it? 14:59 < skelterjohn> it speeds things up 14:59 < aiju> 1. this is a fucking I/O optimization, this is not going to be any bottleneck 14:59 < aiju> 2. the programmer can do things like that EASILY 15:00 < skelterjohn> 1. io is quite often a bottleneck 15:00 < skelterjohn> 2. ok 15:00 < aiju> actual I/O is the bottleneck 15:00 < aiju> not printf vs puts 15:00 < skelterjohn> true 15:00 < skelterjohn> tail recursion doesn't fall into that class 15:01 < schmrkc> "One of Go's unusual features is that functions can return mulitple values" *snickers* 15:01 < aiju> ah good point 15:01 < aiju> Go's calling convention might make tail recursion more difficult than it looks like 15:01 < aiju> to the point of being impossible 15:01 < jnwhiteh> yet Lua has the same calling convention and it works just fine 15:02 < aiju> lua is compiled? wtf? 15:02 < jnwhiteh> ... 15:02 < schmrkc> What is the Go calling convention anyway? 15:02 < jnwhiteh> I never said it was 15:02 < aiju> so don't go comparing go and lua 15:03 < schmrkc> from this chapter here in this pdf on functions it looks a bit like common lisp, and that is most often compiled 15:03 < jnwhiteh> oh that's right, you're always right 15:03 < jnwhiteh> I forgot about that 15:03 < schmrkc> I might have understood the concept of calling convention. 15:04 < aiju> schmrkc: the Go calling convention is caller saves all registers, parameters on stack and return values are handled as pass-by-reference parameters 15:04 < schmrkc> oh I was thinking of something completely different then :) 15:06 < aiju> gcc doesn't seem to do tail call optimization either 15:06 < schmrkc> nope 15:06 < aiju> at least not with -O1 15:07 < schmrkc> sbcl will do it though. 15:07 < aiju> sbcl? 15:07 < schmrkc> steel bank common lisp 15:07 < aiju> LISP is not C ;) 15:07 < schmrkc> well no, of course not. 15:07 < schmrkc> C doesn't have the amazing OO of lisp and all. *sighs* 15:07 < aiju> hahahha 15:08 * schmrkc missed something funny :( 15:09 < schmrkc> ok this is taking too much off my time this IRC :P 15:10 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts 15:12 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has quit [Ping timeout: 252 seconds] 15:12 < jnwhiteh> schmrkc: tail call optimisation is already in the plan9 compilers for limited cases, fwiw 15:13 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has joined #go-nuts 15:13 < aiju> "limited cases"? 15:13 < jnwhiteh> it works for those that I've tried 15:13 < aiju> oh indeed 15:13 < schmrkc> jnwhiteh: way cool. 15:13 < TheMue> so, continuing writing my go article 15:13 < jnwhiteh> and iant doesn't go into further detail and I haven't looked at the compiler 15:13 < jnwhiteh> http://groups.google.com/group/golang-nuts/browse_thread/thread/d282193c786b0f36/ffb0a5936d972f32?lnk=raot 15:14 < schmrkc> jnwhiteh: I'm thinking it is not a bad feature to have for those that like to use it. That does not include me though :) 15:15 < jnwhiteh> aye, I think if a compiler can implement it, it is certainly nice to have 15:15 -!- marekweb [~marek@bas1-montreal48-1176173369.dsl.bell.ca] has joined #go-nuts 15:15 < jnwhiteh> within reason, ofc 15:17 < aiju> tail *recursion* might be implementable 15:17 < aiju> i doubt tail *call* is possible 15:17 < aiju> with return values, that is 15:19 < aiju> and well, not even gcc does it 15:19 < jnwhiteh> tail recursion is just a special case of tail calls, and plan9 already does it for certain cases 15:19 < jnwhiteh> as I've said 15:20 < aiju> jnwhiteh: i don't see it 15:20 < jnwhiteh> so its obviously possible, just not for the general case 15:20 < aiju> int foo(void) { return bar(2,3,4); } 15:20 < aiju> not optimized 15:20 < jnwhiteh> that's not Go code 15:20 < jnwhiteh> I'm not talking about C 15:21 < aiju> there are plan 9 go compilers? 15:21 < jnwhiteh> 6g/8g/etc 15:21 < jnwhiteh> or perhaps my terminology is wrong? 15:22 < exch> the names are inspired by the P9 toolchain, but they have nothing to do with it for the rest 15:22 < aiju> jnwhiteh: the equivalent Go code is not optimized either 15:22 < jnwhiteh> ah forgive me then, I am referring to those compilers 15:23 < aiju> jnwhiteh: any example? 15:23 < aiju> i don't see it at all here 15:23 < jnwhiteh> I was using func foo() int { return bar() + 1 }; func bar() int { return foo() + 1 }; 15:23 -!- wrtp [~rog@92.17.33.100] has joined #go-nuts 15:23 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has quit [Quit: This computer has gone to sleep] 15:23 -!- mattn_jp [~mattn@112-68-79-195f1.hyg1.eonet.ne.jp] has joined #go-nuts 15:23 < aiju> i can't even seem to get func foo() { foo() } optimized 15:24 < jnwhiteh> really? 15:24 < jnwhiteh> how are you checking for the optimisation? 15:24 < aiju> 0000 (test.go:3) TEXT foo+0(SB),$0-0 15:24 < aiju> 0001 (test.go:4) CALL ,foo+0(SB) 15:24 < aiju> 0002 (test.go:5) RET , 15:24 < aiju> -S 15:24 < jnwhiteh> perhaps I'm looking at the wrong thing 15:25 < jnwhiteh> ah yes, I can see the stack growing, I just wasn't hitting the limit 15:25 < aiju> hahaha 15:25 < jnwhiteh> I wonder what cases iant is referring to in this case, perhaps they've been removed 15:26 < jnwhiteh> either way its not something on they're requiring of compilers and I think that's the right decision *shrug* 15:28 < aiju> odd 15:28 < aiju> several pages claim gcc has tail call optimization 15:30 < schmrkc> on says it is harder in C than in higher level languages because there is more information around (in the higher level ones) to tell the compiler when it is safe to optimize or not. 15:30 * schmrkc shrugs 15:31 < aiju> i'd say the calling convention gets in the way 15:31 < schmrkc> if it keeps pushing stuff on the stack that'd be problem, yeah. 15:31 < aiju> the caller has to clean up the stack 15:32 < aiju> both with GCC and Go 15:32 < jnwhiteh> yeah that definitely introduces a problem 15:32 < aiju> GCC seems to do it if the parameter count matches 15:32 < aiju> but this is getting less and less useful 15:32 < schmrkc> I don't know how these things are usually handled. I bet it *could* be done, but it would require someone actually caring a whole bunch :) 15:33 < jnwhiteh> schmrkc: and then you get into aiju's point about whether or not people are actually writing code like this 15:33 < schmrkc> yee 15:34 < jnwhiteh> Most times I've written a tail recursive function in Go, I just use goto to smooth it out 15:34 < schmrkc> mmmm goto. 15:34 < aiju> well, i'm an iterative thinker 15:34 < schmrkc> I am too mostly. 15:35 < schmrkc> I find it a bit funny that the extreme functionalist are all "lol. just learn haskell and you will think this way instead. it is a lot easier and natural :) :) :)" 15:36 < aiju> i think differently in different languages 15:36 < schmrkc> yeh. 15:36 < aiju> i work in terms of map, reduce etc in K 15:36 < jnwhiteh> I don't find switching paradigm or syntax all that hard 15:36 * schmrkc isnt anywhere near thinking on Go yet. 15:36 < aiju> i slap anyone who whines about syntax 15:36 < schmrkc> mmm 15:36 < jnwhiteh> I definitely support you in that regard =) 15:36 < aiju> (to some extend) 15:36 < schmrkc> I'm a lisper (and also forther). I don't believe in paradigms or syntax ;) 15:37 < aiju> while i often (make jokes (about the ridiculous amounts (of parentheses))) in LISP i don't consider it an actual problem 15:37 < jnwhiteh> I actually enjoy writing lisp code 15:37 < schmrkc> It's quite useful those parens. 15:37 < aiju> WHAT? HERETIC? 15:37 < aiju> *! 15:38 < aiju> schmrkc: actually.. how so? 15:38 < TheMue> if makeJokes(about(parenthesis)) == often() { ... } 15:39 < schmrkc> I like the lisp OO system, and the parens. I find other OO quite painful to work with, so I'm never gonna be working with programming ;) 15:39 < aiju> how the fuck is lisp OO? 15:39 < schmrkc> aiju: When you are using your code as data they're useful. or generating code, etc. 15:39 < schmrkc> huh. 15:39 < schmrkc> (defclass foo () ....) 15:39 < aiju> oh 15:39 < aiju> what LISP is this? 15:39 < aiju> so that i stay away from it 15:39 < schmrkc> (defmethod ping (foo foo) (princ "hello")) 15:40 < schmrkc> it is common lisp 15:40 < aiju> eh 15:40 < aiju> scheme is it, then 15:40 < TheMue> I do like Scheme, but also Smalltalk (it's my job), and Erlang and Go. 15:40 < schmrkc> and the common lisp object system is *very* nice. 15:40 < schmrkc> (factor has something much like it) 15:40 < TheMue> All are ok, but I won't use them for the same tasks. 15:40 < aiju> i like scheme's minimalism 15:40 * exch loves factor but loathes lisp 15:40 < schmrkc> aiju: scheme is a bit too much functional for me :) 15:41 < schmrkc> exch: (: 15:41 < schmrkc> ya factor is sweet. 15:41 * schmrkc shrugs. 15:41 < TheMue> scheme is pure elegance 15:41 < aiju> if i write on lisp dialect, i'd write scheme 15:41 < jnwhiteh> I love scheme 15:41 < aiju> +in 15:41 < aiju> *one 15:41 < TheMue> +1 15:41 < schmrkc> I'd miss CLOS. thats what Im saying (: 15:41 < aiju> i thought about looking at CLISP but schmrkc scared me away with (defclass) 15:42 < schmrkc> meh 15:42 < schmrkc> aiju: ok. CLISP is a specific Common Lisp implementation. :) 15:42 < aiju> i mean common lisp 15:42 < schmrkc> and its not that brilliant either ;) 15:42 < schmrkc> aha 15:42 < jnwhiteh> I maintained an AIM client written in elisp for quite some time about 10 years ago.. it was an interesting mix of pleasure and pain =) 15:42 < schmrkc> hehehe :) 15:43 < schmrkc> aiju: I think it is worth it just to play around with the object system.. but one might as well play with factor. It is much the same. 15:43 < schmrkc> aiju: lisp (ie common lisp) has the clear benefit of not force feeding one functional programming like scheme tries to ;) 15:43 < aiju> factor looks like hipster forth 15:44 < schmrkc> right.. forth.. but with a GC, and object system, and possibility to push other stuff than numbers on the stack (: 15:44 < TheMue> Best OO together with closures is still Smalltalk, together with an odbms like GemStone 15:44 < aiju> i stay away from objects, they bite 15:45 < schmrkc> TheMue: What smalltalk implementation do you work with? I poked some with squeak and it was quite meeh. 15:45 < TheMue> aiju: They need a bit more care, yes, but they are ok. 15:45 < TheMue> schmrkc: On my job with VisualWorks, but I would prefer Pharo today. 15:46 < TheMue> schmrkc: Squeak is, hmm, yeah, hmmm, sramge ... 15:46 < TheMue> strange 15:46 < aiju> Smalltalk started with calling functions applications "message passing" 15:46 < aiju> yuck 15:46 < schmrkc> aiju: see the CL object system isn't even focused around the objects and classes.. it's all about methods and functions (: somewhat getting the same feel from parts of Go here.. with how I can specify what type a function is supposed to work on. 15:46 < schmrkc> aiju: it is very much not the message passing style of OO :) 15:46 < schmrkc> TheMue: but it has toys! 15:47 < schmrkc> well I need to make more coffee 15:47 < aiju> i pretend things to be deities 15:47 < aiju> and call a method call "a prayer" 15:47 < aiju> exceptions are called "wrath of god" 15:47 < TheMue> aiju: There are no function calls. 15:47 < schmrkc> hehehe 15:47 < aiju> this should be a boascript feature 15:47 < aiju> ( http://aiju.phicode.de/b/boascript ) 15:47 < TheMue> aiju: The base idea has been more to use actors, but in 76 hw has been too weak for it 15:48 < TheMue> aiju: Like in Erlang 15:48 -!- visof [~visof@unaffiliated/visof] has quit [Ping timeout: 272 seconds] 15:48 < schmrkc> in cl you just apply methods to objects.. like (apply #'+ (list 1 2 3 4)) or (apply #'draw (make-instance 'cube)) ;) 15:49 -!- mattn_jp [~mattn@112-68-79-195f1.hyg1.eonet.ne.jp] has quit [Quit: Ex-Chat] 15:49 < aiju> (fold + '(1 2 3 4) 0) looks nicer to me 15:50 < schmrkc> (reduce '+ (list 1 2 3 4)) would be it.. but you could write a fold no worries. 15:50 < aiju> w/e 15:50 < aiju> +/ 1 2 3 4 15:50 < aiju> :D 15:50 < schmrkc> (: 15:51 < schmrkc> I find the idea with code being identical to data being very practical for the macros. that's about all. ()'s is nice that way. 15:51 < schmrkc> then common lisp sucks in a big number of ways :D 15:52 < aiju> wasn't there a forther around? 15:52 < schmrkc> other than me? :O 15:52 < aiju> i'd like some good tutorial ;P 15:52 < schmrkc> on forth? 15:52 < aiju> yeah 15:54 < schmrkc> hmmm.. Programming Forth is quite ok. Available as free pdf.. *looks for the url* and I guess the gforth info page has some minor tutorial. 15:54 < schmrkc> Starting Forth is a classic but seriously outdated.. nice pictures I guess. 15:54 < aiju> haha 15:54 < schmrkc> every forth tutorial is pretty implementation specific half the time though. 15:55 < schmrkc> http://www.mpeltd.demon.co.uk/arena/ProgramForth.pdf 15:59 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:b198:514:e2ce:b9fc] has joined #go-nuts 15:59 -!- Mr_Dark [~dk@poviko.demon.nl] has quit [Quit: Pokemon Universe MMORPG - #pokemon-universe - http://pokemon-universe.com] 16:04 -!- Boney_ [~paul@203.214.35.41] has joined #go-nuts 16:05 -!- Boney [~paul@203-158-39-118.dyn.iinet.net.au] has quit [Ping timeout: 260 seconds] 16:12 < aiju> hahaha 16:12 < aiju> "It has been said there are three types of procedure call: (1) call by value (2) call by reference (3) call by text editor" 16:20 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts 16:49 -!- nettok [~quassel@200.119.162.90] has joined #go-nuts 16:56 -!- jyoshm [~jmissao@unaffiliated/sundial] has quit [Ping timeout: 240 seconds] 17:01 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has joined #go-nuts 17:09 -!- dshep [~user@24.130.32.125] has joined #go-nuts 17:15 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has joined #go-nuts 17:16 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has quit [Client Quit] 17:16 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has joined #go-nuts 17:24 -!- dshep [~user@24.130.32.125] has quit [Ping timeout: 240 seconds] 17:33 -!- ovk [~ovk@78-106-195-77.broadband.corbina.ru] has joined #go-nuts 17:35 -!- ovk [~ovk@78-106-195-77.broadband.corbina.ru] has quit [Quit: Ex-Chat] 17:36 -!- ovk_ [~ovk@78-106-195-77.broadband.corbina.ru] has joined #go-nuts 17:37 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has quit [Read error: Connection reset by peer] 17:38 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has joined #go-nuts 17:42 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts 17:44 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has joined #go-nuts 17:53 -!- Scorchin [~Scorchin@host109-157-106-80.range109-157.btcentralplus.com] has quit [Ping timeout: 240 seconds] 17:53 -!- zozoR2 [~zozoR@56347ac9.rev.stofanet.dk] has quit [Read error: Connection reset by peer] 17:56 -!- Scorchin [~Scorchin@host109-157-105-238.range109-157.btcentralplus.com] has joined #go-nuts 17:56 -!- Scorchin [~Scorchin@host109-157-105-238.range109-157.btcentralplus.com] has quit [Client Quit] 18:04 -!- Viriix [~joseph@c-67-169-172-251.hsd1.ca.comcast.net] has left #go-nuts ["Leaving"] 18:05 -!- dchest [~dchest@109.228.67.193] has joined #go-nuts 18:10 -!- jokoon [~zonax@feu30-1-82-242-58-229.fbx.proxad.net] has joined #go-nuts 18:11 -!- schmrkc [~marcus@sxemacs/devel/schme] has quit [Read error: Operation timed out] 18:11 < jokoon> hello 18:12 -!- lmoura_ [~lauromour@187.58.101.14] has quit [Quit: Leaving] 18:15 < __gilles> re 18:16 -!- schmrkc [~marcus@c83-254-196-92.bredband.comhem.se] has joined #go-nuts 18:16 -!- schmrkc [~marcus@c83-254-196-92.bredband.comhem.se] has quit [Changing host] 18:16 -!- schmrkc [~marcus@sxemacs/devel/schme] has joined #go-nuts 18:24 -!- tensorpudding [~user@99.23.127.179] has joined #go-nuts 18:32 < ww> well... was never able to figure out what was with cgo and passing callback functions... 18:33 < ww> but i don't know why someone would want to use a visitor function like that in go... 18:33 < ww> better to just use the cursor and feed values to a chanel... 18:36 < skelterjohn> context? 18:37 < ww> skelterjohn: from yesterday evening... 18:37 < skelterjohn> short memory 18:37 < ww> the visitor pattern in kyoto cabinet where you pass a function that gets called for each key or value or whatever 18:38 < ww> there was some obscurely difficult typecasting problem where i couldn't manage to define a visitor in go and pass it in 18:38 < ww> but then i thought... why would you want to do that? 18:38 < ww> http://bitbucket.org/ww/cabinet 18:39 < ww> just working through the last few api calls and some tests... binding nearly complete 18:39 < ww> (except for visitors of coursE) 18:39 < Namegduf> Passing functions is useful occasionally, but you're right; considering first-order things like simplicity first, the pattern is rarely the best approach. 18:39 < Namegduf> I do something like that to call a function while changes are blocked to the item. 18:40 < Namegduf> It's used to synchronise the entire state. 18:40 < Namegduf> Without blocking in general during the process. 18:41 -!- dju [dju@fsf/member/dju] has joined #go-nuts 18:41 < ww> is there an easy way to check if a symbol is defined at compile time? 18:41 < Namegduf> I also use something like it in many cases to write to a connection at the maximum rate it can support over a long period, while letting other messages be sent. 18:41 < Namegduf> The function is called whenever it has room to write stuff. 18:41 < ww> e.g. version 1.2.7 (what is in freebsd ports) of kc doesn't have kcdbreplace, 1.2.46 does... 18:42 < Namegduf> Can't help here. 18:42 < ww> in C it might be a simple #ifdef around the library ersion in the header... 18:42 -!- dju [dju@fsf/member/dju] has quit [Max SendQ exceeded] 18:42 < Namegduf> You can always do it in the build system with separate files 18:43 < Namegduf> But there might or might not be a nicer way. 18:43 -!- dju [dju@fsf/member/dju] has joined #go-nuts 18:44 < ww> Namegduf: sure, but that would break goinstall because it wouldn't use my makefiles... 18:45 < ww> hmmm... godoc doesn't seem to play exceptionally nicely with cgo... 18:47 < skelterjohn> in the future, goinstall might filter source based on certain flags 18:47 < skelterjohn> in the file name 18:47 < skelterjohn> like _GOARCH.go 18:48 < skelterjohn> though probably not _kc1.2.7.go 18:51 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 18:58 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 19:01 -!- femtooo [~femto@95-89-249-74-dynip.superkabel.de] has joined #go-nuts 19:03 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Ping timeout: 240 seconds] 19:04 -!- femtoo [~femto@95-89-249-74-dynip.superkabel.de] has quit [Ping timeout: 276 seconds] 19:07 -!- nettok [~quassel@200.119.162.90] has quit [Read error: Connection reset by peer] 19:08 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-174-113.clienti.tiscali.it] has joined #go-nuts 19:09 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 19:09 -!- dshep [~user@24.130.32.125] has joined #go-nuts 19:21 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 19:23 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 240 seconds] 19:24 -!- cenuij [~cenuij@base/student/cenuij] has quit [Quit: kernel] 19:26 -!- napsy [~luka@88.200.96.18] has quit [Read error: Connection reset by peer] 19:31 -!- s9 [~s9@99.236.110.72] has joined #go-nuts 19:38 < jokoon> hello 19:39 < jokoon> how usable and buggy is go for windows ? 19:43 -!- saschpe [~quassel@opensuse/member/saschpe] has joined #go-nuts 19:47 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 19:48 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 19:49 -!- saschpe [~quassel@opensuse/member/saschpe] has quit [Remote host closed the connection] 19:57 < s9> anyone have an eclipse plugin or different IDE they use for go ? (sorry for the newb Q) 19:59 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Remote host closed the connection] 19:59 -!- saschpe [~quassel@opensuse/member/saschpe] has joined #go-nuts 20:01 -!- femtoo [~femto@95-89-249-74-dynip.superkabel.de] has joined #go-nuts 20:02 -!- cenuij [~cenuij@78.112.41.178] has joined #go-nuts 20:02 -!- cenuij [~cenuij@78.112.41.178] has quit [Changing host] 20:02 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 20:02 -!- wrtp [~rog@92.17.33.100] has quit [Quit: wrtp] 20:04 -!- femtooo [~femto@95-89-249-74-dynip.superkabel.de] has quit [Ping timeout: 250 seconds] 20:04 < exch> s9: http://go-lang.cat-v.org/text-editors/ 20:04 -!- nictuku [~nictuku@unaffiliated/nictuku] has joined #go-nuts 20:11 < zozoR> exch, that side lacks the gocode extension :D 20:12 < zozoR> website* 20:13 -!- XenoPhoenix [~Xeno@cpc13-aztw24-2-0-cust23.aztw.cable.virginmedia.com] has quit [Ping timeout: 260 seconds] 20:14 < fzzbt> s9: here is plugin for gedit. it is hardly an IDE tough, and still somewhat beta. -- https://bitbucket.org/fzzbt/go-gedit-plugin/src 20:15 < comex> how do I dynamically link against libgo? 20:17 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 20:18 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 20:21 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 20:23 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Remote host closed the connection] 20:24 -!- JusticeFries_ [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has joined #go-nuts 20:24 -!- JusticeFries [~JusticeFr@173-8-247-218-Colorado.hfc.comcastbusiness.net] has quit [Ping timeout: 250 seconds] 20:25 -!- XenoPhoenix [~Xeno@cpc13-aztw24-2-0-cust23.aztw.cable.virginmedia.com] has joined #go-nuts 20:29 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 20:39 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has quit [Quit: Computer has gone to sleep.] 20:46 -!- KimHemma2 [~urtie@90-227-159-22-no57.tbcn.telia.com] has quit [Remote host closed the connection] 20:51 < cenuij> what is libgo? 20:54 < jokoon> isn't there some zip for goclipse somewhere ? 20:55 < jokoon> forget what I just whined about 20:56 -!- anschelsc [~anschel@pool-108-35-39-226.nwrknj.fios.verizon.net] has joined #go-nuts 20:57 < jokoon> are there some game developpers using go around here ? 20:58 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has quit [Ping timeout: 272 seconds] 21:00 < skelterjohn> i've fiddled with gamedev before 21:00 < skelterjohn> not with go 21:00 < skelterjohn> but... i like games, and go? :) 21:01 -!- femtooo [~femto@95-89-249-74-dynip.superkabel.de] has joined #go-nuts 21:02 < jokoon> DAMN you tricked me 21:02 < skelterjohn> well, what were you wondering about 21:02 < jokoon> I've watched the last interview from rob pike at goto; 21:03 < skelterjohn> i've seen bits of it 21:03 < jokoon> Go looks like a very sexy girl 21:03 < skelterjohn> heh 21:03 < skelterjohn> i like it 21:03 < skelterjohn> it's young, though 21:03 < skelterjohn> so ... hands off? 21:03 < skelterjohn> that didn't go like i had planned 21:03 < jokoon> C++ was also young at some point ! 21:03 -!- cenuij [~cenuij@base/student/cenuij] has quit [Remote host closed the connection] 21:03 < skelterjohn> yes, and now look at it 21:04 < skelterjohn> i'm not sure what point we're making, here 21:04 < jokoon> it's old and cranky 21:04 < skelterjohn> i see 21:04 < skelterjohn> well, go is young and cranky 21:04 < skelterjohn> not yet into that middle-aged and easy-going phase 21:04 < skelterjohn> but it does have an opengl port 21:05 -!- virtualsue [~chatzilla@nat/cisco/x-pbspstewpxsiebqa] has joined #go-nuts 21:05 -!- femtoo [~femto@95-89-249-74-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 21:05 < jokoon> well at last I agree with the concept of a method not being owned by a class 21:05 < skelterjohn> certainly. no classes in go, so that solves that. 21:05 < jokoon> ... yes 21:06 < skelterjohn> as far as gamdev goes, i'd really like to see go working on the ps3 cell 21:06 < skelterjohn> i think that would be a nice platform to work in 21:06 < jokoon> well for the lucky ones having a ps3 dev kit 21:07 < jokoon> linux has been disabled in a recent patch 21:07 < skelterjohn> yes well 21:07 < skelterjohn> that wasn't the only thing in the way, unfortunately 21:07 -!- frewsxcv [~frewsxcv@109.169.57.37] has quit [Changing host] 21:07 -!- frewsxcv [~frewsxcv@unaffiliated/frewsxcv] has joined #go-nuts 21:07 < Xenith> I wouldn't touch PS3 development with a 10-foot pole at the moment. 21:07 < Xenith> jokoon: What kind of game development are you asking about? 21:08 < jokoon> well any, I wonder if there are some professionnals out there toying with go 21:08 < Xenith> Ah. Well, I'm not a professional game developer. 21:08 -!- visof_ [~visof@41.238.235.243] has joined #go-nuts 21:09 < skelterjohn> i wasn't lying when i said i'd done some gamedev, but certainly not professional 21:09 < jokoon> well professional or mighty enough in 3D programming stuff 21:10 < skelterjohn> i know all about the basic math behind 3d rendering 21:10 < Xenith> I've only written text-based games 21:11 < skelterjohn> and on the dashboard (godashboard.appspot.com/project) you can see a lot 3rd party libraries 21:11 < skelterjohn> including one on opengl 21:11 < skelterjohn> and including one for matrix algebra 21:11 < jokoon> beside gaming, are there some companies looking for go ? 21:11 -!- visof_ [~visof@41.238.235.243] has quit [Read error: Connection reset by peer] 21:11 -!- visof [~visof@unaffiliated/visof] has quit [Ping timeout: 240 seconds] 21:12 < skelterjohn> hard to get a company to invest in a language that breaks backwards compatibility every two months 21:12 < skelterjohn> go is a bit young for that 21:12 < jokoon> oh 21:12 < skelterjohn> one direction i'd like to see the language go has to do with nacl 21:13 < jokoon> salt ? 21:13 < skelterjohn> nacl is sort of like javascript-done-right 21:13 < skelterjohn> nacl -> native client 21:13 < skelterjohn> a way to sandbox binary code on the client end of a browser 21:13 < jokoon> oh yeah I heard 21:13 < aiju> "javascript-done-right"? 21:13 < aiju> nacl sounds more like "activex-done-right" 21:13 < skelterjohn> write the server backend in go (because it's good for that), write the client stuff w/ nacl 21:13 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has joined #go-nuts 21:13 < aiju> if the word "right" is appropriate for that 21:14 < skelterjohn> i don't know much about activex, so i can't comment 21:14 < aiju> "fuck portability, the world is an x86" 21:14 < skelterjohn> jokoon: also if you hang out here much, you'll have to get used to aiju 21:14 < aiju> hahahahaha 21:14 < skelterjohn> he eats children's faces 21:14 < skelterjohn> he or she, i don't actually know 21:14 < aiju> he. 21:14 < Namegduf> Only if they run bad software. 21:14 < Namegduf> (All software is bad) 21:15 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:b198:514:e2ce:b9fc] has quit [Quit: Leaving.] 21:15 < skelterjohn> unfortunately his list of bad software.... yeah :) 21:15 < aiju> only if they don't write go 21:15 < aiju> a C is fine too 21:15 < jokoon> And does somebody know how Google Inc. plans to use Go ? 21:15 < Namegduf> Presumably Google does. 21:15 < Xenith> I hear they use it a lot internally 21:15 < jokoon> will they teach it to some employees ? 21:15 < Namegduf> Well they have some using it 21:15 < skelterjohn> jokoon: at the moment, it's an experimental language - but it's great for writing server backends and concurrent code 21:16 < skelterjohn> a lot of things are very simple in go 21:16 < skelterjohn> also, and this is purely subjective and anecdotal, i find that i write much less buggy code than i did with java or C++ 21:16 < skelterjohn> so that even without the use of a nice debugger, i get code working faster 21:17 < exch> from what i heard from go people, GO is currently being used in some of the google maps backend stuff. No idea how though 21:17 < Namegduf> gdb is a pretty nice debugger, even if it still only partially works 21:17 < jokoon> must be where concurrent code has to evolve 21:18 < skelterjohn> i like GUI debuggers, with tables and buttons 21:18 < aiju> gdb beats every GUI debugger i've seen so far 21:18 < Namegduf> You're weird. :P 21:18 < skelterjohn> i think xcode uses gdb as the engine behind its nice GUI debugger, so it's not like they can't co-exist =p 21:19 < jokoon> and is go suitable to learn multi-processing stuff ? 21:19 < skelterjohn> certainly 21:20 < jokoon> because C/C++ was never thought to be multiprocessed 21:20 < skelterjohn> though, go is less about making parallel programming easy and more about making concurrent programming easy 21:20 < jokoon> Go is, but it seems it also has to deal with processor instructions 21:20 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has joined #go-nuts 21:21 < skelterjohn> how would it not "deal with processor instructions"? 21:21 < jokoon> I don't know how concurrent or parallel programming is done 21:22 < aiju> jokoon: lookup preemptive multitasking 21:22 < jokoon> aren't there some specific assembly instructions ? 21:22 < skelterjohn> aiju can educate you on the respective meanings - he has a blog. 21:22 < jumzi> Meh printf is the greatest debugger 21:22 < aiju> dare you call my website a blog 21:22 < skelterjohn> do you post on it? 21:22 < aiju> i write on it 21:22 < skelterjohn> about things you happen to be thinking about? 21:22 < Namegduf> aiju is a blooooooogger. 21:22 < aiju> hahaha 21:23 < skelterjohn> do you then advertise (occasionally) what you just posted so that people will read it? 21:24 < jumzi> aijus website is merly a placeholder of data 21:24 < jokoon> I never really did concurrent or parallel programming... I still don't know if it is kernel-specific or processor specific 21:24 < skelterjohn> jokoon: you don't have to think about it on that level 21:24 < skelterjohn> think about it on a data-flow level 21:24 -!- photron [~photron@port-92-201-107-215.dynamic.qsc.de] has quit [Read error: Operation timed out] 21:24 < skelterjohn> with go, to do something in a concurrent fashion, you say "go DoSomething()" 21:25 < skelterjohn> this statement will complete immediately, with DoSomething() happening somewhere else, while you go on your merry way 21:25 -!- edsrzf_ [~kelvan@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 21:25 < jokoon> that's meant to be the go "cleaner than previous languages" way 21:26 < skelterjohn> yes - trivial to do concurrency 21:26 < skelterjohn> also, there is a threadsafe way to communicate between these two tasks (which are called goroutines) 21:26 < skelterjohn> you can send data through a channel 21:26 < jokoon> but if that's so much better and easier, how dirty was it when you wanted to make concurrent programming working on windows and unix ? 21:27 < jokoon> I meant without go, using C or C++ / 21:27 < jokoon> ? 21:27 < skelterjohn> there was a library for pthreads 21:27 < jokoon> I just want to be able to compare 21:27 < skelterjohn> it wasn't super hard to use 21:27 < skelterjohn> but one thing to remember is that C or C++ does not have goroutines 21:27 < skelterjohn> C or C++ has threads and processes 21:27 < skelterjohn> a goroutine is lighter-weight than either of them 21:28 < skelterjohn> rob pike should have talked about this in his goto; talk 21:28 < kimelto> he had. 21:28 < jokoon> what's the difference ? aren't thread and processes OS specific or kernel specific ? 21:28 < aiju> there is libthread on Plan 9 21:29 < aiju> which is kind of like Go's concurrency, but in C 21:29 < aiju> it is sortof Go's predecessor 21:29 < skelterjohn> jokoon: any platform you're likely to work with has both threads and processes 21:29 < exch> the difference (sort of) is that there can be many goroutines per OS thread 21:30 < jokoon> so it's more flexible 21:30 < skelterjohn> it's light weight 21:30 < skelterjohn> context switching is much cheaper 21:30 < skelterjohn> with threads (and it's worse with processes), if you switch from thread to thread there is a lot of memory, associated with each thread, that needs to be swapped in 21:30 < jokoon> so it's not only aimed to be used with google's map-reduce and all that 21:30 < skelterjohn> (called the context) 21:30 < kimelto> I have one question about goroutines. THey are managed by the program, right? 21:31 < kimelto> The OS doesnt know about them? 21:31 < aiju> yeah 21:31 < skelterjohn> kimelto: the runtime, yeah. right, OS has no idea. 21:31 < skelterjohn> to the OS it just looks like a jumpy program with one process and one thread. 21:31 < aiju> skelterjohn: on Linux, processes and threads are basically the same thing 21:31 < kimelto> So to schedule a goroutine the OS has to schedule the process then the process choose a goroutine. 21:31 < kimelto> seems unfair for goroutines :) 21:32 < jokoon> so it's not only aimed to be used with google's map-reduce and all that 21:32 < skelterjohn> the OS doesn't get a say in scheduling the goroutines 21:32 < skelterjohn> jokoon: it's an orthogonal idea 21:33 < jokoon> because in 10 years I don't really know how many cores a basic processor might have, a desktop: a lot, but even smartphone will have lots of cores... 21:33 < aiju> hahaaha 21:33 < skelterjohn> or maybe we've peakd 21:34 < skelterjohn> peaked 21:34 < kimelto> so how can the runtime schedule goroutines on multiples cores? 21:34 < jokoon> so catching on with good concurrent languages may be a payraise :) 21:34 < aiju> managing many cores is difficult 21:34 -!- espeed [~espeed@63.246.231.57] has quit [Ping timeout: 246 seconds] 21:34 < skelterjohn> kimelto: it relies on the OS scheduling one of its various processes 21:34 -!- espeed [~espeed@63.246.231.57] has joined #go-nuts 21:34 < aiju> the current memory model doesn't scale well to multiple cores 21:34 < skelterjohn> and each process schedules its goroutines 21:34 < exch> ideally you just indicate you want something to run in parallel. using something like the go keyword, bu the operating system should figure out what to do with it, where to assign the code to and do all the nasty for you 21:35 < kimelto> so it creates a thread per core? and schedule goroutines across these threads? 21:35 < aiju> kimelto: GOMAXPROCES specifies the number of processes/threads 21:35 < skelterjohn> if you don't have at least one process per core, at least one core is sitting idle :) 21:35 < aiju> exch: not the operating system, the runtime 21:35 < aiju> improving the scheduler is something they eventually want to do 21:36 < exch> aiju: I'm talking hypothetically. the OS /should/ take care of that sort of housekeeping 21:36 < aiju> exch: i don't think so 21:36 < exch> I do :p 21:36 < kimelto> GCD? :) 21:37 -!- espeed [~espeed@63.246.231.57] has quit [Read error: Connection reset by peer] 21:37 < Namegduf> The OS does, with threads. They just aren't as efficient as co/goroutines. 21:38 < kimelto> but if you have 100 process. one process happens to be a go program with 100goroutines. the probabilit of a goroutine to be eecuted is 1/10000? 21:38 < exch> http://web.mit.edu/newsoffice/2011/multicore-series-2-0224.html might be interesting, considering the subject 21:38 < Namegduf> No. 21:38 < Namegduf> That's not how scheduling works. 21:38 < skelterjohn> kimelto: the goroutines will play nice with each other, for one 21:38 < aiju> kimelto: goroutines are not scheduled preemptively 21:39 < Namegduf> That would only be true if ALL proesses wanted to run, all goroutines wanted to run, and your scheduler was random 21:39 < aiju> goroutines run until they block because of a channel or similar 21:39 < Namegduf> *processes 21:39 < Namegduf> That is really unusual. 21:39 < Namegduf> System load would be at 100.0 21:41 < exch> I think I found an elegant mix of Go and Factor for my new Go scripting language adventure 21:42 -!- ExtraSpice [XtraSpice@78-62-101-194.static.zebra.lt] has quit [Remote host closed the connection] 21:44 < skelterjohn> what's Factor 21:44 < exch> http://factorcode.org/ 21:44 < aiju> Forth's hip successor 21:45 < exch> indee 21:45 < exch> d 21:45 < aiju> i tried writing some Forth code earlier 21:46 < aiju> but it just got a huge 2DUP SWAP ROT DROP NIP mess 21:46 < exch> :P 21:46 < aiju> ROT OVER SWAP - 2SWAP -ROT SWAP 21:46 < exch> factor makes heavy use of quotations and combinators to avoid spurious stack shuffling 21:46 < exch> very elegant really 21:46 < aiju> "combinators"? 21:47 < exch> a combinator is basically a 'function' that operates over one or more quatations (closures) 21:48 < aiju> exch: some example code? 21:48 < exch> x [ foo ] [ bar ] bi ; <- that applies foo to x and then bar. 'bi' in this case is the combinator 21:49 < exch> [ foo ] is a quotation which contains a call to foo 21:49 < aiju> so how do you handle stack shuffling? 21:50 < exch> things like swap, dup, over, dip, etc exist in the language, but they are low level constructs 21:50 < exch> they can easily be abstracted with the combinator mechanism 21:51 < skelterjohn> so, in general, X [ Foo ] [ Bar ] bi is like Bar(Foo(X))? 21:51 < skelterjohn> except stack-like 21:51 < aiju> m1 e1 m2 e2 -- e1 m2 m1 (e2-e1) 21:51 < exch> yes, that would be accurate 21:51 < aiju> so how would you do something like that? 21:52 < exch> stack shuffling code isn't illegal or frowned upon in factor. If you need it, you need ot. 21:52 < exch> *it 21:52 < aiju> i don't quite get how stack shuffling is avoided 21:53 < aiju> x [ foo ] [ bar ] bi ; seems just like x FOO BAR to me 21:53 < exch> it isn't 21:53 < exch> x foo x bar 21:53 < aiju> ah ic 21:54 < exch> for only 2 quotations it doesnt really make much difference, but if you get into calling a lof successive 'functions', the combinators really become handy 21:55 < aiju> http://p.remotehost.co/pastes/2011-02-26T17:56:37.raw 21:55 < aiju> my forth floating point code 21:56 < exch> sexy :p 21:58 < ww> hrmmm... is C.double(n) where n is a float64 right ? 22:00 < skelterjohn> double if float64, yes 22:01 < skelterjohn> if you want to make a C double out of a float64, this does it and back "y = float64(C.sin(_Ctype_double(x)))" 22:01 < skelterjohn> you don't need a function, like with C strings vs go strings 22:02 < skelterjohn> the strings are actually different data under the hood - not so with float64 and double 22:02 < ww> well... something's going wrong with kc.kcdbincrdouble but i don't really care... if someone actually uses that they can bug me :P 22:03 < aiju> what is with that function name 22:03 * ww finished with cabinet bindings i think 22:03 < ww> aiju: sorry, mixing shorthands, kyoto cabinet C function, C.kcdbincrdouble 22:04 < aiju> oh database stuff 22:05 -!- femtooo [~femto@95-89-249-74-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 22:05 < ww> yeah, i wanted a fast local on-disk btree hash thing so i wrote bindings for kc 22:05 * ww tries to remember why i wanted that now that im out of this rabbit hole 22:10 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 22:10 -!- maattd [~maattd@esc31-1-78-245-92-71.fbx.proxad.net] has quit [Remote host closed the connection] 22:11 -!- saschpe [~quassel@opensuse/member/saschpe] has quit [Read error: Connection reset by peer] 22:16 < skelterjohn> exch: you use jquery in your webapp stuff, right? 22:16 < exch> yes 22:17 < skelterjohn> do you use it for communicating with the server? 22:17 < exch> yes. the server calls are done through it's ajax() interface 22:18 < skelterjohn> ah, not json? 22:18 < aiju> http://aiju.phicode.de/up/xml.jpg 22:18 < skelterjohn> i feel like that will be a goatse pic 22:18 < aiju> hahaha 22:18 < skelterjohn> so i am not clicking 22:18 < skelterjohn> jk i'm clicking 22:18 < exch> ajax() is just a wrapper function for arbitrary HTTP requests. You can do get/post or whatever else and you can have it treat the returned data as json objects 22:19 < exch> you can send json to if you need to do so 22:19 < skelterjohn> exch: oh, i ask because i was looking at the jquery api and it has some stuff for json 22:19 < skelterjohn> i'm just not really sure how things work 22:19 < exch> It took me a while to figure it out. Still not very comfortable with the jquery api tbh, but im getting there 22:19 < aiju> i just use raw javascript 22:20 < exch> $.ajax({url: "/my/server/url", dataType: 'json', success: mysuccesshandler, error: myerrorhandler } ); 22:21 < skelterjohn> problem is, i don't know js at all 22:21 < exch> that does an asynchronous call to /my/server/url and returns the resulting data in the success handler as a parsed json object 22:21 < skelterjohn> i want a button to grab the text from an ace editor and send it via POST 22:21 -!- fabled [~fabled@83.145.235.194] has quit [Quit: Ex-Chat] 22:22 < exch> $('#mybutton 22:22 < exch> err 22:22 < aiju> document.getElementById("foo").InnerHTML 22:22 < aiju> or something 22:22 < skelterjohn> ace might be more complicated, i'll find out 22:23 < skelterjohn> my latest experiment: https://github.com/skelterjohn/gbide 22:23 -!- Project-2501 [~Marvin@82.84.78.236] has joined #go-nuts 22:23 -!- zozoR [~Morten@56346ed3.rev.stofanet.dk] has quit [Remote host closed the connection] 22:24 -!- marek_z [~marek@bas1-montreal48-1176173369.dsl.bell.ca] has joined #go-nuts 22:26 < exch> Ive been playing around with an MPD frontend in my webapp thingy. Frankly all the javascript pisses me off. I would love to devise some way to write the client code in Go and have it converted to appropriate JS code, after having taken advantage of Go's compiler behaviour. To ensure the code is valid 22:26 -!- Project-2501 [~Marvin@82.84.78.236] has quit [Client Quit] 22:26 -!- marekweb [~marek@bas1-montreal48-1176173369.dsl.bell.ca] has quit [Ping timeout: 240 seconds] 22:26 < exch> Not at all a clue how to go about that though 22:26 < skelterjohn> heh 22:26 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-174-113.clienti.tiscali.it] has quit [Ping timeout: 276 seconds] 22:27 < skelterjohn> I'd like to have nacl, for that purpose 22:27 < exch> that would be nice to 22:27 < skelterjohn> but i don't want to write the library bindings 22:27 < skelterjohn> what is MPD? 22:27 < exch> Music Player Daemon 22:27 < exch> for linux 22:27 < skelterjohn> fun 22:27 < exch> basically a server that runs locally and manages/plays my mp3s. 22:28 < exch> you can connect to it through a cli or ui client 22:28 < exch> to control its playback, manage playlists, etc 22:30 < skelterjohn> i downloaded the jQuery ui thing, too... it gave me a zip. can I import that zip just like i would a .js file? 22:31 < exch> nope. you have to unpack it. It prolly contains example code, the .js and appropriate .css files + images you need to put in your webroot 22:31 < skelterjohn> ah 22:32 -!- cco3 [~conley@c-69-181-140-72.hsd1.ca.comcast.net] has quit [Read error: Operation timed out] 22:32 -!- jokoon [~zonax@feu30-1-82-242-58-229.fbx.proxad.net] has quit [Quit: Leaving] 22:37 -!- virtualsue [~chatzilla@nat/cisco/x-pbspstewpxsiebqa] has quit [Ping timeout: 240 seconds] 22:49 -!- dchest [~dchest@109.228.67.193] has quit [Quit: dchest] 22:54 -!- marek_z [~marek@bas1-montreal48-1176173369.dsl.bell.ca] has quit [Quit: Leaving] 22:56 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 22:58 -!- TheMue [~TheMue@p5DDF532C.dip.t-dialin.net] has quit [Quit: TheMue] 23:05 -!- joatmon54 [~engest@cpe-98-155-50-70.san.res.rr.com] has quit [Read error: Connection reset by peer] 23:11 -!- espeed [~espeed@63.246.231.57] has joined #go-nuts 23:23 -!- dshep [~user@24.130.32.125] has quit [Ping timeout: 240 seconds] 23:29 -!- jumzi [~none@c-89-233-234-125.cust.bredband2.com] has quit [Ping timeout: 246 seconds] 23:30 -!- anschelsc [~anschel@pool-108-35-39-226.nwrknj.fios.verizon.net] has quit [Quit: leaving] 23:31 -!- dshep [~user@24.130.32.125] has joined #go-nuts 23:36 -!- moddus [~moddus@xdslhm092.osnanet.de] has joined #go-nuts 23:46 -!- ymasory_ [~ymasory@c-76-99-55-224.hsd1.pa.comcast.net] has joined #go-nuts 23:49 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 250 seconds] 23:52 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 23:56 -!- dshep [~user@24.130.32.125] has quit [Ping timeout: 240 seconds] 23:59 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 23:59 -!- piranha [~piranha@5ED4B890.cm-7-5c.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] --- Log closed Sun Feb 27 00:00:29 2011