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

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