« Back to channel list

#ruby - 31 December 2014

« Back 1 day Forward 1 day »
[01:35:14] Fire-Dragon-DoL: good night everyone
[01:45:38] epitron: man, word-wrapping ansi is annoying
[01:45:46] epitron: s/word/line/
[01:46:26] epitron: omg, i just solved it
[01:46:32] epitron: ansi codes ARE WORDS
[01:51:50] epitron: i need a tokenizer
[01:53:56] Sweeper: tokenize (allthethings)
[02:54:50] Elan10993245: i'm trying to start learning ruby
[03:36:50] anskeit: hey guys. im trying to make a irc twitch bot, but something doesnt work. i keep getting a login unsuccessful error. http://pastebin.com/QCjRhsDm could someone help me with this?
[03:37:30] pontiki: elektronaut: my thoughts:
[03:37:33] pontiki: some notes on learning ruby programming: http://blog.tamouse.org/pages/learning/
[03:37:47] pontiki: what's a twitch bot?
[03:38:21] pontiki: oh, an irc bot for twitch servers
[03:38:22] anskeit: twitch is a gaming streaming site with a irc chat. so im trying to make a bot for it
[03:38:32] pontiki: anskeit: my huge suggestion: use cinch
[03:39:23] pontiki: unless your real point is to learn the IRC protocol
[03:40:50] anskeit: hm yea, not really. i take a look at cinch, thanks!
[04:23:38] ajacmac: https://gist.github.com/anonymous/ab120f19adb7014da68d
[04:23:47] ajacmac: could anyone tell me what's wrong with that code?
[04:28:26] mondo: is there a way I can blacklist a gem version? For example, I do gem install package, and package may have a dependency with version > "1.0.0". If I have 2.0.0 installed, but 3.0.0 is available, gem tries to install 3.0.0 of the dependency. I want to lock my system at 2.0.0.
[04:29:02] waxjar: ajacmac: the curly braces shouldn't be there
[04:29:51] havenwood: ajacmac: you can `select &over_4_feet` or `select { |rider| over_4_feet.call rider }` but you can't just put a proc inside a block like you have it.
[04:30:31] ajacmac: thank you very much! that's something I never would have thought of
[04:31:05] waxjar: mondo: you can use "~> 2.0" to allow 2.0, 2.1, 2.2, 2.x, but not 3.x
[04:32:00] waxjar: or the arrow is to the other side, i always forget
[04:32:49] mondo: waxjar: Thanks, I want to do this without building the gem from source and manually changing the gemspec
[04:33:27] mondo: I just want to execute gem install package and not have it try to upgrade one of the dependencies
[04:33:48] waxjar: there's a flag on gem install for that i believe
[04:35:20] waxjar: --conservative
[04:36:44] ajacmac: it seems kind of ironic (maybe just backwards and kinda odd?) to show how to use call procs with methods before showing you .call, but I'm sure the guys at codecademy know what they're doing
[04:36:56] ajacmac: to show how to call procs*
[04:47:00] mondo: waxjar: that's what I needed. Thanks!
[05:01:49] Rubie: hi all: i was just wondering if someone would critique my coding of a hangman game https://gist.github.com/gabrie30/4b8305af5ed0eff0f803
[05:30:19] shevy: rubie you are not consistent
[05:30:21] shevy: for instance
[05:30:26] shevy: why do you use @@art in def initialize
[05:30:53] Rubie: i tried using @ but it wouldnt work
[05:31:02] shevy: is that an explanation
[05:31:20] shevy: Also line 20 vs. line 24. In one case you use puts, in the second case you do not. Why?
[05:31:35] shevy: next example line 36: puts "#{@show}"
[05:31:37] shevy: this is not required
[05:31:46] shevy: #{} in strings is used for expansion in a string
[05:31:49] shevy: but you don't need it here
[05:31:51] shevy: puts @show
[05:32:27] shevy: line 71 has a wrong indent. I think you need to train consistent indent first
[05:32:58] shevy: it is good that you use a class though
[05:33:06] shevy: I would rename it
[05:33:14] shevy: from class Hangman_game to class HangmanGame
[05:34:34] Rubie: thanks for pointing that out
[05:34:39] Rubie: im making the changes
[05:35:19] Rubie: i'd like to not use @@art i get warning: class variable access from toplevel error when running the program
[05:35:57] shevy: I do not know why you use it
[05:36:07] shevy: you must answer to yourself that question, so far you did not have a good answer
[05:36:21] Rubie: the required file is the hangman art
[05:36:26] Rubie: and the art used @@art
[05:36:30] Rubie: so i kept it
[05:37:02] Rubie: but since i'm not using any other classes i get that error
[05:38:22] shevy: it still makes no sense to me
[05:38:28] shevy: but if you are satisfied with your own answer :D
[05:39:43] Rubie: no not satisfied, i just finished and my eyes are glazed over, will need to look it over tomorrow but was looking for some initial feedback here
[05:40:13] Rubie: its pretty late here
[05:42:21] shevy: a fresh brain helps
[08:55:23] sargas: why does pry ignore `gets` calls?
[08:56:49] pontiki: [8] pry(main)> x = gets
[08:56:50] pontiki: aaaaabbbbcccc
[08:56:50] pontiki: => "aaaaabbbbcccc\n"
[08:56:50] pontiki: [9] pry(main)> puts x
[08:56:50] pontiki: aaaaabbbbcccc
[08:56:55] pontiki: [10] pry(main)>
[08:57:10] sargas: I ran `pry ex11.rb` and it spit all the text without blocking to wait for input
[08:59:59] Mon_Ouie: Because the purpose of passing a filename to pry is to use that file for input
[09:01:53] sargas: Mon_Ouie: can I have the same behavior in pry as if I ran `rib ex11.rb`?
[09:02:09] sargas: Mon_Ouie: I mean `rib ex11.rb`
[09:02:17] sargas: Mon_Ouie: I mean `irb ex11.rb`
[09:30:54] Mon_Ouie: Oh, that's not because of Pry as far as I can see. How exactly are you using gets?
[09:51:20] MrSparkle: we have += and -=, both very helpful tools
[09:51:38] MrSparkle: but no '**+' or %=
[09:55:29] Mon_Ouie: We do have those
[10:00:12] gregf__: >> a=10; a**=2; a%=3
[10:00:12] eval-in__: gregf__ => 1 (https://eval.in/238558)
[10:02:20] gregf__: >> a = 10; print a**=2," - ", a/=3
[10:02:20] eval-in__: gregf__ => 100 - 33nil (https://eval.in/238559)
[10:17:51] atmosx: Can anyone think of a more efficient way of comparing 'today' with a Time object than puts "today" if Time.now.strftime("%d/%m/%y") == State.last.created_at.strftime("%d/%m/%y")
[10:18:27] atmosx: I feel that I'm doing an unnecessary conversion there, it works though..
[10:18:29] apeiros_: Date.today == State.last.created_at.to_date
[10:18:43] matti: Ohai apeiros_
[10:18:48] atmosx: apeiros_: requiring date right?
[10:19:02] apeiros_: atmosx: yes
[10:19:17] atmosx: hm, way cleaner
[10:19:18] atmosx: thanks apeiros_
[10:49:44] arup_r: shevy: Hi
[11:37:15] theotherstupidgu: can I make a method (using define_method via #send) that takes a block?
[11:40:32] Mon_Ouie: Sure. Just use yield inside the body or add an argument called &block if you need a reference to a Proc object
[11:41:14] theotherstupidgu: i tried just that about didnt work
[11:41:19] Mon_Ouie: define_method(:foo) { yield 3 }
[11:41:30] Mon_Ouie: define_method(:foo) { |&block| block.call(3) }
[11:41:40] Mon_Ouie: "didn't work" doesn't explain anything
[11:42:01] theotherstupidgu: self.class.send(:define_method, .....
[11:43:54] theotherstupidgu: it gave me an error saying that the module calling this funtion doesn't have this method
[11:45:42] theotherstupidgu: https://gist.github.com/theotherstupidguy/772d78d5201566f7f550
[11:46:41] theotherstupidgu: how can i make this proc (Gist) take a block?
[11:47:13] theotherstupidgu: is there a better way ?
[11:52:58] theotherstupidgu: nevermind, i found a ball of mud
[12:08:23] kalib: good morning.
[12:08:44] kalib: did anyone get lucky trying to install ruby 1.9.2 on os x 10.10 ?
[12:10:25] kalib: can?t make it work.. already searched on google, but couldn?t find any solution.
[12:13:37] theotherstupidgu: kalib, use rbenv??
[12:15:00] kalib: tried with rvm
[12:15:35] Hanmac: kalib: why such an old version? why not 2.2.0?
[12:22:59] kalib: hanmac, legacy softwares
[12:23:27] Hanmac: hm ok , be happy that is doesnt need to be 1.8.* ruby
[12:25:45] kalib: hanmac, so, is it possible to install 1.9.2? I couldn?t find anyone on google saying that it worked. Only people with the same issue. :/
[12:28:07] Hanmac: better question: "what" is the issue? or what did you try?
[12:29:29] kalib: tried rvm install
[12:29:41] kalib: https://github.com/wayneeseguin/rvm/issues/3099
[12:29:55] kalib: https://github.com/sstephenson/ruby-build/issues/648
[12:30:04] kalib: this is the issue I?m talking about
[12:30:20] migimunz: Hi, I need to transform some code, and I thought I'd use sourcify to get a sexp, transform it, then generate code again. However, I'm not sure how to get ruby code from sexp, and documentation is a bit lacking on that. Any ideas?
[12:38:42] shevy: kalib have you tried a source compile? that is what rvm is doing too
[12:40:24] Hanmac: shevy did you read the news: http://www.dw.de/palestine-resolution-defeated-in-un-security-council/a-18164435 ... palestine wants independence but USA says "No" ... i am the only one that smells this irony?
[12:40:45] shevy: hanmac nah, that is what the USA did the last 30 years anyway
[12:41:48] Hanmac: shevy i mean isnt it funny that the usa forbid a state to become independent? ;P
[12:42:54] shevy: don't know whether it is funny or ironic, it's about global influence more so than about ethics, morale or fairness
[12:43:57] shevy: this here is rather funny though: http://www.montulli.org/theoriginofthe%3Cblink%3Etag
[12:44:07] ponga: happy new year !
[12:44:48] shevy: you are already in 2015 ponga ?
[12:44:54] ponga: not really
[12:44:57] ponga: few hrs away
[12:46:13] crome: its 2014.0997
[12:46:20] Hanmac: only <12h then this shitty year is gone
[12:46:31] dionysus69: I was working with git branch called static pages and I have some changes, how do i copy those changes to master branch so I can push to heroku?
[12:47:00] crome: dionysus69: most likely you want to merge your branch into master
[12:47:43] crome: although you can push any branch to heroku with a slighly more explicit syntax
[12:48:07] crome: git push <name of your heroku remote> static_pages:master
[12:48:10] dionysus69: crome so how is that done? and after merging is it copied or is it cut? will the branch get deleted?
[12:48:45] crome: commit all your changfes in static_pages, checkout master, run git merge static_pages
[12:50:19] dionysus69: crome, cool thanks man!
[12:50:43] crome: the branch won't get deleted
[12:51:02] dionysus69: git push heroku master static_pages:master would push (merge) to heroku master branch right?
[12:55:24] crome: yes, it will fast-forward the remote branch
[12:55:35] crome: (you have an extra "master" there)
[12:55:44] crome: I highly recommend learning about git, though
[12:56:09] dionysus69: crome cool cool sounds good, ye git sounds a lil complicated at start even though it looks very well done tool
[13:00:00] crome: also, I would recommend pushing only master to heroku until you become more familiar with the workings of git
[13:01:38] crome: because I can already see you asking people why heroku rejected your push and how to fix it :)
[13:03:32] crome: but then again, learning by failing is the best approach anyway :D
[13:08:20] dionysus69: crome haha true, thanks :)
[13:18:02] sevenseacat: HAPPY NEW YEAR #ruby
[13:18:33] atmosx: sevenseacat: :D
[13:18:41] atmosx: it's 15:18 here
[13:18:54] sevenseacat: 12:18am here :)
[13:19:00] atmosx: seriously?
[13:19:08] atmosx: so it's Jan 1 there?
[13:19:10] atmosx: hehe, where you from?
[13:19:14] atmosx: I'm GMT +2
[13:19:18] sevenseacat: in melbourne, australia right now
[13:19:19] atmosx: ACTION lags behind
[13:19:25] sevenseacat: usually from perth, australia
[13:19:31] atmosx: hm I thought somewhere in JP :-P
[13:19:34] Xeago_: sevenseacat: y u no reply to CTCP TIME
[13:19:46] atmosx: Xeago_: I was abotu to ask the same thing
[13:20:08] sevenseacat: ask my pidgin client
[13:20:25] Xeago_: libpurple I presume then?
[13:20:49] Xeago_: I thought libpurple implemented ClientInfo
[13:20:51] Xeago_: but it doesn't
[13:21:09] sevenseacat: it tells me that both of you have requested stuff
[13:39:49] shevy: help the pidgin!!! the cat is going to it eat!
[13:49:20] atmosx: seanmarcia: pidgin? isn't that confusing for IRC?
[13:49:46] avril14th: 31 december question: How does one pass an implicit block passed to a method call to a sub-method?
[13:50:11] leafybasil: the only problem with learning clojure is that you're likely to find non-functional code uglier and uglier :(
[13:50:41] leafybasil: Hmm, that response was to something written hours ago... I should learn to scroll
[13:52:03] apeiros_: avril14th: what do you consider "an implicit block"?
[13:52:34] avril14th: apeiros_: just a blck that is not defined in the method definition
[13:52:47] avril14th: def method ( &block) <-- explicit
[13:52:52] avril14th: def method <--- implicit
[13:52:56] apeiros_: avril14th: well, the *sane* way would be to make it explicit
[13:53:14] apeiros_: but you can do e.g.: def each; @foo.each(&Proc.new); end
[13:53:19] avril14th: and block_given? will still work, or I should test for the block to be nil?
[13:53:38] avril14th: (by making it explicit)
[13:53:44] apeiros_: block_given? still works, yes. but with explicit definition, I usually test with `if block` ???
[13:54:17] avril14th: had to wait for 31 dec 2014 to push a first gem 0o
[13:54:32] apeiros_: explanation of above code: Proc.new without block takes the block passed to the method
[13:57:55] shevy: 31 december questions today
[13:57:58] shevy: I am scared
[14:01:06] mostlybadfly: What do you mean shevy ?
[14:04:12] shevy: mostlybadfly imagine what they could be
[14:04:17] shevy: mostlybadfly they are FINAL questions
[14:04:38] mostlybadfly: Like how do you want to be buried?
[14:06:38] phil101: Hi, Can anyone tell me how i can mdify this so that the question will be reasked if the answer isnt given? http://paste.ee/p/ieIBC
[14:13:15] waxjar: phil101: you can use loop { } around your program and use break to stop looping if someone gives a correct answer
[14:14:26] waxjar: phil101: you can shorten the if statement a bit, ["yes", "y", "no", "n"].include?(static_answer.downcase) for example
[14:16:18] phil101: waxjar: thanks, can you give me an example of your first point please?
[14:17:01] bradland: phil101: http://paste.ee/p/WfMsr
[14:17:04] gregf__: phil101: loop { puts "answer Yes, No"; break if ( gets.chomp =~ /^(y(es)?|n(o)?)$/i ); }. feels like i'm in highschool :/
[14:18:00] bradland: i would clean that up and wrap it in a CLI class.
[14:18:20] waxjar: http://paste.ee/p/PkNtQ
[14:18:42] phil101: thanks all
[14:21:31] basichash: Why can't i start a ruby program by using the shebang line at the top? e.g. #!/home/user/../..
[14:22:35] basichash: waxjar: doesn't seem to be working
[14:22:57] basichash: i'm using chruby, so my rubies are stored in /home/user/.rubies/ruby-2.1.3 for example
[14:23:51] basichash: adding #!/home/user/.rubies/ruby-2.1.3/bin to the top of my file doesn't work
[14:24:11] waxjar: that's a folder, not an executable :)
[14:24:17] basichash: all i get is 'command not work'
[14:24:35] gregf__: basichash: what does 'which ruby' return?
[14:24:45] waxjar: why don't you use #!/usr/bin/env ruby btw?
[14:24:58] bradland: ^ just what i was going to say
[14:25:01] waxjar: it's a bit more portable (and you can switch rubies)
[14:25:31] basichash: that exact parth
[14:25:50] basichash: er didn't know about that
[14:25:52] basichash: lemme try it
[14:26:46] basichash: still getting the 'command not found' error'
[14:27:27] bradland: basichash: what OS are you on?
[14:27:38] bradland: just verifying some basics
[14:27:58] bradland: in a terminal, run `which env` (without the backtics)
[14:28:14] crome: haha, great idea for obfuscated code contest
[14:28:23] crome: oops, the buffer wasn't scrolled down
[14:28:32] crome: I meant the Proc.new without block
[14:28:40] bradland: welcome to the fuuuuuutuuuuuuure crome :)
[14:29:04] bradland: basichash: that command should give you the full path to the env executable
[14:29:17] bradland: i suspect you probably misspelled something in your shebang
[14:29:23] bradland: or you???re running an outdated version of rbenv
[14:29:30] bradland: in which case you should absolutely update it
[14:29:32] basichash: i'm not using rbenv
[14:29:46] basichash: at least i don't think i am
[14:29:55] bradland: how did you install ruby?
[14:30:05] bradland: hold the phone
[14:30:06] basichash: chruby-install from what i can remember
[14:30:26] bradland: i thought i read that you were using rbenv
[14:30:38] basichash: no sorry ruby-install
[14:30:50] basichash: and chruby for changing versions
[14:30:51] bradland: ruby-install + chruby, right?
[14:30:57] bradland: lemme check something
[14:32:43] bradland: basichash: ok, try this at a terminal prompt `/usr/bin/env ruby -e 'puts "hello??????`
[14:32:58] bradland: that should say hello
[14:33:20] bradland: if you get an error, we need to figure out why your ENV doesn???t contain a valid ruby excutable path
[14:34:01] basichash: bradland: yep works
[14:34:11] bradland: ok, so back to your shell script
[14:34:19] bradland: the shebang line. copy/paste it here.
[14:35:43] basichash: #!/usr/bin/env ruby
[14:36:30] bradland: ok, looks like you???ve got it wired up correctly
[14:36:46] basichash: bradland: ah ok apparently i need to change the file to an executable, then run it with ./file.rb
[14:36:48] basichash: and that works
[14:36:51] gregf__: basichash: how are you running the script from the command line? does it have execute permissions?
[14:36:58] bradland: that was going to be my next question
[14:37:14] basichash: why do i need to prefix the file with ./?
[14:37:31] gregf__: basichash: so that it finds the script ;)
[14:37:31] bradland: basichash: in the shell, in order to execute files that aren???t in your path, you have to specify the path to the file, not just the file name
[14:37:37] bradland: ./filename is a relative path
[14:37:44] bradland: it says, start here, then use this file
[14:37:55] gregf__: basichash: do this : export PATH=$PATH:.; file.rb :)
[14:37:55] bradland: it???s equivalent to /full/path/to/filename.rb
[14:38:04] bradland: the reasons for this are security related
[14:38:28] bradland: imagine if someone secretly dropped a file named ???cd??? with a malicious script in to your home directory???
[14:38:47] basichash: ah fair enough
[14:38:49] bradland: you fire up a terminal and try to cd in to a directory, and BAM, the file named cd in your current directory would execute
[14:39:22] bradland: also, in general, avoid running anything anyone (including me) pastes here until you understand what it does
[14:39:45] basichash: can i put the dir into bashrc? e.g. export PATH=$PATH:/home/user/files/file.rb?
[14:39:55] bradland: you could, yes
[14:40:01] bradland: well, not liek that
[14:40:16] bradland: PATH is a collection of directories, not files
[14:40:32] bradland: also, be careful when modifying your path
[14:40:54] bradland: so, let???s say you did this: export PATH=$PATH:/home/user/files
[14:41:06] bradland: anything you put in to the folder /home/user/files/ will execute by name
[14:41:39] basichash: bradland: right. can i remove that path from $PATH?
[14:41:44] bradland: that???s not a bad thing. you just need to understand what it does.
[14:42:12] bradland: yes, you can.
[14:42:22] bradland: how you manage your PATH has to do with what you want to accomplish
[14:42:34] bradland: for example, i have a folder ~/bin
[14:42:45] bradland: that???s where i put all my scripts that are self-contained in a single file
[14:42:59] bradland: it???s on my PATH at the very end
[14:43:06] bradland: which is anothe important thing to note
[14:43:13] bradland: your PATH is order sensitive
[14:43:28] bradland: export PATH=$PATH:/home/user/files is not the same as export PATH=/home/user/files:$PATH
[14:43:55] basichash: oh didn't know that
[14:44:02] bradland: usually, you want your additions to path to come at the end of your path, so that the system locations are searched first
[14:44:23] bradland: so if you created a program named ???sort???, it wouldn???t overwrite the system ???sort??? command
[14:45:39] bradland: so, only add locations to your path that you???ll use frequently
[14:45:58] bradland: if you are building a ruby program that you plan to distribute, build it as a gem
[14:45:58] basichash: bradland: can i not just remove them when i don't need them?
[14:46:15] bradland: basichash: you can, but you don???t want to muck around with your path all the time.
[14:46:26] bradland: it???s a bad habit.
[14:46:55] bradland: one day you???ll forget that you???ve modified PATH in bashrc, walk away, then come back later and spend hours debugging a problem that was related to your modification :)
[14:47:46] basichash: yeah i could imagine doing that
[14:47:51] bradland: if i need to made modifications to my shell when working on a project, i place those modifications in a file within my project, then i use `source setup_shell.sh` from within the directory
[14:47:56] waxjar: package your tool as a ruby gem, install it via rubygems. there's a path set up for that already
[14:48:05] bradland: those modifications will only persist for the current shell session
[14:48:14] bradland: as soon as you ctrl+d, they go away
[14:48:30] bradland: and waxjar is right, if you???re developing something that doesn???t fit in a single file, make a gem
[14:48:46] bradland: http://guides.rubygems.org
[15:02:08] basichash: is it best practice to not use brackets when calling functions in ruby?
[15:02:33] basichash: looking through rails for example, one doesn't see a whole lot of brackets
[15:02:34] mikedugan: basichash check out https://github.com/bbatsov/ruby-style-guide
[15:03:14] mikedugan: generally, when calling library methods you should forgo parens, but you should use them when consuming your own methods
[15:09:11] basichash: mikedugan: thanks, that's helpful. is there any particular reason you should call library methods without parens, but use them for you own methods?
[15:10:00] mikedugan: readability and familiarity I s'pose
[15:14:44] bradland: i thought the rule of thumb was to omit paren for DSL implementations, but to use them elsewhere
[15:15:38] basichash: bradland: what'
[15:15:44] basichash: what exactly is a DSL?
[15:15:51] basichash: never really understood that term
[15:15:53] bradland: domain specific language
[15:16:00] bradland: have you used rake yet?
[15:16:47] pontiki: omit parens where there is no possibility of misinterpretation (yours and ruby's)
[15:16:47] bradland: rake is a DSL
[15:16:59] bradland: ^ that???s a much better rule, IMO
[15:17:31] basichash: one of the thing's i find difficult about rails is the omission of parens
[15:17:46] pontiki: you don't have to omit them
[15:18:11] basichash: pontiki: all the guides/tutorials seem to
[15:18:21] pontiki: but *you* don't have to
[15:19:06] bradland: parenthesis are explicit. omiting them is implicit.
[15:19:24] avril14th: champaagne!!
[15:19:27] bradland: so if adding paren results in the same expression as the implicit grouping, there???s no change.
[15:19:42] basichash: pontiki: what i'm saying is that that's how the guides/tutorials are formatted
[15:20:01] bradland: it???s a style choice
[15:20:09] pontiki: basichash: and i agreed with you
[15:20:16] basichash: and i'm not saying one way is better, understand that
[15:20:32] basichash: that's why i don't necessarily want to go putting parens on every single method out there
[15:20:42] pontiki: and you probably shouldn't
[15:20:48] basichash: just because i'm used to using parens, doesn't make it right
[15:20:54] pontiki: but that still fits my RoT
[15:43:26] basichash: when would i use alias?
[15:46:21] apeiros_: when a single method can use used to do the work of multiple mandated methods.
[15:46:39] apeiros_: e.q. eql? and == are the same for your class - define one, alias the other.
[15:47:50] basichash: apeiros_: why not just use the actual method?
[15:48:09] apeiros_: because *using* is fundamentally different from *defining*
[15:48:18] apeiros_: you can't *use* a method which is not defined.
[15:48:40] Godd2: basichash consider array.length and array.count. sometimes having a different word is perfect is a certain situation
[15:48:58] apeiros_: and things like Hash require eql?, not ==, while Array#include? requires ==
[16:06:40] basichash: why does case not work?
[16:06:55] basichash: e.g. dog = case lang
[16:07:05] basichash: when :en: "dog"
[16:07:13] basichash: when :de: "hund"
[16:07:30] basichash: i'm gettign a syntanx error
[16:07:31] Godd2: basichash what is :en:
[16:07:48] basichash: godd2: or "en"
[16:07:57] basichash: symbol of "en"
[16:08:03] Godd2: put "dog" on the next line by itself
[16:08:06] headius: basichash: I don't think you can use the trailing colon syntax for whens anymore
[16:08:14] Godd2: *or* do something like
[16:08:16] headius: replace with semicolon would work
[16:08:19] Godd2: when :en then "dog"
[16:09:24] basichash: headius: thanks
[16:09:46] basichash: godd2: that works too, cheers
[16:13:30] basichash: what's the point of Array.replace?
[16:13:36] basichash: why not just use the new Array?
[16:13:41] basichash: surely that's more efficient
[16:14:01] basichash: i.e. assign the variable pointer to the new array
[16:14:09] basichash: e.g. a = [1,2,3,4,5]
[16:14:18] ponga: everybody
[16:14:20] ponga: hppy new year
[16:14:24] Godd2: basichash you almost have it. it mutates the array to contain the new elements
[16:14:27] ponga: 2015 1AM here
[16:14:42] rpag: where is here
[16:14:50] ponga: east asia
[16:14:50] Morrolan: Somewhere east of middle Europe. :D
[16:15:24] waxjar: basichash: when you referring to the same array from different places for example. if you re-assign it one place, the other still refers to the old array
[16:15:28] rpag: what part of east asia
[16:15:36] waxjar: >> a = b = [1]; b = [2]; a
[16:15:37] eval-in__: waxjar => [1] (https://eval.in/238594)
[16:15:59] waxjar: >> a = b = [1]; b.replace([2]); a
[16:15:59] eval-in__: waxjar => [2] (https://eval.in/238595)
[16:16:22] shevy: ponga oh we stilll have 7 hours to go :(
[16:16:39] shevy: it's damn cold outside, I don't like this
[16:17:40] darkswordchris: Hello. How do I pass a pointer to a function to a dll call for a callback?
[16:19:01] pontiki: follow new years around the world: http://www.timeanddate.com/counters/newyearmap.html
[16:22:04] cesarstafe: hi people, a question here about what to use... I wanna do an small personal page that will just post some photographs and text like a blog... the question is which micro framework would be better .. Cuba vs Sinatra?
[16:24:40] shevy: go to Cuba, a lot of sunshine there
[16:25:21] cesarstafe: pontiki: it could be good but I want to add a login page, pagination, upload files, write post .. who will use it will need to do login and have a rich editor there
[16:25:47] ponga: shevy: im confused if you r saying that as pun or not
[16:26:03] icedragon: ACTION storms in and runs over ponga
[16:26:19] pontiki: ah, i didn't' get *any* of that from your first description
[16:27:11] cesarstafe: shevy: Cuba better than Sinatra.... is Cuba a thing born from Sinatra filosophy?
[16:27:50] shevy: Sinatra was not born in Cuba
[16:28:01] shevy: but he was a good singer regardless
[16:28:03] wmoxam: 5filosophy?
[16:28:47] shevy: sounds like that is a webpage
[16:28:53] shevy: that works like an operating system
[16:28:55] wmoxam: Phil's Ophy?
[16:29:10] Godd2: Phil's Osophy
[16:29:41] darkswordchris: How do you pass a pointer to a function to Win32API?
[16:29:45] cesarstafe: woops... sorry ... it was "philosophy" :)
[16:30:18] shevy: Phil's Pornophy
[16:31:26] Godd2: darkswordchris https://github.com/djberg96/win32-api/wiki/Getting-Started
[16:31:39] waxjar: cesarstafe: couldn't you just pick one of the bazillion wordpress-like systems?
[16:31:52] Godd2: darkswordchris youll have to pack an integer with "L"
[16:32:00] waxjar: instead of doing everything from scratch
[16:32:37] darkswordchris: godd2: I have to pack an integer to pass a function pointer?
[16:33:11] cesarstafe: waxjar: I am willing to use some ruby micro framework .. my goal is to use some ruby thing to do something productive and learn how to use it
[16:33:29] waxjar: ah, i see
[16:33:35] Godd2: darkswordchris that's what it shows in the wiki
[16:34:06] basichash: how do I change the value of an index in an array?
[16:34:21] basichash: e.g. change Array[5] to "middle'
[16:34:25] Godd2: basichash do you mean how do you change the value *at* an index?
[16:34:31] cesarstafe: I have done my webpage using node.js www.cesardiaz.com.ar and now is the time to learn some ruby microframework
[16:34:46] waxjar: cesarstafe: i prefer cuba, but sinatra may be a little easier to start out with. comes with a little more goodies
[16:34:51] Godd2: >> ary = [5,6,7]; ary[1] = 100; ary
[16:34:52] eval-in__: godd2 => [5, 100, 7] (https://eval.in/238596)
[16:34:57] cesarstafe: after 7 years of development with ruby and ruby on rails I wanna learn something more
[16:35:05] basichash: godd2: is there no method?
[16:35:16] waxjar: cesarstafe: ah 7 years of ruby, go with cuba! :P
[16:35:17] OnkelTem: I'm looking for a way to print value to stdout. I debug Compass lib
[16:35:20] basichash: e.g. like Array.insert, but replace instead of insert?
[16:35:22] OnkelTem: How can I do that?
[16:35:26] Godd2: basichash the ary[i] is syntactic sugar for ary.[](i)
[16:35:27] cesarstafe: waxjar: thanks :)
[16:35:37] Godd2: so it is a method call
[16:35:56] basichash: godd2: ah ok, so there's not other method call?
[16:36:00] Godd2: er, ary.[]=(i) but you get the picture
[16:37:50] Godd2: basichash not that I know of. Everyone just sets at a given index with the bracket notation
[16:38:28] OnkelTem: How to print to stdout?
[16:39:16] Godd2: OnkelTem print and puts both print to stdout by default
[16:39:40] Godd2: >> puts "hello, world!"
[16:39:40] eval-in__: godd2 => hello, world! ... (https://eval.in/238599)
[16:40:06] OnkelTem: godd2: thank you!
[16:41:24] Godd2: OnkelTem you can be more explicit with $stdout.puts "some string"
[16:43:05] basichash: what's the opposite of .next?
[16:43:27] basichash: >> "a".next
[16:43:27] eval-in__: basichash => "b" (https://eval.in/238600)
[16:44:26] waxjar: there isn't one
[16:44:35] waxjar: for String at least
[16:44:42] Godd2: basichash there isn't one. It's because the function is not invertible
[16:44:58] Godd2: that is, you can't always know where you came from
[16:45:20] basichash: right, thanks
[16:47:21] darkswordchris: Has anyone used the "K" pointer in Win32API? https://github.com/djberg96/win32-api/wiki/Function-Prototypes
[16:54:24] basichash: what's the difference between .intern and .to_sym?
[16:54:50] Godd2: basichash nothing. symbols are interned strings
[16:56:31] basichash: godd2: no speed differences between the two methods?
[16:56:49] Godd2: oh I'm not sure. I've never benchmarked them
[16:57:48] apeiros_: they are aliases
[16:59:56] ajacmac: .... wonder if making a game that teaches a programming language would be a decent way to refine your own understanding of said programming language
[17:02:48] shevy: yeah it would
[17:03:03] shevy: also sounds like a lot of work
[17:03:36] basichash: ajacmac: it's a trap!
[17:04:09] ajacmac: lol, ya it would be a lot of work, but making games is fun!...right?
[17:06:37] basichash: what's the ruby equivalent of list comrehensions?
[17:06:52] Godd2: basichash there isn't one *strictly speaking*
[17:07:07] Godd2: however, you can achieve the same effect with map and select
[17:08:05] Godd2: basichash also, if you're coming from python, things will seem a little out of order. but youll get used to it :)
[17:08:05] basichash: what about zip?
[17:08:44] Godd2: basichash http://www.ruby-doc.org/core-2.2.0/Array.html#method-i-zip
[17:08:48] Godd2: that kind of zip?
[17:09:21] Hanmac: ajacmac: hm ever heard of RPGMakerXP / or VX or VXAce? that game engine does use ruby as scripting ;P
[17:12:12] basichash: godd2: thanks
[17:15:00] basichash: godd2: should i use symbols for hashes?
[17:15:27] Godd2: basichash yes
[17:19:02] shevy: basichash you are from germany? lots of german speaking folks in here
[17:35:54] basichash: what's the ruby version of filter? (python)
[17:36:07] Godd2: basichash select
[17:36:23] Godd2: >> [1,2,3,4,5].select {|i| i.odd?}
[17:36:23] eval-in__: godd2 => [1, 3, 5] (https://eval.in/238614)
[17:36:44] Hanmac: basichash: there is also find_all but that is slightly different for some classes
[17:37:55] basichash: why does Dir.entries(Dir.pwd).select { |file| not e.starts_with? "." } not work?
[17:38:04] basichash: ignore that
[17:38:08] basichash: pretend e = file
[17:38:38] basichash: >>Dir.entries(Dir.pwd).select { |file| not file.starts_with? "." }
[17:38:38] eval-in__: basichash => undefined method `starts_with?' for "..":String (NoMethodError) ... (https://eval.in/238615)
[17:38:59] Godd2: it's #start_with? not #starts_with?
[17:40:47] Hanmac: basichash: i would use the negated form with .reject { |file| file.starts_with? "." }
[17:42:24] Hanmac: basichash: if you only want the current dir, why not use something like that?
[17:42:24] Hanmac: >> Dir.glob("*")
[17:42:24] eval-in__: Hanmac => ["input-ebf5d8387e8a", "output-ebf5d8387e8a", "source-ebf5d8387e8a"] (https://eval.in/238616)
[17:43:25] basichash: hanmac: thanks, good advice
[17:44:37] basichash: i know this is obviously going to recieve a biased response, but do you guys find ruby more powerful than python?
[17:45:16] slash_nick: Is there something like `Date.strftime(some_date, "%Y-%m-%d")` ... wanting to avoid nil.strftime without getting verbose
[17:45:45] Hanmac: basichash: they are extremly similar ... i image ruby is pythons evil twin sister ;P
[17:46:07] Godd2: basichash depends on your definition of powerful :)
[17:46:30] Godd2: I can do more stuff in Ruby because I know Ruby better
[17:48:47] Hanmac: imo ruby also feels more free than python because you dont need the explicit this value ..
[17:49:10] Godd2: hanmac I believe Python uses self as well
[17:50:13] Hanmac: hm last time i checked you needed to give this as parameter too ... hm that might have changed since i remember
[17:51:34] basichash: pythong does indeed use self
[17:52:03] GaryOak_: I guess self is more explicit, pythonic
[17:52:32] Godd2: "explicit is often better than implicit" that's probably something most rubyists wouldn't necessarily agree with
[17:52:46] GaryOak_: Doesn't ruby have a method call hierarchy to find the correct method?
[17:52:47] Mon_Ouie: In Python it's a convention, not enforced by the language --- you could do def foo(this_one): instead of foo(self):
[17:52:54] Godd2: I prefer being more declarative when I code
[17:53:24] shevy: godd2 like expression dance while coding?
[17:53:49] Godd2: shevy or playin some sweet licks on my guitar
[17:54:03] shevy: GaryOak_ did you know that you can call self in python as non_self too?
[17:54:20] GaryOak_: hahaha, that's very readable :P
[17:54:49] Godd2: GaryOak_ you can ask a class about its ancestors
[17:55:19] Godd2: which would show all the reasonable places a method may be defined for its instances
[17:55:55] shevy: basichash powerful is rather subjective. Ruby has a few things that python does not have, like blocks. That means one extra argument to all methods for no exra define-cost. I am sure python has some other tricks that ruby does not have, like @bla decorators
[17:56:02] sargas: what is the difference between `x = gets` and `x = $stdin.gets` ?
[17:56:17] sargas: what difference does global $stdin makes?
[17:56:53] shevy: sargas I think gets without anything before it is Kernel.gets, but not sure. Kernel.gets would be calling $stdin.gets though - what I just wrote might be totally wrong
[17:57:14] shevy: sargas there also is STDIN.gets ;)
[17:57:23] GaryOak_: godd2: so does that mean it starts looking in the class def first?
[17:57:24] Mon_Ouie: Yeah, Kernel#gets is ARGF.gets
[17:58:02] GaryOak_: Could you do $stdout.gets to read input from another process?
[17:58:16] Godd2: GaryOak_ the simple answer is yes
[17:58:26] Mon_Ouie: $stdout is an output, as it name implies, you can't read from it
[17:58:56] Godd2: GaryOak_ the complicated answer is that it checks the object's singleton class first, but if you haven't touched the objects singleton class, then you don't have to worry
[17:59:24] GaryOak_: Mon_Ouie: oh haha that makes sense maybe $stderr
[17:59:48] Mon_Ouie: That's also an output stream (intended to be used to print errors)
[18:00:13] GaryOak_: Mon_Ouie: I'm an idiot
[18:01:59] GaryOak_: godd2: Is a ruby Singleton, like a classes non-instanced object container sort of?
[18:03:31] Godd2: GaryOak_ sort of. its a special class for an object and only for that object
[18:07:51] GaryOak_: godd2: interesting
[18:14:38] basichash: any good ruby programs out there i should study?
[18:14:45] basichash: nothing to complex
[18:15:33] leafybasil: basichash: the best option is usually to read the code for something you use, like sinatra
[18:16:06] GaryOak_: I was looking at that Cuba project, and that has relatively simple code
[18:17:03] basichash: thanks, i'll check em out
[18:21:01] basichash: Is Rack the equivalent of werkzeug?
[18:32:20] shevy: not sure people know werkzeug
[18:32:35] shevy: does django use werkzeug?
[18:32:48] dfinninger: anyone know where to find the documentation for "Gem" as a ruby class/module? I see references to "Gem.find_file", etc, and I'd like to see the rest of the documentation. Googling for it is hard for obvious reasons....
[18:33:04] shevy: dfinninger that is the rubygems API
[18:33:18] dfinninger: that's nifty
[18:33:31] shevy: dfinninger one way might be at http://apidock.com/ruby/Gem/ though it seems not the most recent one
[18:34:00] shevy: http://apidock.com/ruby/Gem/find_files/class
[18:35:14] dfinninger: http://ruby-doc.org/stdlib-2.1.5/libdoc/rubygems/rdoc/Gem.html
[18:35:22] dfinninger: shevy: thanks!
[18:49:13] GaryOak_: I think writing a web microframework in ruby is the new fizzbuzz
[18:50:20] shevy: GaryOak_ but we did this before no?
[18:50:31] shevy: https://github.com/camping/camping
[18:50:50] shevy: here is the code in all its glory https://github.com/camping/camping/blob/master/lib/camping.rb
[18:51:00] GaryOak_: It's still going though
[18:51:09] GaryOak_: people are still writing them
[18:51:35] GaryOak_: which is sort of like how everyone writes a javascript carousel at some point
[18:51:53] shevy: I also tried to write a webframework
[18:52:00] shevy: but I could not even get routing right
[18:52:24] shevy: I think the sinatra approach is nice - you subclass
[18:52:40] GaryOak_: I think it's definitely not simple, but there are just a whole bunch of them
[18:52:57] shevy: class MyApp < Sinatra::Base
[18:53:09] GaryOak_: Most of the ones I've seen subclass
[18:53:14] shevy: Ramaze had a similar approach but ever since rack appeared, ramaze slowly died
[18:53:14] shevy: (and sinatra appeared)
[18:53:25] shevy: GaryOak_ how do you subclass in rails?
[18:53:46] GaryOak_: class MyRails < Rails::BaseClass :P
[18:54:25] GaryOak_: If you want a real rails subclass you can fork it using git
[18:56:11] GaryOak_: but I digress, people should have options
[19:02:57] shevy: know what would be cool
[19:03:07] shevy: extensive documentation of methods in irb when pressing tab
[19:03:25] shevy: Readline.readline<HIT TAB HERE>
[19:03:26] shevy: and then a description of how many arguments are required, and what they do
[19:05:47] jaequery: when you do the .find , and return inside the block , is it normal that it returns it for the entire method scope?
[19:06:23] GaryOak_: shevy: http://pablotron.org/software/wirble/
[19:09:04] apeiros_: jaequery: yes. to return from the block to the yielding method, use next.
[19:09:19] apeiros_: to return from the block to the scope invoking the yielding method, use break
[19:10:20] jaequery: is that how it is for any of the blocks?
[19:10:57] jaequery: or is this how it is just for the .find method?
[19:11:20] jaequery: i never had to do break inside any of the block scope before
[19:11:24] jaequery: so this is all new to me
[19:12:21] shevy: GaryOak_ hmm
[19:12:42] shevy: GaryOak_ oh yeah that requires a ri lookup
[19:13:53] shevy: I suppose it is possible to intercept a tab key press event?
[19:13:59] GaryOak_: shevy: is there a better way to pull the docs, or just parse the method call source?
[19:14:15] shevy: nono I mean ri is ok
[19:14:16] shevy: I just don't like to have to type "ri" before or something like that
[19:14:40] shevy: there was once a project called ruby-shell - it had a ncurses drop down menu when you hit TAB
[19:14:46] shevy: that was cool
[19:15:07] shevy: but it was abandoned... everybody hates curses
[19:28:20] bricker: What's the term for a timestamp that tracks the last time an operation was performed, to aid in incremental updates? It's not "delta" but a related term I think
[19:35:34] icbm: effective_date?
[19:35:44] shevy: Feedback: If you have an audio file called foo.mp3 that has a length of 60 seconds, and then you make an instruction that says "cut 50%" ... What would you naturally assume to be the outcome of this operation?
[19:38:13] icbm: shevy: an audio file half as long? Problem is, you don't know which 50% to cut.
[19:38:32] icbm: shevy: alternatively, an audio file half as loud.
[19:38:58] icbm: or half as big, or half the bit rate. I give up.
[19:39:02] shevy: icbm if you would think that this means half as long, would you preferrentially think it would be the first half, the second half, or both halves?
[19:39:55] shevy: I thought short instructions would be nice... but it is ambiguous which is not good
[19:39:58] icbm: shevy: I would suspect it of cutting the last half.
[19:40:40] waxjar: truncate would be a good name maybe
[19:40:50] GaryOak_: yeah truncate is better
[19:41:08] icbm: truncate definitely means last half, and is better
[19:42:23] waxjar: cut 50% i'd assume file size
[19:42:36] waxjar: *with cut 50%
[20:07:49] shevy: oh I just noticed something in term ansicolor
[20:07:50] shevy: module Term::ANSIColor
[20:07:58] shevy: he saves one "end" that way right?
[20:08:27] shevy: http://pastie.org/9806994
[20:09:03] terrellt: Saves nesting.
[20:09:18] terrellt: So yes, one end, but to me it's more that now you don't have to be four spaces in
[20:09:51] Hanmac: shevy its different when you want to access modules defined in the module/class Term, because with that the Term namespace is not openend
[20:09:52] banister: shevy can you stop harrassing me on reddit? You've been out of your depth every single time and it's becoming embarrassing watching you prattle on
[20:10:02] terrellt: That being said, I like to keep the leaf resource at its own indentation level. So I'll do module Foo::Bar; module Banana; end; end;, but not module Foo::Bar::Banana; end;
[20:11:34] shevy: terrellt hmm why not the Foo::Bar::Banana variant?
[20:12:21] terrellt: Clarity and personal preference. My brain jumps to the module name quicker that way, and I can look one up to see what namespace I'm in.
[20:24:35] bradland: shevy: regarding audio, when removing duration, trucate is a good term. when altering amplitude, attenuate/amplify would be the terms used.
[20:27:56] shevy: bradland good idea, I'll note that down. I haven't yet reached the stage of audio filters; I've only just recently started reading https://trac.ffmpeg.org/wiki/FilteringGuide and going through "ffmpeg -filters" ... ffmpeg alone has about 170 filters, mostly I guess video filters
[20:28:55] bradland: when designing your API, think of duration as its own entity
[20:29:13] bradland: most editing is done using markers, referred to as in & out
[20:29:21] bradland: once markers ar eset, you perform an operation
[20:29:31] bradland: it???s a nice set of abstractions for designing and api
[20:35:20] Hanmac: shevy when designing the api, might also add a split method that does split the audio file in two parts like your 50%
[20:35:52] shevy: hanmac makes sense
[20:36:12] Hanmac: shevy i will only make sense until next year ;P
[20:37:09] shevy: hanmac that reminds me... does rxw work?
[20:37:27] shevy: or rather, with gstreamer
[20:37:42] shevy: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.4.5.tar.xz
[20:37:44] Hanmac: it should with 2.2 but there are some stuff i need to push to my repo after fixing ...
[20:38:11] Hanmac: shevy about gstreamer that is not rwx fault, ping the wx to fix it and get it working
[21:13:22] bashusr: in rspec, there is an output matcher than can be used to check the output of a stream like stdout, how can i use that output matcher multiple times without making multiple calls to the block?
[21:15:23] pipework: bashusr: Not a special one that I know of.
[21:30:23] icedragon: http://rubini.us/2014/12/31/matz-s-ruby-developers-don-t-use-rubyspec/
[21:30:29] icedragon: ACTION wanders off again
[21:31:33] shevy: IceDragon that makes sense, the spec was not created by the core team after all
[21:32:23] icedragon: shevy: make me a samwich pls :3
[21:32:35] shevy: hey 2014 is not yet over!
[21:33:09] shevy: we all have noble undertakings to do for 2015
[21:33:12] shevy: like lose weight
[21:33:27] icedragon: In my case its weight gain
[21:33:31] icedragon: :P I'm underweight
[21:34:16] shevy: eat more sheep
[21:34:25] shevy: besides age often helps you gain weight!
[21:35:46] icedragon: hue hue hue
[21:36:08] icedragon: aie, I forgot to update my system mruby D:
[21:36:13] icedragon: Its probably hundreds of commits behind again
[21:36:52] shevy: from which old version to which new version?
[21:37:06] icedragon: IHaveNoIdea
[21:37:16] icedragon: :P I don't check the versions I just grab the latest code from github
[21:37:44] icedragon: oh yeah, I was suppose to try rubinius again
[21:38:05] shevy: you compile ruby from github source?
[21:39:53] icedragon: I grab regular ruby with my systems package manager
[21:43:03] Nilium: what about mruby the fabled embeddable ruby of yore
[21:43:42] Nilium: I'm not sure if anyone's actually using mruby
[21:47:08] shevy: perhaps people who know C?
[21:48:39] icedragon: <Nilium> I'm not sure if anyone's actually using mruby # https://github.com/IceDragon200/moon
[21:48:44] icedragon: TAKE THAT BACK
[21:49:01] icedragon: ACTION shoves the words at Nilium
[21:49:49] icedragon: orz yeah, one..
[21:49:49] shevy: nice logo
[21:49:52] Nilium: What shevy said.
[21:49:58] shevy: but you should wrap a dragon around it
[21:50:00] icedragon: ITS A START
[21:50:11] shevy: a moon dragon
[21:50:14] Nilium: I thought about trying to replace Lua with mruby in my engine, but I'm not sure if you can really beat Lua on performance
[21:50:16] icedragon: The logo is a place holder since I have 0 design skillz
[21:50:30] icedragon: Lua's API scares the shit out of me
[21:50:39] Nilium: It's pretty simple.
[21:50:45] icedragon: Since I was used to ruby's rb_define_method stuff
[21:50:46] shevy: Nilium well I would not assume so since mruby even if it implements just a simpler or faster ruby, would still be more complicated than lua. but perhaps it can come close?
[21:50:51] Nilium: Frankly, Ruby's nearly-undocumented C API worries me more.
[21:51:13] icedragon: Nilium: yep, and when shit breaks you wonder why
[21:51:15] Nilium: Also, its fetish for abbreviated names
[21:51:15] shevy: IceDragon know how that is with placeholders... they become the official logo :)
[21:52:02] icedragon: Nilium: the good news is, mruby killed that
[21:52:14] icedragon: :P You use long function names instead
[21:53:17] icedragon: shevy: I wish I knew some more OpenGL, currently moon is broken as hell >:
[21:53:29] shevy: just add some hacks to fix it
[21:53:36] icedragon: IT HAS ENOUGH OF THEM
[21:53:48] shevy: just improve on the logo :>
[21:54:00] icedragon: yeah, the logo will solve everything :D
[21:54:05] Nilium: ACTION did OpenGL and other bindings for Ruby proper
[21:54:06] icedragon: THATS NOT THE POINT
[21:54:07] Nilium: That was fun.
[21:54:09] shevy: IceDragon I tried to get inspired by logos from other projects and use them as base ideas
[21:54:29] shevy: IceDragon but I eventually came to realize that, surprisingly enough, gimp is awful, and it keeps on getting worse and worse with each release, as strange as that sounds
[21:55:02] shevy: so I had a flying pegasus once
[21:55:06] shevy: turned it into a flying unicorn
[21:55:17] shevy: now it looks like a mutant sheep with an overly long horn :(
[21:55:25] icedragon: There was something about photoshop
[21:55:44] icedragon: When you open photoshop
[21:55:52] icedragon: and just saw: "This, is an image editor"
[21:56:06] icedragon: When you open GIMP: "Not sure if image editor or window hell"
[21:56:37] shevy: it now has supposedly a single window mode. I tried it. it does not work correctly for me. I cant freely move the widgets to another position
[21:56:39] icedragon: GIMP does have some nice features
[21:56:42] icedragon: like the palette editing
[21:57:01] icedragon: but arceus damn, tool management is hellish
[21:57:07] shevy: wow pipework you are a happy chatter on #ruby-lang!
[21:57:32] icedragon: You mean the #serious place
[21:57:42] pipework: shevy: I'm sober, it won't happen again, sir.
[21:58:10] icedragon: ACTION imagines pipework saluting while saying that
[21:58:10] shevy: IceDragon I know what is missing
[21:58:21] shevy: IceDragon screenshots!
[21:58:26] havenwood: Attehhhnnn...HUT!
[21:58:49] icedragon: shevy: ;_; I can't even screenshot now
[21:58:57] icedragon: ACTION salutes
[21:59:12] icedragon: PRIVATE ICEDRAGON REPORTING FOR DUUTY SIR!
[21:59:28] shevy: IceDragon well that's ok, 2015 has just started yet so there is a long of time ahead
[21:59:36] shevy: *a lot of time
[22:02:12] icedragon: shevy: I'll figure out the problem soon enough :P
[23:03:57] QKO: HAPPY NEW YEAR EVERYONE!!!
[23:19:07] Bullit_: Happy New Year :o)
[23:19:31] GaryOak__: It's still a few hours away for me, but Happy New Year!!
[23:39:14] shevy: HAPPY NEW YEAR!
[23:39:17] shevy: ON TO NEW CODE