Activity Graph

Page 1 of 11 | Next »


[00:50:57] adam12: openstruct: Where do you see that they used a signed key?
[00:53:40] adam12: openstruct: Oh. You're talking about the actual exploit, and not the way they pushed an insecure gem?
[00:54:58] adam12: openstruct: Likely just an easy way to keep the hacked services to themselves. It's not uncommon for a hacker to shore up a machine after they've compromised it, to keep other hackers off it.
[00:57:44] adam12: openstruct: Most good frameworks will sign and/or encrypt their session cookies
[00:58:41] adam12: openstruct: In this case, I think it uses '__session', which might not be exact to the one that's being used by Rails (I don't use Rails so I'm not sure), but not too off the path of cookie names to look suspicious.
[00:59:18] adam12: openstruct: Rack::SendFile is likely further up the middleware stack. You want files to be sent fast, and traversing ActionDispatch is not fast.
[01:01:06] adam12: openstruct: It's probably just guaranteed to exist. I haven't looked, but I'd almost presume it's a pass-through unless it sees the X-Sendfile header.
[01:02:18] adam12: openstruct: Yeah it's interesting code. Actually looks incredibly similar to the strong_password exploit I feel.
[01:02:26] adam12: (going by memory)


[19:46:48] adam12: How have I missed minitest-sprint this entire time
[19:56:53] adam12: havenwood: I've been using minitest-focus quite a bit lately, but not having a CLI for minitest has been kinda meh. Waiting patiently for MT6 but minitest-sprint kinda gets me half-way.


[18:50:17] adam12: whoami_: What rake binary is being used? `which rake`
[18:50:49] adam12: whoami_: What's the shebang of that file? `head -1 /usr/local/bin/rake`
[18:51:45] adam12: whoami_: How did you install ruby2.3? ruby2.5?
[18:55:01] adam12: whoami_: imho, forget about distro packaged ruby and use a ruby version manager. You likely won't fix this.


[22:48:24] adam12: Intelo: o/


[15:08:57] adam12: MarcWeber: Probably better off asked in #sequel but does `map(:column_name)` get you what you want?


[19:23:03] adam12: I've never actually timed the Pi boot time but I think the next Pi I deploy will be FreeBSD.


[18:14:57] adam12: barg: Run bundle install from the same folder that your Gemfile exists.



[16:29:52] adam12: qbrd[m]: I'm not an expert on this, but the value itself is frozen ("bar") but not the reference to it (var2)
[16:30:39] adam12: qbrd[m]: You're best bet for a frozen variable would be a constant, but even then, it's only intent revealing (I'm a constant and shouldn't be modified) vs Ruby saying you can't modify it.
[16:45:11] adam12: qbrd[m]: I believe they help reduce load on the GC as well
[17:08:10] adam12: qbrd[m]: There's a good post somewhere on the ruby-talk mailing list from normalperson (eric wong) who talks about it too.
[17:09:11] adam12: qbrd[m]: Not allowing gsub! is handy tho. I once mutated the Rails params hash (let's call it, params[:state_abbr].upcase!), which caused a ton of grief trying to track down (pre frozen strings)
[17:10:06] adam12: qbrd[m]:


[19:43:18] adam12: &>> (parts = "s1.s2.s3.domain.tld".split(".")).each_with_index.reduce([]) {|memo, (_, index)| memo << parts[index..].join(".") }[0..-2]
[19:43:48] adam12: rubynoob: I wouldn't advocate the use of that exactly, but it might stir up some creative juices.
[19:44:47] adam12: I actually think I already wrote this before.. for my DNS api.
[19:47:38] adam12: rubynoob: I use this in my DNS API, but it suffers the issue that it doesn't drop the TLD. You'd have to drop the TLD from the last element in the array as above. The gist is arguably simpler tho since it maps and doesn't reduce.
[19:50:34] adam12: Fun problem tho. I remember enjoying it the last time I tried to solve it. I wonder if havenwood can golf on it at all.
[19:54:48] adam12: leftylink: True.


[22:48:46] adam12: baweaver: Very nice


[23:13:03] adam12: Intelo: maybe?


[13:50:22] adam12: Abhijit: Not sure about "simulate", but you can raise whatever you want, whenever you want. Did you have a specific example in mind?
[13:51:30] adam12: I'd love to know why this exists. Is it satire?
[13:52:43] adam12: Nevermind. There's multiple of them.
[14:50:58] adam12: baweaver: your 86 hour presentation at southeastruby might be a little long...
[14:51:28] adam12: if you could bring it down to 84 hours, the crowd might be less tired at the end.


[13:23:30] adam12: cca4: You want `map` instead of `each`
[13:23:50] adam12: cca4: Or depending on your Ruby version, you might be able to use `count` instead of `map`.
[13:24:06] adam12: cca4: { |o| if }.count
[13:24:34] adam12: cca4: Offer.all.count { |o| }
[13:25:25] adam12: cca4: But if this is Rails, there may be better ways to do it. And you might have to cast to array `` first. You'll have to try it out and see.
[15:44:48] adam12: ryouba: It's under literals doc.
[15:45:21] adam12: ryouba: But for clarity, %w is the sigil and the arguments after it can be anything other than a couple reserved characters. %w||, %w"", %w@@ all probably would work.
[15:45:43] adam12: ryouba: As long as the characters are the same, it doesn't really matter.
[15:45:53] adam12: &>> %w"foo bar baz"
[15:46:37] adam12: ryouba: Cheers.


[15:32:09] adam12: What's everyone using for test coverage currently? Lots of new ones out that look great: covered and deep-cover, and I'm sure there are more.
[15:54:44] adam12: phaul: Trying it now. Covered errored out and I don't have time to debug right now.
[15:57:32] adam12: It crashes too. Oh well.
[15:58:26] adam12: covered complains about Ruby version. I think it's an issue with the rubyparser it imports expecting 2.5.5 and I'm forced to be 2.5.3 on this project.
[15:58:42] adam12: deep-cover expects sass as a dependency but doesn't seem to list it, or has some other issue.
[15:59:09] adam12: Back to simplecov for now.
[16:01:15] adam12: I'm gonna dig into it a bit more when I have some free time.
[18:21:40] adam12: mwlang: Quiet this week I've noticed.
[18:22:23] adam12: mwlang: Interesting. Didn't know that. In Canada they go back first week of Sept.
[18:53:09] adam12: baweaver: Where's the next lemur talk scheduled?


[13:46:48] adam12: &>> (
[13:46:57] adam12: &>> require "datetime"; (
[13:47:04] adam12: &>> require "date"; (
[13:55:48] adam12: Postgres?
[13:57:43] adam12: nakuku: Instead of using infinity as a start date, could you just use something incredibly far back in time?
[13:59:35] adam12: With Ruby 2.7 you get a startless range which might be OK?
[13:59:46] adam12: &>> (
[14:03:01] adam12: Yeah it's odd. I don't have any experience with current ActiveSupport tho, so I'm not sure. I'd just leave your query open ended
[14:03:17] adam12: Or, see if you can build it with SQL and use a constant provided by Postgres... maybe.
[14:04:44] adam12: where("yourfield && daterange('infinity', ?)", end_date)
[14:04:51] adam12: Not even sure that would work. Just spitballing.



[00:20:37] adam12: havenwood: lol random
[14:25:19] adam12: tf2ftw: The old convention was to stick your gem binaries in bin/, but that's the default install location for bundler binstubs which would clobber your gem binaries.
[14:25:37] adam12: tf2ftw: So it was decided that exe/ is the new path for your gem binaries, and bin/ remains for binstubs.
[14:26:15] adam12: tf2ftw: Files in exe/ by default won't load reuqired lib files, because your lib/ isn't in $LOAD_PATH. That's managed by Rubygems for you automatically.
[14:26:25] adam12: tf2ftw: If you're developing locally, you probably want `ruby -Ilib exe/some_file`
[14:29:57] adam12: tf2ftw: Yep. Nothing really changed and if that ruby line I provided runs your exe fine, then everything should just work. Rubygems sets up a binstub when you install your command that manipulates $LOAD_PATH.
[14:30:48] adam12: baweaver: Your illustration skills are fantastic.
[14:38:35] adam12: tf2ftw: that's odd.
[14:38:41] adam12: tf2ftw: Is it open source where I can look at it?
[14:47:57] adam12: tf2ftw: Interesting. The easiest fix is to use `require_relative` instead, but I am surprised the $LOAD_PATH wasn't updated...
[14:48:31] adam12: tf2ftw: Oh I see why
[14:48:58] adam12: tf2ftw: The only file from lib/ that makes it into the gem is version.rb.
[14:51:42] adam12: tf2ftw: You shouldn't. I think it has to do with spec.files in your gemspec
[14:51:47] adam12: tf2ftw: But I tried it manually and it worked fine...
[14:52:08] adam12: tf2ftw: But when I built your gem I did get an error. Maybe it built the gem but it was a bad build?
[14:53:03] adam12: tf2ftw: I don't use git to generate my file lists in my gems so I'm not sure where it went wrong.
[14:54:01] adam12: tf2ftw:
[14:54:52] adam12: tf2ftw: Wont' even build again.
[14:55:04] adam12: tf2ftw: Try just ditching that `git ls-files` and manually maintain your list like I showed the example of.
[15:07:26] adam12: tf2ftw: Cheers!


[13:35:30] adam12: xco: Line 6 is probably slower. See jeremyevans RubyKaigi talk for more on that.
[13:37:13] adam12: xco: **something is something.to_hash, ultimately.
[13:37:33] adam12: xco: So with the hash allocation comes the usual caveats. The talk is worthwhile to watch since Jeremy talks about it.
[13:39:18] adam12: xco: That's the one.
[13:45:36] adam12: iffraff: Presumably it's copying UID/GID from the files themselves but that's just a guess.
[13:48:47] adam12: iffraff: More like, if your UID on the host is 1001 and your username is iffraff, there's a /etc/passwd entry for iffraff:1001 or something. Inside the guest, there might be an /etc/passwd entry for nobody:1001
[13:49:12] adam12: iffraff: I'm just speculating because I'm not a Docker user. I use FreeBSD.
[17:50:58] adam12: quazimodo: o/
[20:45:00] adam12: asthasr_: What are you trying to do in broader terms?
[20:50:12] adam12: asthasr_: Do you control the hash being passed in/around?
[23:30:35] adam12: Scriptonaut: Worst case scenario, I think you can `require "debug"`. I feel like it goes back to Ruby 1.8. It has limitations tho (ie. you can only require the file once so can't enter/exit)
[23:32:23] adam12: Scriptonaut: You require it where you'd use binding.pry, fyi.
[23:32:42] adam12: Scriptonaut: .. yeah. it's odd. I think it goes back to 2001 or so.


[14:04:18] adam12: catphish: Passed through the unix socket as in some sort of IPC? or did you setup a socket and then
[14:05:16] adam12: catphish: Probably too hard for any of us to guess without seeing some code.
[14:05:28] adam12: catphish: But I'm not surprosed the GC is reaping the socket since it loses the reference.
[17:37:47] adam12: `whatthegem <gem> changes` is so damn handy when updating dependencies.
[19:24:04] adam12: havenwood: that might be the most bizarre thing I've seen recently.
[20:08:34] adam12: bougyman: I use this. Single file.
[20:18:52] adam12: bougyman: Yeah, that's a horrible class name for a gem to ship with.


[13:49:46] adam12: dionysus69: Does that solution not work?
[14:37:32] adam12: MindSpark: How about prefixing your rake command with `bundle exec`?
[14:43:16] adam12: MindSpark: You shouldn't have to...
[14:43:35] adam12: MindSpark: Well, what did you have to set them to?
[14:43:57] adam12: MindSpark: Bundler alleviates the need for setting $GEM_HOME and $GEM_PATH.
[14:45:43] adam12: MindSpark: Bundler is basically 2 components. One part is depedency resolution / installation, and the other part is path management.
[14:46:08] adam12: MindSpark: Bundler knows where it installed the gems, so when you need a gem, it's possible it's not installed in GEM_HOME but bundler knows that, so it manipulates the path.
[14:46:20] adam12: MindSpark: The two ways it does that are either, bundle exec being used, or require "bundler/setup"
[14:46:59] adam12: MindSpark: Rake is a system gem and installed outside of bundler, so it can be called directly, but the second you require a gem managed by bundler, it needs that load path manipulated. Either require "bundler/setup" at the top of your Rakefile or prefix your commands with bundle exec.
[14:48:27] adam12: Is your GEM_HOME and GEM_PATH environment variables still set/different?
[14:48:39] adam12: Maybe they had defaults.
[14:48:57] adam12: Did you set them, and _then_ install bundler?
[14:50:10] adam12: MindSpark: Interesting. Well you could just re-install bundler or re-set the GEM_HOME and GEM_PATH. But something has gone hinky and it's too hard to determine what.
[14:52:45] adam12: MindSpark: Both of mine are unset by default. I use direnv when working on projects and use GEM_HOME there (but never GEM_PATH)
[14:53:38] adam12: MindSpark: A lot of package managers butcher the ruby install. Eventually I think ~/.gem will be default for `gem` command (I believe it's user-install option defaults to it)
[14:54:09] adam12: MindSpark: Ideally: you only need GEM_HOME set if you're installing gems as non-root.
[14:54:36] adam12: MindSpark: If you are using bundler, you need to ensure bundler is used. This can either be through it's binstubs, bundle exec, or require bundler/setup as mentioned.
[14:54:43] adam12: MindSpark: Outside of that, it should just work :)
[14:57:24] adam12: MindSpark: bundle exec is used before calling any gem binaries. bundle exec rake, bundle exec rails, etc. The bundle exec portion sets up the $LOAD_PATH to find the bundle'd gem, not the one that might be installed elsewhere / outside of the load path.
[15:24:56] adam12: MindSpark: Yes
[19:06:40] adam12: morenoh11: The `do` on line 13 is a syntax error.
[19:07:20] adam12: morenoh11: For line 12 (each), you have 3 "block" passing strategies. do/end, {}, or &some_proc.
[19:10:41] adam12: morenoh11: It's very out of place to see use of `for` in Ruby. Most people use the iterators provided by Enumerable. So answers.each rather than the use of for.
[19:11:32] adam12: morenoh11: What should the result of that be?
[19:12:13] adam12: morenoh11: You have a return value of `Integer`. Presuming you want something to be counted?
[19:13:53] adam12: morenoh11: I'm presuming you're talking about updating the hash around line 1$?
[19:13:58] adam12: morenoh11: line 14 rather?
[19:16:11] adam12: morenoh11: If that's the case, what you're getting as 'value' is actually a value, not a reference. When you mutate it (value -= 2), you get another value. It's not touching the reference at all which remains the same. You likely want to re-assign it. hash[key] -= 2 or hash[key] = value - 2.
[19:32:47] adam12: havenwood: show off :P
[19:33:12] adam12: havenwood: Haven't seen transform_values before...
[19:33:59] adam12: havenwood: Only seen transform_keys. Very nice. I wonder which Ruby version they came in.
[19:34:42] adam12: havenwood: I'll not be lazy and look it up :P
[19:47:05] adam12: havenwood: why a method that returns a proc vs just assigning a proc to a local? preference?
[19:50:13] adam12: havenwood: Save your GC with this one weird trick!
[19:51:08] adam12: havenwood: Freezing a proc? You monster. :P
[19:51:23] adam12: &>>
[19:51:34] adam12: Oh yah. Thanks Ruby
[19:51:45] adam12: Interesting.
[19:54:59] adam12: havenwood: I wonder the benefit to freezing the proc.
[19:57:29] adam12: havenwood: lulz. I like my proc's to be freeze dried and then rehydrated.
[19:57:42] adam12: ACTION goes to submit PR to ruby-lang/ruby for Object#rehydrate
[23:12:39] adam12: I saw Patron removed from a project I'm on as well, but without any backstory. Maybe it is?
[23:13:17] adam12: Actually it looks active..



[13:02:04] adam12: Obats: Is this your project? or something you've downloaded?
[13:02:28] adam12: Obats: That mustache version is _ancient_.
[13:07:03] adam12: Obats: I'd try updating Mustache. Also, in mail_renderer.rb, I'm presuming you're calling Mustache.render or something similar, perhaps with a locals hash. I'd start checking those variables for their encodings.
[13:07:49] adam12: Obats: Also relevant.


[00:01:42] adam12: leitz: If you ship them with the gem, there's no reason you couldn't just use `__dir__` or `__FILE__` inside the file you need to build a path.
[00:02:12] adam12: leitz: Ie. data_path = File.expand_path("../data", __dir__) inside of lib/your_gem.rb.
[00:09:47] adam12: leitz: Hard to guess without any output, but the first thing I would check is that you've placed the data folder inside your gemspec (or using a gemspec that generates the files automatically and correctly). But again, all hypothetical.
[00:13:33] adam12: leitz: Is that repo the one you're trying to make work?
[00:14:48] adam12: leitz: What about from the parent directory with something like `ruby -Ilib bin/crewgen.rb`
[00:15:35] adam12: leitz: Actually that's a bad example because of your use of Dir.pwd
[00:17:21] adam12: leitz: I'd probably replace `system` with `exec` too.
[00:17:39] adam12: leitz: It will do that occasionally for shims, but I am not sure it's gem but maybe rbenv/rvm/whatever.
[00:18:18] adam12: leitz: Anyways, that error in your first gist is actually the rackup file being evaluated as ruby and not in the Rack::Builder instance. So something else is likely wrong IIRC.
[00:19:15] adam12: leitz: If you're dependencies are installed, you should be able to `ruby -Ifull-path-to-gem-lib full-path-to-gem/bin/crewgen.rb` and it just work. If it doesn't, then problem with code. If it does, problem with gem/gemspec.
[00:20:32] adam12: leitz: Looks like a shim. I'm presuming the original binary exists inside the gems folder. cd $(gem which your-gem-name)
[00:23:11] adam12: leitz: Interesting. I had to make a bunch of changes to get it to work.
[00:25:33] adam12: leitz: If you still have issues maybe stick the .gem somewhere and we can look at it.
[00:28:10] adam12: leitz: I'll look. These are the changes I made to get it to run locally.
[00:28:49] adam12:
[00:30:31] adam12: leitz: Gem installs fine. Won't run because it can't find
[00:31:53] adam12: leitz: I build your gem with my changes and it runs fine
[00:37:26] adam12: leitz: HURRAH!
[12:28:55] adam12: dionysus69: Could try reaching out to the owner of the name to see if they'll give it up. I've done it before (tho I ended up keeping the name I found in the interim).
[12:30:09] adam12: dionysus69: Says right in there that' it's squatting. Could try emailing the Rubygems folks about it. Support info listed on the homepage.
[12:33:21] adam12: dionysus69: I don't remember 100% (it's definitely frowned upon by the folks in Elixir). Wouldn't hurt to reach out to them about it.
[12:37:34] adam12: dionysus69: I'd probably reach out directly to the owner of the gem first tho. Then escalate.
[13:07:16] adam12: Anybody experiment with Pakyow yet? 1.0 landed and it's feature set is intriguing.
[13:12:24] adam12: I still enjoy the heck out of Roda but Hanami and Pakyow are looking super interesting.
[13:12:48] adam12: (Hanami 2 specifically)
[18:20:55] adam12: AndreYuhai: Not ideal but I'd probably send the full address to Google Maps or OSM and get the formatted parts back. At least that way there's less of a concern of splitting/regexp ambiguity.


[22:00:18] adam12: ledhed2222: Can't say I've ever seen SignalException rescued in the wild before...
[22:05:28] adam12: ledhed2222: I've only see Signal.trap used. I'm presuming there's a reason for it.
[23:11:26] adam12: brool: Can you share some of your code? I'm not sure what an app object's fields are...
[23:12:50] adam12: brool: The template (view) is rendered in the scope of the request. If you assign an instance variable, that will be available as well (instead of using locals). Using locals is more explicit tho and can be nicer in teams to know what's available in a view.



[19:30:41] adam12: I like Que if I'm using Postgres. No extra dependency.
[19:31:01] adam12: or Suckerpunch if you don't care about job persistence.
[19:31:53] adam12: havenwood: I love redis but I feel like it's introduced wayy too early for a lot of projects.


[23:55:05] adam12: fr3tz0r: Can you share some code?


[20:26:48] adam12: acts_as_identifier ... couldn't help myself.
[20:30:28] adam12: That choose method is neat. I wonder if it would be better off exposed.
[20:38:12] adam12: havenwood: Spend any time with Steep? I think you had been checking out Ruby types recently.
[20:41:17] adam12: havenwood: Yeah. Sorbet is DOA for me since I develop on FreeBSD but Steep seems to be chugging along nicely without too much ceremony.
[20:42:35] adam12: It's language server support might be a bigger win. Trying to onboard newer devs who are used to auto-complete, etc. has been a huge challenge as of late.


[16:32:04] adam12: Makku: What do you mean?
[16:46:14] adam12: Future looks reasonably healthy IMHO. That said, Nick Sutter did a talk fairly recently that echoes some of my sentiment. We (understably) get more smaller bits than larger features/changes. That might be a bit of an issue long term.
[16:50:20] adam12: Makku: Oh! That makes more sense. I believe it will use gcc or clang. I wouldn't be surprised if it prefered the one that Ruby was compiled with, which is going to be OS/distro dependent.
[16:52:22] adam12: leitz: I don't have any off the top of my head (other than gradual types), but Nick mentions a few that would be interesting: pattern matching, better concurrency, method overloading, better kw args, macros, real namespaces and packages, functions not closures, etc.
[16:52:42] adam12: (yes I know pattern matching is kinda coming)
[16:52:56] adam12: He also mentions immutable structures which is also interesting (not having to depend on hamster for example)
[16:55:07] adam12: It would change Ruby style but a common argument I have to face with non-Rubyists who I'm integrating into projects is why everything gets dumped into the global namespace. I think in some ways Python is nicer there (and Go).
[16:57:11] adam12: bougyman: require "cgi"; CGI is now a constant everywhere. That's an easy one because cgi == CGI but it's not always like that.
[16:57:59] adam12: kyrylo: there was a gem released not too long ago too which was neat as well.
[16:58:18] adam12: bougyman: Yes, exactly.
[16:59:03] adam12: kyrylo:


[16:53:20] adam12: mynameisdebian: The CGI library in stdlib is _somewhat_ clunky. What's your overall goal of this project? Do you care if you have any dependencies?
[16:58:12] adam12: mynameisdebian: This is a cgi script right?
[16:59:23] adam12: mynameisdebian: I'm not sure that "HTTP/1.0 200 OK" is the correct header for a CGI script, tho it's been a number of years. What about `Status: 200 OK` instead?
[16:59:58] adam12: mynameisdebian: IMHO, I'd bring in rack as a dependency and use the rack CGI handler... with the caveat that sometimes it's not perfect.
[17:02:12] adam12: mynameisdebian: I'm not sure if it helps at all, but I made a URL shortener using Rack as a CGI script. It's open source. Maybe it will give you some clues. If possible, I'd opt to use Rack instead of cgi in stdlib, but I guess that's personal preference.


[14:50:41] adam12: rokra: show some code
[14:59:37] adam12: rokra: My presumption from _just_ that line is that you're doing something like array["1"] and not array[1]. But otherwise it's just going to be guessing without code and a backtrace.


[15:00:47] adam12: TomyWork: Likely not a comprehensive solution but zenspider's graphics gem can do some visuals. Maybe it's a portion of the solution you're looking for.
[16:53:28] adam12: wrkrcoop: No idea but my first guess would be permissions on the rvm install.
[19:29:23] adam12: Sorbet went open source today.
[19:40:34] adam12: redlegion: Static type checker for Ruby from the Stripe folks.
[19:41:27] adam12: redlegion:
[20:46:57] adam12: bjpenn_: Not necessarily bad style. Why would you think so? There's some indirection, but that's just how Ruby works.
[20:48:01] adam12: bjpenn_: Not sure I follow.
[20:48:26] adam12: The attr_ method you call sets up the getter.
[20:48:45] adam12: Without attr_reader, authentication.profile would raise NoMethodError.
[20:49:42] adam12: bjpenn_: attr_reader is basically def authentication; @authentication; end. Not sure if that helps explain things?
[20:54:43] adam12: bjpenn_: Right.
[20:55:57] adam12: bjpenn_: I'm not following 100%, but if I was looking at a class that inherited from another class, and had no include/extend calls, the method you're calling would live on the base class or another ancestor.


[19:31:56] adam12: fluxAeon: Correct.
[19:32:28] adam12: fluxAeon: If you copy/pasted that verbatim from a project, I'd say it's not _good_ Ruby code, tho it's functional.
[19:36:14] adam12: fluxAeon: Yeah. It's overly creative.


[19:59:24] adam12: xco: Pretty sure the %w sigil splits on whitespace, so "Some Brand" as an array element would be impossible. I might be wrong.
[19:59:50] adam12: xco: Rather, it _only_ splits on whitespace. It definitely does split on whitespace.
[20:12:43] adam12: xco: Not sure if you were just using this for an example but this is brittle and I wouldn't rely on split with length in this _specific_ case.
[20:36:43] adam12: xco: If you know you always have X args, then it's actually safer than leaving N args off.
[20:38:25] adam12: xco: ie, in key=value type strings, I split with 2 arguments to ensure that value never gets truncated if it included an = sign.


[20:12:23] adam12: This is just my guess.
[20:12:47] adam12: Good luck.
[20:43:48] adam12: Vaevictus: Does just using ssh work?
[20:45:35] adam12: Vaevictus: Maybe use the normal ssh client and use expect to drive it.
[20:47:35] adam12: Vaevictus: Enjoy your vacation.
[23:24:25] adam12: Vaevictus: I pulled the source and it's similar to what I pasted you earlier.. in some ways.