--- Log opened Wed Apr 06 00:00:50 2011 00:02 -!- [1984] [~wanas@89.211.198.113] has joined #go-nuts 00:02 < [1984]> When someone says "I don't think we can use Go to write the server because it's such a young language!" what answers would any of you give that person? 00:03 < foocraft> "You're old, and you're not so useful yourself" comes to mind. 00:03 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 00:04 < crazy2be> "You're right" comes to mind :P 00:04 < crazy2be> depends on what the server is used for :P 00:05 < foocraft> We're working on a simple server that is expected to have A LOT of connections happen so frequently 00:05 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 00:06 < justinlilly> make proof of concept? 00:06 < crazy2be> well i mean, i'm writing a web framework, and it works O.K. 00:06 < foocraft> a REST server that will receive WiFi fingerprints along with a name, do some processing and improve its measurement 00:06 < crazy2be> but you *will* likely have to update it regularilly to keep it working/compiling 00:07 < crazy2be> so as long as it's something that you can do that for, it should work fine 00:07 < foocraft> justinlilly: it's not a proof of concept. 00:07 < foocraft> The proof of concept was already made in python using posgresql but it sucks, because it's better for that application to have a RESTful API; so we're throwing it all away, basically. 00:07 < justinlilly> I'm saying one method of combatting the "its too young of a language. It will obviously not work" argument, is to write a proof-of-concept. 00:08 < justinlilly> huh? It sucks because it needs a RESTful api? You know Python can do REST, right? 00:09 < foocraft> It can, but why spend precious time refactoring old code? :p 00:09 < foocraft> it's not a big server, luckily 00:09 < foocraft> Which is why thinking of a better way to write the highly concurrent server, is an option. 00:10 < justinlilly> your project, man. :) 00:16 -!- binarypie [~binarypie@65-166-100-58.dsl.volcano.net] has quit [Remote host closed the connection] 00:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 00:25 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 00:28 -!- KirkMcDonald [~Kirk@python/site-packages/KirkMcDonald] has quit [Ping timeout: 240 seconds] 00:35 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has quit [Ping timeout: 248 seconds] 00:36 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Ping timeout: 248 seconds] 00:36 -!- str1ngs [~strings@unaffiliated/str1ngs] has quit [Ping timeout: 248 seconds] 00:38 -!- str1ngs [~strings@unaffiliated/str1ngs] has joined #go-nuts 00:39 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has joined #go-nuts 00:39 -!- str1ngs [~strings@173-203-110-61.static.cloud-ips.com] has joined #go-nuts 00:39 -!- str1ngs [~strings@173-203-110-61.static.cloud-ips.com] has quit [Client Quit] 00:41 < uriel> answer: Go is used in production in quite a few places already 00:41 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts 00:41 < uriel> if you are careful and stick to 'release', you should be OK 00:41 -!- KirkMcDonald [~Kirk@python/site-packages/KirkMcDonald] has joined #go-nuts 00:42 < uriel> of course, things are moving fast, and you should be ready to upgrade from 'release' to 'release', which often will involve code changes, but that is rarely a big problem, and now with gofix it will be even easier 00:42 -!- 20QAAHVK3 [~strings@unaffiliated/str1ngs] has quit [Client Quit] 00:43 -!- dosade [~afhawe@210.9.143.155] has quit [Read error: Operation timed out] 00:43 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 00:45 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 00:48 -!- KirkMcDonald [~Kirk@python/site-packages/KirkMcDonald] has quit [Ping timeout: 240 seconds] 00:51 < gtaylor2> Are there any good examples of XML parsing with Go? 00:51 -!- ampleyfly [ampleyfly@gateway/shell/blinkenshell.org/x-kjbadzeqqnftthqd] has quit [Ping timeout: 252 seconds] 00:53 < vsmatck> There's a XML package. 00:54 < jesusaurus> gtaylor2: are you asking how to use the xml package? 00:54 < gtaylor2> Sure, but I'm looking for examples of it in use. 00:54 < exch> https://github.com/jteeuwen/go-pkg-xmlx/blob/master/document.go#L83 here's one 00:54 < vsmatck> doh. I misunderstood sry. 00:55 < gtaylor2> exch: Great, thanks 00:56 -!- KirkMcDonald [~Kirk@python/site-packages/KirkMcDonald] has joined #go-nuts 00:57 -!- dosade [~afhawe@210.11.145.16] has joined #go-nuts 00:57 -!- Boney [~paul@124-168-103-51.dyn.iinet.net.au] has quit [Ping timeout: 264 seconds] 00:58 -!- Boney [~paul@124-168-103-51.dyn.iinet.net.au] has joined #go-nuts 00:59 -!- str1ngs [~strings@unaffiliated/str1ngs] has joined #go-nuts 01:04 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has quit [Ping timeout: 246 seconds] 01:05 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has joined #go-nuts 01:06 -!- mikespook [~mikespook@219.137.75.2] has joined #go-nuts 01:06 -!- nettok [~quassel@200.119.157.83] has joined #go-nuts 01:07 -!- Niedar [~bleh@ip68-99-166-222.hr.hr.cox.net] has joined #go-nuts 01:09 -!- Count_Niedar [~bleh@ip68-99-166-222.hr.hr.cox.net] has quit [Ping timeout: 252 seconds] 01:11 -!- saturnfive [~saturnfiv@210.74.155.131] has joined #go-nuts 01:15 -!- ukai [~ukai@nat/google/x-uapxhpicdvwqfilu] has quit [Ping timeout: 276 seconds] 01:15 -!- ukai [~ukai@nat/google/x-pxusgqazatzabhcm] has joined #go-nuts 01:18 -!- m4dh4tt3r [~Adium@43.sub-75-210-248.myvzw.com] has joined #go-nuts 01:24 -!- rm445_ [rm445@pip.srcf.societies.cam.ac.uk] has joined #go-nuts 01:24 -!- anticw_ [~anticw@c-67-169-68-180.hsd1.ca.comcast.net] has joined #go-nuts 01:24 -!- ville-_ [ville@xollo.net] has joined #go-nuts 01:24 -!- Zoope- [alsbergt@zoopee.org] has joined #go-nuts 01:24 -!- [Pete_27] [~noname@110-174-103-31.static.tpgi.com.au] has joined #go-nuts 01:25 -!- pTonnerre [~tonnerre@ec2-79-125-90-109.eu-west-1.compute.amazonaws.com] has joined #go-nuts 01:25 -!- fzzbt [~jahman@melkinpaasi.cs.helsinki.fi] has joined #go-nuts 01:25 < dforsyth> are there bdb bindings anywhere? 01:25 -!- strings_ [~strings@unaffiliated/str1ngs] has joined #go-nuts 01:27 -!- jnwhiteh_ [~jnwhiteh@li37-84.members.linode.com] has joined #go-nuts 01:27 < exch> not sure what bdb is, but your best bet is looking through http://go-lang.cat-v.org/ and http://godashboard.appspot.com/package 01:29 < dforsyth> ive checked, im wondering if theres something not on the dashboard 01:29 -!- mikespook1 [~mikespook@219.137.75.2] has joined #go-nuts 01:29 < dforsyth> bdb is berkeley db 01:29 -!- m4dh4tt3r [~Adium@43.sub-75-210-248.myvzw.com] has quit [Ping timeout: 246 seconds] 01:30 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 01:30 -!- ville- [ville@xollo.net] has quit [Ping timeout: 240 seconds] 01:30 -!- anticw [~anticw@c-67-169-68-180.hsd1.ca.comcast.net] has quit [Ping timeout: 240 seconds] 01:30 -!- iTonnerre [~tonnerre@ec2-79-125-90-109.eu-west-1.compute.amazonaws.com] has quit [Ping timeout: 240 seconds] 01:30 -!- rm445 [rm445@pip.srcf.societies.cam.ac.uk] has quit [Ping timeout: 240 seconds] 01:30 -!- str1ngs [~strings@unaffiliated/str1ngs] has quit [Ping timeout: 240 seconds] 01:30 -!- niemeyer [~niemeyer@189.27.150.214.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 240 seconds] 01:30 -!- mpl [~mpl@smgl.fr.eu.org] has quit [Ping timeout: 240 seconds] 01:30 -!- Pete_27 [~noname@110-174-103-31.static.tpgi.com.au] has quit [Ping timeout: 240 seconds] 01:30 -!- Zoopee [alsbergt@zoopee.org] has quit [Ping timeout: 240 seconds] 01:30 -!- mikespook [~mikespook@219.137.75.2] has quit [Ping timeout: 240 seconds] 01:30 -!- jnwhiteh [~jnwhiteh@WoWUIDev/WoWI/Featured/Dongle/cladhaire] has quit [Ping timeout: 240 seconds] 01:30 -!- fzzbt_ [~jahman@melkinpaasi.cs.helsinki.fi] has quit [Ping timeout: 240 seconds] 01:30 -!- dario [~dario@domina.zerties.org] has quit [Ping timeout: 240 seconds] 01:31 < skelterjohn> for some reason when i parse something using go/parser, and write it again using go/printer, i lose blank lines between functions 01:32 -!- mpl [~mpl@smgl.fr.eu.org] has joined #go-nuts 01:34 -!- dario [~dario@domina.zerties.org] has joined #go-nuts 01:40 -!- ampleyfly [ampleyfly@gateway/shell/blinkenshell.org/x-etippyzfkjwhgoqd] has joined #go-nuts 01:45 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 01:46 -!- mikespook1 [~mikespook@219.137.75.2] has quit [Ping timeout: 248 seconds] 01:47 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 01:50 -!- niemeyer [~niemeyer@189.73.142.55] has joined #go-nuts 01:57 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 02:01 -!- mikespook [~mikespook@219.137.75.2] has joined #go-nuts 02:04 -!- serbaut [~joakims@88.80.182.68] has joined #go-nuts 02:04 -!- serbaut [~joakims@88.80.182.68] has quit [Read error: Connection reset by peer] 02:05 -!- serbaut1 [~joakims@88.80.182.68] has quit [Ping timeout: 260 seconds] 02:06 -!- niekie_ [~niek@CAcert/Assurer/niekie] has joined #go-nuts 02:06 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 260 seconds] 02:06 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 02:06 -!- niekie [~niek@CAcert/Assurer/niekie] has quit [Read error: Connection reset by peer] 02:06 < exch> alrighty. I figured out why gotest fails to pickup some test cases 02:06 < exch> it's looking for 'Makefile', not 'makefile' 02:06 -!- serbaut [~joakims@88.80.182.68] has joined #go-nuts 02:07 < str1ngs> ok so it will work on windows 02:07 < str1ngs> :P 02:07 -!- keithcascio [~keithcasc@nat/google/x-sxfnyxisrixceaqk] has quit [Ping timeout: 260 seconds] 02:07 < exch> I woulld consider that a bug tbh :p 02:07 -!- keithcascio [~keithcasc@nat/google/x-pulizkzcgvkzhfkp] has joined #go-nuts 02:08 < str1ngs> does make also use makefile? thought it was only Makefile 02:08 < skelterjohn> make likes either 02:08 < exch> it works fine with makefile 02:08 < str1ngs> ah then yes guess it would be a bug 02:08 < skelterjohn> on my computer, open() is not case-sensitive 02:08 < skelterjohn> cat FILE.GO is the same as cat file.go 02:09 < str1ngs> windows? 02:09 < skelterjohn> os x 02:09 < str1ngs> you sure thats not the shell? 02:10 < str1ngs> or fat32 filesystem 02:12 < str1ngs> exch: anyways I can confirm that on Linux if it helps 02:13 < exch> yea, thanks. I'm filing an issue for it atm 02:14 < exch> easy fix really. http://code.google.com/p/go/source/browse/src/cmd/gotest/gotest.go?spec=svn24cf334ab8ed44e7abf93695575b190512e6dc83&r=24cf334ab8ed44e7abf93695575b190512e6dc83#88 There's the culprit 02:14 < str1ngs> exch: my guess is it will need && "makefile" somewhere . prabably an easy fix 02:15 < exch> http://code.google.com/p/go/issues/detail?id=1668&colspec=ID%20Status%20Stars%20Priority%20Owner%20Reporter%20Summary 02:16 < str1ngs> exch: ya I think adg will be glad to know about 02:23 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has joined #go-nuts 02:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 02:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 02:31 -!- randfur [~AndChat@58.145.148.26] has joined #go-nuts 02:31 -!- niemeyer [~niemeyer@189.73.142.55] has quit [Ping timeout: 240 seconds] 02:33 < exch> I should get into this code review thing and just fix it myself 02:34 < str1ngs> exch: I dont see why not 02:35 < exch> then again, r seems a bit torn on the subject :p "It's a bug in make that it has this ridiculous choice of multiple file names for its rules. Stu originally wanted only Makefile but people objected to the upper-case letter and so the compromise was made. The road to hell is paved with compromise." 02:35 < exch> "Go uses Makefile. I originally added a check for both, but then the question arises whether to check for all the possible names (there are others!) or just say, Go uses Makefile." 02:35 < str1ngs> exch: ah then it might be working as intended 02:36 < exch> looks like it 02:36 < exch> the gist of his response is "Go uses 'Makefile', so you should to" 02:37 < exch> If there really are that many variations, I can see why. But it would be prudent to add a note to the docs somewhere about it 02:38 < str1ngs> I've always used Makefile myself. I'm wonder if makefile is there to support case insensitive OS's and filesystem's 02:39 < exch> dunno. I'm just used to doing all of my files in lower-case 02:39 < exch> saves a lot of potential hassle on a case-sensitive fs 02:40 < str1ngs> you just a made an arguement for using only Makefile :P 02:40 < exch> yes, or just 'makefile' :p 02:41 < str1ngs> heehe 02:41 < str1ngs> I think r's going to win that one :P 02:41 < exch> there is hope ;) "CC'ing rsc, who talked me (easily) into checking only for Makefile." 02:42 < exch> either way. I'll start 'fixing' my repos 02:42 -!- randfur [~AndChat@58.145.148.26] has quit [Ping timeout: 264 seconds] 02:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 02:42 < str1ngs> that needs to be added to gofix imo :P 02:43 < exch> considering the sheer number of repos I have sitting here, I would agree :p 02:43 < exch> then again, I don't really have anything better to do atm 02:43 < str1ngs> actually someone mentioned that the other day. linked github. I was like hey thats exch. 02:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 02:44 < exch> heh what I have on github is only the tip of the iceberg :p 02:46 -!- waqas [~waqas@jaim.at] has left #go-nuts [] 02:46 < str1ngs> go is addictive that way. I don't think I've touch anything else for awhile. unless it was work related. 02:46 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Quit: Leaving] 02:47 < exch> yea, it tends to eat away a lot of time without me even noticing it 02:47 < exch> addictive like heroin 02:48 < str1ngs> first times free. 02:50 < str1ngs> go-nut is a much better marketing term then go-addict 02:50 < exch> true 02:50 < exch> at leats less likely to scare people away, until it's too late to run 02:50 < exch> s/leats/least/ 02:51 < str1ngs> actually I hope more C people start using go. tired of C libs 02:56 < str1ngs> grr I hope they dont get rid of Makefiles though 02:56 < str1ngs> ah well I guess I can just use my own. 03:02 < exch> there we go. all sorted 03:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 03:03 -!- gtaylor [~gtaylor@99-5-124-9.lightspeed.gnvlsc.sbcglobal.net] has quit [Quit: gtaylor] 03:03 < exch> well, that settles that then. No 'makefile' :p http://code.google.com/p/go/issues/detail?id=1668&colspec=ID%20Status%20Stars%20Priority%20Owner%20Reporter%20Summary 03:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 03:04 < str1ngs> meh I think it's ok 03:04 < exch> it makes sense. certainly if makefiles are going out entirely 03:05 < str1ngs> the depresses me some but I can just use my own if I need to 03:06 < str1ngs> but switching from Makefile's make it easier for people on window etc 03:07 -!- nettok_ [~quassel@200.119.188.211] has joined #go-nuts 03:08 -!- keithcascio [~keithcasc@nat/google/x-pulizkzcgvkzhfkp] has quit [Quit: Leaving] 03:09 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 246 seconds] 03:10 -!- nettok [~quassel@200.119.157.83] has quit [Read error: Connection reset by peer] 03:12 -!- plainhao [~plainhao@208.75.85.237] has quit [Quit: plainhao] 03:22 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 03:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 03:34 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has quit [Read error: Operation timed out] 03:41 < steven> duh, winning 03:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 03:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 03:51 -!- tensorpudding [~user@99.148.205.193] has quit [Read error: Connection reset by peer] 03:57 -!- vsayer [~vivek@c-67-170-236-166.hsd1.ca.comcast.net] has joined #go-nuts 04:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 04:04 -!- tensorpudding [~user@99.148.205.193] has joined #go-nuts 04:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 04:07 -!- aconran___ [~aconran-o@38.104.129.126] has joined #go-nuts 04:10 -!- aconran__ [~aconran-o@38.104.129.126] has quit [Ping timeout: 276 seconds] 04:14 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has joined #go-nuts 04:19 -!- tav [~tav@92.7.141.101] has quit [Quit: tav] 04:22 -!- tensai_cirno [~cirno@194.186.220.72] has joined #go-nuts 04:22 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 04:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 04:24 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 246 seconds] 04:34 -!- fabled [~fabled@83.145.235.194] has joined #go-nuts 04:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 04:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 04:47 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has quit [Quit: itrekkie] 04:53 < crazy2be> i should write some gotest stuff, i've no idea how it works atm 04:53 < crazy2be> other than that it uses _test.go files 04:58 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts 05:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 05:02 < plexdev> http://is.gd/vIGS1C by [Andrew Gerrand] in go/src/pkg/http/ -- http: allow override of Content-Type for ServeFile 05:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 05:06 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has joined #go-nuts 05:10 -!- tensorpudding [~user@99.148.205.193] has quit [Read error: Connection reset by peer] 05:20 -!- zozoR [~Morten@56344e3e.rev.stofanet.dk] has quit [Remote host closed the connection] 05:21 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 260 seconds] 05:21 -!- anth [~a@72-160-85-120.dyn.centurytel.net] has joined #go-nuts 05:22 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 05:23 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has joined #go-nuts 05:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 05:32 -!- nettok_ [~quassel@200.119.188.211] has quit [Ping timeout: 252 seconds] 05:40 -!- tensai_cirno [~cirno@194.186.220.72] has quit [Ping timeout: 264 seconds] 05:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 05:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 05:44 -!- tensai_cirno [~cirno@194.186.220.72] has joined #go-nuts 05:54 -!- crazy2be [~crazy2be@S01060012171a573b.cg.shawcable.net] has quit [Read error: Operation timed out] 06:00 -!- krutcha1 [~krutcha@S010600045a27676a.vs.shawcable.net] has joined #go-nuts 06:02 -!- tensai_cirno [~cirno@194.186.220.72] has quit [Ping timeout: 248 seconds] 06:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 06:04 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 06:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 06:08 -!- dropdrive [~dropdrive@cpe-72-227-159-70.nyc.res.rr.com] has quit [Read error: Operation timed out] 06:14 -!- dropdrive [~dropdrive@cpe-72-227-159-70.nyc.res.rr.com] has joined #go-nuts 06:22 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 06:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 06:25 -!- tobier_ [~tobier@c-1e9de055.712-1-64736c11.cust.bredbandsbolaget.se] has joined #go-nuts 06:26 -!- tobier [~tobier@c-1e9de055.712-1-64736c11.cust.bredbandsbolaget.se] has quit [Read error: Operation timed out] 06:26 < nsf> [nsf @ crawl]$ echo "var i uint = 5; var x = (1 << i) + 4.5;" | ./crawl -no-ast 06:26 < nsf> stdin:1:28: error: invalid operands to binary expression ('float32' and 'uint32') 06:26 < nsf> var i uint = 5; var x = (1 << i) + 4.5; 06:26 < nsf> ~ ^ ~ 06:26 < nsf> sweet 06:27 -!- mikespook1 [~mikespook@219.137.234.21] has joined #go-nuts 06:28 -!- mikespook [~mikespook@219.137.75.2] has quit [Ping timeout: 276 seconds] 06:31 -!- skejoe [~skejoe@188.114.142.217] has joined #go-nuts 06:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 06:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 06:45 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts 06:48 -!- tensai_cirno [~cirno@194.186.220.72] has joined #go-nuts 06:50 < plexdev> http://is.gd/lZuUWU by [Alex Brainman] in go/src/pkg/ -- pkg/path: enable tests on Windows 06:51 -!- tensai_cirno [~cirno@194.186.220.72] has quit [Read error: Connection reset by peer] 06:52 -!- tensai_cirno [~cirno@194.186.220.72] has joined #go-nuts 06:55 -!- virtualsue [~chatzilla@nat/cisco/x-fyeialfgipnkiuiv] has joined #go-nuts 07:01 -!- ExtraSpice [XtraSpice@88.118.35.153] has joined #go-nuts 07:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 07:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 07:11 -!- piranha [~piranha@D57D1AB3.static.ziggozakelijk.nl] has joined #go-nuts 07:12 -!- tensai_cirno [~cirno@194.186.220.72] has quit [Ping timeout: 258 seconds] 07:22 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 260 seconds] 07:22 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 07:22 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 07:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 07:28 < krutcha1> looks like closing a closed channel has been done away with, and the closed() keyword is gone 07:29 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 240 seconds] 07:29 < krutcha1> is there an easy way to closeifnotclosed() when adding cleanup defer()'s to goroutines? 07:30 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-166-131.clienti.tiscali.it] has joined #go-nuts 07:30 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has quit [Ping timeout: 260 seconds] 07:33 < edsrzf> krutcha1: You can still tell if a channel's closed by using testing a receive like so: 07:33 < edsrzf> x, ok := <-ch 07:33 < edsrzf> If the channel's closed, ok will be false 07:33 < krutcha1> yeah, in my case I had a few duplicate closes (sloppy) where both the original function, and a goroutine defer'd a close() to a channel 07:34 < krutcha1> so in this case it wasn't testing for a close on a read that was the problem, it was deciding whether to close it on a panic/unwind 07:35 < krutcha1> used to be if !closed(x) close(x), etc 07:35 < krutcha1> but closed() was removed some time ago 07:35 < edsrzf> Usually you want the goroutine that's sending on the channel to close the channel. 07:36 < krutcha1> I've modified it so only the source of the channel's make() will close it on a panic/exit 07:37 < krutcha1> however, I was also manually closing the channel to signal program termination to the goroutines, causing an additional overlapping close 07:37 < krutcha1> this old code is very clumsy hehe 07:38 < edsrzf> How old can Go code really be, anyway? ;) 07:39 < krutcha1> well, old as in the first few weeks I was playing with go last year 07:42 -!- tensai_cirno [~cirno@195.19.62.212] has joined #go-nuts 07:42 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 07:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 07:46 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 07:47 -!- aho [~nya@fuld-590c7a49.pool.mediaWays.net] has quit [Quit: EXEC_over.METHOD_SUBLIMATION] 07:48 -!- skejoe [~skejoe@188.114.142.217] has quit [Quit: Lost terminal] 08:01 -!- wrtp [~rog@2.97.144.60] has joined #go-nuts 08:01 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 248 seconds] 08:02 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 08:04 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 08:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 08:05 -!- tav [~tav@92.7.141.101] has joined #go-nuts 08:12 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 260 seconds] 08:15 -!- arun_ [~arun@unaffiliated/sindian] has joined #go-nuts 08:20 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|] 08:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 08:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 08:26 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping timeout: 246 seconds] 08:28 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 08:31 -!- krutcha1 [~krutcha@S010600045a27676a.vs.shawcable.net] has quit [Quit: Leaving] 08:33 -!- sushimako [~flo@qatfy.at] has joined #go-nuts 08:37 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts 08:37 -!- mode/#go-nuts [+v iant] by ChanServ 08:42 -!- napsy [~luka@193.2.66.6] has joined #go-nuts 08:43 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 08:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 08:46 < xyproto> if print() and println() are useful enough to be there for bootstrapping, why are they not considered useful enough to be considered as equals with the other built-in functions? 08:47 < str1ngs> xyproto: there low level prints. and there not designed to stay in the api 08:47 -!- jnwhiteh [~jnwhiteh@li37-84.members.linode.com] has quit [Changing host] 08:47 -!- jnwhiteh [~jnwhiteh@WoWUIDev/WoWI/Featured/Dongle/cladhaire] has joined #go-nuts 08:47 < str1ngs> use them for debugging but not production code is my take on it 08:48 < xyproto> str1ngs: that sounds sensible, but I wish they could be designed to stay in the api, and just point to fmt.Print and fmt.Println 08:48 < str1ngs> xyproto: import . "fmt" 08:48 < str1ngs> Println 08:49 < xyproto> str1ngs: that's an idea. 08:49 < str1ngs> xyproto: I only use println etc to save the fmt import for a quick debug 08:50 < xyproto> Is it possible to import functions with other names, like in Python? "from os import system as execute" 08:50 < str1ngs> you can import packages as other names. not sure about Functions 08:50 < xyproto> str1ngs: that way it could be possible to import fmt.Println as "println" (lowercase) 08:51 < xyproto> hm, ok 08:51 < str1ngs> ah easy to do 08:51 < xyproto> str1ngs: yeah, but not in one line :) 08:51 < str1ngs> func pline(s string, a ..interfac{}) 08:52 < str1ngs> pline bad choice of words but you get the idea 08:52 < str1ngs> the just call Println(s,a...) not tested but I thinks that right 08:52 < xyproto> str1ngs: easier: pline := fmt.Println 08:52 < str1ngs> derp yes it is now that I think about it 08:54 < wrtp> xyproto: var println = fmt.Println 08:55 < str1ngs> isnt println already declared though? 08:55 < wrtp> only in the universe block 08:55 < wrtp> it's fine to redeclare identifiers from there 08:56 < xyproto> wrtp: jup, the var-trick works :) 08:56 < str1ngs> nice 08:56 < wrtp> e.g. (if you want to mess things up): type int string 08:56 < wrtp> print and println are only there so that it's possible to put debugging prints into low level code that can't import fmt 08:57 < wrtp> (actually, they can also be useful for debugging scheduling problems because they don't yield the scheduler) 09:00 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Operation timed out] 09:02 -!- sushimako [~flo@qatfy.at] has left #go-nuts [] 09:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 09:09 < xyproto> wrtp: sounds useful enough to me to warrant a permanent stay, together with the other built-ins, but I'm sure the Go authors have good reasons 09:09 < wrtp> xyproto: i don't think they're going to go, but you should just avoid using them in general 09:10 < wrtp> they have limited functionality, apart from anything else 09:16 < xyproto> I see 09:19 -!- dogatemycomputer [edpisg@69.41.179.205] has joined #go-nuts 09:19 -!- dogatemycomputer [edpisg@69.41.179.205] has left #go-nuts [] 09:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 09:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 09:30 -!- mikespook1 [~mikespook@219.137.234.21] has quit [Quit: Leaving.] 09:43 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 09:44 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has quit [Remote host closed the connection] 09:44 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 09:45 -!- wrtp [~rog@2.97.144.60] has quit [Quit: wrtp] 09:49 -!- edsrzf [~chickench@122-61-221-144.jetstream.xtra.co.nz] has quit [Remote host closed the connection] 09:59 -!- marten [~marten@62.21.178.171] has joined #go-nuts 10:01 < marten> I'm running a Go server on Amazon EC2. On my laptop, it performs very well and fully utilizes the CPU, but on EC2 it barely stresses it. A profile indicates a lot of time is spent in runtime.futex and syscall.Syscall6 10:02 < marten> What could this mean? Threads don't work well on that system? 10:03 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 10:04 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 10:07 -!- ognom [ognom@c-bef570d5.033-10-67626721.cust.bredbandsbolaget.se] has joined #go-nuts 10:12 -!- wrtp [~rog@2.97.144.60] has joined #go-nuts 10:16 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has quit [Ping timeout: 252 seconds] 10:18 -!- djcapelis [~djc@blender/coder/DJCapelis] has quit [Ping timeout: 276 seconds] 10:19 -!- djcapelis [~djc@blender/coder/DJCapelis] has joined #go-nuts 10:19 -!- htoothrot [~mux@66-169-185-121.dhcp.ftwo.tx.charter.com] has joined #go-nuts 10:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 10:23 -!- saturnfive [~saturnfiv@210.74.155.131] has quit [Read error: Connection reset by peer] 10:24 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 10:39 -!- GilJ [~GilJ@zeus.ugent.be] has quit [Quit: leaving] 10:43 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 10:45 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 10:48 -!- tvw [~tv@e176002084.adsl.alicedsl.de] has joined #go-nuts 10:50 -!- GilJ [~GilJ@zeus.ugent.be] has joined #go-nuts 10:53 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 11:03 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 11:05 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 11:10 -!- tensai_cirno [~cirno@195.19.62.212] has quit [Quit: Leaving] 11:23 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 11:25 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 11:29 -!- KBme [~KBme@2001:470:1f13:94::3] has quit [Excess Flood] 11:30 -!- foocraft [~wanas@89.211.198.113] has quit [Quit: leaving] 11:31 -!- virtualsue [~chatzilla@nat/cisco/x-fyeialfgipnkiuiv] has quit [Ping timeout: 276 seconds] 11:31 -!- KBme [~KBme@2001:470:1f13:94::3] has joined #go-nuts 11:37 -!- artefon [~thiago@189.26.238.224] has joined #go-nuts 11:43 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 11:44 -!- foocraft [~dsc@89.211.198.113] has joined #go-nuts 11:45 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 11:48 -!- hopso [~hopso@a91-152-183-181.elisa-laajakaista.fi] has joined #go-nuts 12:03 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 12:04 -!- tvw [~tv@e176002084.adsl.alicedsl.de] has quit [Remote host closed the connection] 12:05 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 12:06 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has joined #go-nuts 12:06 -!- shvntr [~shvntr@119.121.28.115] has joined #go-nuts 12:13 -!- shvntr [~shvntr@119.121.28.115] has quit [Ping timeout: 248 seconds] 12:13 -!- shvntr [~shvntr@113.84.148.30] has joined #go-nuts 12:23 -!- stalled [~stalled@unaffiliated/stalled] has quit [Quit: ...] 12:24 -!- tensorpudding [~user@99.148.205.193] has joined #go-nuts 12:37 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 12:37 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 12:39 < xyproto> marten: it may be that system load is not as meaningful on EC2, but this is just a guess. Have you tried benchmarking your program some other way? 12:40 -!- napsy [~luka@193.2.66.6] has quit [Quit: Lost terminal] 12:40 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts 12:41 -!- niemeyer [~niemeyer@189.73.142.55] has joined #go-nuts 12:42 < marten> xyproto: yes, i'm littering the code with time.Nanoseconds() statements right now :) I'm finding some mysql handling code that is responseible for much of the delays. runtime.futex is what is registered while waiting for IO? 12:42 -!- virtualsue [~chatzilla@nat/cisco/x-cgvdwybfmfbtdchi] has joined #go-nuts 12:52 -!- tvw [~tv@212.79.9.150] has joined #go-nuts 12:52 -!- skejoe [~skejoe@188.114.142.217] has joined #go-nuts 12:56 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 12:57 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 13:09 < jessta_> marten: yeah 13:10 < jessta_> note that time.Nanoseconds() is a syscall 13:15 < wrtp> jessta_: not necessarily 13:15 < wrtp> depends on the platform 13:16 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 13:17 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 13:19 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has joined #go-nuts 13:24 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Quit: Leaving.] 13:25 -!- aimxhais1e [~mxs@buffout.org] has quit [Ping timeout: 276 seconds] 13:26 -!- shvntr [~shvntr@113.84.148.30] has quit [Read error: Operation timed out] 13:26 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts 13:29 -!- shvntr [~shvntr@110.210.33.247] has joined #go-nuts 13:33 -!- GilJ_ [~GilJ@zeus.ugent.be] has joined #go-nuts 13:33 -!- shvntr [~shvntr@110.210.33.247] has quit [Ping timeout: 240 seconds] 13:36 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Read error: Connection reset by peer] 13:37 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 13:38 -!- iant [~iant@67.218.107.170] has joined #go-nuts 13:39 -!- mode/#go-nuts [+v iant] by ChanServ 13:39 -!- GilJ_ [~GilJ@zeus.ugent.be] has quit [Quit: leaving] 13:43 -!- plainhao [~plainhao@208.75.85.237] has joined #go-nuts 13:43 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 13:45 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has joined #go-nuts 13:46 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Quit: skelterjohn] 13:48 -!- aimxhaisse [~mxs@buffout.org] has joined #go-nuts 13:48 -!- shvntr [~shvntr@119.121.28.115] has joined #go-nuts 13:52 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts 13:54 -!- shvntr [~shvntr@119.121.28.115] has quit [Ping timeout: 246 seconds] 13:55 -!- shvntr [~shvntr@119.121.28.115] has joined #go-nuts 14:00 -!- shvntr [~shvntr@119.121.28.115] has quit [Ping timeout: 252 seconds] 14:07 -!- skejoe [~skejoe@188.114.142.217] has quit [Quit: Lost terminal] 14:08 < katakuna> actually time.Nanoseconds() is a syscall on any OS 14:08 < katakuna> unix or windows 14:09 < aiju> unix or windows is not any OS ;P 14:09 < katakuna> well its a syscall regardless of the os 14:10 < katakuna> time.Nanoseconds() is just one value outputted from os.Time() 14:13 < gtaylor> regardless of the OS, except when it's not unix and windows? :) 14:14 < niemeyer> gtaylor: How would you find the time without asking the OS *somehow*? 14:14 < gtaylor> os.CanHasTime? 14:14 < aiju> gtaylor: hahah 14:16 < wrtp> katakuna: i think on some systems time.Nanoseconds uses a memory-mapped register rather than invoking a syscall 14:19 < katakuna> why is there a time const for days between 1970 and 2001? 14:22 < wrtp> katakuna: for example see http://golang.org/src/pkg/runtime/linux/amd64/sys.s 14:22 < wrtp> line 43 14:22 < wrtp> it does a regular call, not a syscall 14:22 < nsf> var x = <*uint>8; var z uint8 = 5; var y = ((100500 - z) + x); 14:22 < nsf> pointer arithmetic :( 14:22 < wrtp> i think linux must map some fast-path calls into a process's address space 14:23 <+iant> yes 14:23 < wrtp> and the call will probably just read the register 14:23 <+iant> well, the memory location 14:23 < wrtp> yeah, that's what i meant 14:23 < katakuna> days1970To2001 = 31*365 + 8 < why is this a const 14:23 < wrtp> iant: thanks - you just reassured me i'm not going mad. 14:24 < katakuna> what relevance does days 1970->2011 have 14:24 < katakuna> 2001 * 14:25 < wrtp> katakuna: from a comment in the source: "2001 begins 4-, 100-, and 400-year cycles ending in a leap year" 14:25 < plexdev> http://is.gd/eKT8jl by [Adam Langley] in go/src/pkg/crypto/rsa/ -- crypto/rsa: flip the CRT code over so that it matches PKCS#1 14:25 < wrtp> 1970 is the beginning of the epoch 14:25 <+iant> it's the beginning of time 14:26 <+iant> it's based on when humans first set foot on the moon, or something of equal importance 14:26 < wrtp> wow, i was born before the beginning of time 14:26 < aiju> 1970 was chosen in the 70's 14:26 < aiju> so it was natural to choose 1970 14:26 < aiju> nothing more 14:27 -!- brad__ [98342003@gateway/web/freenode/ip.152.52.32.3] has joined #go-nuts 14:27 < brad__> what is the best way to read a really large file a line at a time in go? 14:28 < aiju> bufio 14:28 < exch> brad__: wrap the open file handle in a bufio.Reader 14:28 -!- ahihi2 [~transient@cs27123003.pp.htv.fi] has quit [Ping timeout: 260 seconds] 14:28 < exch> and then do reader.ReadBytes('\n') 14:29 < kamaji> exch: or ReadString 14:29 < brad__> thanks 14:29 < wrtp> or ReadSice('\n') if you know what you're doing and want to go as fast as possible 14:29 < wrtp> s/Sice/Slice 14:30 < kamaji> wrtp: does that work with unicode? 14:31 < kamaji> oh just bytes ok 14:31 < wrtp> kamaji: yes 14:31 < wrtp> because the utf-8 representation of newline is just the byte \n 14:31 < kamaji> I meant will it parse unicode but I keep forgetting there's not really a 'rune' type as such 14:32 < wrtp> anything that parses bytes will parse utf-8 14:32 < wrtp> kinda 14:32 < aiju> the brilliancy about UTF-8 is that it is largely ASCII compatible 14:32 < wrtp> completely ascii compatible, no? 14:32 < kamaji> it's a strict superset right? 14:33 < kamaji> yerah 14:33 < kamaji> yeah* 14:33 < nsf> I like other quality of utf-8 14:33 < nsf> that you can find a valid character from any position in a byte stream 14:33 < wrtp> synchronisability, yeah 14:33 < nsf> and then move backwards and forward 14:33 < nsf> easily 14:33 < wrtp> backwards isn't quite so easy 14:33 < aiju> quite a lot of programs don't need to be unicode aware at all 14:34 < nsf> it is as easy as forward 14:34 < nsf> wrtp: while (is_not_valid_utf8(*c)) c--; 14:34 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-176-6.clienti.tiscali.it] has joined #go-nuts 14:35 * nsf is a master of confusion 14:35 < nsf> :D 14:35 < wrtp> not quite that straightforward to get it right (i know 'cos i wrote utf8.DecodeLastRune...) 14:35 < nsf> while (!is_valid_utf8(*c)) c--; 14:36 < nsf> interesting 14:36 < wrtp> the important property of that is that strings must decode the same backwards as forwards 14:37 < wrtp> even with invalid utf8 14:37 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-166-131.clienti.tiscali.it] has quit [Ping timeout: 240 seconds] 14:37 * aiju wonders why someone even goes backwards in strings 14:37 < nsf> aiju: gocode does that 14:37 < nsf> because user transfers a cursor offset in bytes 14:38 < aiju> oh heh 14:38 < nsf> and I need to move backwards to find a completion point 14:38 < wrtp> it's often useful to go backwards in strings 14:38 < nsf> although I use my own utf8MoveBackwards 14:38 < wrtp> e.g. to find the last occurrence of something without scanning from the start 14:38 < nsf> without error checking 14:38 < nsf> as DecodeLastRune does 14:39 < wrtp> nsf: use DecodeLastRune - it's well tested 14:39 < nsf> wrtp: mine works fine on a correct input as well 14:39 < nsf> if input is incorrect I can't do anything about it anyway 14:40 < wrtp> it's good to use standard pieces of machinery when they're available. 14:40 -!- imsplitbit [~imsplitbi@64.39.4.132] has joined #go-nuts 14:40 < wrtp> always good to reduce line count. 14:40 < nsf> make a patch :) 14:41 < nsf> I mean, I don't want to change anything in gocode, it's a closed project to me 14:41 < nsf> only bugfixes 14:41 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 14:41 < wrtp> fair enough 14:41 < aiju> patching sotware like this is silly 14:41 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 14:42 < nsf> many people want generics in Go 14:42 < nsf> and when they will arrive, gocode will die :) 14:43 < nsf> do you still want generics? lol 14:44 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Client Quit] 14:44 < aiju> what is gocode after all? 14:44 < nsf> :D 14:45 < nsf> aiju: you don't need it 14:45 < nsf> it's worse than syntax highlighting 14:45 < aiju> autocompletion? 14:45 < nsf> yes 14:45 < aiju> not really worse .. it's hard to be worse than syntax highlighting 14:45 < nsf> https://github.com/nsf/gocode 14:46 -!- niemeyer_ [~niemeyer@201-11-241-2.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 14:47 < aiju> 30 ms is way too slow 14:47 < nsf> make it better 14:49 -!- niemeyer [~niemeyer@189.73.142.55] has quit [Ping timeout: 240 seconds] 14:50 < nsf> although 30ms is a lie 14:50 < nsf> at some point it became 50ms 14:51 < nsf> probably after source location information space optimization 14:53 < nsf> or something else, I don't know, just a guess 14:56 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 14:57 -!- iant [~iant@67.218.107.170] has quit [Quit: Leaving.] 15:00 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Client Quit] 15:02 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts 15:03 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 264 seconds] 15:04 < marten> nsf: looks neat! will play around with it one of these days :) 15:05 < nsf> it is neat 15:06 -!- artefon [~thiago@189.26.238.224] has quit [Quit: bye] 15:06 -!- iant [~iant@nat/google/x-fuwwivbhmyrnmpni] has joined #go-nuts 15:06 -!- mode/#go-nuts [+v iant] by ChanServ 15:07 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 15:10 < nsf> is it just me or a twitter got new web interface? 15:10 < nsf> it looks weird 15:11 < nsf> :\ 15:11 < aiju> you use twitter? 15:11 < nsf> s/a/the/ 15:11 < nsf> uhm.. 15:11 < nsf> not yet 15:12 < nsf> but I do browse it occasionally 15:12 < nsf> :) 15:12 < xyproto> I use twitter. At first I didn't get it, then I felt I got it, but didn't use it, then I felt it was pointless, but started using it. ;) 15:12 -!- iant [~iant@nat/google/x-fuwwivbhmyrnmpni] has quit [Ping timeout: 276 seconds] 15:13 < nsf> I like it as an information source without misc crap 15:13 < xyproto> I don't use the web-interface, though, only Seesmic, a nice android client 15:13 < nsf> it's like a text interface to web 15:14 < nsf> lol 15:14 < xyproto> nsf: yes, if you subscribe to informative people, the stream of information is surprisingly informative as well 15:14 < nsf> I read twitter through google reader mostly, lol 15:15 < xyproto> "themue" writes about Go some times 15:15 < xyproto> nsf: :D 15:15 < xyproto> nsf: that's not common ;) 15:15 -!- Venom_X_ [~pjacobs@66.54.185.131] has joined #go-nuts 15:16 < nsf> yeah, I follow #golang -RT 15:16 < nsf> -RT means without retweets, I don't like themn 15:16 < nsf> them* 15:16 < wrtp> i'm the same as nsf - i don't need yet another feed window 15:17 < str1ngs> I get all my stuff from this channel :P 15:18 < str1ngs> who needs twitter I say 15:18 < nsf> also reddit is nice for getting information, but I don't use it for some reason 15:18 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Ping timeout: 240 seconds] 15:19 < nsf> reddit is like a twitter + communism, lol 15:20 < skelterjohn> twitter :\ 15:20 < xyproto> skelterjohn: or identi.ca, for idealists :) 15:20 < aiju> reddit is like twitter - intelligence 15:20 < aiju> .. if that's even possible 15:20 < skelterjohn> aiju: does that statement say something about you? :) 15:20 < aiju> that i hate reddit and twitter? 15:20 < xyproto> facebook, twitter and gmail, it's all fun and games, paid for by personal information. Who can resist? 15:21 < xyproto> :P 15:21 < aiju> i actually do have a fecebook about 15:21 < aiju> *account 15:21 < xyproto> Is there a Go group on Facebook? 15:22 < aiju> yeah 15:22 < xyproto> coolness 15:22 < nsf> argh.. I hate code.google.com javascript syntax highlighter 15:22 < nsf> it's so slow on big files 15:22 < nsf> V8 won't help 15:23 < aiju> slow syntax highlighters are being turned off here even faster than normal syntax highlighters 15:23 < aiju> but nothing beats syntax highlighters which crash 15:23 < aiju> (Mathematica) 15:23 -!- piranha [~piranha@D57D1AB3.static.ziggozakelijk.nl] has quit [Quit: Computer has gone to sleep.] 15:26 -!- Paradox924X [~Paradox92@c-68-35-229-34.hsd1.fl.comcast.net] has quit [Changing host] 15:26 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has joined #go-nuts 15:26 < nsf> http://code.google.com/p/lugaru/source/browse/Source/GameTick.cpp?r=cmake 15:26 < nsf> omg lol 15:26 < nsf> line 1673 15:26 < nsf> starts function Game::Tick 15:26 -!- iant [~iant@nat/google/x-jpehbkjmqnrfhnka] has joined #go-nuts 15:26 -!- mode/#go-nuts [+v iant] by ChanServ 15:26 < nsf> try to find the end of that function 15:26 < nsf> :) 15:27 < nsf> quite a violation of a function per screen rule :) 15:28 < nsf> and this function at some points has like 20 or so indentation levels 15:28 < nsf> :D 15:29 < nsf> oh, wait since it isn't browseable because of js syntax hl 15:29 < nsf> I'll make a raw link 15:31 < nsf> http://lugaru.googlecode.com/hg/Source/GameTick.cpp?r=cmake 15:31 < nsf> here it is 15:31 < nsf> again, line 1673 :D 15:31 < nsf> it made my day 15:32 < jnwhiteh> =) Lugaru makes the rounds periodically 15:33 < nsf> http://ompldr.org/vODU2Zw/2011-04-06-213639_3028x858_scrot.png 15:33 < nsf> I mean seriously 15:34 < nsf> it doesn't fit sometimes on my dual monitor setup 15:34 < nsf> :D 15:34 < jnwhiteh> eew, shiftwidth=8 15:34 < jnwhiteh> yuck! 15:34 < nsf> how one can write code like this? 15:34 < skelterjohn> line 10989 15:34 < skelterjohn> that's the end of the function 15:34 < nsf> jnwhiteh: yes! it's nice hint that your indentation is out of control 15:34 < skelterjohn> eventually i gave up scrollign and just jumped to the next function 15:34 < nsf> skelterjohn: :D 15:35 < skelterjohn> that may be the longest function i have ever heard of 15:35 < nsf> yeah, I've seen bad code 15:35 < nsf> but that's the worst one so far 15:37 < skelterjohn> the indentation went off the right side of the window at one point 15:37 < nsf> yeah ) 15:38 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Quit: Venom_X] 15:38 < nsf> http://www.wolfire.com/lugaru 15:38 < nsf> that's the project 15:38 < skelterjohn> i dare not get into that game - it could never possibly be upgraded 15:39 < skelterjohn> how does one write a 9000 line long function? 15:39 < exch> like that 15:39 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has joined #go-nuts 15:39 < nsf> well, many people wander why some games are so buggy 15:39 < skelterjohn> how do you remember "oh that bit i was working on is 6000 lines in, i'll just scroll to that point" 15:39 < nsf> that's the answer :) 15:40 < nsf> skelterjohn: I stop scrolling when file gets as big as 500 lines 15:40 < nsf> I use vim regexp search for navigation :) 15:40 < skelterjohn> i wonder if it's developed in a sane environment, and then an obfuscator was used to make it like that 15:40 < nsf> skelterjohn: I don't think so 15:40 < nsf> the code is from hg repo 15:40 < nsf> and all the names are meaningful :) 15:41 < skelterjohn> a special obfuscator that just inlines functiones 15:41 < skelterjohn> functions 15:42 < nsf> first of all 15:42 < nsf> it's very hard to make that kind of obfuscator 15:42 < nsf> it's C++ 15:42 < nsf> and I've seen code like that in other indy game products 15:42 < nsf> not that horrible though 15:42 < nsf> but close 15:42 < nsf> take a look at gish's source code for example 15:43 < nsf> http://www.chroniclogic.com/gish.htm 15:43 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has joined #go-nuts 15:43 < nsf> it's basically written as a single .cpp file :) 15:43 -!- unofficialmvp [~dev@94-62-164-227.b.ipv4ilink.net] has left #go-nuts [] 15:43 < nsf> well, there are many of them, but they all are included into one via preprocessor 15:44 < zimsim> cant remember what it was, think maybe tcp/ip stack for some embedded atmel chip. 15:44 < zimsim> someone used goto rather then funcs 15:44 < aiju> 17:37 < skelterjohn> line 10989 15:44 < aiju> holy fucking shit 15:45 < nickbp> line 90210 15:46 < aiju> fuck, really? 15:46 < nickbp> no i have no idea what youre talking about just saying things 15:46 < aiju> this was a reference to skelterjohn and nsf's conversation 15:47 < nickbp> oic 15:47 < nickbp> yeah thats pretty awful 15:49 < nsf> aiju: take a look at the code 15:49 < nsf> http://lugaru.googlecode.com/hg/Source/GameTick.cpp?r=cmake 15:49 < nsf> just wget it 15:49 < aiju> FUCK 15:49 < nsf> it's good to see a code like this 15:50 < nsf> when you think that your code is bad 15:50 < aiju> if((animation[player[0].targetanimation].attack!=3&&animation[player[0].currentanimation].attack!=3)||player[0].skeleton.free)target=player[0].coords+player[0].currentoffset*(1-player[0].target)*player[0].scale+player[0].targetoffset*player[0].target*player[0].scale-player[0].facing*.05; 15:50 < nsf> no, _that_'s bad 15:50 < nickbp> oh god all those globals 15:50 < nickbp> big blocks of commented code 15:50 < nickbp> aaaaaaaaaaaa 15:51 < kimelto> I have to find some time to finish my go ftp package :p 15:51 < aiju> six levels of indentation 15:51 < nsf> aiju: six? there places with like 20 15:51 < aiju> but not a single goto 15:51 < nsf> there are* 15:51 < aiju> it's called structured code, gentlemen 15:51 < nsf> goto will kill a C++ code like that 15:51 < nsf> for sure 15:51 < nickbp> a better structure would be splitting this all into separate files 15:52 < nickbp> its just a grab bag of random functions 15:52 < aiju> nsf: goto usually allows removing one or two levels indentations ... 15:52 < nickbp> Screenshot next to LoadLevel 15:52 < nickbp> next to checkCollide 15:52 < nickbp> *checkcollide 15:52 < nsf> aiju: it's dangerous to use it when C++'s destructor are around 15:52 < aiju> nsf: oh hahahaha 15:53 < nsf> destructors* 15:53 < nickbp> wow this has the code for handling the options menu in it 15:53 < nickbp> which is of course a single huge function 15:54 -!- fabled [~fabled@83.145.235.194] has quit [Quit: Ex-Chat] 15:56 < nsf> and I thought my code is crap 15:56 < nsf> now I know it isn't 15:56 < nsf> :)) 15:56 < nickbp> it looks like the same funct containing the menu also handles the in-game movement 15:57 < nsf> nickbp: more like one function for all the game logic 15:57 < aiju> this is how i imagine COBOL code to be like 15:57 < aiju> just with more ALTER 15:57 < nickbp> now every time im interviewing someone who worked on games im gonna look at them funny 15:59 -!- fabled [~fabled@83.145.235.194] has joined #go-nuts 16:00 < mpl> pfff, you don't get it; games need to run fast, so he made big functions to have the thing run faster. less function calls you see ;) 16:00 < hopso> That's genious! 16:00 < mpl> isn't it? 16:00 -!- jeffreymcmanus [~jeffreymc@70-36-141-150.dsl.dynamic.sonic.net] has joined #go-nuts 16:01 < nsf> who needs functions anyway? 16:01 < nickbp> shouldve reduced the number of scope changes by keeping everything at one indent level and just using gotos everywhere 16:01 < nsf> let it all be in 'main' 16:01 < mpl> indeed 16:03 -!- awidegreen [~quassel@c-0acfe555.08-2-73746f39.cust.bredbandsbolaget.se] has joined #go-nuts 16:05 < nsf> I didn't know that looking at bad code can be encouraging 16:06 -!- marten [~marten@62.21.178.171] has quit [Quit: marten] 16:06 < hopso> I feel like I might actually be a semi-decent programmer now. :D 16:06 < nsf> yeah :) 16:06 * nsf too 16:08 -!- jscherer26 [~jscherer2@d199-74-181-32.try.wideopenwest.com] has joined #go-nuts 16:08 -!- jscherer26 [~jscherer2@d199-74-181-32.try.wideopenwest.com] has left #go-nuts [] 16:17 -!- napsy [~luka@88.200.96.18] has joined #go-nuts 16:18 -!- napsy [~luka@88.200.96.18] has quit [Client Quit] 16:18 -!- artefon [~thiago@bananal.lbd.dcc.ufmg.br] has joined #go-nuts 16:20 * wrtp has seen much worse code than that 16:21 < wrtp> i'd call that kind of code "first-order bad" 16:21 < wrtp> it's just naive, not willfully abysmal 16:21 < exch> open any perl file 16:22 < wrtp> it's when the person that has written that code starts to get "clever", that's when you have to worry 16:22 < nsf> :D 16:22 < nsf> yeah, add template metaprogramming and boost to that 16:22 < nsf> and you're doomed 16:22 < nickbp> what 16:23 < nickbp> boost roolz 16:23 < nickbp> well, some of it 16:25 -!- ShadowIce [~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has joined #go-nuts 16:25 -!- ShadowIce [~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has quit [Changing host] 16:25 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts 16:27 < hopso> I remember using boost.asio a long time ago. Got frustrated because I couldn't understand it at all. 16:28 < skelterjohn> wrtp: last night i realized that gorf didn't parse comments - and that all the comments in one of my projects are gone 16:28 -!- keithgcascio [~keithcasc@nat/google/x-pfggmkwlepgrfwtv] has joined #go-nuts 16:28 < wrtp> skelterjohn: oh fuck 16:28 < skelterjohn> :) 16:29 < hopso> Loving Go because the networking is so simple. :O 16:29 < wrtp> skelterjohn: backed up? 16:29 < skelterjohn> not a public-facing project, so there weren't really any doc-style comments 16:29 < skelterjohn> yeah, but it doesn't matter 16:29 < exch> who needs comments anyway 16:29 < skelterjohn> not gorf 16:29 -!- femtooo [~femto@95-89-249-242-dynip.superkabel.de] has joined #go-nuts 16:29 -!- femtoo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Ping timeout: 252 seconds] 16:30 < skelterjohn> actually not sure how to deal with comments and refactoring. i have to do something clever about moving the comments around, or they start appearing between random tokens 16:30 < skelterjohn> get things like 16:30 < skelterjohn> fmt//this is a commend 16:30 < skelterjohn> .Println() 16:30 < mpl> well, maybe you can turn it into a nice obfuscator :) 16:31 < skelterjohn> unfortunately the code no longer compiles when you do this 16:31 < skelterjohn> thanks to semi-colon insertion :) 16:31 < mpl> aawww 16:31 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has joined #go-nuts 16:32 < kamaji> Is there something like a public iterator interface? 16:32 < skelterjohn> like a java iterator? 16:33 < kamaji> well I found this http://golang.org/doc/go_for_cpp_programmers.html 16:33 < skelterjohn> w/r/t refactoring and comments, i was thinking of keeping track of the nodes that come before and after each comment, and then changing their positions at the end, accordingly 16:36 -!- vsayer [~vivek@c-67-170-236-166.hsd1.ca.comcast.net] has quit [Ping timeout: 252 seconds] 16:36 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has joined #go-nuts 16:40 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection] 16:40 < skelterjohn> how do i add a CL to my local go install? 16:41 < wrtp> skelterjohn: hg clpatch 9999 16:41 < skelterjohn> thanks 16:41 < skelterjohn> gonna check out the go/types package 16:41 < wrtp> skelterjohn: you could look at how gofix does it - it's essentially a refactoring engine 16:42 < wrtp> skelterjohn: go/types doesn't do much yet 16:42 -!- niemeyer_ [~niemeyer@201-11-241-2.pltce701.dsl.brasiltelecom.net.br] has quit [Quit: Leaving] 16:43 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 276 seconds] 16:43 -!- niemeyer [~niemeyer@201-11-241-2.pltce701.dsl.brasiltelecom.net.br] has joined #go-nuts 16:45 -!- crazy2be [~crazy2be@S01060012171a573b.cg.shawcable.net] has joined #go-nuts 16:45 < skelterjohn> wrtp: the only place "comment" is found in gofix source is passing parser.ParseComments... 16:45 -!- krutcha [~krutcha@remote.icron.com] has joined #go-nuts 16:46 < crazy2be> oh btw, for the := discussion yesterday, there's a bug report (for those of you who have not seen it) http://code.google.com/p/go/issues/detail?id=377&sort=-stars&colspec=ID%20Status%20Stars%20Priority%20Owner%20Reporter%20Summary 16:46 < wrtp> skelterjohn: in which case, you must be doing something wrong :-) 16:46 < skelterjohn> :\ 16:47 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Ping timeout: 276 seconds] 16:52 -!- piranha [~piranha@5ED43A0B.cm-7-5a.dynamic.ziggo.nl] has quit [Quit: Computer has gone to sleep.] 16:52 < krutcha> crazy2be: thanks for the link 16:53 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 16:54 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has joined #go-nuts 16:55 < crazy2be> i actually think the shadowing is *almost* useless, except when you want to shadow global variables 16:55 < crazy2be> so my solution would be to allow shadowing within a function scope only 16:55 < krutcha> I agree pretty much, though there are several suggestions on there to allow user control over what is/isn't shadowed explicitely. So win/win right? 16:56 < crazy2be> i suppose 16:56 < crazy2be> i've just never imagined it useful within a function 16:56 < crazy2be> never needed or intentionally used that feature 16:56 < skelterjohn> shadowing makes it easy to move code blocks around without worrying that their meanings change based on where they are 16:57 < crazy2be> skelterjohn: But it will regardless, there will be variables with different names around it 16:58 < crazy2be> and if it has to interact with those variables, something has to change 16:58 < skelterjohn> and you can be sure the ones you declare in your block will be what you think they are 16:58 < crazy2be> yes but 16:58 < crazy2be> why not put that code block in a function? 16:59 < crazy2be> i can only imagine this being useful when you have many many loops inside loops 16:59 < crazy2be> or some other case where you get too many inner scopes 16:59 < skelterjohn> because it's an if stmt and you just want to move it earlier 16:59 < crazy2be> oh, i suppose i never thought of that 16:59 -!- Natch| [~natch@c-84cce155.25-4-64736c10.cust.bredbandsbolaget.se] has quit [Quit: /(bb|[^b]{2})/] 17:00 < skelterjohn> you might also have something like 17:00 < nsf> hm, interesting proposal 17:00 < skelterjohn> if ok := foo(); ok { if ok := bar(); !ok { ... } } 17:00 < nsf> :a, b, :c = foo(); 17:00 < nsf> I like the idea 17:00 < hopso> Am I the only one who hasn't suffered from this 'bug' after finding it out? 17:00 < krutcha> nsf: thats the one I like 17:00 < skelterjohn> nsf: if it were seomthing like that, i'd prefer "a:, b, c: = foo()" 17:01 < krutcha> declare/shadow, or re-assign... explicit and obvious 17:01 < nsf> but on the other hand I like ':=' 17:01 < skelterjohn> krutcha: the only time i *ever* have a problem with it is when i accidentally shadow a named return value 17:01 < skelterjohn> i honestly think this is the only time people get tripped up 17:01 < nsf> and maybe disallowing reuse of variables in that statement is a good approach as well 17:01 < krutcha> it's a big one tho 17:01 < skelterjohn> it could be fixed by changing where the named return variable scope is 17:01 < nsf> like: 17:02 < nsf> a, err := A() 17:02 < nsf> b, err := B() // error 17:02 < nsf> currently it will reuse 'err' afaik 17:02 < skelterjohn> no 17:02 < nsf> no? 17:02 < skelterjohn> i don't believe it will 17:02 < wrtp> yes 17:02 -!- idea_squirrel [~ct2rips@178-26-73-52-dynip.superkabel.de] has joined #go-nuts 17:02 < wrtp> it will 17:02 < skelterjohn> it will? 17:02 < crazy2be> nsf: Then how do you declare b? 17:02 < wrtp> yup 17:02 < skelterjohn> i thought that'd be a compile error 17:02 -!- Project-2501 [~Marvin@dynamic-adsl-94-36-155-46.clienti.tiscali.it] has joined #go-nuts 17:02 < wrtp> err gets reused, b gets declared 17:02 < krutcha> that was a language change was't it? 17:03 < nsf> crazy2be: using var 17:03 -!- zozoR [~Morten@5634631b.rev.stofanet.dk] has joined #go-nuts 17:03 < wrtp> it's ok as long as there's at least one new var, and the type of err doesn't change 17:03 < wrtp> krutcha: no 17:03 < nsf> or well, I don't know 17:03 < wrtp> it's been there from initial release 17:03 < crazy2be> nsf: Then you have to explicitly declare it's type, so you loose the niceness of := :( 17:03 < wrtp> i think that's the most problematic part 17:03 < nsf> crazy2be: making it complex makes it less nice 17:03 < wrtp> personally, i like the :b, err = B() approach 17:04 < nsf> skelterjohn: I don't like your way a:, b, c: = looks ugly 17:04 < krutcha> honestly I can't think of a good reason having the choice to re-use or re-declare is a *bad* thing 17:04 < wrtp> then it's always obvious at a glance what variables are being redeclared 17:04 < nsf> wrtp: yeah, be to 17:04 < nsf> me* 17:04 < nsf> but then the question 17:04 < skelterjohn> nsf: i suggest it because "x: = y" has the same char order as "x := y", just different grouping into tokens 17:04 < wrtp> and you could do x.n, :err = foo.Read() 17:05 < nsf> what will happen with ':='? 17:05 < nsf> whould it be removed? 17:05 < wrtp> i'd leave := 17:05 < nsf> should* 17:05 < crazy2be> yeah 17:05 < wrtp> :a, :b, :c = x() 17:05 < wrtp> == 17:05 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 248 seconds] 17:05 < wrtp> a, b, c := x() 17:05 < nsf> yeah, so.. another form of short declaration 17:05 < nsf> in assignment statement 17:05 < skelterjohn> it would be convenient to be able to do that, yes 17:05 < krutcha> one of the other suggestions was (var a), b, (var c) :=, but it seems people find it too verbose 17:05 < wrtp> but := wouldn't allow partial redeclaration 17:05 -!- marchdown [~marchdown@46.138.173.90] has joined #go-nuts 17:05 < nsf> prefix ':' 17:05 < nsf> wrtp: yeah 17:05 < skelterjohn> and eventually := would be taken out, i'd think - don't need redundant syntax 17:06 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-176-6.clienti.tiscali.it] has quit [Ping timeout: 276 seconds] 17:06 < crazy2be> well if you changed it like that, it would break things 17:06 < nsf> skelterjohn: it's not redundant 17:06 < crazy2be> and would be a pain to fix 17:06 < crazy2be> because there's a lot of := lines in most go code 17:06 < skelterjohn> if "a, b := c" -> ":a, :b = c" in all cases, then it's sort of redundant syntax 17:06 < wrtp> crazy2be: it would be easy to change with a tool 17:06 < skelterjohn> "sugar", you might call it 17:07 < nsf> skelterjohn: it will be an alternative form of writing that, yeah 17:07 < nsf> why not? 17:07 < nsf> it's like: 17:07 < wrtp> skelterjohn: yeah, but it's the usual case, so worth a bit of sweetening 17:07 < nsf> for cond {} vs. for ;cond; {} 17:07 < nsf> or 17:07 < skelterjohn> *shrug* 17:07 < nsf> for {} vs. for ;; {} 17:07 < skelterjohn> i'm not saying i would die if both features were in there 17:07 < nsf> :) 17:08 -!- GilJ_ [~GilJ@latex.ugent.be] has joined #go-nuts 17:08 < nsf> I think I'll try that feature in my lang 17:09 < nsf> although it is a bit confusing: 17:09 < skelterjohn> I'm +1 on ":a, b = c, d" 17:09 < nsf> a, err := A() 17:09 < nsf> :b, err = B() 17:09 < hopso> I kinda like it the way it is. ":a, b, :c = f()" feels so damn weird. 17:09 < skelterjohn> the 2nd case is very useful when your func has a named return var "err os.Error" 17:09 < nsf> hopso: yeah, something tells me the same 17:09 < wrtp> hopso: i think you'd get used to it very quickly 17:10 < skelterjohn> i dislike having to do things like "var x T; x, err = foo()" 17:10 < nsf> and also note 17:10 < skelterjohn> just because i don't want to shadow err 17:10 < nsf> this problem happens only in one case 17:10 < hopso> Doesn't := default to overwriting existing variable if there are new and existing ones? 17:10 < wrtp> yeah, and var err os.Error; x.Foo, err = someFunction() 17:10 < nsf> declarizing (I call declare and initialize that way) multiple return values 17:10 < skelterjohn> := redeclares everything to its left 17:10 < hopso> Unless the scope has changed, that is? 17:10 -!- cco3-hampster [~conleyo@nat/google/x-jdlnnafegiwmospn] has joined #go-nuts 17:10 < skelterjohn> whether or not you can use a := depends on how many of the things to the left exist already 17:10 < wrtp> hopso: only in an inner scope 17:11 < nsf> how about simply changing ':=' behaviour 17:11 -!- GilJ [~GilJ@zeus.ugent.be] has quit [Ping timeout: 258 seconds] 17:11 < nsf> so it will never redeclare things 17:11 < wrtp> nsf: to what? 17:11 < nsf> even in inner scopes 17:11 < skelterjohn> boo. 17:11 < wrtp> that's the behaviour that limbo (with an identical syntax) had 17:11 < hopso> That would kinda defeat the purpose of scopes? :D 17:11 < krutcha> in the existing lang, the example listed above: 17:11 < krutcha> <nsf> a, err := A() 17:11 < krutcha> <nsf> b, err := B() // error 17:11 < krutcha> <nsf> currently it will reuse 'err' afaik 17:11 < nsf> hopso: ah, yes 17:11 < skelterjohn> hopso: you could still use var, i'm assuming 17:11 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 17:12 < wrtp> it was less confusing than the current rule though, i think 17:12 < krutcha> does the reuse only occur if the initialize was int he same block? 17:12 < wrtp> krutcha: yes 17:12 -!- petrux [~petrux@host16-224-static.53-82-b.business.telecomitalia.it] has quit [Quit: leaving] 17:12 < wrtp> and that's the main source of bugs 17:12 < krutcha> thats the stuff I hate 17:12 < hopso> skelterjohn: But that's no better than annoying-at-first := imho 17:12 < krutcha> special cases that aren't obvious 17:12 < skelterjohn> hopso: And I don't think it's a good idea to not allow := to redeclare things :) 17:12 < wrtp> func() (err os.Error) {for {n, err := foo.Read(buf); break} return } 17:13 -!- GilJ_ [~GilJ@latex.ugent.be] has quit [Quit: leaving] 17:13 < wrtp> skelterjohn: i think it *is* a good idea... if there's an alternative way of partially redeclaring variables 17:13 -!- GilJ [~GilJ@latex.ugent.be] has joined #go-nuts 17:13 < nsf> personally I don't buy the argument that ':=' is a source of bugs 17:13 < nsf> but sometimes it's annoying to write a full type in var statement 17:13 < wrtp> nsf: have you never had a bug from it? 17:13 < nsf> no 17:14 < skelterjohn> i've only had inconvenience from it, since i knew to look for shadowing 17:14 < skelterjohn> and i use "since" in the "after" rather than "because" meaning 17:14 < nsf> but gocode is full of that: 17:14 < crazy2be> i wish there was some function to tell if a file exists 17:15 < nsf> var skipped int 17:15 < nsf> file, skipped = filterOutShebang(file) 17:15 < nsf> where you need to declare one more var 17:15 < nsf> and reuse another 17:15 < nsf> I don't use ':=' when mixing these for some reason 17:15 < nsf> even though in some cases it is possible 17:15 < skelterjohn> crazy2be: if _, err := os.Stat(filename); err == nil { ... } 17:15 < skelterjohn> err will only be nil if the file exists 17:16 < krutcha> when people say "could but don't, but in some cases it's possible" when talking about which operator does what you need, that scares me 17:16 -!- GilJ_ [~GilJ@zeus.ugent.be] has joined #go-nuts 17:16 < nsf> I'm a C guy, I got used to it 17:16 < nsf> declaring vars before use 17:17 < nsf> and in C++ sometimes it's even more scary 17:17 < nsf> like: 17:17 < crazy2be> skelterjohn: that works, i suppose. But it's not very obvious, and the file may well exist but just not be readable or statable by you :/ 17:17 < nsf> std::unordered_map<std::string, decl_t*>::iterator it; 17:17 < nsf> it = ...; 17:17 < krutcha> it means if you show a line of code to a room of developers and ask what it does, you get half a room of different answers, and half a room of people scanning the spec 17:17 < nsf> :D 17:17 -!- GilJ [~GilJ@latex.ugent.be] has quit [Ping timeout: 246 seconds] 17:18 < nsf> the whole point of ':=' is automatic type inference 17:18 < nsf> it's not a source of bugs to me 17:18 < skelterjohn> crazy2be: what does it mean to not be able to stat a file? 17:18 < nsf> I don't understand this :) 17:18 < nsf> skelterjohn: if directory permissions don't allow you to do so 17:19 < skelterjohn> then as far as you can know, it doesn't exist 17:19 < nsf> yeah 17:19 < krutcha> I'm a c/c++ guy and used to operator overloading and all that, but also used to finding an explicit behavioural answer in my code, rather than in the compiler or runtime 17:19 < crazy2be> i suppose 17:19 < skelterjohn> it was a rhetorical question - if you can't stat it, it doesn't exist 17:19 < nsf> krutcha: I don't understand your complaints 17:19 < nsf> what's wrong and unobvious with my code? 17:20 < krutcha> if the benefit of := is type inference, and not shadowing/initialisation, why does it do both, but the latter sometimes but not always 17:20 < nsf> because Go has mutliple return values 17:21 < krutcha> if I see x:= y, do I have to grep the codebase for a global x (no, it won't reuse a global, got it), scan upward through the code for a locally initialized x (yes, it would reuse it) etc 17:21 < wrtp> crazy2be: if you can't stat it, how could you tell if the file exists? 17:21 < nsf> krutcha: if you have a global variable called 'x', you're in trouble 17:21 < krutcha> how is that better than: x: = y with a local block guarantee, or a compiler error if x exists. 17:21 < wrtp> nsf: the bugs i've had from it have usually been unintentionally returning a nil error. 17:22 < wrtp> because i've moved some code into an inner scope 17:22 < krutcha> er rather a compiler error if x exists in the same block already 17:22 < nsf> krutcha: I like the idea of disallowing ':=' to redeclare things 17:22 < crazy2be> wrtp: Well, i would assume stat can give you a more descriptive error message like "permission denied" rather than "does not exist" 17:22 -!- wrtp [~rog@2.97.144.60] has quit [Quit: wrtp] 17:22 < nsf> but some people want ':=' to do that 17:23 < skelterjohn> <- 17:23 < crazy2be> although you obviously can't tell that it doesn't exist if you don't have permission to read/stat it 17:23 < nsf> oops, I mean redefine 17:23 < skelterjohn> i like the ability to mix and match in the same statement 17:23 < nsf> or wait, I got confused 17:23 < nsf> you see, I don't even know what I don't like about ':=' and scope relationships 17:23 < skelterjohn> crazy2be: then inspect the error that os.Stat returns 17:23 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 260 seconds] 17:24 < krutcha> yeah, the primary case being loop variables and local errors err, err1,err2,err3 etc. I can see the usefulness of locally shadowing a name intentionally, I don't see a reason it shouldn't be possible 17:24 < skelterjohn> i don't think you should be able to redeclare a variable if it's already been declared in the same scope 17:24 < skelterjohn> you can change the meaning of code that comes later, this way 17:24 < krutcha> I want my index i to not worry about anything outside my for loop called i.. thats pretty much it 17:24 < crazy2be> skelterjohn: i have not been able to figure out how to do that 17:24 < skelterjohn> admittedly, that's not the only way you can do so 17:24 < skelterjohn> crazy2be: fmt.Println(err)? 17:25 * nsf is totally lost 17:25 < crazy2be> skelterjohn: Yes as a user i can inspect it that way, but what if i want to do something different dependent on access denied vs non-existent? 17:26 < nsf> ah, the problem with ':=' that is can reuse existing values 17:26 < nsf> it* 17:26 < nsf> that is a questionable feature for an operator called "declare and initialize" 17:26 < crazy2be> e.g. if the existance of a file corresponds to some boolean value, and i want to report an error if acces is denied, but not if it doesn't exist 17:26 < nsf> when it becomes "assign" suddenly 17:27 < krutcha> nsf: agree, then it becomes "declare and initialize, unless, or, but sometimes rather" 17:27 < nsf> yeah 17:28 < skelterjohn> crazy2be: look at the err's errno, or something? 17:28 < nsf> and it's the problem moslty of a multiple return values, hm.. 17:28 < nsf> s/a/the/ 17:28 < skelterjohn> crazy2be: i don't know off the top of my head, you'll have to do some legwork here 17:28 < nsf> interesting.. 17:29 < skelterjohn> krutcha: when you *can* use :=, its meaning is clear 17:29 < skelterjohn> it's just not always clear when it's going to be allowed 17:29 < skelterjohn> (to me) 17:29 < krutcha> except the re-use case mentioned earlier 17:30 < nsf> it's not clear when it will reuse value or not 17:30 < nsf> it will reuse it if it was declared in the same block 17:30 < nsf> and it's not what people want sometimes 17:30 < nsf> sometimes they want to reuse a value declared in another block 17:30 < nsf> like: 17:30 < nsf> a, err := A() 17:30 < nsf> if err != nil { 17:30 < nsf> b, err := B() // reuse err 17:30 < nsf> } 17:31 < nsf> but you can't do that with ':=' 17:31 -!- tensai_cirno [~cirno@77.232.15.216] has joined #go-nuts 17:31 < nsf> the behaviour "reuse the variable sometimes" is ugly 17:32 < nsf> but can't see a better solution here 17:32 < krutcha> b:, err = B()? 17:32 < krutcha> wouldn't that be obvious and intuitive? 17:32 < nsf> no, I don't like that syntax 17:32 < krutcha> well conceptually 17:32 < skelterjohn> i see - i didn't know about the reuse case 17:32 < nsf> it's an interesting idea 17:32 < skelterjohn> that is confusing. 17:32 < krutcha> :b, err = B(), or (var b), err = B(), or whatever 17:33 < nsf> but if it was awesome I'm sure Go would have it 17:33 < nsf> long time ag 17:33 < nsf> ago* 17:33 < crazy2be> lol 17:33 < nsf> skelterjohn: it's not a reuse case 17:33 < nsf> Go won't reuse 'err', but some people want it to 17:33 < crazy2be> my *favorite* thing about go is that packages seem to be well defined in their logic boundries 17:33 < skelterjohn> i wasn't responding to what you had *just* said 17:33 < nsf> ah 17:34 < nsf> ok 17:34 < skelterjohn> i was responding to something from a few min earlier - i had to test it to make sure i knew what was going on 17:34 < nsf> :D 17:34 < skelterjohn> since clearly my understanding had been flawed, previously 17:34 < crazy2be> in C++, you would have to create classes, and header files for each of those classes, and folders for classes that were associated 17:34 < crazy2be> and then you would have to maintain both the actual C++ files and the headers 17:34 < skelterjohn> er? 17:34 < nsf> in fact I like this syntax more: 17:35 < nsf> a, (b) := f1() 17:35 < skelterjohn> C++ doesn't suggest any particular filesystem organization :) 17:35 < nsf> but it looks as a hack 17:35 < crazy2be> nsf: I think that's not clear 17:35 < skelterjohn> nsf: it's not immediately clear to me which one of those doesn't get redeclared 17:35 < nsf> skelterjohn: it is clear, let me explain 17:35 < crazy2be> () is used to specify order of operations, using it there just seems wierd 17:35 < skelterjohn> it may be unambiguous 17:35 < skelterjohn> but it is not clear 17:35 < nsf> if we would allow arbitrary expressions on the left side 17:36 < nsf> something like: a.x, x := ... 17:36 < nsf> will reuse 'a.x' of course, because it's not an identifier 17:36 < krutcha> what about (x) = (y+b) + (y) 17:36 < krutcha> hehe 17:36 < nsf> and using '(x)' (paren expression) will simply force that 17:36 < nsf> like trick compiler into thinking 17:36 < nsf> that it's not an identifier but an arbitrary addresable expr 17:37 < skelterjohn> i still think the :a, b = foo() idea is the simplest and most obvious 17:37 < nsf> it adds new syntax :) 17:37 < nsf> a, (b) := foo() doesn't 17:37 < nsf> only behaviour 17:37 < crazy2be> nsf: I don't understand the logic there 17:37 -!- arun__ [~arun@i172010.upc-i.chello.nl] has joined #go-nuts 17:37 < skelterjohn> i think that point is not really relevant 17:37 < skelterjohn> it makes code look different 17:37 -!- arun_ [~arun@unaffiliated/sindian] has quit [Read error: Connection reset by peer] 17:37 < nsf> crazy2be: again, ':=' will reuse anything that looks like an expression and not an identifier alone 17:38 < krutcha> a, var b := foo() is existing syntax also, but I like the short :b or b: also 17:38 < nsf> and it will declare and initialize everything that looks like an identifier 17:38 < nsf> krutcha: no it's not 17:38 < cbeck> I've been caught a couple times by a := 0; if foo {a, b := 1, 0} 17:39 < nsf> but 17:39 < nsf> (a, b), c := foo(); 17:39 < nsf> I don't like that 17:39 < nsf> (a), (b), c := foo(); 17:39 < nsf> should be that way 17:39 < nsf> ugly, but correct 17:39 < nsf> and adding '()' is less painful that typing: var name type 17:40 < nsf> than* 17:40 < crazy2be> nsf: Eh, it doesn't really make sence (to me, anyway) to have arbitrary expressions on the lhs 17:40 < nsf> crazy2be: why? 17:40 < nsf> myStruct.fieldX, err := initX(); 17:40 < crazy2be> well what about say 17:40 < nsf> myStruct.fieldY, (err) := initY(); 17:40 < hopso> How about "(:a:), b = f()"? The smileys (: and :) tell people how fun Go is. 17:40 < crazy2be> x+1=y+2 17:40 < nsf> crazy2be: not arbitrary 17:40 < skelterjohn> if we could do "a, var b = foo()", where a was reused and b was redeclared, i would be content 17:40 < nsf> arbitrary and addressable 17:40 < krutcha> I could get used to () on the left if it was consistent in meaning 17:40 < skelterjohn> it's the same as the 17:40 < crazy2be> hopso: i like that idea :P 17:41 < skelterjohn> "a, :b = foo()", just worded differently 17:41 < krutcha> I would just read it as scoped(x) or something 17:41 < krutcha> I suppose 17:41 < nsf> krutcha: yeah, I like that consistency 17:41 < nsf> it reminds me parts of the C syntax 17:41 < nsf> which migrated to Go as well 17:41 < nsf> in expressions like: 17:41 < krutcha> I'd honestly prefer a keyword so a non go user could understand the code 17:41 < nsf> (*int)(ptr); 17:42 < nsf> using '()' to trick the right part of an expression 17:42 -!- Natch| [~natch@c-84cce155.25-4-64736c10.cust.bredbandsbolaget.se] has joined #go-nuts 17:42 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has quit [Remote host closed the connection] 17:42 < krutcha> but don't want to wind up with auto scoped(x) := f().. though it is infinitely more obvious what's going on 17:43 < crazy2be> bleh 17:43 < nsf> anyways, I like the idea: a, (b) := foo() 17:43 < nsf> no new syntax, only fairly simple semantics 17:43 < nsf> actually simpler than currently Go has 17:43 < krutcha> without the (a, b), c, (d, e) := f2() variant, yeah 17:43 < krutcha> I agree 17:44 < crazy2be> :a, b = foo() is my favorite :P 17:44 < nsf> "reuse if looks like an expression, declare and initialize if an identifier" 17:44 < nsf> simple as that 17:44 < crazy2be> it reuses existing syntax and is clear based on current conventions 17:44 -!- cafesofie [~cafesofie@ool-4a5a6ee5.dyn.optonline.net] has joined #go-nuts 17:44 < nsf> or could be other way around 17:45 < hopso> nsf: I agree, it's simple. 17:45 < nsf> "if an identifier - declare and initialize, otherwise reuse" 17:45 < nsf> :) 17:46 < nsf> that's definitely would be a first experimental feature added in my lang :) 17:46 < crazy2be> i would like the var solution if it wern't for the extra () required to be consistent with the current syntax :/ 17:47 < nsf> I don't like the idea which involves 'var' keyword in ':=' statement 17:47 < nsf> anyways, I'll sum my thought up in the comment in the issue tracker 17:47 < krutcha> I sortof like the :x stuff because you could completely do away with := 17:47 < krutcha> :x = f(), declare and initialize x, in local scope 17:48 < krutcha> x = f() assign x 17:48 < krutcha> and can be per-value on multiple returns 17:48 < krutcha> and break if you double declare in the same scope 17:49 < krutcha> just seems simple and consistent to me 17:49 < crazy2be> well another reason i like :x is that it's easier to add afterward when you forget that you have not declared a variable or w/e (e.g. for the first use of err in a function) 17:50 < crazy2be> not that much easier, but easier :P 17:50 < krutcha> and if you want to enforce type instead of infer it, you can specify the type on the left per argument 17:51 -!- virtualsue [~chatzilla@nat/cisco/x-cgvdwybfmfbtdchi] has quit [Ping timeout: 258 seconds] 17:51 < krutcha> there any issues with what I listed there? 17:53 < skelterjohn> i think the conversation so far has drained everyones critical thinking abilities - no more energy left to understand anything further 17:53 -!- ahihi2 [~transient@cs27123003.pp.htv.fi] has joined #go-nuts 17:54 < crazy2be> just energy left to argue "no mine!" 17:54 < crazy2be> lol 17:54 < crazy2be> anyway i'm off 17:54 < krutcha> haha yes, good time to fall back to a foosball table 17:54 < crazy2be> interesting conversation :) 17:55 -!- crazy2be [~crazy2be@S01060012171a573b.cg.shawcable.net] has quit [Remote host closed the connection] 17:57 < gmilleramilar> what's the status of CGO on windows? generally works? 17:59 < nsf> http://code.google.com/p/go/issues/detail?id=377 17:59 < nsf> I've summed up all my thoughts 17:59 < nsf> hopefully it's even more clear now 17:59 < nsf> see last comment :) 18:01 -!- ExtraSpice [XtraSpice@88.118.35.153] has quit [Ping timeout: 276 seconds] 18:01 < ampleyfly> yuck, the behaviour described in that first post caused me a lot of problems 18:01 < skelterjohn> gmilleramilar: generally works, i think 18:02 < skelterjohn> my gb users say that gb can do cgo on windows 18:02 < skelterjohn> though i can't verify for myself 18:02 < gmilleramilar> gb? 18:03 < skelterjohn> go-gb.googlecode.com 18:03 < skelterjohn> but gomake will replace it soon 18:03 < skelterjohn> so don't get too attached 18:05 < gmilleramilar> cool, thx 18:07 -!- zimsim [~simon@87.72.77.195] has quit [Ping timeout: 240 seconds] 18:07 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has joined #go-nuts 18:09 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 18:10 < nsf> so, what do you think about that? 18:10 < nsf> to me it's like perfectly clear of doing ':=' 18:10 < nsf> way* 18:10 < nsf> simple rules, simple behaviour, what else do you want? :) 18:12 < krutcha> if it is consistent and unambiguous, I'm all for it 18:12 < nsf> it's very simple 18:12 < nsf> and very easy to implement 18:12 < krutcha> I'm going to throw a post up suggesting := go away entirely also and see what people think 18:13 < skelterjohn> die 18:13 < nsf> haha 18:13 < krutcha> though your point on implementation is valid 18:13 < nsf> no, it's not an option 18:13 < krutcha> hehe! 18:13 < nsf> := is absolutely necessary 18:13 < plexdev> http://is.gd/TTWVO5 by [Adam Langley] in go/src/pkg/crypto/rsa/ -- crypto/rsa: add 3-prime support. 18:13 < nsf> and I don't like this one: :a, :b, c = Foo() 18:13 < nsf> because it removes the magic essence of ':=' 18:14 < nsf> when solution with paren expression trick makes it even more cool :) 18:14 < skelterjohn> feels hacky 18:14 < krutcha> but not having to pick := or = for 5 return values all at once feels more concise to me 18:15 < skelterjohn> i didn't know that "(a) = 5" would work, but apparently it does 18:15 < nsf> it's almost the same trick as for pointer dereference 18:15 < nsf> like in C 18:15 < ampleyfly> nsf: why use := with addressables if it only means reuse in that case? 18:15 < nsf> when you want to dereference a function pointer instead of a return result 18:16 < nsf> ampleyfly: it will simplify rules 18:16 -!- foocraft [~dsc@89.211.198.113] has quit [Quit: Leaving] 18:16 < nsf> because rule won't mention that 'no new variable on the left side is an error' 18:16 < nsf> variables* 18:16 < nsf> and it will be a new conceptually simple operator 18:16 < nsf> "declare and initialize or assign" 18:16 < nsf> lol 18:16 < nsf> :) 18:17 < skelterjohn> i like the idea, not sold on the syntax 18:17 < nsf> as it is now, but currently the rules are complex 18:17 < nsf> and not as flexible 18:17 < ampleyfly> but := means define, so not defining anything new is just odd 18:17 < nsf> it meant 18:17 < nsf> it will mean "define or assign" 18:18 < nsf> yeah, I agree that there is a bit of confusion 18:18 < nsf> when 18:18 < nsf> a.x, (err) = B() 18:18 < nsf> is the same as 18:18 < nsf> oops 18:18 < nsf> I mean 18:18 < nsf> a.x, (err) := B() 18:18 < nsf> is the same as: 18:18 < nsf> a.x, err = B() 18:18 < aiju> nsf: wtf really? 18:18 < ampleyfly> mmhm 18:18 < nsf> but it makes sense 18:18 < skelterjohn> aiju: he's talking about a hypothetical language change 18:18 < aiju> oic :) 18:19 < nsf> aiju: not that hypothetical for crawl, it will definitely get in into it 18:19 < nsf> and I'll see how it works 18:19 < nsf> :D 18:19 < nsf> even if Go devs don't like it 18:20 -!- arvindht_ [c2ed8e11@gateway/web/freenode/ip.194.237.142.17] has quit [Ping timeout: 252 seconds] 18:20 < aiju> heh 18:20 -!- brad__ [98342003@gateway/web/freenode/ip.152.52.32.3] has quit [Ping timeout: 252 seconds] 18:20 < aiju> go devs = iant? :D 18:20 -!- TheMue [~TheMue@p5DDF7990.dip.t-dialin.net] has joined #go-nuts 18:20 < nsf> rob and rsc mostly 18:20 < nsf> at least it feels like that they decide a lot 18:20 < aiju> did you suggest it or something? 18:20 < nsf> suggest what? 18:21 < aiju> that change 18:21 < skelterjohn> he posted it in the issue about shadowing 18:21 < nsf> I've added a small comment to an issue which is like two years old 18:21 < skelterjohn> should put it in the ML to distract people from the ridiculous types vs interfaces thread that has been going on for a few days 18:21 -!- zimsim [~simon@87.72.77.195] has joined #go-nuts 18:22 < nsf> skelterjohn: code.google.com issue tracker will send the message to all the people who starred it 18:22 < skelterjohn> yes 18:22 < skelterjohn> thanks for the tip? 18:22 < nsf> so, the comment will get where it needs to be :) 18:22 < nsf> everything else is up to "them" 18:23 < skelterjohn> i'm just suggesting the most effective way to push your idea 18:23 < nsf> I don't like the idea of pushing ideas 18:23 < aiju> the mighty rob hath spoken 18:23 < nsf> because as a developer I don't like when people send a lot of ideas to my mail 18:23 < aiju> thou shalt not question his authority 18:24 < nsf> I think there is only one true of pushing an idea 18:24 < nsf> implementing it 18:25 < skelterjohn> what does it mean, to be a "true pushing of an idea" 18:25 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has quit [Read error: Connection reset by peer] 18:25 < skelterjohn> (nothing) 18:25 < nsf> damn 18:25 < skelterjohn> more rhetorical questions, sorry 18:25 < nsf> I've missed "way" word twice 18:25 < nsf> today 18:25 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has joined #go-nuts 18:25 < nsf> one true way of course 18:25 < nsf> of pushing an idea :) 18:25 < skelterjohn> i filled in the blank 18:25 < aiju> there is only one true way of pushing an idea 18:25 < aiju> sticking a gun up the dev's head 18:25 < nsf> yeah 18:25 < nsf> lol 18:26 < aiju> wow 18:26 < aiju> this type and interface thread 18:26 < aiju> you should really point guns at those people 18:26 < skelterjohn> it got pretty silly 18:26 < nsf> I don't read golang-nuts anymore :( 18:26 < aiju> i never read it 18:26 < aiju> MLs tend to be full of idiots 18:27 < aiju> even worse than IRC 18:27 < aiju> if that's even possible 18:27 < nsf> IRC is full of trolls :) 18:27 < nsf> but some of them are rather smart 18:27 < nsf> :D 18:27 < skelterjohn> for aiju there is no "smart", only varying levels of "stupid" 18:27 < aiju> there is smart 18:27 -!- foocraft [~dsc@89.211.198.113] has joined #go-nuts 18:27 < nsf> well, one becomes a troll when he thinks he is smarter than others 18:27 < nsf> :D 18:28 < aiju> nsf: that's neither a necessary nor a sufficient condition for becoming a troll 18:28 < skelterjohn> i'm pretty sure that's not the actual definition of "troll" 18:28 < nsf> I like it 18:28 < nsf> though 18:28 < nsf> :) 18:28 < skelterjohn> nsfenglish? 18:28 < aiju> the actual definition of troll for most people is, sadly, "someone who does not share my opinion" 18:28 < aiju> and nsf's definition is far better 18:29 < aiju> WAAAARGGGHH 18:29 < aiju> i thought the thread's beginning was bad 18:29 < aiju> then i read on 18:29 < aiju> WHWAAAAQAAAAAAAA 18:29 < skelterjohn> yeah it's really bad 18:30 < skelterjohn> i want to shoot everyone posting in it 18:30 < aiju> except rob 18:30 < str1ngs> troll is someone you cant reason with. 18:30 < nsf> oh, it's nice way of reading MLs 18:30 < aiju> str1ngs: gets down to "i can't convince them" 18:30 < nsf> by reading only dev's messages 18:31 < aiju> i got called a troll for saying that dbus is crap 18:31 < nsf> dbus is crap 18:31 < nsf> :) 18:31 < aiju> the other guy just repeated his argument of "IT IS STANDARDIZED" 18:31 < aiju> "you don't have any arguments, FUCKING TROLL" 18:31 < nsf> you know, I was working at some point on an x11 panel 18:31 < nsf> called bmpanel2 18:31 < skelterjohn> a troll is someone who says something irritating to get a reaction - that's all 18:32 < skelterjohn> if you're running around saying "X is crap" 18:32 < skelterjohn> you might just be a troll =p 18:32 < nsf> and there is an ugly place in freedesktop standards 18:32 < nsf> I mean really ugly 18:32 < nsf> uglier than composite stuff 18:32 < aiju> there are non-ugly places? 18:32 < nsf> systray spec 18:32 < aiju> freedesktop is concentrated uglyness 18:32 < nsf> and KDE guys replaced it with dbus based spec 18:32 < nsf> I was like "WTF" 18:32 < nsf> can you imagine systray using dbus? and more importantly - why? 18:33 < nsf> X11 is a protocol for IPC 18:33 < nsf> why adding dbus 18:33 < nsf> well, I've finished all that mess, but secretly I still hope KDE dies 18:33 < nsf> :) 18:34 < str1ngs> nsf: troll :P 18:34 < nsf> I am 18:34 < str1ngs> nsf: no your not 18:34 < nsf> no, I really am 18:34 < nsf> :) 18:35 < aiju> haha 18:35 < str1ngs> as soon as you admit you are a troll you cease to troll :P 18:35 < nsf> you haven't heard amount of trolling I did in russian irc about C++ 18:36 < nsf> trying to convince people that C++ is crap 18:36 < jesusaurus> haha, more like c-- 18:36 < nsf> now I don't do that anymore 18:36 < nsf> it's pointless 18:36 < nsf> but you know, you can't just cut out your inner troll in a moment :) 18:36 -!- rlab_ [~Miranda@91.200.158.34] has joined #go-nuts 18:36 < nsf> it takes time 18:36 < str1ngs> nsf: see real troll would love the heck out of c++ but still go into #c++ and tell eveyone how crappy it was. 18:37 < nsf> hm.. 18:37 < nsf> it sounds like a good C++ programmer to me 18:37 < nsf> because every good C++ programmer hates C++ 18:37 < jesusaurus> haha 18:37 < nsf> but at the same time he can write very good C++ code 18:37 -!- rlab [~Miranda@91.200.158.34] has quit [Ping timeout: 246 seconds] 18:38 < nsf> but if one loves C++ 18:38 < nsf> it mostly means that one doesn't know C++ well 18:39 < nsf> it's hard to troll about something that you don't know well :) 18:39 < nsf> anyways 18:39 -!- arun__ [~arun@i172010.upc-i.chello.nl] has quit [Ping timeout: 246 seconds] 18:39 < str1ngs> back to types and structs... 18:40 < nsf> ah, I've read the first message in that long thread 18:40 < aiju> nsf: DON'T READ ANY MORE 18:40 < nsf> I've read all Rob Pike's messages as well 18:40 < aiju> you know, health insurance probably doesn't cover this 18:40 < nsf> :) 18:40 < aiju> it might be considered suicide 18:40 < nsf> actually it sounds like a nice idea 18:40 < nsf> but in a wrong place 18:40 < aiju> suicide? 18:41 < nsf> the place that really needs that kind of spec 18:41 < nsf> no, I mean structural interfaces 18:41 -!- rbraley [~rbraley@114.250.85.173] has joined #go-nuts 18:41 < skelterjohn> oy 18:41 < nsf> the place is templates 18:41 < nsf> like C++0x's concepts proposal 18:41 < aiju> wtfi a template? 18:41 < aiju> isn't that just generics? 18:41 < nsf> templates is a particular form of generics 18:41 < nsf> that I really like 18:41 < aiju> what's the difference? 18:41 < nsf> generics is a more wide term 18:42 < skelterjohn> template is a rewriting of code 18:42 < nsf> you can have generics without templates :) 18:42 < skelterjohn> generics is code that can be used in many places 18:42 < nsf> templates, yeah 18:42 < nsf> it's like smart preprocessor 18:42 < skelterjohn> templates are one way to achieve generics 18:43 < nsf> for example (weird example, don't get it to serious): 18:43 < KirkMcDonald> Templates can also do things beyond generics. 18:43 < nsf> func CompareA[T](lhs, rhs T) bool { return lhs.a > rhs.a; } 18:43 < nsf> the structural interface for T will be: 18:43 < nsf> uhm.. 18:43 < nsf> interface { a T; } 18:44 < nsf> where T is a different T 18:44 < nsf> but it's like an implicit way of saying what's required from T 18:44 < nsf> it can be a bit more explicit 18:45 < nsf> for things which compiler couldn't figure out 18:45 < KirkMcDonald> The main issue with templates in Go would be making them virtual, I think. 18:45 < KirkMcDonald> It is hard, but perhaps expected? 18:45 < nsf> I don't know about Go's future templates, I have a templates idea for my language though 18:45 < nsf> KirkMcDonald: virtual? 18:46 < KirkMcDonald> Template member functions cannot be virtual in C++. 18:46 < KirkMcDonald> (Or D, for that matter.) 18:46 < aiju> Crawl begins to sound like C++ 18:46 < nsf> aiju: no 18:46 < KirkMcDonald> nsf: In other words, a templated method in Go could not be used to satisfy an interface. 18:46 < nsf> aiju: it doesn't matter what I'm planning, there will be a C-like milestone anyway 18:46 < nsf> KirkMcDonald: yeah, well.. my idea is alike 18:47 < nsf> in my vision templates should be like macros 18:47 -!- tensai_cirno [~cirno@77.232.15.216] has quit [Read error: Operation timed out] 18:47 < aiju> you mean real macros? 18:47 < nsf> and all the templated types are anonymous 18:47 < aiju> or the really shitty broken C kind? 18:47 < nsf> all the functions and methods are inlined 18:47 < nsf> if you really want to instantiate the type or function 18:47 < nsf> you need to do so 18:47 < nsf> type X MyTemplate[int] 18:47 < skelterjohn> i just don't want to have to learn a new language 18:47 < nsf> that will make it real 18:48 < nsf> aiju: no, more like type safe preprocessor 18:48 < nsf> that works on AST level 18:48 < skelterjohn> anyone here used gofix correctly, before? 18:48 < nsf> not text 18:48 < KirkMcDonald> This is not different from C++ templates, is it? 18:48 < aiju> i.e. half shitty kind 18:48 < skelterjohn> i'm having trouble getting it to rewrite any code using -r=osopen 18:48 < nsf> KirkMcDonald: it's a lot like C++'s 18:48 < nsf> but C++ says nothing about inlining 18:48 < nsf> it's up to compiler implementation 18:48 < nsf> and that's where problems came in 18:49 < nsf> you need to figure out where to put the code 18:49 < nsf> templates may or may not bloat your code 18:49 < nsf> etc. 18:49 < nsf> it should be simply much more explicit about that kind of things 18:49 < aiju> std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>] 18:49 < nsf> for example if you know that templates are always inlined, you won't write big template crap like that 18:49 < aiju> ^-- that's my impression of C++ templates 18:50 < nsf> the only reason to use template would be to provide type safety 18:50 < aiju> C++ compilers should just echo ? 18:50 < aiju> you don't waste time trying to read the error 18:50 < nsf> for example vector requires you to know the size of an element and that's it 18:50 < nsf> all you need from templates is exactly that 18:50 < nsf> get me that size 18:51 < nsf> and then I call usual C-like functions 18:51 < nsf> (glib-like if you wish) 18:51 < nsf> I think it's a much more clear approach 18:51 -!- arun__ [~arun@i172010.upc-i.chello.nl] has joined #go-nuts 18:51 < nsf> not perfect of course, but should be practical 18:51 < nsf> at least for simple things like min max functions 18:52 < nsf> and type safe malloc :) 18:52 < nsf> x := Alloc[int](1) 18:53 < nsf> func Alloc[T](n int) *void { return malloc(sizeof(T)*n); } 18:53 < nsf> something like that 18:54 < nsf> instead of having a built-in new or make or whatever 18:54 < nsf> simple, small templates.. that's what I want 18:54 < nsf> more like an AST macros in behaviour 18:55 < nsf> that's what I'll try to implement at some point 18:55 < nsf> hopefully 19:00 < plexdev> http://is.gd/nm1Zyo by [Rob Pike] in go/src/pkg/log/ -- log: generalize getting and setting flags and prefix. 19:01 < TheMue> What are the most typical Go idioms for you? 19:02 < nsf> what is an idiom anyway? 19:02 < nsf> it's like a habit, most habit are bad, because they are habits and can be evil in some cases 19:03 < nsf> habits* 19:03 < nsf> idioms are the same 19:03 < nsf> pattern thinking must die 19:03 < skelterjohn> you say the weirdest things, sometimes 19:03 < TheMue> Ok, let's make it more concrete, positive happits. (smile) 19:03 < nsf> I do 19:03 -!- tensorpudding [~user@99.148.205.193] has quit [Read error: Connection reset by peer] 19:03 < nsf> every habit can be used to kill you 19:03 < nsf> :) 19:04 < TheMue> ever non-habbit too 19:04 < skelterjohn> only in the sense that predictability can 19:04 < skelterjohn> predictability in communication is a good thing 19:04 < skelterjohn> it makes you easier to understand 19:04 < nsf> well, you see habits and pattern thinking is a brain mechanism that does a great deal unloading most of the brain resources 19:04 < nsf> the problem with that 19:05 < nsf> if you have too much patterns in your memory 19:05 < nsf> you'll think in patterns 19:05 < nsf> trying to fit them anywhere 19:05 < skelterjohn> aka we are humans 19:05 < nsf> yeah, but it's good to keep your head clear 19:05 < nsf> to me 19:05 < skelterjohn> i have to go TA a class on scratch 19:05 < nsf> because once you've learned something 19:05 < skelterjohn> and tell them all about the patterns i know 19:05 < nsf> it's very hard to unlearn it 19:06 < nsf> although I guess some patterns make sense 19:06 < nsf> at least at the moment 19:06 < nsf> like 19:06 < nsf> for i := 0; i < size(); i++ { 19:06 < nsf> all people use 'i' as a variable name for that 19:07 < nsf> it's a habit, you don't think about choosing the right name for that variable 19:07 < nsf> it's good 19:07 < nsf> but I'm not sure about something more complex 19:07 < nsf> when in become an idiom 19:07 < nsf> especially really big idioms like emulating type inheritance 19:07 < TheMue> "what is 1 + 1?" "oh, it depends, the answer can do harm." "yep, men are trained to always think it's 2." "and that's wrong." "no." "but why can it do harm?" "people don't think anymore." ... 19:07 < nsf> or something 19:07 < TheMue> oh, how i hate those meta-discussions 19:07 < TheMue> (sigh) 19:07 < nsf> TheMue: but it's true 19:08 < nsf> most people don't even think at all 19:08 < nsf> and that's the way we learn mathematics 19:08 < nsf> no one teaches you to think 19:08 < nsf> they just show you patterns 19:08 < nsf> and it's not meta 19:08 < nsf> it's reality of education systems 19:09 < nsf> :D 19:09 < TheMue> it doesn't answer the question, it's a discussion about the question. so it's meta. 19:09 < aiju> "meta-" is a good bullshit indicator 19:09 < nsf> ok 19:09 < nsf> so.. what idioms Go has 19:09 < nsf> I don't know 19:09 < nsf> I don't think about idioms 19:09 < nsf> (boring) 19:09 < nsf> :) 19:10 < nsf> I have only one idiom, keeping the spirit of open mindness and free thinking 19:10 < nsf> if I can call it that way 19:10 < nsf> :D 19:10 < nickbp> sensing a lot of ego stroking here 19:10 < TheMue> that's a clear answer, even if I think you're also thinking in idioms (in many ways) but you don't want this to be true or you havn't yet recognized it (also meta) 19:10 < nsf> nickbp: trolls warning 19:11 < nsf> oh, I think a lot in idioms 19:11 < nsf> but I try not to 19:12 < nsf> and therefore I don't try to classify them or realize somehow, why wasting time on something that is not eternal? :) 19:12 < nsf> lol 19:12 < nsf> ok, I'm stopping my trolling session 19:12 < nsf> it becomes too much into philosophy 19:12 -!- virtualsue [~chatzilla@nat/cisco/x-ajvdnhdvvkfyiqpz] has joined #go-nuts 19:12 < TheMue> ok 19:12 < nsf> TheMue: can you give me an example of an idiom? 19:13 < nsf> what you're interesting in I mean 19:13 < nsf> maybe from other language or something 19:13 < aiju> for(i=0;i<100;i++) is an idiom 19:13 -!- m4dh4tt3r [~Adium@c-69-181-223-245.hsd1.ca.comcast.net] has joined #go-nuts 19:13 < nsf> well in Go people use slices and range for that 19:13 < nsf> in most cases 19:13 < aiju> writing idiomatic code is a cornerstone of writing readable code 19:14 < exch> unless idiomatic != readable 19:14 < nsf> and I have to agree, because most of the code writing is boring 19:14 < aiju> "a good author disregards the rules of style if necessary" 19:15 < nsf> but I can't think of any hardcore Go idioms 19:15 < nsf> I know a trick for making type hierarchies 19:15 < nsf> you can see it in go/ast lib 19:16 < nsf> via using an unique empty method 19:16 < nsf> and that's it :) 19:16 < TheMue> nsf: how would you for example distribute a stream of tasks to a limited number of goroutines? 19:17 < nsf> it's a hard question 19:17 < nsf> because when there is a concurrency 19:17 < plexdev> http://is.gd/vc0Q0p by [Russ Cox] in 2 subdirs of go/src/ -- src/pkg/Makefile: trim per-directory make output except on failure 19:17 < nsf> there are implicit parameters 19:17 < nsf> like time of execution 19:17 < plexdev> http://is.gd/RKexYZ by [Russ Cox] in go/src/pkg/ -- fix build (sorry) 19:17 < nsf> how long each task will be executed? 19:17 < aiju> haha 19:17 < nsf> what's the range? 19:17 < nsf> is it known at all? 19:17 < nsf> because it will affect the way I distribute tasks 19:17 < TheMue> execution time variing, number unknown (like in a server) 19:18 < nsf> then it should be simple 19:18 < TheMue> it is simple, yes 19:18 < nsf> keep free workers in a list 19:18 < nsf> and then when task arrives assign a task to a random worker 19:18 < nsf> remove it from the list 19:19 < nsf> when it's done move it back 19:19 < nsf> no load balancing here though 19:19 < nsf> or anything 19:19 < nsf> well, I think in terms of a single machine :) 19:19 < TheMue> yep, me too 19:20 < nsf> also there are other things like task priorities 19:20 < TheMue> another way is just haven a buffered channel for the tasks and the goroutines all reading from it. a free one takes a task in a for taks := range queue {} loop. 19:21 < nsf> well, yeah 19:21 -!- Venom_X [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit [Quit: Venom_X] 19:21 < nsf> I've just read about round-robin 19:21 < TheMue> yep, with prios it wouldn't be enough 19:21 < nsf> and I don't really understand why it exists at all 19:21 -!- jyxent [~jyxent@129.128.191.96] has quit [Ping timeout: 246 seconds] 19:22 < nsf> :) 19:22 < nsf> I mean for N workers and M tasks, N+1 task is supposed to black waiting for first worker 19:22 < nsf> block* 19:22 < nsf> kind of silly 19:22 < nsf> hm.. 19:24 < TheMue> yeah, an unblocking solution needs a self implemented queue, here channels are not enough 19:24 < nsf> anyways, I don't think that kind of tasks can be called as idioms 19:25 < nsf> idioms to me is more like a way of applying algorithms in a certain environment 19:25 < nsf> (e.g. language environment) 19:25 < nsf> of course Go uses goroutines and channels 19:25 < nsf> but since they are slow and I think it's model is broken 19:25 < nsf> :D 19:25 < nsf> I don't know 19:26 < TheMue> Gos usage of goroutines and channel? 19:26 < nsf> yeah 19:27 < nsf> goroutines require fine tuned scheduler 19:27 < nsf> channels are too abstract 19:27 < TheMue> Aha 19:27 < TheMue> And the alternative? 19:27 < steven> how are strings implemented internally? 19:27 < steven> are they like c-strings or pascal-strings? 19:27 < hopso> I just realised I haven't used channels anywhere but some random not-for-actual-use programs :O 19:27 < nsf> I know that different message queues have different implementations 19:27 < nsf> like 1 receiver 1 sender is one 19:27 < nsf> multiple receivers 1 sender is another 19:28 < nsf> 1 receiver multiple senders is another 19:28 < nsf> etc. 19:28 < nsf> TheMue: no alternatives 19:28 < hopso> steven: Pascal strings I _guess_ because strings can contain zero bytes 19:28 < nsf> hopso: something like that, yeah 19:28 < TheMue> I've worked with Erlang for 2yrs and like the way channels work instead of the one inbox per process in Erlang. 19:29 < nsf> TheMue: they do work yes, but personally I think it's hard to make them optimal 19:29 < nsf> on x86 hardware 19:29 < nsf> but I can't prove it, it's just a theory 19:30 < TheMue> For me too low-level. 19:30 < nsf> and if I'm right it's not necessary bad 19:30 < TheMue> The work pretty fine for me. 19:30 < hopso> I really should whip up a project where I could use channels without making it stupidly complex. 19:30 < nsf> but it makes them high level 19:30 < nsf> and therefore restrict usage 19:30 < TheMue> I've got my EDA hiding channel complexity and working fine. 19:31 < nsf> maybe it's ok for networked cloud kind of builds though 19:31 < nsf> I don't know 19:31 < nsf> for some reason I read more about hardcore tuning of a fixed hardware like concurrency in PS3 19:31 < nsf> etc. 19:32 < nsf> where squeezing every last hertz of it is a requirement :) 19:33 < TheMue> if I need more power I buy a bigger iron 19:33 < nsf> yeah, well it doesn't work in certain environments 19:34 < nsf> like you can't ask user to buy 10 smartphones instead of one 19:34 < nsf> because one is slow 19:34 < TheMue> as well as consoles doesn't (lol) 19:34 < nsf> and 10 connected with each other will pull this out 19:34 < nsf> yeah 19:35 < nsf> and all my frustraion about Go comes from the different understanding of "systems programming language" term 19:35 < TheMue> but using millions of mobiles for distributed computing could be a nice project 19:35 < nsf> for google, obviously, it's a language for programming software in clouds 19:35 < nsf> for me it's a language for squeezing out all the available power from the system 19:35 < TheMue> nsf: So why don't you just use assembler? 19:36 < nsf> I would use it sometimes 19:36 < TheMue> nsf: Or at least C. 19:36 < nsf> for SSE for example, asm is fine to me in some cases 19:36 <+iant> c++ can be more efficient than C in some cases 19:36 <+iant> Fortran can be more efficient than C in some other cases 19:36 < nsf> although C's intrinsics can do the job 19:36 <+iant> Even Go can be more efficient than C in some cases 19:36 < nsf> as a plus you can get register allocator for free 19:37 <+iant> there is no one answer 19:37 -!- fabled [~fabled@83.145.235.194] has quit [Quit: Ex-Chat] 19:37 < aiju> iant: LISP can be more efficient than C ... 19:37 < nsf> iant: I haven't seen a real practical evidence of that :) 19:37 < TheMue> system programming langue == langue to build systems (simple definition) 19:37 < nsf> I had an experiment some time ago 19:37 < nsf> I wrote a raytracer in C and cloned it almost directly to C++ 19:37 < nsf> no matter how I tried 19:37 < nsf> C++ was slightly slower for some reason 19:37 < aiju> system progamming language is a fucking meaningless term 19:37 < nsf> although then I compiled it with clang++ 19:38 < TheMue> (lol) 19:38 < nsf> and it was almost like gcc's C version 19:38 <+iant> C++ can be faster if you write heavily templated code 19:38 < nsf> 5% difference max 19:38 <+iant> that's why I wrote gold in C++ 19:38 <+iant> because my head would explode trying to hand roll all those templates in C 19:38 < aiju> iant: but then you have to write templated code .... 19:38 < nsf> but the only benefit templates give you is inlining, you can do inlining with C as well :) 19:38 <+iant> gold had only one goal, which was runtime performance 19:38 < nsf> but yeah 19:39 < nsf> it's easier to use C++ templates than the mix of C's preprocessor and inline functions 19:39 <+iant> right 19:39 < nsf> that's what I actually want 19:39 < nsf> a good language in the middle, not as complex as C++ and slightly more advanced than C 19:40 < nsf> :) 19:41 < gtaylor> define "advanced", though 19:41 < nsf> Go has a lot of nice syntax improvements, but GC and scheduler kills all the fun 19:41 < aiju> gtaylor: more gay functions 19:41 < nsf> gtaylor: having methods is nice 19:41 < nsf> templates probably as well 19:41 < nsf> but no operator/function overloading and some of the C's mistakes like crazy implicit conversion rules 19:42 < nsf> and of course real modules, no preprocessor 19:42 <+iant> sounds like Go without the garbage collector 19:42 < nsf> yeah, that's what I'm trying to create :) 19:42 < aiju> and without goroutines 19:42 < aiju> i.e. no fun 19:43 <+iant> it's easy to avoid goroutines in any particular program 19:43 <+iant> the garbage collector is harder to avoid, though it's to turn it off entirely 19:43 < aiju> it's easy to avoid $feature in any particular program 19:43 < gtaylor> nsf: So why do you use Go at all? 19:43 < nsf> yeah, I did some amount of Go code and almost all of my programs do not contain goroutines at all :) 19:43 < aiju> go fucking assembly 19:43 < aiju> +write 19:43 < nsf> gtaylor: I don't :) 19:43 < nsf> I use it as an inspiration an a specification basis 19:43 < aiju> he's just here to troll the shit out of us 19:44 < nsf> hehe 19:44 < nsf> formally I'm here to support gocode users, lol 19:44 < nsf> :D 19:44 < nsf> https://github.com/nsf/gocode 19:45 < nsf> ;) 19:45 < nsf> and regarding avoiding features 19:45 < nsf> most C++ programmers have to avoid features 19:46 < aiju> almost any non-trivial go code i write does contain goroutines 19:46 < nsf> but as iant pointed out 19:46 < nsf> some of them are hard to avoid 19:46 < nsf> like it's hard to mix C++'s code that uses exceptions 19:46 < nsf> and the one that doesn't 19:46 < nsf> the same with GC 19:46 < nsf> it Go will have an option that disables GC 19:46 < nsf> basically it will yield two different languages 19:47 < hopso> Gah! I need a project idea. :/ 19:47 < nsf> s/it/if/ 19:47 < gtaylor> I'm still just reading through tutorials and stuff for Go, but there is no real "exception handling", is there? 19:47 < gtaylor> It's just C-style? 19:47 < nsf> gtaylor: there is a form of exceptions 19:47 < aiju> gtaylor: there is panic/recover for "FUCK SHUTDOWN EVERYTHING" 19:47 < nsf> called panic/recover 19:47 < hopso> Return values and panic/recover for more critical stuff, I thikn. 19:47 < gtaylor> SHITSHIT FIRE ZE MISSILES 19:47 < zozoR> i like how it is called panic and recover 19:48 < nsf> the only difference that it uses function blocks 19:48 < nsf> instead of try catch blocks 19:48 < gtaylor> ok 19:48 < zozoR> and the awesome name 19:48 < zozoR> :D 19:48 < gtaylor> Seems like languages with exceptions breed controversy over what should be handled with exceptions and what shouldn't 19:48 < nsf> gtaylor: yeah 19:48 < gtaylor> Kind of glad to avoid that in this case 19:48 < nsf> and Go avoids that by saying 19:49 < nsf> that exceptions should be only used internally 19:49 < nsf> no library should expose them 19:49 < plexdev> http://is.gd/lL6Tkq by [Rob Pike] in go/src/pkg/exec/ -- exec: add a little package commentary explaining its 19:49 < gtaylor> works for me. a little more consistency is good. 19:49 < plexdev> http://is.gd/Xp3qM7 by [Russ Cox] in 2 subdirs of go/src/pkg/ -- os, syscall: refactor Unix directory parsing 19:49 < aiju> python has a nice answer too! 19:49 < nsf> e.g. errors code is a preferred way of handling errors in Go 19:49 < aiju> just use exceptions for everyting! 19:49 < gtaylor> I'm coming from Python 19:49 < nsf> panic/recover for complex cases 19:49 < aiju> including results with an odd number of digits! 19:49 < aiju> could be an error! 19:50 < aiju> i want to make a joke language where exceptions are the only way to return anything 19:50 < nsf> :) 19:50 < aiju> but i'm afraid people will take it serious 19:50 < nsf> make it and we'll see 19:52 < nsf> although I can't imagine it 19:52 < nsf> like try catch blocks everywhere? 19:52 < aiju> yeah! 19:52 < aiju> but it makes tail calls easier! 19:52 < nsf> will be horrible 19:52 < aiju> everyone loves tail calls! 19:53 * nsf sighs 19:53 < nsf> ok, enough talks for today 19:54 -!- plainhao [~plainhao@208.75.85.237] has quit [Quit: plainhao] 19:55 -!- femtooo [~femto@95-89-249-242-dynip.superkabel.de] has quit [Read error: Connection reset by peer] 19:57 < hopso> In what situations would you use C over Go? Just wondering. 19:57 < steven> when you need more library support 19:57 < steven> or when you need more control over memory management 19:57 < nsf> when GC's pause hurts 19:57 < steven> or when you need actual control over threads 19:57 < nsf> e.g. game development 19:58 < steven> (goroutines are very limited compared to threads) 19:59 < uriel> depending on your definition of 'limited' 19:59 < nsf> or if you want to be memory efficient 20:00 < uriel> threads are a huge pain in the ass, and way more expensive than goroutines 20:00 < nsf> as far as I understand no GC provides you with that option 20:00 < comex> in situations where you need to be low level :) 20:00 < uriel> like? writing an OS kernel 20:01 < nsf> if you want to write an SSE-based decoder 20:01 < nsf> SSE C's intrinsics are a better choice than asm 20:01 < nsf> than asm and Go* 20:01 < hopso> I only could think of stuff like kernel, drivers and stuff that might need inline asm. 20:01 < aiju> nothing EVER needs inline asm 20:02 < hopso> that gets huge performance gain from inline asm* 20:02 < aiju> still not right ;P 20:02 < nsf> GC hurts more for performance than the lack of asm 20:02 < aiju> you can just put the asm in a different file 20:03 < hopso> Can I? 20:03 < nsf> hopso: of course 20:03 < aiju> yeah 20:03 < nsf> parts of the Go library are written in asm 20:03 < nsf> some 'math' stuff and 'runtime' 20:03 < nsf> maybe something else 20:03 < nsf> 'syscall' for sure as well 20:03 < aiju> Plan 9 C and Go both don't have inline asm 20:04 < hopso> Oh, I must check it then. I haven't looked at go internals much. 20:07 < hopso> It could be interesting to write a compiler. I'm not guru in assembly or even general programming so I wouldn't get far. 20:08 < nsf> you don't need to know assembly for that anymore 20:08 < nsf> there is the llvm 20:08 < nsf> well and you can generate C always 20:08 < nsf> or something 20:08 < nsf> but it requires a bit of knowledge about lexing/parsing and semantic analysis :) 20:08 < aiju> generating C is boring 20:09 < nsf> I think it's a very pragmatic choice 20:09 < nsf> at least as an alternative to native code generation 20:09 < aiju> pragmatic choices are often borign 20:09 < aiju> *ng 20:09 < nsf> yeah 20:09 < nsf> :) 20:10 < hopso> I find assembly interesting so I could get some fun out of generating it myself. 20:10 < nsf> assembly is really boring :) 20:11 < nsf> although 20:11 < nsf> generating it is an interesting topic 20:11 < hopso> Yeah. 20:11 < TheMue> So poking bits into memory cells is maybe more fun? 20:11 < nsf> TheMue: it's what MMORPG players do 20:12 < hopso> I got originally got interested in assembly when I made a trainer for a game. 20:12 < nsf> juggling numbers in a database :) 20:12 < hopso> I felt like Neo in Matrix when trying to find out inner workings with debugger. :D 20:13 < nsf> I was never attracted to hacking for some reason 20:14 < zozoR> last time i played with assembler, my error messages was like "FUCK! ERROR! go figure out were in your 400 line file :D" 20:14 < hopso> Haha :D 20:15 < nsf> although I almost finished that game :) http://hax.tor.hu 20:15 < nsf> http://hax.tor.hu/stats/ 20:15 < nsf> still in top 500, lol 20:15 < nsf> 308th place 20:15 < hopso> I could never do any big programs using assembly. 20:16 < aiju> i wrote a 3000 line OS 20:16 < aiju> but then i got totally screwed and i hate working with FSs 20:19 < uriel> nsf: what 'lack of ASM' are you talking about? uhu? 20:19 < nsf> uriel: where? 20:19 < nsf> :) 20:20 < uriel> 20:02 < nsf> GC hurts more for performance than the lack of asm 20:20 < nsf> ah 20:20 < hopso> Lack of ability to use asm? 20:20 -!- tensorpudding [~user@99.148.205.193] has joined #go-nuts 20:20 < nsf> hopso | that gets huge performance gain from inline asm* 20:20 < nsf> yeah 20:20 < aiju> you can do assembly perfectly fine 20:20 < nsf> I mean asm gives less performance gains 20:21 < nsf> than the lack of GC and proper memory management 20:21 < uriel> in any case, you can use asm in Go, it just avoid the disgraceful mess that is inline asm 20:21 < plexdev> http://is.gd/pCFjly by [Albert Strasheim] in go/src/pkg/syscall/ -- syscall: Add DT_* and MADV_* constants on Linux. 20:22 < nsf> uriel: yeah, I know that 20:22 < hopso> The standard library has go parser and stuff, doesn't it? 20:23 < nsf> hopso: yes 20:23 < aiju> uriel: there is a significant cost of inline ASM due to function calls, which are slow on my VAX 11/780 20:23 < aiju> eh 20:23 < aiju> *non-inline 20:23 -!- zimsim [~simon@87.72.77.195] has quit [Remote host closed the connection] 20:24 -!- idea_squirrel [~ct2rips@178-26-73-52-dynip.superkabel.de] has quit [Quit: Verlassend] 20:24 -!- zozoR [~Morten@5634631b.rev.stofanet.dk] has quit [Remote host closed the connection] 20:24 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has quit [Quit: itrekkie] 20:24 < hopso> Why does every kind of software exist already? It kinda eats motivation to start a project. 20:25 < aiju> just stop worrying what might or might not have not been done 20:26 < hopso> I really should do that. 20:26 -!- itrekkie [~itrekkie@ip72-211-131-205.tc.ph.cox.net] has joined #go-nuts 20:27 < nsf> hopso: it's always possible to do better 20:28 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 20:29 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.4] 20:29 < hopso> Yeah. Also it probably will help me get a job in the future if I have lots of projects done even if it isn't as good as other similar project. 20:30 < hopso> Having it functional, understandable and well tested is most important, right? 20:31 < aiju> being simple is most important 20:32 < hopso> Included in understandability :) 20:33 < krutcha> hopso: definitely, also maintained, having feature growth, and managing releases amongst a sea of user complaints bugs. 20:33 < aiju> feature growth is bullshit 20:33 < aiju> feature growth is the REASON of the sea of bugs 20:34 < krutcha> experiencing feature growth and dealing with it and it's implications to the code is reality in a lot of jobs 20:34 < krutcha> and a sea of shit you won't learn in a CS project 20:35 < hopso> How about an IDE with HTML5 interface? Random thought. :D 20:35 -!- huin [~huin@91.85.185.181] has joined #go-nuts 20:35 < aiju> hopso: as an example for "sea of shit"? 20:36 < aiju> yeah, good idea 20:36 -!- artefon [~thiago@bananal.lbd.dcc.ufmg.br] has quit [Quit: bye] 20:36 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has joined #go-nuts 20:36 < hopso> As an random project to do out of boredom. 20:37 < TheMue> hopso: Build a self learning system for discovering and deescalating troll fights in chats. 20:38 < aiju> TheMue: just kick everyone mentioning C++ 20:38 < TheMue> hopso: So if A and B are in a troll fight your appl C would listen and make deescalating statements so that both, A and B, are happy. 20:38 < aiju> the-language-which-can't-be-called 20:38 < TheMue> aiju: (rofl) 20:39 < TheMue> aiju: The easy way, that's not fair. 20:41 < hopso> html ui is annoying to create 20:50 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has joined #go-nuts 20:50 -!- arun__ [~arun@i172010.upc-i.chello.nl] has quit [Read error: Connection reset by peer] 20:50 -!- arun_ [~arun@unaffiliated/sindian] has joined #go-nuts 20:54 -!- jyxent [~jyxent@129.128.191.96] has quit [Read error: Connection reset by peer] 20:54 -!- nsfx [~nsfx@pool-96-225-70-167.nwrknj.fios.verizon.net] has quit [Ping timeout: 260 seconds] 20:58 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 21:01 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has quit [Ping timeout: 260 seconds] 21:02 -!- jyxent [~jyxent@129.128.191.96] has quit [Read error: Operation timed out] 21:05 -!- nsfx [~nsfx@pool-96-225-70-167.nwrknj.fios.verizon.net] has joined #go-nuts 21:07 -!- vsayer [~vivek@2001:470:1f04:1a6b:21a:6bff:fe35:d2a5] has quit [Read error: Operation timed out] 21:12 -!- artefon [~thiago@189.26.238.224] has joined #go-nuts 21:14 -!- crazy2be [~crazy2be@d209-89-248-73.abhsia.telus.net] has quit [Remote host closed the connection] 21:21 -!- huin [~huin@91.85.185.181] has quit [Quit: leaving] 21:31 -!- jyxent [~jyxent@129.128.191.96] has joined #go-nuts 21:33 < skelterjohn> hopso: I was experimenting with that 21:33 < skelterjohn> too much trouble for me 21:33 < skelterjohn> but i'm not an html5/js expert 21:34 < skelterjohn> i'd really like a nice portable set of UI widgets for go 21:34 < hopso> jQuery UI could allow nice gui if it wouldn't be so much trouble. 21:34 < skelterjohn> where the installer doesn't have in its installation instructions "install these other things too" 21:34 < skelterjohn> I was using jquery ui 21:35 < skelterjohn> i mean, it's certainly is a workable idea 21:35 < skelterjohn> but too much trouble for me 21:35 -!- cco3-hampster [~conleyo@nat/google/x-jdlnnafegiwmospn] has quit [Quit: Leaving.] 21:35 < skelterjohn> and too much of the effort was js and CSS 21:35 < hopso> Do you have any code I could examine and build upon? 21:36 < skelterjohn> sure, but i don't want to support ot 21:36 < skelterjohn> ot = it 21:36 < skelterjohn> github.com/skelterjohn/gbide 21:36 < skelterjohn> requires gb O:-) 21:38 < exch> here's another using dojo instead of jquery https://github.com/jteeuwen/mpwc 21:38 < skelterjohn> oh you're working on an ide too? 21:39 < hopso> Yeah 21:40 -!- awidegreen [~quassel@c-0acfe555.08-2-73746f39.cust.bredbandsbolaget.se] has quit [Remote host closed the connection] 21:40 < hopso> The amount of css/js/html is annoying. 21:40 -!- imsplitbit [~imsplitbi@64.39.4.132] has quit [Quit: Bye!] 21:48 -!- leonod [leonod@c83-249-205-28.bredband.comhem.se] has joined #go-nuts 21:50 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit: Verlassend] 21:51 -!- lmoura_ [~lauromour@187.113.79.138] has quit [Read error: Connection reset by peer] 21:51 -!- tgall_foo [~tgall@206.9.88.154] has quit [Remote host closed the connection] 21:52 -!- tgall_foo [~tgall@206.9.88.154] has joined #go-nuts 21:52 -!- lmoura_ [~lauromour@186.215.206.130] has joined #go-nuts 21:52 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn] 21:53 < plexdev> http://is.gd/0H3GvF by [Russ Cox] in 2 subdirs of go/ -- syscall: add Mmap, Munmap on Linux, FreeBSD, OS X 21:56 -!- virtualsue [~chatzilla@nat/cisco/x-ajvdnhdvvkfyiqpz] has quit [Ping timeout: 264 seconds] 21:58 -!- gtaylor [~gtaylor@99-126-136-139.lightspeed.gnvlsc.sbcglobal.net] has quit [Quit: gtaylor] 21:58 -!- rlab_ [~Miranda@91.200.158.34] has quit [Ping timeout: 260 seconds] 22:03 -!- dreadlorde [~dreadlord@c-24-11-39-160.hsd1.mi.comcast.net] has quit [Ping timeout: 248 seconds] 22:04 -!- Natch| [~natch@c-84cce155.25-4-64736c10.cust.bredbandsbolaget.se] has quit [Quit: /(bb|[^b]{2})/] 22:06 -!- steven [~steven@209.20.91.86] has quit [Quit: leaving] 22:15 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts 22:18 -!- TheMue [~TheMue@p5DDF7990.dip.t-dialin.net] has quit [Quit: TheMue] 22:26 -!- kamaji [~kamaji@cpc2-aztw22-2-0-cust775.aztw.cable.virginmedia.com] has quit [Quit: leaving] 22:27 < mpl> hmm I've just realized there are no enums. what the common idiom to use instead? consts ? 22:28 < krutcha> yeah, consts with the iota enumerator thingy 22:29 < krutcha> like here: http://golang.org/doc/effective_go.html#constants 22:30 < mpl> kthx 22:31 < krutcha> or better yet: http://golang.org/doc/go_spec.html#Iota 22:32 < mpl> yea, got it. 22:33 < hopso> Oh god, I'm dying inside a bit by bit. css/js/html just isn't my thing. 22:35 < justinlilly> hopso: what's your issue? 22:35 < mpl> hopso: I think I'd trade your css/js/html for my c++ these days... 22:40 < hopso> justinlilly: Just that I don't have much experience, I have no design skills and I'd rather focus on Go code than css/js. 22:41 < justinlilly> hopso: what is it you're making? 22:42 < hopso> Ide with html interface 22:42 * justinlilly wishes you luck ;) 22:44 < hopso> Maybe I should just focus on making a package that generates html with gui toolkit-like api? 22:44 < hopso> And happily have ide as side product. :D 22:45 * justinlilly is fuming at GWT atm, so withholds his comments. :) 22:46 < hopso> :D 22:48 -!- arun_ [~arun@unaffiliated/sindian] has quit [Read error: Connection reset by peer] 22:52 -!- Natch| [~natch@c-84cce155.25-4-64736c10.cust.bredbandsbolaget.se] has joined #go-nuts 22:53 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts 22:55 -!- joelkronander [~joelkrona@c-bf2fe253.617-1-64736c22.cust.bredbandsbolaget.se] has joined #go-nuts 22:59 -!- virtualsue [~chatzilla@nat/cisco/x-nsuweqcslgilredp] has joined #go-nuts 23:06 -!- arun_ [~arun@unaffiliated/sindian] has joined #go-nuts 23:12 -!- virtualsue [~chatzilla@nat/cisco/x-nsuweqcslgilredp] has quit [Ping timeout: 240 seconds] 23:13 -!- dosade [~afhawe@210.11.145.16] has left #go-nuts ["leaf"] 23:15 -!- leonod [leonod@c83-249-205-28.bredband.comhem.se] has quit [] 23:16 -!- krutcha [~krutcha@remote.icron.com] has quit [Quit: Leaving] 23:18 -!- Tuller [~tuller@c-68-33-63-208.hsd1.va.comcast.net] has joined #go-nuts 23:19 -!- virtualsue [~chatzilla@cpc3-haye15-0-0-cust450.haye.cable.virginmedia.com] has joined #go-nuts 23:19 -!- virtualsue [~chatzilla@cpc3-haye15-0-0-cust450.haye.cable.virginmedia.com] has quit [Client Quit] 23:24 -!- iant [~iant@nat/google/x-jpehbkjmqnrfhnka] has quit [Ping timeout: 248 seconds] 23:25 -!- Tuller [~tuller@c-68-33-63-208.hsd1.va.comcast.net] has quit [Quit: Computer has gone to sleep.] 23:28 -!- jgonzalez [~jgonzalez@173-14-137-134-NewEngland.hfc.comcastbusiness.net] has quit [Ping timeout: 252 seconds] 23:29 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 23:33 < hopso> I give up with this css/html/js stuff. Not my thing. 23:33 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has quit [Client Quit] 23:40 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org] 23:41 -!- skelterjohn [~jasmuth@c-68-46-33-145.hsd1.nj.comcast.net] has joined #go-nuts 23:42 < KirkMcDonald> The web sucks 23:42 < KirkMcDonald> . 23:43 -!- dfc [~dfc@eth59-167-133-99.static.internode.on.net] has joined #go-nuts 23:44 < skelterjohn> hopso: that was fast :) 23:44 < justinlilly> I'm sure the web is just a fad. You can let this one go without learning about it. It'll die out sooner or later. 23:44 < justinlilly> ^_- 23:44 < dforsyth> pfffft, internet 23:45 < dforsyth> that is so 2009 23:45 < justinlilly> then it s/internet/cloud/ 23:46 < dforsyth> nah dude, its all about apps now 23:46 < hopso> skelterjohn: Yep, I'll just wait for a simple cross-platform gui package to appear. 23:46 < dforsyth> apps on your phone 23:47 -!- iant [~iant@nat/google/x-bfieoxdgjeooqvvg] has joined #go-nuts 23:47 -!- mode/#go-nuts [+v iant] by ChanServ 23:48 -!- iant1 [~iant@67.218.107.170] has joined #go-nuts 23:51 -!- iant [~iant@nat/google/x-bfieoxdgjeooqvvg] has quit [Ping timeout: 252 seconds] 23:55 -!- Adys [~Adys@unaffiliated/adys] has quit [Remote host closed the connection] 23:59 -!- l00t [~i-i3id3r_@189.105.7.59] has quit [Ping timeout: 252 seconds] --- Log closed Thu Apr 07 00:00:50 2011