--- Log opened Tue Mar 22 00:00:50 2011 00:01 -!- ako [~nya@fuld-590c62a4.pool.mediaWays.net] has quit [Ping timeout: 255 seconds] 00:04 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Quit: Linkinus - http://linkinus.com] 00:04 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Read error: Connection timed out] 00:06 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 00:09 -!- napsy [~luka@88.200.96.18] has quit [Quit: Lost terminal] 00:09 -!- mertimor [~Adium@p5DC1DE8E.dip.t-dialin.net] has joined #go-nuts 00:10 -!- shakesoda [~colby@c-67-168-136-89.hsd1.wa.comcast.net] has joined #go-nuts 00:10 -!- shakesoda [~colby@c-67-168-136-89.hsd1.wa.comcast.net] has quit [Read error: Connection reset by peer] 00:11 -!- shakesoda [~colby@c-67-168-136-89.hsd1.wa.comcast.net] has joined #go-nuts 00:12 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has quit [Quit: Leaving.] 00:13 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts 00:17 < plexdev> http://is.gd/SKciRO by [Robert Griesemer] in 5 subdirs of go/src/ -- go/printer, gofmt: avoid exponential layout algorithm 00:30 < steven> is converting to/from interface{} the same as "boxing"? 00:30 < steven> (and unboxing) 00:30 < steven> the end. 00:30 < steven> (of my question) 00:34 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 00:36 < kamaji> .. how do you check if a map key doesn't have a value? 00:36 < kamaji> I tried myMap[key] == nil 00:36 < exch> kamaji: v, ok := m[key]; ok is false when key doesnt exist 00:36 < kamaji> oh, right 00:36 < kamaji> thanks 00:37 < dfc> value, exists := m[key] ; if exists { ... } 00:37 -!- adu [~ajr@softbank220043139062.bbtec.net] has joined #go-nuts 00:43 -!- Scorchin [~Scorchin@host109-157-104-50.range109-157.btcentralplus.com] has quit [Quit: Scorchin] 00:50 < kamaji> wait, "value" doesn't get set in that assignment? 00:51 < kamaji> oh god damnit, nevermind >_> 00:52 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 00:52 < kamaji> goinstall didn't update a library properly 00:52 < kamaji> or ..... at all 00:52 < steven> i havent used goinstall yet 00:52 < steven> seems sketchy 00:53 < kamaji> Well it's not working for me :\ 00:54 < kamaji> setting a map value is like this, right: myMap[index] = value 00:55 -!- mertimor [~Adium@p5DC1DE8E.dip.t-dialin.net] has quit [Quit: Leaving.] 00:59 < kamaji> skelterjohn: Is there a reason that Get/GetRow/GetColumn aren't in an interface in gomatrix? 01:02 -!- nettok [~quassel@200.119.186.102] has joined #go-nuts 01:05 -!- Niedar [~bleh@ip68-99-166-222.hr.hr.cox.net] has joined #go-nuts 01:05 < steven> yes kamaji 01:06 < steven> what language are you best with or most-familiar with, kamaji? 01:07 < kamaji> not sure really, I tend to skip around between them a bit 01:08 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has quit [Quit: Computer has gone to sleep.] 01:09 < kamaji> Just having a weird bug which I fixed but I don't know why it worked 01:09 < steven> not good 01:12 < kamaji> yeah :\ 01:12 < shakesoda> I love bugs that only occur once you've realized they shouldn't have worked in the first place. 01:12 < kamaji> essentially when I did the V, ok := myMap[value]; if(ok == false) { initialize V } 01:12 < kamaji> V becomes unset after the if statement 01:12 < kamaji> no idea why 01:12 < kamaji> so I just added a V = myMap[value] 01:15 < kamaji> shakesoda: Had one of those earlier :D 01:15 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has joined #go-nuts 01:15 < kamaji> library was doing bounds checking and fixing my shit code 01:19 -!- saturnfive [~saturnfiv@210.74.155.131] has joined #go-nuts 01:22 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Quit: Hi, I'm a quit message virus. Please replace your old one with this and help me take over the world of IRC.] 01:32 -!- shvntr [~shvntr@116.26.130.226] has joined #go-nuts 01:45 -!- pothos [~pothos@111-240-170-131.dynamic.hinet.net] has quit [Remote host closed the connection] 01:45 -!- pothos [~pothos@111-240-170-131.dynamic.hinet.net] has joined #go-nuts 01:46 -!- saturnfive [~saturnfiv@210.74.155.131] has quit [Read error: Connection reset by peer] 01:46 < str1ngs> kamaji: you dont need the () in if statements 01:47 -!- saturnfive [~saturnfiv@210.74.155.131] has joined #go-nuts 01:47 < str1ngs> if ok { doStuff } 01:48 < str1ngs> if !of { fixIt } 01:48 < str1ngs> !ok* 01:51 < steven> i wonder why there is no wrapper around io.Writer to keep a buffer of sendable data so that when its ready to be sent it will send whatevers left even if it doesnt send all data each time 01:52 < kamaji> str1ngs: it makes me happy :p 01:52 < kamaji> but i'll stop doing 01:52 < kamaji> it 01:54 < str1ngs> kamaji: also if you did if V, ok := myMap[value]; ok == false { init V } then V would lose scope and you would have to declare it first outside of the if statement 01:57 < str1ngs> steven: I'd have to see the context but probably because there is stuff like bufio that work on Writer interfaces. the interface needs to be generic 01:58 < skelterjohn> kamaji: uh, because it didn't occur to me 02:00 < skelterjohn> what would be the purpose? 02:00 -!- bXi [bluepunk@irssi.co.uk] has quit [Ping timeout: 250 seconds] 02:01 -!- Tuller [~tuller@c-69-143-52-174.hsd1.va.comcast.net] has quit [Quit: muffins] 02:08 -!- wtfness [~dsc@78.101.73.79] has joined #go-nuts 02:09 -!- nixness [~dsc@178.152.67.119] has quit [Ping timeout: 255 seconds] 02:09 -!- foocraft [~dsc@178.152.67.119] has quit [Ping timeout: 255 seconds] 02:09 -!- foocraft [~dsc@78.101.73.79] has joined #go-nuts 02:11 -!- Natch [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has joined #go-nuts 02:12 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has quit [Read error: Operation timed out] 02:12 -!- bXi [bluepunk@irssi.co.uk] has joined #go-nuts 02:15 -!- saturnfive [~saturnfiv@210.74.155.131] has quit [Ping timeout: 250 seconds] 02:15 -!- saturnfive1 [~saturnfiv@210.74.155.131] has joined #go-nuts 02:16 < kamaji> skelterjohn: well it's hard to reference a general matrix type if you use those functions 02:16 < kamaji> skelterjohn: you have to specify Dense or Sparse 02:16 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Ping timeout: 260 seconds] 02:16 < skelterjohn> the idea is that if you want to actually get something done, you specify which matrix impl you want to use 02:17 < skelterjohn> if you're just experimenting, you can use the interface 02:18 -!- m4dh4tt3r [~Adium@245.sub-75-210-48.myvzw.com] has joined #go-nuts 02:18 < kamaji> Ah right, I figured i'd be ok with not knowing which kind I need at start 02:19 < skelterjohn> usually depends on what you want to do, rather than what your data ends up being like :) 02:20 < kamaji> I was trying to generalize because some datasets are really sparse and some are really dense 02:20 < kamaji> like imaging stuff tends to be dense, and text mining is pretty sparse 02:21 < kamaji> but yeah, also not really sure what is necessarily being done with the data, hehe 02:22 < skelterjohn> you don't usually write one program to do both image processing and text mining :) 02:22 < Namegduf> What is your program doing, then? 02:23 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 02:23 < skelterjohn> however, if you feel like making it part of the interface, go for 02:23 < skelterjohn> it 02:23 < skelterjohn> it just didn't occur to me 02:23 < skelterjohn> but you'll need to add some extra code to make everything fit 02:23 < Namegduf> Is that really going to be fast enough to be useful? 02:24 * Namegduf isn't sure. 02:24 < kamaji> Namegduf: well it's supposed to be a machine learning library 02:24 < skelterjohn> i can't answer that question, because i don't know what bottle neck you're thinking about, or what task it needs to be fast/useful for 02:24 < kamaji> I'm thinking storing data as matrices may have been a mistake, but it does make stuff like PCA easier 02:25 < kamaji> and I want to avoid copying stuff a lot 02:26 < skelterjohn> then maybe making those functions part of the Matrix interface makes sense 02:26 < kamaji> but I need a 2D structure for storing features anyway, so it might as well be a matrix 02:26 < kamaji> skelterjohn: What extra code were you talking about? Aren't those methods already implemented? 02:27 < skelterjohn> i don't think pivot has them 02:27 < skelterjohn> also, the current methods return the same matrix type as they're called on 02:27 < skelterjohn> the Matrix interface would have to return Matrix 02:27 < skelterjohn> not *DenseMatrix 02:28 < kamaji> oh, true. I didn't think of that 02:29 < skelterjohn> but pivot doesn't implement Matrix anyway - just MatrixRO 02:30 < kamaji> ok, so just the type check 02:30 < kamaji> which I think is already implemented in some places, right? 02:31 < skelterjohn> not sure what you mean 02:32 < kamaji> I mean it does the check to return the correct type 02:32 < kamaji> I can basically copy/paste without fucking up :p 02:33 < skelterjohn> i might be dense, but... what "it" are you referring to 02:33 < skelterjohn> and what would you be copy/pasting 02:33 < str1ngs> kamaji: maybe pastebin some code be easier for skelterjohn to help you 02:34 < kamaji> sorry, just nattering, I haven't started yet 02:35 < str1ngs> ah ok 02:35 < kamaji> i'm gonna do it when I get up this morning 02:35 < kamaji> because apparently it's 2:30AM 02:35 < skelterjohn> well that's a mistake 02:35 < skelterjohn> 2:30AM, that is 02:35 < kamaji> you're right, it's 2:38 :\ 02:36 < kamaji> UTC is the only time :D 02:36 < kamaji> anyway, night! 02:36 < skelterjohn> night 02:41 < str1ngs> tabwriter is to much fun 02:41 < skelterjohn> what's tabwriter 02:41 < str1ngs> it does elastic tabs 02:41 < skelterjohn> what's an elastic tab 02:42 < str1ngs> http://golang.org/pkg/tabwriter/ 02:42 < skelterjohn> oh very nice 02:42 < str1ngs> I do all my console output with it. I'm hooked 02:43 < str1ngs> gofmt uses it to .. I would think 02:45 < skelterjohn> gofmt has been around longer than that pkg, i think 02:45 < skelterjohn> then again, it's possible i just never noticed tabwriter 02:45 < skelterjohn> and it'd been there all along 02:46 < str1ngs> well I would think it uses elastic tabs. for stuff like var ( foo = "stuff ) 02:46 -!- Eladith [~valtias@gzrrplox.kortex.jyu.fi] has joined #go-nuts 02:47 < skelterjohn> i understand where it would be useful 02:47 < skelterjohn> but the whole "if it ain't broke" thing 02:47 < skelterjohn> my point was, gofmt already had code to do these things 02:49 < str1ngs> I guess so now that I look at it. but you cant import gofmt :P 02:49 -!- keithcascio [~keithcasc@nat/google/x-ivgngxdihcgounln] has quit [Quit: Leaving] 02:49 < skelterjohn> if someone were to write gofmt now, it would probably use tabwriter 02:49 < skelterjohn> well, i dunno 02:49 < str1ngs> ya I guess thats why I assumed it used tabwriter 02:55 < str1ngs> I should probably write a console ouput package. with some half ass terminal checking. 02:55 < skelterjohn> to what purpose? 02:56 < str1ngs> well for one Fprintf(os.Stderr,"stuff") is tedious 02:56 < str1ngs> when you want to use color raw ansi codes is bad 02:57 < str1ngs> checking terminal width would be sane to 03:03 < str1ngs> or you get stuff that looks like this https://gist.github.com/880688 03:04 < str1ngs> but the nice thing is that the tabwriter work nice. since I have it use spaces 03:09 < str1ngs> terminal stuff can wait. native decompressor and http client more important 03:11 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Quit: Linkinus - http://linkinus.com] 03:12 -!- itrekkie [~itrekkie@ip72-201-208-165.ph.ph.cox.net] has quit [Quit: itrekkie] 03:13 -!- leczb_ [~leczb@nat/google/x-qvkkojfukhyolxlw] has joined #go-nuts 03:13 -!- Xenith [~xenith@xenith.org] has quit [Ping timeout: 248 seconds] 03:13 -!- dfr|work [~dfr|work@nat/google/x-uwutdxfrweniavqp] has quit [Ping timeout: 248 seconds] 03:13 -!- leczb [~leczb@nat/google/x-mnirqgoeamktmhxx] has quit [Ping timeout: 248 seconds] 03:20 -!- m4dh4tt3r [~Adium@245.sub-75-210-48.myvzw.com] has quit [Ping timeout: 276 seconds] 03:20 -!- Xenith [~xenith@xenith.org] has joined #go-nuts 03:26 -!- dfr|work [~dfr|work@nat/google/x-himjhpxteuphynkm] has joined #go-nuts 03:35 < steven> i dont really understand how bufio.Writer works or what it does 03:35 < steven> the source isnt helping much honestly 03:37 < str1ngs> my take on it is it wraps a Reader Writer when then allows you to preform buffer read/writes 03:37 < str1ngs> the second part confuses me to though about 03:38 < str1ngs> abit* 03:40 < str1ngs> I guess it all depends on what function you use to Read and Write? 03:41 < steven> now im more confused 03:41 < steven> i joined #freenode and the member count was 666. good sign to get the fuck out, amirite? 03:42 < str1ngs> blind leading the blind bro :P 03:42 -!- nettok [~quassel@200.119.186.102] has quit [Ping timeout: 250 seconds] 03:43 < str1ngs> what do you need to do? 03:44 < steven> i have code that buffers my io.Writer, basically it sends from the buffer when theres availability to send, and it adds to the buffer on the other end of the client 03:45 < steven> and i was hoping this could be replaced by something in the stdlib since its so boilerplate 03:45 < str1ngs> ah your buffering the writer by hand but you want to use bufio instead? 03:45 < steven> yea 03:46 < steven> but im not sure how to use bufio to do what im doing. 03:46 < steven> i cant tell how the api is supposed to be used. 03:46 < str1ngs> I used bufio last year but stupid me I threw the toy project away. the trick is in the forloop. if you are sue to while loops its strange 03:46 < steven> currently, my send() method just appends to sendBuffer, and i write from sendBuffer and remove the amount from the beginning of sendBuffer that was successfully sent 03:47 < steven> ah 03:47 < steven> what language are you strongest with? 03:47 < str1ngs> gosh I know so may hard to say. .. Logo? 03:47 < str1ngs> many* 03:48 < steven> which ones then 03:48 < str1ngs> they vary on the language personlly I like ruby. that was before Go though 03:48 < steven> ok 03:48 < steven> i mean, which one are you most intimately familiar with? 03:48 -!- jesusaurus [jesusaur@firefly.cat.pdx.edu] has joined #go-nuts 03:49 < steven> as in, which one do you understand the most thoroughly? 03:49 < str1ngs> I understand most C type syntax languages. the concepts are not much differnt 03:49 < str1ngs> when it comes to pointers though I fail 03:49 < steven> ahh 03:49 < jesusaurus> is it possible to 'unget' a value from a channel, as in to push it back onto the front? 03:50 < steven> jesusaurus: i dont think so. why would you want to? 03:50 < jesusaurus> ok, i guess i should be using some sort of list then, instead of a channel 03:51 < steven> or possibly rethinking your design 03:51 < steven> whichever 03:52 < jesusaurus> yeah, that too... 03:52 < jesusaurus> but i won't be able to tell if i've read too much data until it's too late 03:53 < jesusaurus> its a context-sensitive problem 03:53 < str1ngs> steven: I guess what I ment about Logo joke is when you have been hacking away since logo programming concepts blur together. one language cant define what you are good at. 03:55 < steven> k 03:55 < str1ngs> for loops are find are more C ish. lack of while is strange 03:55 < steven> know any lisp? 03:55 < str1ngs> but good 03:55 < str1ngs> never got into lisp or small talk 03:56 < steven> lisp + smalltalk = ruby 03:56 < steven> (lisp + smalltalk + perl = ruby, actually) 03:56 < str1ngs> perl,ruby,bash,minimal C.C# whole bunch of now defunct stuff 03:56 < steven> not good to invest time in defunkt stuff 03:57 < str1ngs> at the time some of it was not defunct 03:57 < str1ngs> example ihtml. which was like a early version of php 03:57 < str1ngs> pre asp even 03:58 < str1ngs> before that it was straight up CGI 03:59 < str1ngs> anyways where you work often dictates what you use. not so much now of course. but back then it was 03:59 * steven is writing a web framework in Go :) 03:59 < steven> bypassing apache and cgi altogether :D 04:00 < str1ngs> web frameworks are great. but hindsight is always 50/50 :P 04:00 < str1ngs> I'am instrested in you framework btw. I hope its a nice simple one 04:01 -!- gogogrrl_ [~max@p5DE8F93F.dip.t-dialin.net] has joined #go-nuts 04:02 -!- gogogrrl [~max@p5DE8F5C0.dip.t-dialin.net] has quit [Ping timeout: 260 seconds] 04:03 < steven> thanks 04:03 < steven> at the rate its going it wont hit 0.1 until 2015 04:03 < steven> that is, unless Jesus comes back before then. 04:03 < str1ngs> amen! 04:03 < steven> <3 04:04 < str1ngs> see I didnt even put php in that list 04:05 < steven> :D 04:05 < str1ngs> now I cant stand php :( 04:05 < steven> who can? 04:06 < plexdev> http://is.gd/hIUDCM by [Andrew Gerrand] in go/src/cmd/ld/ -- ld: return > 0 exit code on unsafe import 04:06 < steven> only mediocre programmers enjoy mediocre languages 04:06 < str1ngs> I think Go is about the most fun I've had in along time. I know that sound fanboish 04:07 -!- arun__ [~arun@pool-108-18-145-233.washdc.fios.verizon.net] has joined #go-nuts 04:07 -!- arun_ [~arun@unaffiliated/sindian] has quit [Read error: Connection reset by peer] 04:10 -!- arun__ [~arun@pool-108-18-145-233.washdc.fios.verizon.net] has quit [Read error: Connection reset by peer] 04:10 < steven> its fun 04:10 < steven> i just wish it had better concurrency support 04:10 < steven> i was disappointed that my "threaded" quicksort implementation wasnt much faster than my synchronous one 04:13 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 246 seconds] 04:15 < str1ngs> have you tried gccgo? 04:17 -!- adu [~ajr@softbank220043139062.bbtec.net] has joined #go-nuts 04:19 -!- itrekkie [~itrekkie@ip72-201-208-165.ph.ph.cox.net] has joined #go-nuts 04:19 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 252 seconds] 04:21 < steven> nah 04:23 < str1ngs> they way they handle threads is different. 6g multiplex's them and gccgo doesnt. which iirc from what I read in passing makes gccgo more optimized but limited in other regards 04:23 < str1ngs> I'll try and find the thread I was reading it was in passing 04:25 < str1ngs> http://gcc.gnu.org/ml/gcc/2009-11/msg00420.html 04:26 < str1ngs> hmm seems thought gc is the preffered way so maybe I read this wrong 04:27 < str1ngs> anyways I would not worry about speed, channels are meant to be easy to use. but there is room for optimization later 04:28 -!- krutcha1 [~krutcha@S010600045a27676a.vs.shawcable.net] has joined #go-nuts 04:33 -!- krutcha1 [~krutcha@S010600045a27676a.vs.shawcable.net] has quit [Client Quit] 04:33 -!- shvntr [~shvntr@116.26.130.226] has quit [Ping timeout: 248 seconds] 04:39 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 04:43 -!- adu [~ajr@softbank220043139062.bbtec.net] has quit [Quit: adu] 04:45 -!- Niedar [~bleh@ip68-99-166-222.hr.hr.cox.net] has quit [Ping timeout: 250 seconds] 04:49 < jessta> str1ngs: gccgo generates more optimised code with the help of gcc 04:50 < jessta> str1ngs: but it doesn't currently multiplex goroutines on to threads, so you end up with one thread per go-routine 04:50 < jessta> makes creating go-routines slower and switching between them slower too 04:50 < str1ngs> ah ok so ya I did read that part wrong 04:51 < str1ngs> I did notice gccgo make for smaller binaries if you do not static build stuff 04:51 < str1ngs> but I'll working on a gccgo toolchain so I'll have more time to play with it soon 04:54 < jessta> steven: did you set GOMAXPROCS? 04:56 < jessta> more threads just means more context switching unless you have the cores to run them 04:57 < steven> yes. 04:57 < steven> i have an intel core i7 04:57 < steven> 4 cpus 04:59 < uriel> fuck, gnu grep is totally fucking broken 04:59 < uriel> I bet it is locale-related 05:01 < jessta> steven: the GC also seems to get in the way sometimes 05:01 < uriel> [A-Z] matches lower case letters with gnu grep! 05:02 < uriel> what the fucking hell? 05:03 < uriel> can somebody explain to me how the fucking hell is this possible: 05:03 < uriel> $ ls |grep '^[ a-z]*\.pdf$'|sed 1q 05:03 < uriel> ACCESS.pdf 05:04 < uriel> unless gnu/grep is case insensitive by default 05:05 < uriel> ouch, wrong channel 05:05 < uriel> sorry :)) 05:07 < exch> gnufail(tm) 05:08 -!- zozoR [~Morten@56344966.rev.stofanet.dk] has joined #go-nuts 05:08 < uriel> you got to wonder if they can get *anything* right 05:09 < str1ngs> though shall not take the gnu name in vain! :P 05:09 < str1ngs> thou* 05:12 -!- fluf^arr [~camelid@s.pl0rt.org] has joined #go-nuts 05:12 -!- fluffle [~camelid@s.pl0rt.org] has quit [Read error: Connection reset by peer] 05:14 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 276 seconds] 05:15 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 05:19 -!- Niedar [~bleh@ip68-99-166-222.hr.hr.cox.net] has joined #go-nuts 05:49 <@adg> meanwhile, "grep -i [A-Z]" _doesn't_ match lowercase 05:49 <@adg> figure that out 05:49 <@adg> oh wait 05:49 <@adg> echo A | grep -i '[a-z]' 05:50 <@adg> that is empty, on my mac 05:50 -!- dfc [~dfc@sydfibre2.atlassian.com] has quit [Ping timeout: 250 seconds] 05:50 <@adg> works in gnu grep though 05:54 -!- fabled [~fabled@mail.fi.jw.org] has joined #go-nuts 06:08 < plexdev> http://is.gd/nXUlUV by [Russ Cox] in go/src/cmd/prof/ -- gopprof: fix bug: do not rotate 180 degrees for large scrolls 06:08 -!- cmccabe [~cmccabe@c-24-23-254-199.hsd1.ca.comcast.net] has left #go-nuts [] 06:10 -!- aho [~nya@fuld-590c6476.pool.mediaWays.net] has quit [Quit: EXEC_over.METHOD_SUBLIMATION] 06:24 -!- zozoR [~Morten@56344966.rev.stofanet.dk] has quit [Remote host closed the connection] 06:32 -!- itrekkie [~itrekkie@ip72-201-208-165.ph.ph.cox.net] has quit [Quit: itrekkie] 06:43 -!- ExtraSpice [XtraSpice@88.118.35.153] has joined #go-nuts 06:43 -!- itrekkie [~itrekkie@ip72-201-208-165.ph.ph.cox.net] has joined #go-nuts 06:48 -!- adu [~ajr@softbank220043138128.bbtec.net] has joined #go-nuts 06:59 -!- rtharper [~tomh@unaffiliated/sioraiocht] has joined #go-nuts 07:01 -!- chomp [~ken@c-71-206-216-232.hsd1.pa.comcast.net] has quit [Remote host closed the connection] 07:03 -!- Project_2501 [~Marvin@82.84.90.218] has joined #go-nuts 07:06 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 07:07 -!- rbraley [~rbraley@114.246.166.217] has quit [Ping timeout: 250 seconds] 07:07 -!- rbraley [~rbraley@114.246.166.217] has joined #go-nuts 07:23 < pingveno> I was just thinking... Is there a chance that goinstall's mechanisms could be adjusted to make packaging easier? 07:24 -!- shvntr [~shvntr@116.26.130.226] has joined #go-nuts 07:24 < pingveno> Actually, I'll just head over to the mailing list instead. nvm 07:28 < str1ngs> goinstall's mechanism can handle it. 07:28 < str1ngs> pingveno: use go-hg. use GOROOT_FINAL the reset is PKGBUILD basics. if you need to pastebin your PKGBUILD I can help you 07:30 < pingveno> I'm pretty sure that goinstall can't build without being in the goinst group. 07:30 < pingveno> I get permissions issues. 07:31 < str1ngs> if you use goinstall from Community yes. if you use goinstall in a PKGBUILD no should not be an issue 07:31 -!- rtharper [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed the connection] 07:31 -!- Project_2501 [~Marvin@82.84.90.218] has quit [Read error: Connection reset by peer] 07:31 < str1ngs> so my question is which one are you using? 07:32 < pingveno> ah 07:32 < pingveno> I'd like to be able to do both. 07:32 < str1ngs> ok. which go PKGBUILD are you using go from community or aur? 07:32 < pingveno> AUR 07:32 < pingveno> go-hg 07:32 < pingveno> But I changed it to use release, not a specific version number. 07:33 < str1ngs> ok so all you need to do is change ownership of /opt/go . assuming this is not a multiuser system 07:33 < pingveno> Ah, that's the thing. 07:33 < pingveno> I want this to work without screwing with permissions. 07:34 < str1ngs> well thats my point about those PKGBUILD's :P 07:34 < str1ngs> let me look at the aur PKGBUILD 07:34 < pingveno> The one I wrote? 07:36 < str1ngs> you wrote go-hg? 07:36 < str1ngs> ok ya so gpasswd -a $USER golang .. then profit 07:36 < pingveno> no, no, no 07:36 < pingveno> That would be awesome 07:37 < pingveno> But no, I'm just trying to write a PKGBUILD for the AUR. 07:37 < str1ngs> why cant you do that 07:37 < str1ngs> ok for Aur it doesnt matter 07:37 < str1ngs> fakeroot takes care of that 07:37 < pingveno> http://pastebin.com/QJAKFCRi 07:38 < str1ngs> ok so what happens? 07:38 < pingveno> goinstall: github.com/hoisie/web.go: mkdir /opt/go/src/pkg/github.com: permission denied 07:38 < pingveno> It still wants to immediately screw with $GOROOT. 07:39 < str1ngs> ok give me sec. I need to find docs on GOROOT_FINAL. do you have any pointers to some? 07:40 < str1ngs> make go-hg the depencacy 07:40 < str1ngs> not go 07:40 < pingveno> http://code.google.com/p/go/source/browse/src/cmd/goinstall/main.go#35 07:40 < pingveno> go-hg has provides=(go) 07:40 < pingveno> It's enough. 07:40 < str1ngs> no not is this case go is broken as far as I'm concerned 07:41 < str1ngs> and since you are using AUR its safe to assume then can install go-hg 07:41 < str1ngs> when I say go broken I mean go Community 07:42 < str1ngs> http://golang.org/doc/install.html?h=GOROOT_FINAL much better then source code :P 07:44 < str1ngs> pingveno: does go from community use goinst group? 07:44 < pingveno> Not sure. I'm using go-hg. It uses the "provides" mechanism to allow me to ignore the go dependency. 07:45 < str1ngs> ya but that means if they have go from community installed it should work 07:45 < str1ngs> ok for now lets do that. 07:46 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Ping timeout: 255 seconds] 07:47 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 07:48 < pingveno> Okay, I switched over the dependency. 07:49 < str1ngs> hold up because that might be an issue 07:49 < str1ngs> what release was GOROOT_FINAL added? 07:51 < pingveno> I modified the go-hg PKGBUILD to use release. 07:51 < pingveno> It's as recent as I care to test. :P 07:53 < str1ngs> ok one sec I'm not using release but shouldnt matter 07:53 < str1ngs> and you are better of using go-hg not release 07:53 < str1ngs> since that's what the end result will be 07:53 < pingveno> It doesn't really matter, me thinks. 07:54 < pingveno> I'll not do a modification next time, though. 07:54 < str1ngs> hmm why does he have a wrapper 07:55 < pingveno> go-hg PKGBUILD? 07:55 < str1ngs> ya 07:55 < str1ngs> I dont like that but w/e 07:55 < pingveno> Oh, yeah, I remember seeing that. 07:56 < str1ngs> anyways not the issue here 07:56 < str1ngs> lets assume that there for a good reason for now 07:58 < str1ngs> hmm GOROOT_FINAL assumes DESTDIR is GOROOT/src/GOROOT_FINAL 07:58 < str1ngs> let me verify this though 07:58 < pingveno> That seems... odd... 07:59 < str1ngs> noinot 07:59 < str1ngs> no thats not it 08:01 < str1ngs> export GOROOT_FINAL=blah 08:01 < str1ngs> goinstall github.com/hoisie/web.go 08:01 < str1ngs> goinstall: github.com/hoisie/web.go: mkdir /opt/go/src/pkg/github.com: permission denied 08:01 < pingveno> yup 08:01 < pingveno> I think that problem is from goinstall's logging. 08:02 < str1ngs> ok lets test that theory 08:02 < str1ngs> chown -R strings /opt/go :P 08:03 < pingveno> That is an easy way to take care of it. :) 08:03 < str1ngs> you know use goinstall might not be the best way to do this 08:04 < str1ngs> maybe useing make . with install would be better 08:05 < pingveno> It looks like some projects might rely on goinstall to write the Makefile for them. 08:05 < str1ngs> ok I need a pkg that works web.go is api broken.. 08:05 < str1ngs> goinstall makes its own makefile if you use goinstall as your devel makefile that just messed up imo 08:06 < pingveno> *shrug* 08:06 < str1ngs> quick I need a working package :P 08:06 < pingveno> It does look handy. 08:07 < pingveno> http://godashboard.appspot.com/package // pick your package 08:07 < pingveno> Are you on Arch? 08:07 < pingveno> Or some other distro? 08:07 < str1ngs> I use arch 08:08 < pingveno> k 08:08 < str1ngs> goprotobuf* 08:08 < str1ngs> rawr 08:11 < pingveno> Exact same problem. Do you still want the PKGBUILD? 08:11 < str1ngs> err oh side note you need to add git hg and bzr as a make depend 08:11 < str1ngs> depending on where the goinstall PKGBUILD is hosted 08:11 < pingveno> Oh, right, of course 08:11 < str1ngs> naw stilling hacking away here 08:12 < str1ngs> I'm worried using tip might not be agood idea 08:12 < str1ngs> because I know there is some changes in goinstall comeing up 08:13 < pingveno> If something that solves this problem gets in, that would be ultra awesome. 08:13 < pingveno> goinstall -root=$pkgdir <source> 08:14 < pingveno> -fakeroot, -pkgroot, etc 08:14 < str1ngs> GOROOT_FINAL is fine 08:14 < str1ngs> same as DESTDIR 08:14 < pingveno> huh? 08:15 < str1ngs> make DESDIR= 08:15 < str1ngs> its good they use that its unifrom 08:15 < pingveno> It works right now or it will work? 08:15 < str1ngs> no 08:15 < str1ngs> I need a package that builds nothing builds 08:15 < str1ngs> one sec 08:15 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:16 < edsrzf> There will be a new environment variable: GOPATH. 08:17 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 08:17 < pingveno> edsrzf: Can it fit this exact use case? 08:17 < edsrzf> Proposal and discussion here: http://groups.google.com/group/golang-dev/browse_thread/thread/92c7413c64fce3ed/f38ce695318aed55 08:17 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has joined #go-nuts 08:17 < edsrzf> Possibly 08:20 < str1ngs> edsrzf: GOPATH is intended to act as say DESTDIR would? 08:20 < str1ngs> GOPATH wont help 08:20 < str1ngs> I just read that 08:20 < pingveno> I'm thinking something close to: https://aur.archlinux.org/packages/python-blist/PKGBUILD 08:20 < pingveno> Third line up from the bottom 08:23 < str1ngs> GOROOT_FINAL may not help. and might be contingent on GOROOT being unset 08:24 < str1ngs> The value assumed by installed binaries and scripts when $GOROOT is not set. It defaults to the value used for $GOROOT. If you want to build the Go tree in one location but move it elsewhere after the build, set $GOROOT_FINAL to the eventual location. 08:25 < str1ngs> so this doesnt not do what you and I thought 08:25 < str1ngs> this is for building go into $pkgdir then moveing after the fact 08:25 < pingveno> After reading a bit more, I had come to the same conclusion. 08:25 < str1ngs> ie GOROOT=$pkgdir GOROOT_FINAL=/opt/go 08:26 < str1ngs> ok so.. 08:26 < str1ngs> forget goinstall. its work in progress 08:26 < str1ngs> use make 08:26 < str1ngs> with install 08:26 < str1ngs> not make install 08:26 < str1ngs> use run make 08:26 < str1ngs> then use /usr/bin/install to place into $pkgdir 08:27 < str1ngs> I hope that made sense :P 08:27 < pingveno> It did indeed make sense. 08:27 < pingveno> I wanted to avoid doing that. 08:28 < str1ngs> which is fine just use git hg bzr hook 08:28 < pingveno> Code duplication = bad. 08:28 < str1ngs> its not 08:28 < str1ngs> if the the projects dont have Makefile there not worth packageing 08:28 < pingveno> Well... 08:28 < pingveno> That's a bit harsh. 08:28 < str1ngs> goinstall imo is not designed for this or should not be expected to handle this 08:29 < str1ngs> the truth is harsh 08:29 < str1ngs> honestly go Makefile are simpel 08:29 < str1ngs> simple* 08:29 < pingveno> I wonder if something as sophisticated as setuptools will eventually appear. 08:29 < str1ngs> no need goinstall handles that 08:30 < pingveno> setuptools for Python. It's a nice package, from my experience. 08:30 < str1ngs> and python is how old? 08:31 < pingveno> "...will eventually appear." ;) 08:31 < str1ngs> use make. I fail to see why a package would not have a Makefile 08:31 < str1ngs> package I mean go package 08:32 < pingveno> Yes, of course, of course. 08:32 < str1ngs> at the end odds are you will have either 1) a foo.a or 2) /bin/foo 08:33 -!- dju_ [dju@fsf/member/dju] has quit [Quit: Quitte] 08:33 < pingveno> My other problem is that I'd like to make this as automated as possible. 08:33 < str1ngs> this way is even better. you can install /bin/foo to /usr/bin/foo and go-hg is only a make depend 08:34 < str1ngs> the whole PKGBUILD think is redundant. and scales badly 08:34 < str1ngs> like really badly 08:34 < pingveno> What do you mean by that? 08:34 * pingveno is just starting with packaging. 08:35 < str1ngs> case in point http://projects.archlinux.org/svntogit/packages.git/tree/glibc/trunk/PKGBUILD 08:36 < str1ngs> that is for glibc look how massive that PKGBUILD's footprint is 08:36 < pingveno> That's not *that* bad. 08:36 < str1ngs> shall I link the one for gcc :P 08:37 < pingveno> Me thinks those be just difficult to package. 08:38 < str1ngs> anyways that's offtopic. just use make for now :P 08:38 < pingveno> k 08:39 < str1ngs> make a follow up on the ML about a DESTDIR equivilant 08:40 < str1ngs> its possible it exists but we are over looking it 08:42 < pingveno> I need to get to sleep. 08:42 < pingveno> Good night. I'll do the follow up later. 08:43 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 08:44 < str1ngs> kk laters 08:51 -!- tensai_cirno [~cirno@nat.canmos.ru] has joined #go-nuts 09:00 -!- saturnfive1 [~saturnfiv@210.74.155.131] has quit [Quit: Leaving.] 09:00 -!- napsy [~luka@193.2.66.6] has joined #go-nuts 09:10 -!- tvw [~tv@212.79.9.150] has joined #go-nuts 09:12 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has quit [Remote host closed the connection] 09:27 -!- skejoe_ [~skejoe@188.114.142.162] has joined #go-nuts 09:28 -!- skejoe [~skejoe@188.114.142.162] has quit [Read error: Operation timed out] 09:34 -!- shvntr [~shvntr@116.26.130.226] has quit [Ping timeout: 252 seconds] 09:42 -!- shvntr [~shvntr@116.26.130.226] has joined #go-nuts 09:44 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has joined #go-nuts 09:44 -!- tensai_cirno [~cirno@nat.canmos.ru] has quit [Ping timeout: 252 seconds] 09:54 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has quit [Read error: Connection reset by peer] 10:38 -!- rbraley [~rbraley@114.246.166.217] has quit [Ping timeout: 246 seconds] 10:47 -!- rbraley [~rbraley@114.246.166.217] has joined #go-nuts 10:52 -!- rbraley [~rbraley@114.246.166.217] has quit [Read error: Connection reset by peer] 10:58 -!- foocraft [~dsc@78.101.73.79] has quit [Quit: Leaving] 10:58 -!- wtfness [~dsc@78.101.73.79] has quit [Remote host closed the connection] 11:03 -!- sacho [~sacho@46.10.16.35] has quit [Ping timeout: 276 seconds] 11:04 -!- gogogrrl_ [~max@p5DE8F93F.dip.t-dialin.net] has quit [Quit: leaving] 11:16 -!- jokoon [~jorinovsk@LMontsouris-156-26-32-176.w80-14.abo.wanadoo.fr] has joined #go-nuts 11:23 -!- foocraft [~dsc@78.101.73.79] has joined #go-nuts 11:27 -!- boscop [~boscop@g227151009.adsl.alicedsl.de] has joined #go-nuts 11:30 -!- plainhao [~plainhao@208.75.85.237] has quit [Quit: plainhao] 11:33 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu] 11:35 -!- saturnfive [~saturnfiv@124.114.68.184] has joined #go-nuts 11:35 -!- saturnfive [~saturnfiv@124.114.68.184] has left #go-nuts [] 11:44 -!- artefon [~thiago@dhcp10.usuarios.dcc.ufmg.br] has joined #go-nuts 11:56 -!- tensorpudding [~user@99.148.205.193] has quit [Read error: Connection reset by peer] 12:12 -!- niemeyer [~niemeyer@201-66-179-18.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 12:12 -!- jokoon [~jorinovsk@LMontsouris-156-26-32-176.w80-14.abo.wanadoo.fr] has quit [Quit: Quitte] 12:13 -!- foocraft [~dsc@78.101.73.79] has quit [Remote host closed the connection] 12:16 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has joined #go-nuts 12:16 -!- tensai_cirno [~cirno@81.211.0.142] has joined #go-nuts 12:20 -!- wrtp [~rog@92.17.43.168] has joined #go-nuts 12:28 -!- tensai_cirno [~cirno@81.211.0.142] has quit [Ping timeout: 260 seconds] 12:39 -!- shvntr [~shvntr@116.26.130.226] has quit [Read error: Connection reset by peer] 12:40 -!- shvntr_ [~shvntr@116.26.130.226] has joined #go-nuts 12:41 -!- shakesoda [~colby@c-67-168-136-89.hsd1.wa.comcast.net] has quit [Ping timeout: 240 seconds] 12:42 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts 13:03 -!- MX80 [~MX80@cust151.253.117.74.dsl.g3telecom.net] has quit [Ping timeout: 250 seconds] 13:05 -!- sauerbraten [~sauerbrat@p508CB41D.dip.t-dialin.net] has joined #go-nuts 13:06 -!- MX80 [~MX80@cust151.253.117.74.dsl.g3telecom.net] has joined #go-nuts 13:07 -!- zozoR [~Morten@56344966.rev.stofanet.dk] has joined #go-nuts 13:09 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 13:09 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 13:32 -!- foocraft [~dsc@78.101.73.79] has joined #go-nuts 13:33 -!- napsy [~luka@193.2.66.6] has quit [Quit: leaving] 13:34 < nsf> uhm, guys, what do you think about Go's type system? I'm trying to imagine how it would look like if there was a pointer arithmetic 13:34 < nsf> because converting each time integer offsets to a pointer type would be painful 13:36 < taruti> parametric polymorphism would be nice 13:38 < nsf> yeah, that's a closed question for me, templates are a must, but their form is an opened question 13:39 < nsf> regarding pointer arithmetic, I think I should allow mixing pointer types with any integer types 13:39 < nsf> as array/slice indexing in Go does 13:40 < nsf> e.g.: var arr = [...]int{1,2,3,4,5}; var x uint8 = 2; fmt.Println(arr[x]) 13:40 < nsf> Go doesn't care about integer type used as index 13:41 < nsf> hm.. makes sense 13:45 < nsf> also another interesting aspect of Go is 'int' 13:45 < nsf> it's 32 bits on x86, and 64 bits on x86_64 13:45 < nsf> D has fixed-sized types 13:46 < nsf> C/C++ is a crazy story, but 'int' is 32 bits on both platforms 13:46 < nsf> I'm wondering what's the point of having 'int' as platform-specific integer type 13:47 < eaburns> why not? It seems desirable, to me, that 'int' without any specification of the size is just the default word size for the current machine. Most of the time the number of bits is unimportant. 13:47 < nsf> if one needs portability, one can define a config.go with appropriate type definition 13:48 < nsf> but frankly it just confuses a bit 13:48 < nsf> most of the time 32 bit integer is enough 13:49 < nsf> in fact 64 bit integer is used in rare 'special type cases' like unix time for example 13:49 < nsf> (e.g. timers in general with high precision) 13:50 < nsf> and Go devs have removed the 'float' type 13:50 < nsf> why can't it be like an int then 13:51 < nsf> what's the point :( 13:52 < aiju> non-word sized data is a pain on some arches 13:52 < nsf> aiju: like? 13:52 < nsf> Go compiler supports arm, x86 and x86_64 13:52 < aiju> yeah, not on any of those 13:52 < nsf> are we talking here about one of them? 13:52 < nsf> hehe 13:52 < nsf> then what's the point? :) 13:52 < aiju> in fact, 32 bit data is nicer than 64 bit data on amd64 13:53 < aiju> there are no 64 bit immediates except for MOV 13:54 < nsf> well, I guess I postpone this question for later, it's easy to change the meaning of int anyway 13:54 * nsf is working on basics of his type system 13:54 < eaburns> my plan is to use 'int' whenever I don't care about the size (99% of the time) and assume that the compiler uses the correct size :) 13:54 < nsf> eaburns: 32 bit size is ok in that case too 13:55 < nsf> but variable int size adds confusion in other places 13:55 < aiju> int used to be a 16 bit type 13:55 < nsf> for example it implicitly changes sizes of structs 13:55 < aiju> char/int/long/long long makes so much sense 13:55 < nsf> and in my case, even alignment 13:55 < nsf> I plan to use C compatible alignment of structs 13:55 < aiju> too much sense for whoever invented the current type system 13:55 < aiju> nsf: "C compatible alignment"? 13:55 < aiju> there is such a thing? 13:56 < aiju> shouldn't it rather be "GCC compatible alignment"? 13:56 < nsf> uhm.. C standard specifies alignment isn't it? 13:56 < eaburns> nsf: What do you mean by it changes sizes of structs? You mean across archs? 13:56 < nsf> eaburns: yeah 13:56 < aiju> nsf: not as far as i know 13:56 < aiju> 14:59 < eaburns> nsf: What do you mean by it changes sizes of structs? You mean across archs? 13:56 < nsf> aiju: I see, then gcc compatible, yeah 13:56 < aiju> structures need to be padded 13:56 < aiju> depending on the arch 13:57 < aiju> some arches (older ARM!) choke heavily on unaligned data 13:57 < aiju> some don't give a shit (x86) 13:57 < eaburns> aiju: sure, but if you need your structure to have a fixed size across all archs then you probably want to specify the field size explicitly. That sounds like a case where you don't want to use the variable sized int 13:57 < nsf> eaburns: good point 13:57 < aiju> you need a packed struct, then 13:57 < aiju> with specified endianness 13:58 < eaburns> then you probably want to use a byte array :) 13:59 < eaburns> Even C doesn't specify an int to be 32 bits it just happens to be the case in practice. If I write C code that needs a fixed size struct, array or word then I never trust 'int', instead I use stdint.h for something with a guaranteed size 14:01 < nsf> and stdint.h is unportable, hahaha 14:01 < nsf> but yeah, I got your point 14:02 < eaburns> Why is stdint.h unportable? I always assume that it is (at least with c99 which is what I try to use) 14:02 < skelterjohn> morning 14:02 < nsf> msvc doesn't implement c99 14:02 < nsf> for some weird reason 14:03 < nsf> I mean stdint.h being standard doesn't make it portable 14:03 < nsf> the same way as snprintf for example 14:03 < nsf> a lot of compiler has crappy libs where snprintf doesn't work as C99 defines 14:04 < nsf> compilers* 14:04 < aiju> 15:05 < nsf> for some weird reason 14:04 < nsf> standard library isn't portable, hahaha 14:04 < aiju> it's called "there is C++" 14:04 < aiju> 15:06 < nsf> a lot of compiler has crappy libs where snprintf doesn't work as C99 defines 14:04 < aiju> yeah, that's fucking C99's fault 14:04 < aiju> i mean how retarded can you be 14:04 < kimelto> :} 14:04 < eaburns> I see. I really never use anything other than gcc and I never really actually need to port any code that I write across platforms anyway so I usually assume that adhering to the standard is good enough :) 14:05 < aiju> "let's take a function which does X and make it from one day to another do Y" 14:05 < nsf> eaburns: exactly, that's practical! 14:05 < aiju> it's like passing a law that steering wheels have to work backwards 14:05 < nsf> for me being portable for now means: x86, x86_64 support 14:05 < aiju> nsf: http://aiju.phicode.de/rant/portability 14:06 < nsf> "it can easily be ported, albeit requiring some rewrites (e.g. UNIX)" 14:06 < nsf> that one is closer to me 14:06 -!- waqas [~waqas@jaim.at] has joined #go-nuts 14:06 < nsf> but for example if app runs on win/linux x86/x86_64 14:06 < nsf> and passes all tests 14:06 < nsf> I would call it portable 14:06 < aiju> then OS X users will complain 14:07 < nsf> well, OSX is close to *nix, it can be ported 14:07 < skelterjohn> yeah wtf let's get some os x love here 14:07 -!- sauerbraten [~sauerbrat@p508CB41D.dip.t-dialin.net] has quit [Remote host closed the connection] 14:07 < aiju> you just have to figure out what the library is called this week 14:07 < nsf> personally I don't care about OS X at all 14:07 -!- sauerbraten [~sauerbrat@p508CB41D.dip.t-dialin.net] has joined #go-nuts 14:08 < nsf> I think in my country it's less spread than linux :) 14:09 < nsf> although, maybe I'm wrong 14:09 < nsf> especially after iphone/ipad boom 14:09 -!- chou_ [~chou@softbank220014026215.bbtec.net] has joined #go-nuts 14:10 < skelterjohn> it's becoming very popular among academics 14:10 < aiju> shit is popular with academics 14:10 < nsf> aiju: :D 14:10 < aiju> i mean, they love scheme and what not 14:10 < skelterjohn> oh, aiju, always right there with good and useful comments 14:10 < nsf> skelterjohn: well, I understand that 14:10 < nsf> accessible unix environment 14:10 < skelterjohn> but you can develop stuff on os x in the nice unix-y way 14:11 < nsf> but, I don't care about OS X :) 14:11 < skelterjohn> much harder to do that with windows 14:11 < nsf> I have my linux here 14:11 < nsf> up and running 14:11 < aiju> Plan 9 Herrensystem 14:11 < nsf> it eats 100 megs after startup, and I know every daemon's face 14:11 < nsf> :D 14:12 -!- chou_ [~chou@softbank220014026215.bbtec.net] has left #go-nuts ["Leaving..."] 14:21 < nsf> oh, I have one more question 14:21 < nsf> what do you think about bitfields? 14:22 < nsf> D and Go don't have them 14:22 < aiju> evil 14:22 < nsf> why? they are masking erm.. masking operations 14:22 < nsf> problems with atomic stuff 14:22 < aiju> hu? what do you want to say? 14:23 < aiju> i don't see much point in bitfields 14:23 < skelterjohn> what is a bitfield? something more than an int type that you run & and | on? 14:23 < aiju> skelterjohn: looks like a struct, but it's actually bits of an integer 14:23 < nsf> skelterjohn: struct { int a:4; int b:4; }; 14:23 < nsf> struct fields that are smaller than 8 bits 14:23 < nsf> or well, they can be bigger 14:23 < skelterjohn> go can do that with unsafe 14:23 < nsf> 26 bits or something 14:24 < skelterjohn> [4]byte -> int64 14:24 < nsf> you can do that without unsafe 14:24 < skelterjohn> how? 14:24 < nsf> with bit ops 14:24 < skelterjohn> in one operation, i mean 14:24 < aiju> how do you do that with unsafe? 14:24 < skelterjohn> unsafe can just use that [4]byte as if it were an int64 14:24 < nsf> but that's only if you want to access bytes 14:24 < nsf> what about bits? 14:24 < skelterjohn> yes... 14:24 < skelterjohn> &, | 14:24 < nsf> exactly 14:25 < steven> is there any way to use real threads in Go? 14:25 < nsf> compiler translates access to bit fields to that.. 14:25 < steven> like, manually? 14:25 < aiju> what the fuck 14:25 < skelterjohn> aiju: *(*int64(unsafe.Pointer(&the4Byte))) 14:25 < nsf> steven: afaik no 14:25 < steven> forcing a goroutine to execute simultaneously with another? 14:25 < steven> aw 14:25 < aiju> g++: deperecated conversion from string constant to 'char*' 14:25 < skelterjohn> steven: you can have gomaxprocs set to 2 14:25 < nsf> aiju: const char* vs. char* 14:25 < aiju> oic 14:25 < aiju> (yuck) 14:26 < skelterjohn> then you will have two goroutines going at the same time, if they can 14:26 < iTonnerre> ::c_str? 14:26 < nsf> aiju: in my lang string literal will be able to convert itself implicitly to *byte 14:26 < nsf> no consts here 14:26 < nsf> :) 14:26 < aiju> compiling some older code 14:26 < nsf> yeah, that hurts sometimes 14:27 < nsf> some X11 interfaces has char** 14:27 < aiju> fucking gcc breaking code everytime 14:27 < nsf> and ask for this: const char *names[] = {"1", "2"}; 14:27 < nsf> but you can't do that in gcc anymore 14:27 < aiju> there are ridiculous incompatibilities between GNU programs 14:27 < skelterjohn> char const *names[] 14:27 < aiju> like you can't build binutils-n.m.o with gcc-a.b.c 14:27 < nsf> skelterjohn: it's the same, at least in C++ 14:27 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 14:28 < aiju> const is evil 14:28 < skelterjohn> one applies to the (char*[]) 14:28 < nsf> char * const names[] is something different 14:28 < skelterjohn> one applies to the (char*)s 14:28 < skelterjohn> oh 14:28 < skelterjohn> well i don't know it well enough :) 14:28 < aiju> i don't use const (and C++). problem solved. 14:28 < nsf> const placement matters relative to '*' 14:28 < nsf> aiju: true 14:28 < skelterjohn> this is why i like go 14:28 < skelterjohn> it's not confusing 14:28 < nsf> any type qualifier has ugly property of being viral 14:29 < nsf> it spreads across function call hierarchy and then it's painful to change it 14:29 < nsf> 'const' is amongst them 14:29 < skelterjohn> should never use const directly - always use a typedef 14:29 < nsf> hehe 14:30 < nsf> and interesting rule 14:30 < nsf> never tried it 14:32 < nsf> in fact, type specifier is viral too 14:32 < nsf> templates try to address that issue 14:32 < nsf> dynamic languages don't have that issue 14:33 < nsf> some langs (like clay programming language) have full program type propagation (global type inference) 14:33 < nsf> http://tachyon.in/clay/ 14:33 < aiju> dynamic languages have other issues 14:33 < aiju> i find their error handling extremely poor 14:33 < nsf> yeah 14:33 < nsf> no tests - no life 14:34 < nsf> although, it's true for any serious app 14:34 < nsf> :D 14:34 < aiju> refactoring is hell with dynamic languages 14:34 < aiju> to the point i rather rewrite the whole thing 14:34 < nsf> hm.. never heard that kind of opinion 14:35 < aiju> simple example: i change a variable name 14:35 < nsf> but I had zero practice writing big apps in dynamic languages 14:35 < aiju> in C the compiler yells at me 14:35 < nsf> aiju: ah, true 14:35 < aiju> in Javascript the value becomes "undefined" 14:35 < nsf> but you see, that's why there are tests 14:35 < aiju> (though Javascript is exceptionally bad) 14:35 < nsf> without tests you're doomed 14:35 < aiju> yeah, the compiler spits at me a line 14:35 < aiju> javascript can conceal the error very well 14:36 < aiju> undefined in an array does not cause an error etc 14:36 < aiju> simple in that example (a lint tool solves that case) 14:36 < aiju> try changing a structure slightly or something like that 14:36 < nsf> tests.. you need tests 14:37 < nsf> the only possible option 14:37 < aiju> yeah 14:37 < aiju> tests tell me it DOES fail 14:37 < aiju> but not WHY 14:37 < nsf> hm.. 14:37 < nsf> I guess 14:38 < nsf> amongst other things static type system leads to better code generation 14:38 < aiju> MUCH better code generation 14:38 < aiju> Common LISP has optional type specifications just for that 14:39 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts 14:39 < nsf> and in fact sometimes very strict type system helps you optimize the code 14:39 < nsf> in tight C graphics loops, where things like integers and floats got messed up 14:39 -!- plainhao [~plainhao@208.75.85.237] has joined #go-nuts 14:40 < nsf> it's useful to have zero implicit type conversions between floats and ints 14:40 < nsf> because it's a bit slow 14:40 < nsf> (one way or another, I mean int -> float or float -> int, don't remember) 14:40 < aiju> and it causes all kind of trouble 14:40 < nsf> yeah 14:41 < nsf> I'm wondering what should I do with structs 14:42 < nsf> tight packing like in Go, or gcc-like alignment by default 14:42 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 14:42 < nsf> because while importing C header I can do the same as cgo does 14:42 < nsf> insert all the padding members 14:42 < nsf> and if I want to use my lang from C 14:42 < nsf> there is #pragma pack(1) 14:42 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has left #go-nuts [] 14:43 < waqas> Hi guys, why would the compiler complain on the '++' in tokens[tok_count++] = Token{ start: start, end: i - 1 }? Removing it makes it compile. 14:43 < aiju> waqas: x++ is a statement, not an expression 14:43 < aiju> tokens[tok_count] = ... ; tok_count++ 14:43 < waqas> Oh 14:43 < aiju> perhaps one of the worst Go design decisions ;P 14:43 < waqas> Unexpected 14:43 < nsf> aiju: why? I think it's nice 14:44 < aiju> nsf: i like writing array[index++] = 14:44 < aiju> or actually i write *p++ = .. :D 14:44 < nsf> *p = ..; p++; 14:44 -!- sauerbraten [~sauerbrat@p508CB41D.dip.t-dialin.net] has quit [Remote host closed the connection] 14:44 < nsf> not a big difference to me 14:44 < waqas> I generally prefer all statements being expressions :) 14:44 < aiju> it's an extra line 14:45 < nsf> but simplifies compilator programming a bit 14:45 < aiju> bad enough ;P 14:45 < aiju> a tiny bit 14:45 < nsf> hehe, too bad, I'm doing the same in my lang 14:46 < aiju> and hurr durr it can even be more efficient on some arches :D 14:46 < nsf> although, I don't mind if someone will try to convert some of the statements to expressions in future 14:46 < aiju> i'm currently playing with CL macros 14:46 < aiju> they are truly impressive 14:48 < nsf> but even if it's ok to have incdec expression 14:48 < nsf> I don't like the idea of assignment expression 14:48 < aiju> me neither 14:48 < nsf> e.g. bool a = (x = true); 14:48 < aiju> the only point is providing multiple assignment 14:48 < nsf> a = b = c = true; 14:48 < nsf> hm.. 14:48 -!- shvntr_ [~shvntr@116.26.130.226] has quit [Ping timeout: 246 seconds] 14:48 < aiju> even the while((c = getchar()) >= 0) is better rewritten as 14:49 < aiju> while(c = getchar(), c >= 0) 14:49 < waqas> nsf: Is a = b = c = true; bad? :) 14:49 < aiju> i find it *much* clearer 14:49 < nsf> waqas: not necessary 14:49 < nsf> aiju: comma expression, yuck 14:49 < nsf> :) 14:50 < aiju> comma expressions are another thing i miss in Go 14:50 < nsf> for (c = getchar(); c >= 0; c = getchar())? 14:50 < aiju> they eliminate all the special cases Go has on control structures 14:50 < aiju> what the fuck is wrong with while(c = getchar(), c >= 0)? 14:50 < nsf> I don't know 14:51 < nsf> c = getchar() is an expression here 14:51 < nsf> :D 14:51 < nsf> assignment expressions are evil 14:51 < nsf> hahaha 14:51 < aiju> duh 14:55 < waqas> Lua goes beyond Go in this. There is no ++ :) 14:55 < waqas> That's the other language I'm working with 14:55 < nsf> 'expression' comes from 'to express' 14:55 -!- pothos [~pothos@111-240-170-131.dynamic.hinet.net] has quit [Remote host closed the connection] 14:55 -!- pothos_ [~pothos@111-240-170-131.dynamic.hinet.net] has joined #go-nuts 14:56 < nsf> it sounds like having more kinds of expressions improves expressiveness 14:56 < nsf> maybe it's true, but it also increases learning curve 14:56 < waqas> Does it really? 14:57 < nsf> try to remember days when you weren't understading what a pointer is 14:57 < waqas> I could argue concurrency increases the learning curve, and should be done away with :) 14:57 < nsf> and then you see these: 14:57 < nsf> *p++ 14:57 < nsf> *++p 14:57 < nsf> omg 14:57 < aiju> haha 14:57 < nsf> it is scary 14:57 < aiju> 15:59 < nsf> maybe it's true, but it also increases learning curve 14:58 < aiju> yay, BASIC thinking 14:58 < aiju> go QBASIC! 14:58 < nsf> I'm not saying that it should be as simple as possible 14:58 < nsf> a compromise is a must 14:58 < aiju> *p++ is what distinguishes C from BASIC 14:59 < nsf> I think it's good to have a moderate amount of expression/statement/declaration types in any langauge 14:59 < nsf> without overloading user's memory 14:59 < nsf> and keywords, of course 14:59 < nsf> :) 15:00 -!- jbooth1 [~jay@209.249.216.2] has joined #go-nuts 15:00 < nsf> D is a bad example of this 15:00 < nsf> in D each keyword has 5 more meanings in different contexts, lol 15:00 < nsf> (joking, but close) 15:00 < waqas> Hmm, nested functions not allowed.. not sure what I think about that 15:01 < aiju> which D? 15:01 < aiju> the broken or the unfinished one? ;P 15:01 < nsf> aiju: you're repeating yourself 15:01 < aiju> yeah 15:01 < nsf> :) 15:01 < nsf> D is an interesting language design experiment anyway 15:01 < aiju> waqas: someone who uses nested functions? 15:01 < aiju> D seems like --C++ to me 15:02 < nsf> lol 15:02 < nsf> waqas: no nested functions, but full closure support 15:02 < nsf> you can use closure as a nested function 15:02 < waqas> aiju: Ah, closures work. I was trying Lua's syntax, which makes x=func.. and func x.. be the same. 15:03 < iTonnerre> C±± 15:03 < nsf> hahaha 15:03 < nsf> nice one 15:04 < waqas> C/0 could be a fine language.. I can just imagine the rants.. 15:04 < aiju> i truly hate "for i = 0 to 100" style loops 15:05 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 15:05 < iTonnerre> You prefer for(;;); ? 15:05 < aiju> yeah, an infinite amount 15:05 < iTonnerre> for (i = endvalue; i; i--) 15:05 < aiju> it's much simpler and much more flexible 15:05 < waqas> aiju: I partially agree 15:05 < iTonnerre> Yes, and when you reached 0 you just call panic() 15:06 < nsf> I write this in C++ a lot: for (int i = 0, n = arr.size(); i < n; ++i) { } 15:06 < aiju> any CL programmer here? 15:06 < nsf> but mostly I like loops in ruby 15:06 < nsf> arr.each do |element| ... end 15:06 < nsf> :) 15:06 < aiju> yuck 15:06 < waqas> nsf: +1 15:06 < nsf> or something like: 15:06 < nsf> str.each_line do |line| ... end 15:07 < aiju> nsf: what does this do? 15:07 < nsf> iterates over each line in str 15:07 < nsf> in ruby there is a thing called blocks 15:07 < nsf> you can basically create any loop you like 15:07 < nsf> and use that kind of syntax 15:08 < nsf> and I haven't seen a statically typed language yet 15:08 < nsf> with the same feature 15:08 < aiju> i don't like it; syntactic sugar causes cancer of the semicolon 15:08 < waqas> nsf: Which is surprising, since this could be done just fine in a statically typed language 15:08 < nsf> but it removes the need of any kind of foreach of for range loop 15:08 < nsf> waqas: yeah 15:09 < nsf> especially in a language with closures support 15:09 < nsf> but other question is how to make it efficient 15:09 < waqas> aiju: I much prefer this for one reason: I tell the compiler what I want, and leave the details to it. This allows better optimizations too. 15:10 < waqas> nsf: Closures can just be inlined of course. The ones used in this kind of loop tend to be expandable into a normal loop. 15:10 < kamaji> waqas: you must like haskell :D 15:10 < waqas> kamaji: I do, but haven't used it much :) 15:11 < kamaji> it's super nice :) 15:11 < kamaji> but nor have I 15:11 < waqas> Indeed. Haskell's only weak point is deployment IMO :) 15:11 < aiju> Haskell is nice until you write a program in it 15:12 < nsf> I tend to think about haskell as DSL 15:12 < aiju> Haskell divides code into two parts 15:12 < aiju> aryan and jewish code 15:12 < kamaji> aiju: it's not that bad, I did some programming competitions with it 15:12 < kamaji> haha, that's so true :D 15:12 < waqas> Heh 15:12 < kamaji> It does make sense though :) 15:13 < aiju> it totally doesn't to me 15:13 < kamaji> IO & icky real world stuff -> transforms on data -> output 15:14 < aiju> yeah, EVA principle 15:14 < kamaji> eva? 15:14 < aiju> eingabe, verarbeitung, ausgabe (input, procession, output) 15:14 < aiju> i wonder whether there is an english equivalent 15:14 < kamaji> input, process, output 15:14 < kamaji> probably... 15:15 < kamaji> oh, "IPO model" 15:15 < kamaji> I think it makes more sense for some things 15:16 < kamaji> it's really nice for doing mathematical problems 15:16 < nsf> it's nice for everything 15:16 < nsf> because everything is A -> xform -> B 15:17 < kamaji> I can't really envision using it for like a website backend tbh 15:17 < kamaji> but I haven't too much experience with it 15:17 < aiju> i have no clue what i would use haskell for 15:17 < nsf> and the most important part is data definitions of A and B 15:17 < aiju> i do my math with C (or FORTRAN because it does vector operations more nicely) 15:17 < nsf> kamaji: uhm.. why not? 15:18 < nsf> POST/GET request -> xform -> reply 15:19 < kamaji> nsf: sorry I meant more for stuff where people are interacting with each other thru a server 15:21 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 15:21 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 15:21 < kamaji> seems more suited to something like Go or Erlang 15:22 < aiju> VIM's = command for LISP is awesome 15:22 -!- zimsim [~simon@87.72.77.195] has quit [Read error: Operation timed out] 15:22 < waqas> Interesting, fmt.Println([]Token) is not calling String() on my tokens apparently :/ 15:23 < nsf> kamaji: but they are interacting through a database anyway 15:23 < nsf> it doesn't matter, really 15:23 < kamaji> nsf: no not necessarily 15:23 -!- arun_ [~arun@unaffiliated/sindian] has joined #go-nuts 15:23 < nsf> it is necessary 15:23 < aiju> no state, no fun 15:23 < nsf> database could be in ram 15:23 < nsf> whatever 15:23 < xyproto> waqas: is it because you have implemented String() for Token and not for []Token? 15:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 15:24 < nsf> but everything in programming is about transforming data A to data B 15:24 < kamaji> you could just be message passing and stuff? I'm not saying i'm right, I just don't see that it's the best language for that sort of thing 15:24 < waqas> xyproto: That's right. Token has String. I didn't know I could implement it for []Token. Can I? 15:24 < kamaji> certainly it's possible 15:24 -!- sysiphus [~opera@unaffiliated/sysiphus] has joined #go-nuts 15:24 < xyproto> waqas: yes, I think so 15:24 < nsf> and calling it a model is a heresy 15:25 < kamaji> calling what a model? 15:25 < nsf> IPO 15:25 < aiju> because it's just what it is 15:25 < nsf> everything is IPO 15:25 < xyproto> waqas: then the .String() function for []Token could go through all the Tokens and gather the strings from their .String()-methods, for example 15:25 < nsf> it's a way of looking at things 15:25 < nsf> a right way of course 15:25 < xyproto> waqas: I would have to try it myself to be 100% sure, though 15:25 < waqas> xyproto: The default behavior is still interesting though. It seems to be recursively printing all data in the passed object. 15:25 < nsf> especially in concurrency 15:26 < kamaji> yeah I guess that's true actually 15:26 < xyproto> waqas: I'll try it myself 15:26 < kamaji> I basically have no experience with concurrent stuff and very little with monads 15:27 < kamaji> I mainly use it for just the lovely transformy part 15:27 < nsf> ugh, I should be coding my type system, time passes by 15:27 * nsf is back to coding 15:27 < kamaji> :) 15:30 < waqas> nsf: Does your lang have a public webpage/repo? 15:31 < nsf> waqas: I'm keeping a slightly out-dated version at my home PC, here: http://jiss.convex.ru/git/crawl.git 15:31 < nsf> but there are nothing interesting 15:31 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 15:31 < nsf> (it's gitweb page, git repo is available as well) 15:31 < nsf> there is* 15:32 < nsf> no spec, no comments, no anything 15:32 < nsf> partially completed parser that outputs an AST in yaml :) 15:33 < nsf> so.. it's not even public really 15:33 < nsf> :D 15:33 < nsf> but if you're really interested, clone the repo 15:34 < aiju> *** CAR: 135040 is not a list 15:34 < waqas> I was curious about the syntax decisions you made 15:34 < aiju> aaahh CLISP verbosity 15:34 < nsf> waqas: mostly it's Go, with few minor differences 15:34 < nsf> currently there is only two differences 15:34 < nsf> var x float; var y int = <float>x; 15:34 < aiju> (1) it's not called Go 15:34 < aiju> (2) it's not by Google 15:34 < nsf> for type casting 15:34 < nsf> and var x = <[]int>{1, 2, 3, 4} 15:35 < nsf> for compound literals 15:35 < nsf> and I have no slices, maps, strings 15:35 < nsf> this definition is like C's 15:35 < nsf> int x[] = {1, 2, 3, 4}; 15:35 < aiju> C with Go syntax 15:35 < nsf> yeah 15:35 < nsf> something like that 15:35 < nsf> in fact it's a first major milestone 15:35 < nsf> provide all the C stuff using Go's syntax 15:36 < aiju> even auto? :D 15:36 < nsf> no 15:36 < aiju> aww 15:36 < nsf> I mean in general :) 15:36 < aiju> )))))))) 15:36 < aiju> i like how parentheses stack up at the end of LISP functions 15:36 < waqas> My current language experiment is similar to Go and Ruby as it happens. Ruby mainly for the block syntax. 15:36 < xyproto> waqas: no, you're right, I get "invalid receiver type []Token" if I try to make a .String() function for it. 15:37 < nsf> semantics contain much more differences 15:37 < nsf> than syntax 15:37 < nsf> *void is back, pointer arithmetic is back 15:37 < nsf> etc. 15:37 < aiju> var blackHole *void 15:38 < xyproto> waqas: just implementing a .String() function that covers each Token seems to make the printout of a []Token pretty sensible, though. Also, it 15:38 < nsf> things are zero initialized, but there will be a D's form: int x = void; 15:38 < nsf> which avoids zero init 15:38 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts 15:38 < nsf> in case if you really need that 15:38 < xyproto> wawas: it's possible to make your own .PrettyPrint function for []Token objects, of course 15:38 < nsf> but it's all in my head right now :) 15:38 < nsf> nothing is solid 15:39 < waqas> xyproto: Implementing .String() on Token doesn't change the printout of []Token for me. Of course, I can do it with a manual loop. 15:39 < xyproto> waqas: did you use this signature? (where "my" can be anything): func (my Token) String() string { 15:39 < waqas> xyproto: func (t *Token) String() string { return "Hello" } 15:40 < xyproto> waqas: ah, drop the "*" and it works 15:40 < waqas> Oh 15:40 < waqas> It does 15:40 < xyproto> yey, I helped solve my first problem on #go-nuts, usually I only bring problems here. ;) 15:41 < waqas> Thanks :) 15:41 < nsf> waqas: interesting, is your language dynamic? I'm cursious about block implementations in static langauges 15:41 < nsf> curious* 15:42 < waqas> nsf: It's eventually both. The difference is kind of artificial. I'm starting on the static side however. 15:42 < nsf> hm.. 15:50 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has joined #go-nuts 15:50 < waqas> nsf: Your ragel scanner by the way, wouldn't it take 'if' out of 'ifabc', when it shouldn't? 15:50 < nsf> no, ifabc is an identifier 15:51 < nsf> it extracts the longest match 15:51 < waqas> Ah, I had assumed it would extract the first match 15:51 < nsf> it's a special scanner state machine 15:51 < nsf> it seeks for a longest 15:52 < nsf> and if error happens fallbacks to previously longest 15:52 < nsf> thanks to ragel it knows how to do a scanner :) 15:52 < waqas> I quite like Ragel 15:52 * nsf too 15:53 < waqas> Which makes me wonder again if something like Ragel is integrated in any language at the language level. That would be an interesting experiment. 15:53 < waqas> I think Perl 6 has grammars, but never looked at them much. 15:53 < nsf> an interesting idea, but I like DSLs 15:53 < nsf> and mixing everything together isn't the best choice 15:54 < waqas> Ragel syntax wouldn't be hard to turn into a DSL 15:55 < nsf> well, it is a DSL 15:55 < nsf> for state machines :) 15:55 < waqas> Everything is :) 15:55 < nsf> I guess 15:55 < nsf> everything that describes something in text and has special semantics is a language 15:56 < waqas> With 'text' being rather broad in this case, and not limited to bytes or characters 15:57 < nsf> uhm, whatever :) too abstract to me now 15:58 < waqas> True enough :) 15:58 < aiju> FORTHer and LISPers call writing functions "defining a DSL" 16:00 < nickbp> digital subscriber line 16:01 < nickbp> (acronym namespace collision) 16:01 < nickbp> (ANC) 16:04 < nsf> DSL stands for domain specific language 16:04 < aiju> haha 16:04 < aiju> constant namespace collisions are worse 16:05 < aiju> physicists sometimes use e for two different things in one equation 16:05 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts 16:06 * nsf is looking at iant's code 16:06 < nsf> C++... 16:06 < nsf> http://pastie.org/1700197 16:06 < nsf> tons of stuff that does nothing 16:06 < aiju> haha 16:07 < nsf> and it can be avoided in C++ via fallback to C style 16:08 < aiju> but C is obsolete 16:08 < aiju> C++ is future 16:08 < aiju> therefore you must use C++ 16:08 < aiju> or it will kill your family 16:08 < nsf> hopefully my code won't look like that 16:08 < iTonnerre> What the … 16:08 < nsf> although it is a bit 16:09 < iTonnerre> Java is dead, use JavaScript? Or what? 16:09 < nsf> iTonnerre: it was a joke 16:09 < nsf> aiju likes to make jokes 16:09 < nsf> :) 16:09 < nsf> but every joke has some truth in it 16:09 < nsf> and a bit of philosophy 16:10 -!- rtharper [~tomh@unaffiliated/sioraiocht] has joined #go-nuts 16:10 -!- rtharper [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed the connection] 16:11 < nsf> most non-programmers think that C++ is an advanced version of C with a bunch of improvements 16:11 < nsf> and some programmers too, lol 16:11 < nsf> argh.. I need to close the irc 16:11 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has left #go-nuts [] 16:15 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 16:15 -!- rtharper [~tomh@unaffiliated/sioraiocht] has joined #go-nuts 16:16 -!- waqas [~waqas@jaim.at] has left #go-nuts [] 16:17 -!- piranha [~piranha@5ED42E59.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 16:19 < iTonnerre> C++ is C with classes? 16:19 < iTonnerre> How 1980 16:20 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.] 16:23 < steven> no. 16:23 < steven> C++ is C in bizarro-world 16:24 < steven> Go is C in 2011 16:27 -!- iant [~iant@nat/google/x-njfpjoxqrzfacjkg] has joined #go-nuts 16:27 -!- mode/#go-nuts [+v iant] by ChanServ 16:30 -!- sysiphus [~opera@unaffiliated/sysiphus] has quit [Quit: sysiphus] 16:30 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 16:30 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 252 seconds] 16:36 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 16:39 -!- waqas [~waqas@jaim.at] has joined #go-nuts 16:40 < str1ngs> https://gist.github.com/881535 I think my glibcPostBuild function is awesome 16:40 < str1ngs> what do you guys think? 16:43 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 16:44 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 16:44 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 260 seconds] 16:46 -!- niemeyer_lunch [~niemeyer@201-66-179-18.pltce701.dsl.brasiltelecom.net.br] has quit [Ping timeout: 252 seconds] 16:46 < waqas> Oh yay, Go has goto. I thought it did not. 16:46 < skelterjohn> it does - but it's not used very much as far as i know 16:47 < skelterjohn> break and continue with labels is used more frequently 16:47 < waqas> Useful for code generation 16:47 < skelterjohn> and that is *very* useful 16:47 < xyproto> str1ngs: what does it do? :) 16:47 < aiju> goto is useful all over the place 16:48 < skelterjohn> "useful" is not the same as "used" 16:48 < str1ngs> xyproto: its a ugly hack I need to rewrite it in go. basically it adjusts the dynamic linker to link to this glibc instead of the system glibc 16:48 < aiju> i consider a language without goto castrated 16:48 < xyproto> str1ngs: aha 16:48 < aiju> skelterjohn: i use it all over the place 16:48 < skelterjohn> hence the "as far as i know" 16:48 < skelterjohn> i've never seen your code 16:48 < aiju> although many cases can be replaced with break/continue with labels 16:48 < str1ngs> xyproto: the build system ideally wasnt meant to do this but I figured it would be fun to see if I could do it 16:49 < aiju> but i don't like it, i consider it less readable than goto 16:49 < skelterjohn> if it's used for escaping loops, then yes, use break/continue 16:49 < aiju> also, error handling 16:51 * waqas wonders what jumping over x:=make(something) with goto would result in x being 16:51 < aiju> waqas: that's illegal according to the spec 16:51 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 16:51 < zozoR> what happens if you jump into another function and it reach a return? 16:51 < zozoR> reaches* 16:51 < aiju> you can't do inter-function gotos 16:51 < zozoR> awesome :D 16:51 < zozoR> so its like goto, with epicness installed 16:52 < waqas> "Implementation does not honor the restriction on goto statements and targets (no intervening declarations)." - http://golang.org/doc/go_spec.html - which if of course just the current implementation 16:52 < aiju> zozoR: you CAN'T 16:52 < skelterjohn> how do you use gotos for error handling? not trying to be contrary, it's just something i'm not familiar with 16:52 < aiju> waqas: oh well, it's probably undefined 16:52 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts 16:52 < aiju> skelterjohn: if fucked up { goto err } 16:52 < zozoR> aiju, that is whats making it awesome 16:52 < aiju> when there are many places where it could fuck up 16:52 < aiju> and the handling is always the same 16:52 < skelterjohn> no return err / defer errorHandling()? 16:53 < skelterjohn> that's how i've been doing it 16:53 < aiju> skelterjohn: not always possible / a good idea 16:53 < aiju> say, you have to set a global error flags or something like that 16:53 < skelterjohn> eek 16:53 < skelterjohn> don't do that 16:54 < aiju> you sometimes have to 16:54 < aiju> pastie.org/1700365 example of me using goto 16:55 -!- waqas [~waqas@jaim.at] has left #go-nuts [] 16:55 < aiju> any other solution would drastically reduce performance and/or be terribly ugly 16:55 < zozoR> it is terrible that people are taught that goto are devils 16:56 < aiju> writing structured code (entirely without goto, i.e. not goto/break/continue) is *REALLY TERRIBLE* 16:56 < aiju> you have to introduce over 9000 auxiliary variables and checks all over the place 16:56 < zozoR> true that 16:57 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Quit: shakesoda] 16:57 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 16:58 < skelterjohn> "goto considered harmful" considered harmful 16:58 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 16:58 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 17:02 < steven> why so skelterjohn? 17:03 -!- rtharper [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed the connection] 17:03 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 252 seconds] 17:04 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has joined #go-nuts 17:08 -!- zimsim [~simon@87.72.77.195] has quit [Ping timeout: 255 seconds] 17:10 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 17:11 -!- slashus2 [~slashus2@74-141-110-130.dhcp.insightbb.com] has joined #go-nuts 17:15 < skelterjohn> interpreting aiju's opinion 17:16 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 240 seconds] 17:16 * exch <3 goto 17:16 < zozoR> i dont see why goto's are dangerous when it creates cleaner code :s 17:17 < str1ngs> those anto goto's can goto hell? 17:17 < str1ngs> anti* 17:17 < aiju> exactly ;P 17:17 < skelterjohn> dijkstra wrote a very famous article called "goto considered harmful" 17:17 < zozoR> reminds me of a danish rap song "With a goto here and .. WAIT! STOP! he didnt just say the G word did he?" 17:17 < zozoR> :D 17:17 < skelterjohn> since he was so influential in early algorithmic theory, it caught on 17:17 < aiju> which is complete bullcrap 17:17 < aiju> actually dijkstra usually makes lots of sense 17:17 < skelterjohn> read his article, then form your opinion on what he said 17:18 < skelterjohn> (instead of the other way around) 17:18 < aiju> haha 17:18 < aiju> i haven't been able to find it yet 17:18 < zozoR> skelterjohn, which article? 17:18 < aiju> i have read a summary 17:18 < skelterjohn> http://en.wikipedia.org/wiki/Considered_harmful 17:18 -!- skejoe_ [~skejoe@188.114.142.162] has quit [Quit: leaving] 17:19 < skelterjohn> for what it's worth, knuth disagreed with him 17:19 < aiju> oh now i found it ;P 17:19 < str1ngs> anyways you can not have a language called go and not have goto's that's just crazy 17:19 < skelterjohn> and i'd put knuth as a more authorative figure for programmig (as opposed to algorithmic theory) 17:20 < skelterjohn> reference #2 in the wiki link is the paper 17:20 < aiju> dijkstra just says "goto is not needed therefore evil" 17:20 < skelterjohn> hah and #5 17:20 < skelterjohn> is "goto considered harmful" considered harmful 17:21 < aiju> i suppose the article was written behind a different background 17:21 < aiju> times when people used FORTRAN and EVERYTHING was written with GOTO 17:21 < aiju> 10 WRITE (*,*) I 17:21 < aiju> I = I + 1 17:22 < exch> functions and methods and variables and loop constructs are also not necessary when you use straight up cpu instructions. but that doesnt make them evil 17:22 < aiju> IF I < 10 THEN GOTO 10 17:22 < aiju> something along that 17:22 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 255 seconds] 17:23 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 17:23 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 17:24 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts 17:24 -!- emjayess [~emjayess@pix1.i29.net] has quit [Quit: Leaving] 17:27 -!- czr_ [czr@nexus.iohazard.net] has quit [Remote host closed the connection] 17:29 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 252 seconds] 17:31 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 17:31 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has joined #go-nuts 17:35 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 17:37 -!- slashus2 [~slashus2@74-141-110-130.dhcp.insightbb.com] has quit [Quit: slashus2] 17:41 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.] 17:45 < plexdev> http://is.gd/M2z8pn by [Robert Hencke] in go/test/fixedbugs/ -- test: enable tests using v, ok := <-ch syntax 17:48 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts 17:48 -!- rtharper [~tomh@unaffiliated/sioraiocht] has joined #go-nuts 17:50 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 264 seconds] 17:57 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 240 seconds] 18:01 -!- artefon [~thiago@dhcp10.usuarios.dcc.ufmg.br] has quit [Quit: bye] 18:02 < steven> phew! 18:02 < steven> finally was able to reproduce a bug at work that only happened when you clicked the same link on two different mongrels within 0.7 to 0.9 seconds of each other 18:03 < steven> took 4 months to figure that one out :) 18:04 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has joined #go-nuts 18:05 < skelterjohn> what's a mongrel 18:08 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:9ed:bd17:3073:a110] has joined #go-nuts 18:09 -!- TheMue [~TheMue@p5DDF7B7C.dip.t-dialin.net] has joined #go-nuts 18:10 < dforsyth> isnt it that zed shaw thing? 18:10 -!- wrtp [~rog@92.17.43.168] has quit [Quit: wrtp] 18:11 -!- shakesoda [~colby@c-24-19-215-56.hsd1.wa.comcast.net] has quit [Ping timeout: 276 seconds] 18:17 < plexdev> http://is.gd/XrdJy4 by [Robert Griesemer] in 3 subdirs of go/ -- go/printer, gofmt: simplify struct formatting and respect line breaks 18:21 < zozoR> aiju, do you use goto's to travel up in the code? 18:21 -!- waqas [~waqas@jaim.at] has joined #go-nuts 18:22 < aiju> zozoR: yeah, occasionally 18:22 < aiju> goto retry 18:22 < aiju> to restart a function 18:22 < waqas> aiju: Link to a code example? 18:23 < waqas> Your code I meant 18:23 < zozoR> ok ^^ 18:26 < waqas> Assuming this is the right conversation, the only thing I have against goto is how it can make automatic code transformations so complex. 18:29 -!- m4dh4tt3r [~Adium@33.sub-75-208-177.myvzw.com] has joined #go-nuts 18:33 -!- cenuij [~cenuij@78.112.175.207] has joined #go-nuts 18:33 -!- cenuij [~cenuij@78.112.175.207] has quit [Changing host] 18:33 -!- cenuij [~cenuij@base/student/cenuij] has joined #go-nuts 18:38 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection] 18:42 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts 18:45 -!- artefon [~thiago@189.59.182.216.dynamic.adsl.gvt.net.br] has joined #go-nuts 18:46 -!- Fish- [~Fish@9fans.fr] has joined #go-nuts 18:46 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 18:47 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Quit: Leaving] 18:49 < plexdev> http://is.gd/CmdciY by [Rob Pike] in go/src/pkg/gob/ -- gob: use pointers in bootstrapType so interfaces behave properly 18:50 -!- Natch [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has joined #go-nuts 18:52 -!- codelurker [~codelurke@2002:62e3:bbdb:0:e60:76ff:fe66:2bd3] has joined #go-nuts 18:52 -!- codelurker [~codelurke@2002:62e3:bbdb:0:e60:76ff:fe66:2bd3] has quit [Read error: Connection reset by peer] 18:53 -!- Natch| [~natch@c-6dcde155.25-4-64736c10.cust.bredbandsbolaget.se] has quit [Read error: Operation timed out] 18:56 -!- virtualsue [~chatzilla@nat/cisco/x-najehrhsolgcsaan] has joined #go-nuts 18:58 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 18:59 -!- czr_ [czr@nexus.iohazard.net] has joined #go-nuts 19:00 -!- huin [~huin@91.84.76.70] has joined #go-nuts 19:06 < plexdev> http://is.gd/z7eZDK by [Rob Pike] in go/src/pkg/gob/ -- gob: fix up ugly formatting introduced by buggy (now fixed) gofmt. 19:18 -!- m4dh4tt3r [~Adium@33.sub-75-208-177.myvzw.com] has quit [Ping timeout: 252 seconds] 19:19 -!- stepso [~stepso@88-134-14-178-dynip.superkabel.de] has joined #go-nuts 19:20 -!- stepso [~stepso@88-134-14-178-dynip.superkabel.de] has quit [Client Quit] 19:20 -!- stepso [~stepso@88-134-14-178-dynip.superkabel.de] has joined #go-nuts 19:21 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 255 seconds] 19:21 -!- stepso [~stepso@88-134-14-178-dynip.superkabel.de] has quit [Remote host closed the connection] 19:26 -!- zimsim [~simon@87.72.77.195] has quit [Read error: Operation timed out] 19:30 -!- tvw [~tv@e176014066.adsl.alicedsl.de] has joined #go-nuts 19:31 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has joined #go-nuts 19:33 -!- madcapfizzle [~username@nat/google/x-skjmxgklgjetraev] has joined #go-nuts 19:34 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has joined #go-nuts 19:44 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts 19:47 -!- plainhao [~plainhao@208.75.85.237] has quit [Quit: plainhao] 19:50 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 19:52 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 276 seconds] 19:56 < steven> am i understanding properly, that goroutines are only helpful when dealing with blocking-IO calls? 19:57 < steven> like network reads/writes or waiting on a PID or something 19:57 < waqas> Or whenever you need concurrecy 19:59 -!- keithcascio [~keithcasc@nat/google/x-jugdexvwzyyiipcv] has joined #go-nuts 19:59 < steven> no, 19:59 < steven> goroutines do not yield to other goroutines unless they are stuck in a blocking system call 19:59 < steven> ive tried writing a concurrent quicksort implementation, and it doesnt yield at all. 20:00 < |Craig|> not true 20:00 < steven> rather, 20:00 < steven> it doesnt execute simultaneously. 20:00 < |Craig|> I wrote a parallel image processor, rand twice as fast with to goroutines on my duel core 20:00 < steven> https://github.com/sdegutis/go-quicksort/blob/master/quicksort-concurrent.go 20:00 < steven> this doesnt run any faster than this: 20:00 < steven> https://github.com/sdegutis/go-quicksort/blob/master/quicksort.go 20:00 < |Craig|> steven: perhaps you have go configured to only use one os thread? 20:01 < steven> even for tens of thousands of elements to be sorted. 20:01 < steven> nope. 20:01 < |Craig|> that is the default 20:01 < steven> i had GOMAXPROCS=4 20:01 < steven> https://github.com/sdegutis/go-quicksort/blob/master/main.go 20:01 < xulfer> How did you determine there is no yield? Since underlying synchronization often causes a slow down rather than a speed up in algorithms of that nature. 20:02 < xulfer> So a lack of performance boost wouldn't be an accurate way to tell. 20:02 < steven> how else can you tell? 20:02 < steven> is there another way to determine it? 20:02 < |Craig|> steven: if one way does not work, its not "how else can you tell" its "how can you tell" 20:02 < steven> thats what im asking 20:03 < steven> how can you tell? 20:04 < |Craig|> if you run 2 goroutines with shared memory you can observe that the other is getting time 20:04 < waqas> steven: I'd expect your goroutine based code to be much slower. All that goroutine creation and channel sending isn't free of cost. 20:04 < |Craig|> ideally though, you should not know, or care how/when the yielding. Use explicit sync like channels 20:04 < steven> it should be cheap though 20:04 < |Craig|> its not very cheap 20:05 < steven> then why is it useful? 20:05 < |Craig|> it is cheap, but not very cheap 20:05 < |Craig|> especially if the go routines are in different os threads. Its quite cheap if they are in the same one, which is why you default to only one 20:06 < |Craig|> run the sample prime generator example with multiple threads, not that it slows down a lot 20:06 < waqas> steven: It's cheap. But how cheap? It's probably a memory allocation at the very minimum. For a 1000 element slice you are probably creating 500 goroutines. 20:06 < steven> oh. 20:06 < steven> also i noticed it was never using more than one processor on my computer, even when GOMAXPROCS=4 20:06 < steven> it was always only using the same processor. 20:07 < waqas> steven: Instead of creating 500 goroutines, just try with two. Call the non-goroutine function in two separate goroutines, sorting the first half in one, the second half in the other. Then you should see an improvement. 20:07 < plexdev> http://is.gd/4T2aSs by [Ian Lance Taylor] in 3 subdirs of go/ -- Make.pkg: add support for SWIG, and add two SWIG examples 20:07 < xulfer> It is useful, but concurrency comes with a 'relatively high' overhead. Synchronization comes at an even higher cost when that gets involved. 20:07 < |Craig|> you want a number of active go routines close to GOMAXPROCS if GOMAXPROCS>1 from my experience 20:08 < |Craig|> just spamming a hundred go routines across a bunch of os threads, and having them sync back and forth all over is slow 20:09 < xulfer> and ymmv on cores. Threads and what not are generally never guaranteed to run on separate cores. 20:09 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has quit [Read error: Connection reset by peer] 20:09 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has joined #go-nuts 20:10 -!- madcapfizzle [~username@nat/google/x-skjmxgklgjetraev] has quit [Quit: Farewell] 20:10 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Excess Flood] 20:11 < skelterjohn> how can i run a godoc server that uses an extra place to examine source? adding -path=. doesn't seem to do it... 20:13 -!- Project_2501 [~Marvin@82.84.84.232] has joined #go-nuts 20:14 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 20:15 -!- awidegreen [~quassel@c-eacae555.08-2-73746f39.cust.bredbandsbolaget.se] has joined #go-nuts 20:15 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 246 seconds] 20:16 -!- madcapfizzle [~username@nat/google/x-jkmejsnhsliaoedc] has joined #go-nuts 20:18 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts 20:21 < steven> i want to add to bufio: func (b *Reader) ReadLen(int length) (line string, err os.Error) 20:21 < steven> it would just read up to a given number of bytes. wuold be very useful. 20:22 < steven> but the code-submission-process is intimidating. 20:23 < pharris> steven: Typically, you slice your buffer to the maximum length you want read. 20:23 -!- wrtp [~rog@92.17.43.168] has joined #go-nuts 20:24 < steven> well the idea is, for implementing certain protocols, sometimes you want to change up what you're reading. 20:24 < skelterjohn> right - any io.Reader has a Read([]byte) method - you give it a []byte backed by an array of size "length" 20:24 < skelterjohn> it will read no more than "length" bytes 20:24 < steven> sometimes i want to read just 1 byte, sometimes 3, sometimes up until "\r\n", and it can change all within the same connection 20:25 < steven> oh 20:25 < steven> but, it might not read len(b) 20:25 < steven> it might read < len(b) 20:25 < skelterjohn> yes 20:25 < steven> which is why im talking about adding it to bufio 20:25 < skelterjohn> if there aren't len(b) bytes to read 20:25 < skelterjohn> it will read all that it can 20:25 -!- eaburns [~eaburns@c-24-62-248-129.hsd1.nh.comcast.net] has left #go-nuts [] 20:25 < steven> well sometimes a single message can be split between two sends, on the other end of the connection. 20:26 < steven> over tcp at least 20:26 < pharris> Maybe you want http://golang.org/pkg/io/#ReadFull 20:26 < skelterjohn> you can use LimitReader 20:26 < steven> so it might read less than len(b) but in the next call it would read the remainder 20:26 < skelterjohn> and ReadFull from it 20:26 < steven> yeah ReadFull looks like it will suffice 20:27 < skelterjohn> seems better than what i was about to suggest, certianly 20:27 < steven> actually, 20:28 < steven> ReadFull uses ReadAtLeast 20:28 < steven> which means it could end up reading more than len(buf) 20:28 < skelterjohn> no - ReadAtLeast is capped by the size of the buffer 20:29 < skelterjohn> ReadAtLeast takes the minimum 20:29 < skelterjohn> ReadFull sets the minimum to the size of the buffer 20:29 < skelterjohn> the maximum is always the size of the buffer 20:29 < skelterjohn> for any read 20:29 < skelterjohn> i mean, no one is just going to throw out data 20:29 -!- madcapfizzle [~username@nat/google/x-jkmejsnhsliaoedc] has quit [Quit: Farewell] 20:31 -!- madcapfizzle [~username@nat/google/x-pzqfcxxtcpyzrzvl] has joined #go-nuts 20:33 < steven> k 20:33 < steven> well 20:33 < steven> there go my plans of finally contributing to OSS 20:33 < steven> on a project that isnt my own. 20:39 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 240 seconds] 20:39 < plexdev> http://is.gd/pqyl23 by [Ian Lance Taylor] in go/src/ -- Make.pkg: Always define _CGO_CFLAGS and friends. 20:40 -!- jyxent [~jyxent@129.128.191.99] has joined #go-nuts 20:48 -!- m4dh4tt3r [~Adium@75.144.24.109-BusName-walnutcreek.ca.hfc.comcastbusiness.net] has joined #go-nuts 20:48 -!- waqas [~waqas@jaim.at] has left #go-nuts [] 20:48 -!- madcapfizzle [~username@nat/google/x-pzqfcxxtcpyzrzvl] has quit [Ping timeout: 250 seconds] 20:55 -!- iant [~iant@nat/google/x-njfpjoxqrzfacjkg] has quit [Quit: Leaving.] 20:55 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 20:59 -!- wrtp [~rog@92.17.43.168] has quit [Quit: wrtp] 21:02 -!- jyxent [~jyxent@129.128.191.99] has quit [Remote host closed the connection] 21:02 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 21:04 -!- iant [~iant@nat/google/x-tbypwgbyqcngmnif] has joined #go-nuts 21:04 -!- mode/#go-nuts [+v iant] by ChanServ 21:09 < zozoR> is there a place i can read about compiler feedback 21:09 < zozoR> i get a 21:09 < zozoR> non-name var on left side of := 21:09 < zozoR> i have no idea what that means 21:09 -!- TMKCodes [~TMKCodes@unaffiliated/tmkcodes] has joined #go-nuts 21:11 <+iant> zozoR: what does the line look like? 21:12 < zozoR> web.File, err := os.Open(path, os.O_RDONLY, 0666) 21:12 < zozoR> non-name web.File on left side of := 21:12 <+iant> web.File is not a variable; you need to use =, not := 21:12 <+iant> := declares a variable 21:12 < zozoR> err is not declared 21:12 <+iant> you can't combine a non-variable like web.File with a declaration like err 21:13 <+iant> var err os.Error 21:13 <+iant> web.File, err = os.Open() 21:13 < zozoR> im confused now 21:13 < zozoR> why is web.File not a variable 21:13 <+iant> OK, maybe it is a variable, but it's not a variable you can declare 21:13 <+iant> if it is a variable, it's in some other package 21:14 < zozoR> oh ok 21:14 <+iant> you could do: x, err := os.Open() and then web.File = x 21:14 < zozoR> :) 21:14 < zozoR> i got it working, thanks 21:14 <+iant> sure 21:14 <+iant> using := there is no crazy, but Go doesn't currently permit it 21:14 < zozoR> :p 21:17 -!- skejoe [~skejoe@188.114.142.162] has joined #go-nuts 21:17 -!- zimsim [~simon@87.72.77.195] has quit [Remote host closed the connection] 21:26 < plexdev> http://is.gd/aNs2Sz by [Robert Griesemer] in 4 subdirs of go/src/ -- go/printer: Revert API change of CL 4274075. 21:32 -!- GilJ [~GilJ@zeus.ugent.be] has quit [Read error: Operation timed out] 21:33 < TMKCodes> Hey i ordered http://www.goprogrammingbook.com/ is it worth reading? 21:33 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:9ed:bd17:3073:a110] has quit [Quit: Leaving.] 21:34 < huin> it had better be, now that you ordered it :) 21:34 < TMKCodes> ;D 21:34 < TMKCodes> Well it's just 20 euros 21:36 < aiju> the cover art is not nearly as well as done on the o'reilly books 21:36 < aiju> must be real shit 21:36 <+iant> I recall some saying about books and covers, what was it? 21:36 -!- zozoR [~Morten@56344966.rev.stofanet.dk] has quit [Remote host closed the connection] 21:39 < skelterjohn> burn 21:40 -!- waqas [~waqas@jaim.at] has joined #go-nuts 21:41 -!- GilJ [~GilJ@zeus.ugent.be] has joined #go-nuts 21:46 -!- TheMue [~TheMue@p5DDF7B7C.dip.t-dialin.net] has quit [Quit: TheMue] 21:47 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 248 seconds] 21:48 -!- Scorchin [~Scorchin@host86-145-18-208.range86-145.btcentralplus.com] has joined #go-nuts 21:53 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 21:54 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn] 21:54 -!- olegfink [~olegfink@ppp92-100-71-138.pppoe.avangarddsl.ru] has joined #go-nuts 21:56 < olegfink> a quickie: seems it's not a good idea to have chans in named result list? 21:59 -!- ExtraSpice [XtraSpice@88.118.35.153] has quit [Read error: Connection reset by peer] 22:05 -!- huin [~huin@91.84.76.70] has quit [Quit: leaving] 22:11 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 22:12 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 22:12 -!- awidegreen [~quassel@c-eacae555.08-2-73746f39.cust.bredbandsbolaget.se] has quit [Remote host closed the connection] 22:21 -!- Fish- [~Fish@9fans.fr] has quit [Quit: So Long, and Thanks for All the Fish] 22:24 -!- Project_2501 [~Marvin@82.84.84.232] has quit [Quit: E se abbasso questa leva che succ...] 22:26 -!- MizardX [MizardX@ip-18-40-149-91.dialup.ice.net] has joined #go-nuts 22:26 -!- MizardX [MizardX@ip-18-40-149-91.dialup.ice.net] has quit [Changing host] 22:26 -!- MizardX [MizardX@unaffiliated/mizardx] has joined #go-nuts 22:26 -!- rtharper [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed the connection] 22:27 -!- rtharper [~tomh@unaffiliated/sioraiocht] has joined #go-nuts 22:34 -!- dfc [~dfc@sydfibre2.atlassian.com] has joined #go-nuts 22:39 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 22:42 -!- Scorchin_ [~Scorchin@host109-157-105-12.range109-157.btcentralplus.com] has joined #go-nuts 22:43 -!- Scorchin_ [~Scorchin@host109-157-105-12.range109-157.btcentralplus.com] has quit [Client Quit] 22:43 < plexdev> http://is.gd/p7MFOx by [Andrew Gerrand] in go/src/cmd/godoc/ -- godoc: add -template flag to specify custom templates 22:44 -!- Scorchin [~Scorchin@host86-145-18-208.range86-145.btcentralplus.com] has quit [Ping timeout: 255 seconds] 22:49 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host closed the connection] 22:50 -!- madcapfizzle [~username@nat/google/x-irylmdwwjkfeqqlp] has joined #go-nuts 22:52 -!- madcapfizzle [~username@nat/google/x-irylmdwwjkfeqqlp] has quit [Client Quit] 23:00 -!- iant [~iant@nat/google/x-tbypwgbyqcngmnif] has quit [Quit: Leaving.] 23:00 -!- skejoe [~skejoe@188.114.142.162] has quit [Quit: Lost terminal] 23:02 -!- madcapfizzle [~username@nat/google/x-gckojurtwviwypjx] has joined #go-nuts 23:05 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 23:08 -!- tvw [~tv@e176014066.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] 23:09 -!- GilJ [~GilJ@zeus.ugent.be] has quit [Ping timeout: 260 seconds] 23:10 -!- virtualsue [~chatzilla@nat/cisco/x-najehrhsolgcsaan] has quit [Ping timeout: 252 seconds] 23:11 -!- enherit [~enherit@24-176-217-66.dhcp.lnbh.ca.charter.com] has joined #go-nuts 23:13 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has joined #go-nuts 23:18 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 23:19 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has quit [Quit: Leaving] 23:19 -!- m4dh4tt3r [~Adium@75.144.24.109-BusName-walnutcreek.ca.hfc.comcastbusiness.net] has quit [Quit: Leaving.] 23:20 -!- madcapfizzle [~username@nat/google/x-gckojurtwviwypjx] has quit [Quit: Farewell] 23:21 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has joined #go-nuts 23:23 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has quit [Client Quit] 23:23 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has joined #go-nuts 23:26 -!- GilJ [~GilJ@zeus.ugent.be] has joined #go-nuts 23:29 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has quit [Quit: Leaving] 23:29 -!- niemeyer [~niemeyer@189.27.151.82.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 255 seconds] 23:30 -!- codelurker [~codelurke@c-98-227-187-219.hsd1.il.comcast.net] has joined #go-nuts 23:31 -!- aho [~nya@fuld-4d00d393.pool.mediaWays.net] has joined #go-nuts 23:33 -!- iant [~iant@67.218.107.6] has joined #go-nuts 23:33 -!- mode/#go-nuts [+v iant] by ChanServ 23:34 <@adg> TMKCodes: it hasn't had good reviews on amazon 23:34 <@adg> olegfink: "result list" ? 23:35 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.] 23:36 -!- m4dh4tt3r [~Adium@61.sub-69-99-167.myvzw.com] has joined #go-nuts 23:40 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 23:41 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 250 seconds] 23:41 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Ping timeout: 248 seconds] 23:45 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has quit [Ping timeout: 240 seconds] 23:57 -!- tensorpudding [~user@99.148.205.193] has joined #go-nuts --- Log closed Wed Mar 23 00:00:04 2011