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

--- 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