drbrain changed the topic of #rubygems to: RubyGems 2.0.2: http://bit.ly/rubygems-2-0-2 – Latest status: http://twitter.com/rubygems_status and http://status.rubygems.org
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
crandquist has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
baburdick has joined #rubygems
havenwood has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
tekin has quit [Quit: Computer has gone to sleep.]
charliesome has joined #rubygems
havenwood has quit [Ping timeout: 245 seconds]
hemanth has joined #rubygems
bdrewery_ has joined #rubygems
vertis has joined #rubygems
bdrewery has quit [Ping timeout: 248 seconds]
bdrewery_ is now known as bdrewery
adkron has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
adkron has quit [Ping timeout: 276 seconds]
baburdick has joined #rubygems
ckelly has quit [Quit: Leaving...]
havenwood has joined #rubygems
huoxito has joined #rubygems
baburdick has quit [Ping timeout: 264 seconds]
havenwood has quit [Ping timeout: 276 seconds]
cowboyd has joined #rubygems
cowboyd has quit [Remote host closed the connection]
cowboyd has joined #rubygems
cowboyd has quit [Remote host closed the connection]
ckrailo has joined #rubygems
reset has joined #rubygems
baburdick has joined #rubygems
hemanth has quit [Quit: This computer has gone to sleep]
baburdick has quit [Ping timeout: 248 seconds]
baburdick has joined #rubygems
havenwood has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
hahuang65 has joined #rubygems
Emily is now known as EmilyAFK
baburdick has joined #rubygems
graphex has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
indirect has quit [Ping timeout: 252 seconds]
graphex_ has quit [Ping timeout: 248 seconds]
indirect has joined #rubygems
EmilyAFK is now known as Emily
nirvdrum has quit [Ping timeout: 248 seconds]
havenwood has quit [Remote host closed the connection]
ckelly has joined #rubygems
ckelly has quit [Client Quit]
charliesome has quit [Quit: Textual IRC Client: www.textualapp.com]
fromonesrc has quit []
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
ckelly has joined #rubygems
reset has quit [Quit: Linkinus - http://linkinus.com]
ckelly has quit [Client Quit]
baburdick has joined #rubygems
bhaak has quit [Ping timeout: 260 seconds]
bhaak has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
whit537 has quit [Quit: whit537]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
ckrailo has quit [Quit: Computer has gone to sleep.]
kgrz has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
crandquist has quit [Ping timeout: 264 seconds]
crandquist has joined #rubygems
Emily is now known as EmilyAFK
baburdick has joined #rubygems
vertis has quit [Quit: Leaving.]
baburdick has quit [Ping timeout: 248 seconds]
kgrz has quit [Ping timeout: 240 seconds]
kgrz has joined #rubygems
ckelly has joined #rubygems
stevenharman has quit [Read error: Connection reset by peer]
nirvdrum has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
yerhot has joined #rubygems
yerhot has quit [Remote host closed the connection]
huoxito has quit [Quit: Leaving]
EmilyAFK is now known as Emily
crandquist has quit [Read error: Connection reset by peer]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
Emily is now known as EmilyAFK
nirvdrum has quit [Ping timeout: 248 seconds]
vertis has joined #rubygems
vertis1 has joined #rubygems
vertis has quit [Read error: Connection reset by peer]
kgrz has quit [Ping timeout: 240 seconds]
mockra has quit [Remote host closed the connection]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
kgrz has joined #rubygems
mockra has joined #rubygems
mockra has quit [Ping timeout: 248 seconds]
yerhot has joined #rubygems
baburdick has joined #rubygems
yerhot has quit [Ping timeout: 245 seconds]
baburdick has quit [Ping timeout: 264 seconds]
kgrz has quit [Ping timeout: 260 seconds]
mockra has joined #rubygems
tbuehlmann has joined #rubygems
mockra has quit [Ping timeout: 260 seconds]
ckelly has quit [Read error: Connection reset by peer]
ckelly has joined #rubygems
Guest85414 has quit [Ping timeout: 245 seconds]
gazoombo has quit [Ping timeout: 240 seconds]
alup_ has quit [Ping timeout: 245 seconds]
thbishop has quit [Ping timeout: 245 seconds]
alup_ has joined #rubygems
<tbuehlmann> ugh, encoding foo at the author name at https://rubygems.org/gems/sinatra-kittens
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 264 seconds]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
ckelly has quit [Quit: Leaving...]
charliesome has joined #rubygems
mockra has joined #rubygems
mockra has quit [Ping timeout: 264 seconds]
dangerousdave has joined #rubygems
tekin has joined #rubygems
lsegal has quit [Quit: Quit: Quit: Quit: Stack Overflow.]
tekin has quit [Quit: Computer has gone to sleep.]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
mockra has joined #rubygems
baburdick has joined #rubygems
thbishop has joined #rubygems
Guest85414 has joined #rubygems
gazoombo has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
mockra has quit [Ping timeout: 264 seconds]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
dangerousdave has quit [Read error: Connection reset by peer]
dangerousdave has joined #rubygems
vertis has joined #rubygems
vertis1 has quit [Ping timeout: 256 seconds]
vertis has quit [Ping timeout: 256 seconds]
vertis has joined #rubygems
mockra has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
mockra has quit [Ping timeout: 248 seconds]
dangerousdave has quit [Read error: Connection reset by peer]
dangerousdave has joined #rubygems
baburdick has joined #rubygems
kgrz has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
dangerousdave has quit [Read error: Connection reset by peer]
Dave has joined #rubygems
Dave is now known as Guest15762
baburdick has joined #rubygems
Guest15762 has quit [Read error: Connection reset by peer]
dangerousdave has joined #rubygems
baburdick has quit [Ping timeout: 260 seconds]
mockra has joined #rubygems
mockra has quit [Ping timeout: 245 seconds]
adkron_ has joined #rubygems
charliesome has quit [Quit: Textual IRC Client: www.textualapp.com]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 264 seconds]
<v2px> /go lo
adkron_ has quit [Ping timeout: 264 seconds]
ckelly has joined #rubygems
dangerousdave has quit [Read error: Connection reset by peer]
mockra has joined #rubygems
mockra has quit [Ping timeout: 250 seconds]
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
tekin has joined #rubygems
havenwood has joined #rubygems
ckelly has quit [Quit: Leaving...]
ckelly has joined #rubygems
ckelly has quit [Quit: Leaving...]
ckelly has joined #rubygems
ckelly has quit [Client Quit]
baburdick has joined #rubygems
mockra has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
mockra has quit [Ping timeout: 248 seconds]
ckelly has joined #rubygems
vertis1 has joined #rubygems
vertis has quit [Ping timeout: 255 seconds]
mockra has joined #rubygems
Freaky has quit [Quit: Changing server]
mockra has quit [Remote host closed the connection]
whit537 has joined #rubygems
baburdick has joined #rubygems
mockra has joined #rubygems
baburdick has quit [Ping timeout: 248 seconds]
ckelly has quit [Quit: Leaving...]
mockra has quit [Ping timeout: 245 seconds]
tbuehlmann has quit []
whit537 has quit [Quit: whit537]
unsay_ has joined #rubygems
unsay_ has quit [Client Quit]
nirvdrum has joined #rubygems
zzak_ is now known as zzak
nirvdrum has quit [Ping timeout: 248 seconds]
baburdick has joined #rubygems
vertis has joined #rubygems
vertis1 has quit [Ping timeout: 250 seconds]
baburdick has quit [Ping timeout: 264 seconds]
vertis1 has joined #rubygems
vertis has quit [Ping timeout: 256 seconds]
stevenharman has joined #rubygems
markalanevans has quit [Quit: markalanevans]
markalanevans has joined #rubygems
hltbra has joined #rubygems
dvu has quit [Ping timeout: 248 seconds]
baburdick has joined #rubygems
mockra has joined #rubygems
tekin has quit [Quit: Computer has gone to sleep.]
mootpointer has joined #rubygems
tekin has joined #rubygems
kgrz has quit [Quit: Computer has gone to sleep.]
baburdick has quit [Ping timeout: 248 seconds]
mockra has quit [Ping timeout: 264 seconds]
jcaudle has joined #rubygems
ddd__ has joined #rubygems
ddd has quit [Ping timeout: 245 seconds]
ckelly has joined #rubygems
ddd has joined #rubygems
ddd__ has quit [Ping timeout: 245 seconds]
cowboyd has joined #rubygems
mootpointer has quit [Quit: Computer has gone to sleep.]
jcaudle has quit [Quit: jcaudle]
jcaudle has joined #rubygems
hakunin_ is now known as hakunin
jcaudle has quit [Client Quit]
jcaudle has joined #rubygems
EmilyAFK is now known as Emily
baburdick has joined #rubygems
mockra has joined #rubygems
baburdick has quit [Ping timeout: 264 seconds]
mockra has quit [Ping timeout: 264 seconds]
cowboyd has quit [Remote host closed the connection]
whit537 has joined #rubygems
mootpointer has joined #rubygems
swills has joined #rubygems
<swills> Invalid gemspec in [builder-3.2.0.gemspec]: builder-3.2.0.gemspec:1: syntax error, unexpected tLABEL
<swills> --- !ruby/object:Gem::Specification
<swills> any ideas?
<Defiler> well, there shouldn't be YAML gemspecs in the world anymore
<Defiler> but that's the latest builder, right?
<swills> yep
tarcieri has joined #rubygems
<tarcieri> ohai
<tarcieri> uhh
<tarcieri> has anyone else noticed any problems with JRuby FFI and RubyGems 2.0?
<tarcieri> I'm getting this now:
whit537 has quit [Quit: whit537]
<tarcieri> LoadError: no such file to load -- ffi
<Defiler> honestly that builder gemspec from upstream looks sketchy to me
<Defiler> see how it has such a minimal body in that 'specification_version' block?
<swills> yeah
<Defiler> I guess he uses some horrible rake task to build gemspecs, since he doesn't have one checked in
<swills> yep
<swills> and his rake task calls rvm to find a gem dir
<swills> so if you're not using rvm you can't build it
<Defiler> I don't use Jim's code myself unless I'm forced to but builder is pretty ubiquitous
<Defiler> I'm not sure what caused it, but deleting that file, uninstalling it, and reinstalling it should work
<Defiler> you can add ':verbose: really' and ':backtrace: true' to your .gemrc and it should point you at the proper directories more readily
<swills> sorry, i'm not following you
<swills> what do you mean proper directories?
baburdick has joined #rubygems
<swills> also, i see this in other places
<swills> Invalid gemspec in [coffee-script-source-1.6.1.gemspec]: coffee-script-source-1.6.1.gemspec:1: syntax error, unexpected tLABEL
<swills> --- !ruby/object:Gem::Specification
<tarcieri> wow, this is jacked
<swills> also, i don't have these issues with gem 1.8.x, only 2.0.x
<swills> Invalid gemspec in [sass-3.2.7.gemspec]: sass-3.2.7.gemspec:1: syntax error, unexpected tLABEL
<swills> --- !ruby/object:Gem::Specification
<swills> just a few examples...
ckelly has quit [Quit: Leaving...]
jcaudle has quit [Quit: jcaudle]
baburdick has quit [Ping timeout: 248 seconds]
<swills> i've even tried gem build --force but it still complains about the invalid gemspec
<swills> --force skip validation of the spec
<raggi> do you have an odd $LANG ?
<swills> LANG is not set.
jcaudle has joined #rubygems
mootpointer has quit [Quit: Computer has gone to sleep.]
<swills> setting LANG didn't help. thanks tho.
<raggi> is this jruby you're running on?
<swills> no
<raggi> what ruby version?
<swills> 2.0
<swills> same thing happens with 1.9
<swills> 1.8 fails slightly differently tho
<swills> Invalid gemspec in [builder-3.2.0.gemspec]: compile error
<swills> builder-3.2.0.gemspec:1: syntax error, unexpected tSYMBEG, expecting kDO or '{' or '('
<swills> this is all with gem 2.0
<swills> with gem 1.8.x, no issues.
jcaudle has quit [Client Quit]
<Defiler> interesting
<raggi> sorry, debugging multiple things at the same time
<raggi> having trouble replicating
<Defiler> swills: can you repeat for my benefit the exact versions of ruby and rubygems you're running?
<Defiler> I want to try to get into the same state.. and are you using rvm or rbenv or etc?
<swills> i'm not using rvm or rbenv
<Defiler> if you wanted to gist up the output of 'gem env' that would say it all I guess
<swills> i'm using rubygems 2.0.2
<swills> i'm using ruby 2.0.0p0
<swills> i've also tried ruby 1.9 and 1.8
<swills> like i said, it fails there too
<swills> the common factor is rubygems 2.0.2
<swills> note that I'm calling gem build, not gem install.
mockra has joined #rubygems
<raggi> swills: what does this output: ruby -e 'p YAML.name' ?
mockra has quit [Ping timeout: 245 seconds]
<swills> -e:1:in `<main>': uninitialized constant YAML (NameError)
cowboyd has joined #rubygems
<swills> # ruby -ryaml -e 'p YAML.name'
<swills> "Psych"
lsegal has joined #rubygems
baburdick has joined #rubygems
baburdick has quit [Ping timeout: 240 seconds]
whit537 has joined #rubygems
<raggi> ok, that seems fine
<raggi> swills: does this happen fro all gems or jsut specific ones?
whit537 has quit [Client Quit]
<swills> just specific ones
<raggi> ok, wherea re you getting the builder gemspec from?
<raggi> is there somethign not rvm coupled that i can replicate with
<swills> sure, try rack
<swills> i'm getting the gemspec from the gem file
nirvdrum has joined #rubygems
<raggi> oh
<raggi> heh
<raggi> why not use the ruby gemspec?
<swills> where?
<raggi> oh
<raggi> hahaha
<raggi> haha
<raggi> man i feel dumb
<raggi> so you're expecting gem build to accept yaml files?
<raggi> it expects ruby files
<raggi> tLABEL, tSYMBEG are ruby syntax errors
<raggi> not yaml syntax errors
<swills> ok, makes sense
<swills> so why did this work so well before rubygem 2.0?
<raggi> heh
<raggi> ok, so gem < 2.0 seems to accept yaml
<swills> yeah, i just pulled the gemspec out of the gem, built with gem build whatever.gemspec
kojul has joined #rubygems
dvu has joined #rubygems
<raggi> no longer supported in master
<swills> ok
<raggi> swills: if you `open('somegem.gemspec', 'w+:utf-8') { |io| io.write YAML.load(metadata).to_ruby }`, you'll be able to build wiht that
<kojul> any idea why on 2.0.2 install, I get an invalid byte sequence in US-ASCII error originating from like 1072 of History.txt?
<swills> raggi: thanks, that's very helpful
<swills> kojul: set LANG and see if that helps?
<swills> raggi: is there a different file I should be using tho?
Elhu has joined #rubygems
Elhu has quit [Client Quit]
mockra has joined #rubygems
havenwood has quit [Remote host closed the connection]
<raggi> swills: metadata is fine, that's the only gemspec you'll find generally inside a .gem file
crandquist has joined #rubygems
<raggi> swills: gem files aren't really designed to be round-tripped with gem build
<kojul> swills: set lang to what? I set it to en_US.utf8 and I get an invalid byte sequence in UTF-8.
<raggi> swills: out of interest, what's your use case?
<swills> raggi: i'm working on packaging gems in FreeBSD
<raggi> swills: ah right, why do you need to rebuild them?
<swills> raggi: we have a limit that we can only install one version of something at a time... so we have to be able to patch gems to fix version conflicts on occasion. the way we do that is extract things, patch then build via gem build
<swills> so, am i basically working around gems that haven't been converted to a new format?
<raggi> no, gem build is different form the unpack process
<raggi> gems are always built from ruby gemspecs
<raggi> these days
<raggi> but the yaml format is used for transport
<swills> sorry, i don't get what you mean
<raggi> (as it was once deemed "more safe")
<raggi> there is no new format
<swills> how is gem build different?
<raggi> gem build is a development process
mockra has quit [Ping timeout: 245 seconds]
<swills> so gem unpack then gem build is different than gem install
<raggi> gem unpack doesn't give you all the data you need to gem build
<raggi> gem unpack only extracts data.tar.gz into a directory
<swills> right, i also have a step to get the gemspec out of the metadata
yfeldblum has joined #rubygems
<swills> hmm, i see
<swills> it looks like gem unpack behaves differently in 2.0
<raggi> it does?
<swills> actually, no i'm confused, i was misremembering something i think
<swills> basically, i do a gem unpack
<swills> then untar the gem to get the metadata and pull the gemspec out of that
prognostikos has left #rubygems [#rubygems]
<raggi> yeah
<swills> but the gemspec i'm getting is yaml
<swills> not ruby
<raggi> just run that gemspec through the above, and you''l get somethign you can build
<swills> ok
<swills> i guess i'm trying to figure out why the gemspec i'm getting is yaml and not ruby
<raggi> it always is in teh .gem files
<raggi> for historical reasons
<raggi> but almost no one uses yaml format for development
<raggi> as it's less practical
<swills> histerical raisins!
kojul has quit [Quit: kojul]
<swills> hysterical raisins even
<swills> so if that's the case, why did gem lose the ability to use that gemspec?
Emily is now known as EmilyAFK
EmilyAFK is now known as Emily
<raggi> swills: i'm not sure, probably just to simplify the code, and under the assumption no one was using it
PawelPacana has joined #rubygems
<swills> ok
<swills> that takes me back to why the two are differen tho
<swills> different
Emily is now known as EmilyAFK
<raggi> swills: it's a design decision before my time
<raggi> swills: it's likely that the yaml metadata format was seen as being more safe
<raggi> swills: but i'm not sure, i wasn't there
<swills> ok
<swills> trying to make that conversion thing work
<swills> /usr/bin/tar -xOzf /tmp/distfiles/rubygem/sass-3.2.7.gem metadata.gz | /usr/bin/gzcat | /usr/local/bin/ruby20 -ryaml -e "open('/work/a/ports/textproc/rubygem-sass/work/sass-3.2.7/sass-3.2.7.gemspec', 'w+:utf-8') { |io| io.write YAML.load(metadata).to_ruby }"
<swills> -e:1:in `block in <main>': undefined local variable or method `metadata' for main:Object (NameError)
<swills> oh wait, duh
<swills> how would i make it read stdin?
<raggi> oh
<raggi> YAML.load($stdin.read)
<raggi> or even more flexible
<raggi> YAML.load(ARGF) probably works
<raggi> yeah, yaml load accepts io's, taht shoudl work
<swills> Successfully built RubyGem
<swills> sweet! thanks
<swills> 467 ${RUBY_WITH_SUFFIX} -ryaml -e "open('${BUILD_WRKSRC}/${GEMFILES}spec', 'w+:utf-8') { |io| io.write YAML.load(ARGF).to_ruby }"
<swills> i wonder if i could make that simpler
<raggi> in ruby 2
<raggi> i think there is a File.write
<swills> has to work for 1.8, 1.9 and 2.0
<raggi> then stick wiht that
<swills> ok
<raggi> ouble check the :utf-8 on 1.8
<raggi> i'm not 100% sure if that passes through transparently
<swills> oh yeah, good point, thanks
<raggi> i think it should
<swills> i wonder what this code does if it encounters a ruby gemspec
<swills> probably barfs...
crandquist has quit [Quit: Bye!]
<raggi> i don't think there are any ruby metadata files
<swills> but they should all be, imho. :)
<raggi> well
<raggi> that's a topic up for debate
<raggi> around some notion of "security"
<raggi> that honestly, i don't really believe in either side of the argument
<raggi> but more to the point
<raggi> changing the .gem format substantially at this point will lead to backward compatibility problems that aren't worht the trouble
<swills> ok
<swills> so i can rely on this not changing
<raggi> correct
<raggi> i mean, i can't ensure all rubygems devs will agree with the above forever, but it won't change any time soon
<raggi> i doubt evan or drbrain have any desire to alter that, and moreover i'd place a fairly sizable bet that they hold the same opinion that it's not worht changing
<swills> ok
<raggi> swills: if you sent a PR to get gem build to work with yaml specs again, and included some docs regarding the use case, i'm sure it would be considered, and maybe accepted
<swills> ok
baburdick has joined #rubygems
<swills> i'll consider that, thanks
<swills> first i want to play with this and see if it works
baburdick has quit [Ping timeout: 264 seconds]
<swills> hmm, the comment for the commit says "Removed broken YAML gemspec support in `gem build`"
<swills> so i guess it was removed because it didn't work somehow
ckrailo has joined #rubygems
Guest85414 has quit [Read error: Operation timed out]
Guest85414 has joined #rubygems
huoxito has joined #rubygems
mockra has joined #rubygems
<swills> oh dear
<swills> the yaml that comes with 1.8 doesn't have a to_ruby method.
mockra has quit [Ping timeout: 248 seconds]
<Defiler> I can't do it today, but I've been meaning to look harder at rubygems 2.0 and see if I can assist in removing any remaining YAML gizmos
<Defiler> YAML should never cross a version-control-of-code-that-reads-it barrier, IMO
<raggi> it's not yaml that provides that method, it's Gem::Specification
<swills> raggi: the to_ruby method?
<raggi> yes
<swills> well, i'm confused tehn
<swills> because using 1.9 and rubygem 2.0 that to_ruby bit works fine
<Defiler> well, think back to your original bug
<swills> but on 1.8 it gives -e:1: undefined method `to_ruby' for #<YAML::Object:0x802132950> (NoMethodError)
<Defiler> and it's that we're seeing YAML where we expect to find a Gem::Specficiation
<Defiler> so it's not unexpected that you're getting that error
<Defiler> since the latter has that method and the former does not
<swills> Defiler: no, i patched things to convert the yaml to ruby
<swills> and that is what is failing
<Defiler> well #<YAML::Object:0x802132950> is clearly not a successful example of it
<drbrain> swills: you need to require 'gem/specification' before loading a gempsec on 1.8
<drbrain> err, require 'rubygems'
huoxito has quit [Ping timeout: 248 seconds]
<swills> drbrain: tahnks, that helps a lot
anon4224124 has joined #rubygems
<swills> now to figure out how to get docs
<swills> find: /usr/local/lib/ruby/gems/1.8/doc/sass-3.2.7: No such file or directory
<swills> :/
<drbrain> maybe they weren't generated?
<drbrain> everything in doc/ is generated
<swills> yeah, i think rdoc isn't installed
<swills> you're probably wondering why...
<drbrain> not really :D
<drbrain> I know some linux distributions purposefully remove parts of the stdlib
<Defiler> oh is this some linux distro?
<Defiler> which one? if you said I failed to notice, and I apologize
<drbrain> Defiler: swills is a FreeBSDer
<Defiler> huh then that error is very strange
<Defiler> ohh yeah
<Defiler> ruby-doc-stdlib
<Defiler> I forgot that had gotten split out
<drbrain> Defiler: the YAML::Object one? that's what happens when you load a YAML object with !ruby but you haven't loaded the class
<Defiler> drbrain: no sorry I meant the doc error
Elhu has joined #rubygems
EmilyAFK is now known as Emily
<swills> yeah, we split rdoc into a separate package and don't install it with ruby, so that we can update it separately.
<swills> (because we can't have two packages install the same file...)
<Defiler> yeah, makes sense
crandquist has joined #rubygems
<Defiler> (I personally don't think programming language runtimes should ever be directly the job of the OS, but that's just my personal crusade)
crandquist has quit [Client Quit]
baburdick has joined #rubygems
<swills> so what you're really saying is that you don't want to have any package management
baburdick has quit [Ping timeout: 248 seconds]
<swills> after all, if the package management doesn't install language runtimes, it can't install apps that depend on those.
Elhu has quit [Quit: Computer has gone to sleep.]
<swills> and why should the OS package management manage apps that only use C/C++ or other compiled languages, but not others?
anon4224124 has quit [Ping timeout: 245 seconds]
anon4224124 has joined #rubygems
terracotta has quit [Quit: lol]
mephux has quit [Quit: w0ots...]
anon4224124 has quit [Ping timeout: 245 seconds]
<Defiler> drbrain: stay tuned for my crazy new project, which may be up your alley https://github.com/wilson/shanghai
<drbrain> Defiler: sweet
<drbrain> Defiler: have you played with devstack at all?
<Defiler> nope
<Defiler> aha, openstack deployment tools
<drbrain> yeah
<drbrain> it's a ready-to-go openstack
<Defiler> we're about to launch a meta-layer above that that is going to rule, at EY
<raggi> Defiler: :)
<raggi> Defiler: you're at EY?
anon4224124 has joined #rubygems
<raggi> i guess i never knew where you worked, but for some reason i thought it was ATTI
<Defiler> you can catch some hints there
<raggi> provisioning home clouds is still frustrating i find
<Defiler> but shortly you're going to be able to run fun combinations like "Mesos cluster in my basement" using engine yard
<raggi> i have a plethora of machines all over the planet, some in DC's, some in homes
<raggi> they run different OSes, different services, etc
<Defiler> yeah, me too, and that's what I'm building shanghai for
<raggi> many of which are singletons
<Defiler> meta-agent for command and control
<raggi> chef, puppet, etc are really horrible for this task
<raggi> IME
<Defiler> up
terracotta has joined #rubygems
<Defiler> yup, I mean
<raggi> my DR plans are horrific, they're different for each one, and often non-existent
<raggi> other than having some git repos and a general practice for how to get something back up
Guest25251 has joined #rubygems
<Defiler> The final desired end-state is a system that makes the minimum number of possible network requests and shell commands in order to configure heterogenous things to your desire
<raggi> i'd say 50% are potentially ready for instant death
Guest25251 has quit [Excess Flood]
<Defiler> that is totally open and repeatable
<raggi> one of the things i've wanted for a while, wiht all of this, which would make life much easier
<Defiler> my new stuff finally adds freebsd support (and any UNIX) support to EY
<raggi> is a distributed FS that had node-tunable replication parameters
<raggi> and run on all of them
<Defiler> by ceasing to care what OS you run
Rakko has joined #rubygems
<raggi> then i could just mount services from the FS, and transition them by altering FS data
<Defiler> raggi: oh yeah some people have tried to achieve that with bittorrent, even
<Defiler> but that would be super nice
<raggi> so, the other part of this
<Defiler> Everything I've used made it super easy to get a kernel panic
<raggi> is that because these machines are so unstable
<drbrain> Defiler: woo BSD!
<raggi> many of the existing things are horrible
havenwood has joined #rubygems
<Defiler> drbrain: I wanted ZFS hehe
<Defiler> that and the general awesomeness of FBSD
anon4224124 has quit [Ping timeout: 245 seconds]
<raggi> most of the distributed DB's and/or distributed FS' do not support arbitrary node rejoins
<raggi> or dynamic topology changes
<Defiler> we finally got that working with cassandra at the startup I worked at but good god
<Rakko> drbrain: mpapis tells me you might know something about the status of a bug with generating docs with rvm
mephux- has joined #rubygems
<raggi> (the latter i really want to enable so i can just have my laptop attach to the ring)
<drbrain> Rakko: which?
<mpapis> 193 / 194
<raggi> Defiler: cassandra?
<Rakko> with SITEDIR
<raggi> Defiler: problem there is, the internode traffic after a rejoin, if you want ot balance, is horrible
<drbrain> ah, the status is "rubygems has first priority for bug fixes"
<Defiler> yeah, the dynamo-esque implementation
<raggi> Defiler: also, it's really hard to tune what data lands where, for a relatively generic FS layout
<Rakko> you work on both, drbrain ?
<drbrain> but it looks like RubyGems 2.0.2 is solid, so I can work on rdoc bugs now
<drbrain> Rakko: yes
<raggi> Defiler: the problem is, for example, what i'd really like is for things like music, to live in two specific places, and not elsewhere
<Defiler> raggi: I'm picturing a thing using ZFS and 0MQ that would do it
<raggi> Defiler: and for stuff like app code, to replicate in all the DC mounted systems
<raggi> my ~/src dir is > 40GB :(
<Defiler> :(
<mpapis> drbrain, let me know if I can help with those two, 193 seams to be trivial, but I did not found how to fix the second in short time
<raggi> Defiler: zfs would be nice, but that breaks the portability aspect of things
mockra has joined #rubygems
<raggi> Defiler: i mean, i need minimum support for fbsd, osx, and linux
<raggi> Defiler: and ideally, i'd like to attach win64 as well
<Defiler> yeah, hard problem
<raggi> fuse works
<Defiler> lots of different 'I'm totally sure the filesystem is in sync' semantics
<raggi> so any DB with the require properties is totally fine
<Defiler> yeah fuse is pretty boss
terracotta has quit [Ping timeout: 250 seconds]
<raggi> and i'm also fine wiht having a daemon that replicates a symlink topology
<drbrain> mpapis: I'm not sure about 194, but my initial guess is that it is probably not a lot of work
<drbrain> mpapis: since I've never built ruby like that it may take me a while to figure out the fix, though
<raggi> then the in-store topology can be relative to the replication tuning
<mpapis> drbrain, use rvm ;)
<drbrain> heh
terracotta has joined #rubygems
<raggi> Defiler: i mean, i considered zk, riak, couch, cass, ring'd pg replicas, and a bunch of other things
<drbrain> since I've been building by hand for so long, rvm is too confusing :D
<raggi> Defiler: none of them really solve this problem any kind of easily
mephux- has quit [Remote host closed the connection]
<raggi> Defiler: some kind of cap tuning always gets in the way
<mpapis> drbrain, true - it's just a flag, so nothing you can not do by yourself
<raggi> Defiler: either shock loading replication on joins, or write freezes on partitions
<raggi> Defiler: or simply requiring global configuration changes for joins
<raggi> Defiler: iirc, riak and couch were better, but fall in that last problem category
nirvdrum has quit [Ping timeout: 248 seconds]
baburdick has joined #rubygems
<raggi> Defiler: you don't have to offline the cluster to add nodes, but you do have to reconfigure all of ti
mephux- has joined #rubygems
<raggi> Defiler: which is fine for coming online, but it's bad when coming online fails mid process
mockra has quit [Ping timeout: 245 seconds]
<Rakko> well, if the problem isn't just me I won't worry about it for now. thanks, mpapis, drbrain
<raggi> Defiler: if you know of, or think of a solution that exists already, do let me know :)
baburdick has quit [Ping timeout: 240 seconds]
<Defiler> raggi: I'll give it some thought.. I haven't thought about that layer recently but what you describe would be handy for my own stuff
<Defiler> I want to be able to run a Lua script in some customizable way to resolve specific types of conflict, maybe
anon4224124 has joined #rubygems
<raggi> Defiler: when that is partitioned, i'm happy to just have a button that says "machine X wins"
<raggi> Defiler: for my use case, this file system will generally be single user per node per time
<Defiler> gotcha
<Defiler> I want to be able to designate, say, a per-directory automatic winner
<raggi> Defiler: in general, i'd be happy if conflicting replicas just cause file specific replication warnings that i have to resolve by hand
<raggi> i don't need anything more sophisticated
terracotta has quit [Quit: lol]
mephux- has quit [Remote host closed the connection]
<raggi> coda / afs almost does it, but they have a few things that are evil for large files
hahuang65 has quit [Quit: Computer has gone to sleep.]
<raggi> dropbox basically solves this problem, except it has portability, locality, and cost problems
<raggi> Defiler: right, that kind of tuning is also great
<Defiler> "if node X is around as part of this join, it has the canonical copy"
<Defiler> what we're talking about would be a handy way to distribute the rubygems.org index honestly
<raggi> Defiler: it would be handy for many things
<Defiler> dropbox is great but I don't want to put private data in it
<raggi> Defiler: the stuff it's not good for, is what most of the dfs implementations are for - HPC
<Defiler> would be fun to build a dropbox-api-compatible wrapper around this
<raggi> Defiler: but this isn't an HPC problem, it's just "make my data available and persistent, and on my own hardware"
<Defiler> don't do HPC on shared data anyway
<Defiler> distribute slices of the data and then take callbacks
<raggi> right
<raggi> that's why most of these systems are 20 years old
<raggi> :)
<Defiler> HPC software is mostly a bitch anyway
<Defiler> and not up to the modern OSS bar of things like Redis
<raggi> i'd put it together with rsync, if it wasn't so damn punishing
<raggi> i mean, i actually do, right now, for certain things
<Defiler> I'll write a README for what I'm thinking and start staring at it
<raggi> i use inosync to trigger rsyncs at appropriate intervals
<raggi> on per directory setups
<Defiler> yeah, I do a similar thing
<raggi> but i can't use that solution on my laptop
<raggi> as it's a power hog
<Defiler> I keep replicas of my music on various freebsd boxes that do encrypted zfs mirrors
<raggi> plus, rsync has atrocious throughput when you want to push anything quickly
<Defiler> and I need to keep it all up to date
<raggi> i'm not even happy wiht bbcp tbh
<Defiler> yeah I don't want to include rsync in this, as great as that tool is
<Defiler> I want a different kind of fingerprinting
<raggi> the core algo is fine, but it needs different tunables for diffs, and parallel operation fro fast copy, and slow operation for background copy
<Defiler> word; I wonder how easy it would be to contribute some of those patches to rsync
<Defiler> I haven't really looked at its code
<raggi> essentially, i'd like tools like "pull <file>" to force a "use all my bandwidth to sync this", and then "ignore <file>" ..., etc
<Defiler> it should build against the awesome 'trickle' program as well and use that
<swills> FreeBSD support at EY sounds interesting
<Defiler> trickle is rad
<raggi> Defiler: so, the problem with rsync performance is not rsync per se
<raggi> Defiler: i mean, you can read from most disk volumes faster with up to 4 threads
<raggi> ssds, even more
<raggi> Defiler: but on the throughput side, it's ssh/ssl that are the core problem
<Defiler> Yeah that's what I mean
<raggi> you can't patch one level to fix this
<Defiler> ssh is not really suitable for high-throughput stuff
<raggi> you gotta patch multiple levels
<raggi> openssl, openssh, rsync
<raggi> that's at least 12 months before it'll land on your system
<raggi> if you can even get the patches accepted
<Defiler> which is why what I've got in my head is 0MQ + your choice of in the encryption algo / speed continuum
<raggi> you can write a better tool faster on your own :)
<raggi> yep
<Defiler> which some good fragment fingerprinting
<Defiler> with, i mean
<raggi> well, you can do a lot of heuristics with the "single user per node" idiom
<raggi> as most of the time, most things don't change
<Defiler> I want to be able to have not-yet-finished torrent downloads be mostly done mirroring to a different box when they finally complete
<raggi> some things change by daemons, so you tune those up for different techniques
tekin has quit [Quit: ["Textual IRC Client: www.textualapp.com"]]
<raggi> periodically, you check groups of nodes (i.e. whole directories), to just check they're in sync
<raggi> when a daemon has been up for a long time
<raggi> and it's using FS monitoring, it can rely on those directory fingerprints to communicate
<raggi> - so no disk thrashing
<raggi> and the tree aggregation means little bandwidth per node too
<Defiler> also, I'm going to finally make a redis plugin for this using the awesome redis-objects gem, and that will be handy for some other things https://github.com/wilson/revenant
<Defiler> I stopped using mysql though its lock() semantics are great
<raggi> this kind of design totally doesn't scale for other things, but for this kind of use case, it works fine
<raggi> oh, this is what you mentioned the other day
<raggi> :)
<Defiler> Yeah, I like this pattern
<Defiler> I've used it a lot for things like email notifications
<raggi> yeah
<Defiler> where you already have some datastore that needs to be available to do the work
<raggi> things like singular cron jobs, etc
<Defiler> so why not lean on its locking features to avoid races
<raggi> chef/puppet/etc and most of the related orchestration tools
<raggi> just handle not at all
<raggi> which is ok, but as is so often teh case, no one truly fixes it
<Defiler> Yeah I have difficulty taking them seriously, if I'm honest
<raggi> not in open source, anyway
<Defiler> even though I know I should
<raggi> Defiler: i am not a fan, generally
<Defiler> I'm working on open sourcing a lot of my personal patterns, as you can see
<raggi> Defiler: it saves me writing some code, but 2 years in, i'd rather i'd written the code
<Defiler> I'm always skeptical of things that have built-in decisions that preclude the ideal
<Defiler> which in this case would be an infinitely-fast, infinitely-wise sysadmin typing at the keyboard
<raggi> haha
<raggi> jboss solves this problem
<raggi> and the clustering problem
<Defiler> I see that as the 'Platonic ideal' config management solution
<Defiler> and measure things against it
<raggi> i'm just not sure i want to move tons of my personal shit to java/scala/clojure yet
<Defiler> and Chef abdicates any interest in knowing when something is already done
<Defiler> Yeah I want UNIX solutions, not Java solutions
<raggi> i am moving a lot fo stuff to go
<Defiler> It irks me that you can't daemonize but Go is still pretty awesome within its scope
terracotta has joined #rubygems
<raggi> because the resource usage to performance ratio is a big win
<Defiler> I'm hoping 2013 is my year of Rust and Erlang :)
<raggi> when a lot of these machines are low on resources
<raggi> i keep looking at rust on and off
<raggi> and i just recoil at the complexity
<Defiler> I want to help contribute some simplifications
<Defiler> but in general it's close to what I've been looking for.. better than D
<raggi> i looked earlier this week, and it was better than the last time i looked
<raggi> but it's still big, when you want to do anything concurrent
<Defiler> (this D http://dlang.org/ not the DTrace D)
<raggi> you have to suddenly learn a bunch of shit, and remember things
<raggi> Defiler: *nod*
<raggi> the thing about Go that i liked
Guest51191 has joined #rubygems
<raggi> is that i read the spec
<Defiler> though the dtrace d is amazingly well-designed, I was surprised
<raggi> and i could write anything
<Defiler> I love so many things about Go
<raggi> i don't have to remember anything
<Defiler> the gofmt decision, the docs, a bunch of the concurrency prims, etc
<raggi> i do agree re unix integrations in certain places
<raggi> not being able to fork can be seen as a pain
<raggi> but you know what
<Defiler> It just can't do a couple things I want in a 'system' language so I need other tools in the box
<raggi> i can cope wiht that
<raggi> rc scripts that write pids and exec
<Defiler> yeah
<Defiler> init works fine
<raggi> running things under upstart or launchd
<raggi> it's fine
<swills> rc scripts shouldn't write pid files
<swills> daemons should write pid files themselves.
<Defiler> yeah but Go can't daemonize
<raggi> swills: it's nto a dameon
<Defiler> hence trickery
<Defiler> you have to run in the foreground
<raggi> swills: also, i'd rather have a shell script that craps out init scripts
<Defiler> a la python-style supervisord stuff
<raggi> swills: than write a bunch fo code over and over
<raggi> i used to care about the "correctness" of such things
<raggi> but now i just use a solution that works every time
<swills> raggi: with the right infrastructure, init scripts are about half a dozen lines...
<raggi> swills: with the right infrastructure is a big ask when you deal with many operating systems
<Defiler> swills: hey, if you don't mind.. do you see anything stupid I am doing in this code? It has been working nicely for me for a while, but am I missing any UNIX best-practices? https://github.com/wilson/revenant/blob/master/lib/revenant/manager.rb#L5
<swills> unfortunately, yes
<raggi> swills: also, about every 2 years, each of those platforms changes everything
<raggi> swills: and so i have to rewrite a lot of code
<raggi> swills: so i'd rather just use my portable solution, that always works
<swills> raggi: FreeBSD has that good infrastructure tho, and doesn't change it, ever really
<swills> Defiler: let me look..
<raggi> somewhat related, although i rarely use it these days
<raggi> ~/bin/forkexec
<swills> raggi: heh, cute
<raggi> why write it in every daemon?
<swills> you've rewritten daemon(8) in ruby
<raggi> ofc, these days, most OSes do this for free
<raggi> right
<swills> Defiler: pidfile missing?
whit537 has joined #rubygems
<raggi> swills: but the thing is, daemon only exists on ONE of the oses I use :)
<swills> Defiler: responding to signals?
<swills> raggi: *nod*
<Defiler> that's handled elsewhere with a PidFile kind of abstraction
<Defiler> this is just the core daemonization
<swills> ok
terracotta has quit [Ping timeout: 245 seconds]
<Defiler> which worries me with its simplicity but somehow has not broken
<raggi> Defiler: why do you walk object space to close files?
<Defiler> not aware of any other way
<Defiler> I'd love to know of one
<swills> "return false if exists?" -hmmm, does this mean it won't write a pidfile if the old process didn't delete it's pidfile?
<Defiler> I was going to say "no, because over here I..." and it turns out I don't haha
<Defiler> whoops
<Defiler> good catch thank you
whit537 has quit [Client Quit]
<swills> np
<raggi> Defiler: most of these will be remnants that are going to be GC'd, but also, are you forking really late?
<Defiler> I mean, it won't start if the pid file exists
<raggi> Defiler: maybe i've got the wrong use case in mind
<Defiler> but still, I want to guard against it
<swills> what cleans up leftover pid files?
<Defiler> raggi: it's not really about the common use case, but rather to ensure it's correct every time
<swills> besides the admin? :)
<Defiler> nothing at the moment, just the admin
<Defiler> I've been meaning to write a thing that lets you connect to something that would assist in that
<Defiler> but it's hard to judge that correct from a single box
<drbrain> I facepalm every time I write a startup script on ubuntu, rc.subr is so lovely in comparison
<Defiler> by the time you're actually trying to start it's too late really
<Defiler> and init or something it started before you should make the call
<swills> drbrain: i do the same on RH...
<Defiler> rc.subr 4 lyfe
<drbrain> it's like somebody realized that computers are here to do repetitive work for us automatically
<Defiler> and that if we teach them to work toward a goal instead of just giving them instructions, they work for us
Guest51191 has quit [Ping timeout: 248 seconds]
<swills> of course, the ubuntu peoples solution to bed init scripts is no init scripts, it seems.
<swills> s/bed/bad/
<Defiler> apt-get update is the devil
<Defiler> devvvvvil
<Defiler> the most primitive such tool I am aware of in any distro
<Defiler> I would almost rather it didn't exist and they said "hey, netcat is installed, figure it out hippie"
<raggi> apt-get OHGODPLEASEDONTBETHEENDOFITALL
<Defiler> the worst is that you can't cross-compile packages though
<Defiler> if you want to run on ARM you have to build on ARM, forever
<raggi> one of my debian systems:
<raggi> $ apt-get update
<raggi> apt-get: symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4
<swills> well, cross compiling is difficult
<raggi> seems bad
<swills> we're working on that, but we're not there yet, at least for the base OS
<swills> clang will help
<raggi> clang <3
<swills> but for ports, it's a nightmare and not something anyone is working on afaik
<Defiler> llvm is such a great project
<swills> because there's so much bad software out there, and a lot of it is in ports
<raggi> hehe
<raggi> swills: it's a good time to clean house
<raggi> the argument would never win
<Defiler> it just seems like we should teach jail to be able to lie about its arch and use a different bootstrap compiler
<swills> well, you don't have to delete things, just mark them as "doesn't cross compile"
<raggi> but sometimes it's worht saying like "we're moving to clang by default, anything that doesnt' build is out in the next port tarball"
<Defiler> and use that to sweep for things that do truly insane things
<swills> raggi: that would include a LOT of software
<Defiler> I've been building my Rio Car kernel on intel targeting arm for years
<raggi> swills: fine by me
<swills> things like firefox, chrome, libreoffice...
<raggi> swills: :)
<Defiler> though I understand it's harder for all of userspace
<raggi> swills: i totally sympathize in reality
<Defiler> See, I'm fine with it in freebsd because there's a tinge of regret that it doesn't work yet
terracotta has joined #rubygems
<swills> cross arch jails are an interesting idea, i guess we'd need a bsd licensed qemu
<Defiler> in debian, they have a manifesto explaining why they never will
<Defiler> maybe we could talk to these guys http://bochs.sourceforge.net/doc/docbook/user/license.html
<swills> we're working on a bsd licensed kvm, ie bhyve
<Defiler> to get a relicense
<Defiler> bochs is awesome; one of the few envs where it's hard to tell you are in a VM
<swills> but really i think people would tell you to just do it in userland
<Defiler> though I guess we don't need an x86 simulator hehe
<Defiler> yeah, at this point we might as well use virtualbox to do it
Guest48982 has joined #rubygems
<Defiler> or whatever hypervisor
<swills> i did try to build some arm packages for a while, running FreeBSD ARM on qemu-system-arm
<Defiler> though freebsd kvm sounds awesome
<Defiler> I want to go to there
<swills> ran into some kernel issues that didn't show up on real hardware, due to qemu issues...
<raggi> i got a freebsd image going for pi
<raggi> some things work
<swills> nice, i know some other folks who have done that
<Defiler> I booted my first freebsd cluster on Amazon EC2 the other day
<Defiler> fun times
<swills> cool
<drbrain> I'm unsure why I get EHOSTUNREACH when sending IPv6 multicast packets, seems I'm doing the same thing as ping6 ff02::1%en0
<Defiler> got a prototype image builder that lets me pre-seed it with, say, /usr/ports, or a package cache
<Defiler> so it doesn't take a jillion years to download things
<swills> Defiler: i did something similar using blimpy
<raggi> drbrain: i think there are other flags aren't there
<swills> so blimpy would set it up to use pkgng to install prebuilt packages
<Defiler> oh I haven't used blimpy
<drbrain> raggi: all the examples say "you just need to set address and interface and go"
<raggi> drbrain: i'm real fuzzy on ip6 as i haven't looked at the details in many years, but i think you're missing flags
<swills> problem with blimpy is it doesn't understand adding a vm to an existing cluster
<swills> but it's good at creating a whole cluster at once
<drbrain> for example, ping6 ff02::2 gives you EHOSTUNREACH as it doesn't know how to send properly or something
<drbrain> maybe addrinfo.connect isn't enough
<raggi> i think you might get hostunreach if you're not on the right interface too
<Defiler> I've been using https://github.com/clalancette/oz/wiki which seems nice
<Defiler> but I'll check out blimpy
martinisoft has joined #rubygems
mockra has joined #rubygems
<drbrain> raggi: I've set the interface, so that should be OK
<Defiler> drbrain: have you done IPV6_ADD_MEMBERSHIP before doing multicast stuff?
<drbrain> Defiler: that's for receipt
reset has joined #rubygems
<Defiler> oh right
huoxito has joined #rubygems
<raggi> drbrain: you are using a raw socket right?
<drbrain> IF 4 happens to be en0
<drbrain> there's no way to determine this in ruby, though
<raggi> hmm
<raggi> i have no idea what this api does
<raggi> hehe
<drbrain> at least, not without setting it to different values and checking the result
<raggi> i'm guessing connect_to is setting up a SOCK_DGRAM though
<raggi> drbrain: are you trying to ping
<drbrain> yes, due to udp
<raggi> or send?
mockra has quit [Ping timeout: 260 seconds]
<drbrain> send to a multicast listener
<drbrain> I have IPv4 working fine
<drbrain> I would think EHOSTUNREACH happens before a packet hits the wire
<raggi> yeah, that should be a routing error
<raggi> is connect_to binding before the interface selection
<drbrain> probably
<raggi> your setsockopt would be failing then
<drbrain> send.rb:15:in `send': No route to host - send(2) (Errno::EHOSTUNREACH)
fromonesrc has joined #rubygems
<drbrain> let me try creating the socket by hand
<drbrain> then connecting after setsockopt
* raggi nods
<drbrain> thanks, that did it
<raggi> :)
<raggi> high level apis get annoying wiht this stuff, as you have to read em to be sure what's going on
<raggi> but i also don't much like the bsd apis in this regard either
<raggi> i'd rather they had errors for invalid sockopts
<drbrain> Addrinfo was added in 1.9, and it's a helper for the mid-level stuff
<raggi> (before send)
<raggi> yeah
<raggi> i'm totally onboard with ruby having high level apis
<raggi> it just gets hard to mix and match sometimes
<raggi> multicast is a good fiddly example
<raggi> i am thankful ruby has Socket.new, though :)
<drbrain> I'm going to need to add if_nametoindex to the ruby Socket API
<raggi> yeah, that happens
<drbrain> I have a patch for Addrinfo.socket that does Socket.new, but akr gave it a preliminary rejection due to naming, so I'll need to think about that
<drbrain> brb laundry
<raggi> drbrain: honestly, i'd love you a lot of you just plain exported most of inet, arpa* etc under respective constants
nirvdrum has joined #rubygems
<raggi> drbrain: the high level apis are nice, but it's also nice sometimes to be able to "just port the C", to make life more unixy
<zzak> frank sinatra on point for sunday evenings