<Scriptonaut>
hey all, I was curious, are there any good terminal interface libraries other than ncurses?
<Scriptonaut>
I have always found ncurses to be pretty unintuitive, and figured by now there must be some other good quailty gems for writing terminal applications
cthulchu_ has quit [Ping timeout: 240 seconds]
ciscam has quit [Ping timeout: 240 seconds]
ciscam has joined #ruby
desperek has quit [Quit: xoxo]
npgm has quit [Quit: Connection closed for inactivity]
eckhardt_ has joined #ruby
Mia has quit [Read error: Connection reset by peer]
nertzy has joined #ruby
ramfjord has quit [Ping timeout: 248 seconds]
BlopMonster has joined #ruby
shinnya has quit [Ping timeout: 240 seconds]
kmurphy4_ has joined #ruby
BlopMonster has quit [Ping timeout: 268 seconds]
srruby has quit [Ping timeout: 248 seconds]
chamar has joined #ruby
pabs has quit [Ping timeout: 264 seconds]
ur5us has quit [Remote host closed the connection]
cconstantine has joined #ruby
pabs has joined #ruby
ur5us has joined #ruby
zapata has quit [Read error: Connection reset by peer]
kmurphy4_ is now known as kmurphy4
chamar has quit [Quit: Leaving]
gizmore has joined #ruby
karapetyan has quit [Remote host closed the connection]
gizmore|2 has quit [Ping timeout: 240 seconds]
cconstantine has quit [Quit: cconstantine]
zapata has joined #ruby
dendazen has joined #ruby
dendazen has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
SeepingN has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
shinnya has joined #ruby
za1b1tsu has quit [Quit: WeeChat 2.1]
<dviola>
I'll have to compile preview2 to see it for myself
<havenwood>
dviola: Yup
<dviola>
but it looks neat so far
<dminuoso>
havenwood: By the way, Ive been thinking about rigging a compiler optimization pass into Ruby.
<dminuoso>
One that would require a small bit of code analysis
<dviola>
will it be like python that we'll get a lot of pyc files when executing code? :P
<dviola>
well, rbc in this case
<dminuoso>
Imagine you could write lambda literals, to_proc them - and gain the efficiency of blocks!
Guest75272 has quit [Ping timeout: 245 seconds]
<dminuoso>
Sadly the existence of ObjectSpace makes this impossible.
sauvin has joined #ruby
<dminuoso>
And this is ultra sad, because you'd think that `pred = -> a { ... }; arr.filter(&pred)` could optimize the lambda away *statically*
cgfbee has joined #ruby
<havenwood>
dviola: Tools like yomikomu and bootsnap have options for locally cached ir, but both use a central default location. They'd be the ones creating .rbc files, precompiling Ruby code to intermediate representation.
<havenwood>
dviola: The JIT actually uses /tmp for .c and .so files.
<havenwood>
dviola: /tmp is in-memory on Linux
<dviola>
havenwood: nice
<dviola>
right, tmpfs
<dviola>
reading your blog post, havenwood
za1b1tsu has joined #ruby
reber has joined #ruby
Puffball has quit [Quit: Puffball]
<dviola>
very nice, I need to try optcarrot
<eam>
all reads and writes are potentially in memory on linux, until you flush a cache
anisha has joined #ruby
reber has quit [Remote host closed the connection]
<dminuoso>
all writes are potentially in a cache line, until you evict it
* dminuoso
pokes eam with further pedantry
troys has quit [Quit: Bye]
za1b1tsu has quit [Quit: WeeChat 2.1]
venmx has joined #ruby
pabs has quit [Ping timeout: 264 seconds]
pabs has joined #ruby
reber has joined #ruby
aupadhye has joined #ruby
aupadhye_ has joined #ruby
aupadhye_ has quit [Client Quit]
mikeric has quit []
karapetyan has joined #ruby
karapetyan has quit [Ping timeout: 276 seconds]
ciscam has quit [Ping timeout: 260 seconds]
ciscam has joined #ruby
biberu has joined #ruby
amar has joined #ruby
andikr has joined #ruby
kliq has joined #ruby
amar has quit [Ping timeout: 256 seconds]
donofrio has quit [Remote host closed the connection]
za1b1tsu has joined #ruby
schleppel has joined #ruby
yohji has joined #ruby
<dminuoso>
havenwood: I just realized that this implementation is garbage.
<dminuoso>
It's such a cheap and bad implementation
<dminuoso>
It produces space leaks, has weird edge cases where TVar users spin in a loop
<dminuoso>
"abort_transaction"
<dminuoso>
I shouldn't have been surprised.
dviola has quit [Quit: WeeChat 2.1]
wkoszek2 has joined #ruby
Jiaoyin has quit [Ping timeout: 260 seconds]
dreamthese has quit [Read error: Connection reset by peer]
\void has quit [Quit: So long, and thanks for all the fish.]
<arne>
thanks alot, i will tell you how good this performs
<dminuoso>
arne: I discovered a bug in concurrent ruby that will cause a consumer to go hot until you've written to this at least once, just something to keep in mind
jottr has joined #ruby
BlopMonster has quit [Ping timeout: 264 seconds]
<dminuoso>
(so if that ever becomes an issue, you can simply. atomically { pool.unget(nil); pool.read } during setup
<arne>
well, there will be written to it, i gues
<arne>
dminuoso: but what do i do with the following problem
<arne>
let's say i do a queue of 8 8192-length rsa keys
<arne>
this code will start on ~8 processes
<arne>
which results in 8*8 8192-length rsa keys being created on startup
amar_ has joined #ruby
<dminuoso>
Oh I should add a note you aught to read up on how STM works probably. There's some subtleties that are not obvious, for example the code inside `atomically` blocks need to be pure (no side effects)
<dminuoso>
(Because may be retried)
amar has quit [Ping timeout: 240 seconds]
<arne>
well, not for me , i understand the code, kinda :)
<arne>
but will this be part of concurrent ruby? then you maybe should
Beams has joined #ruby
bathtub_shark has quit [Quit: WeeChat 2.1]
Zarthus has quit [Quit: I can't go to hell. I'm all out of vacation days.]
venmx has joined #ruby
<dminuoso>
arne: yes
<dminuoso>
arne: is there a question by the way? I dont see what the problem is
pabs has quit [Ping timeout: 264 seconds]
conta has joined #ruby
claudiuinberlin has quit [Ping timeout: 248 seconds]
<arne>
dminuoso: well... startup would be super expensive.. if 8 programs do fill this queue
<arne>
there is no clever way to tackle this.. is there?
<dminuoso>
arne: across different processes?
<arne>
yes
<arne>
pls don't say redis or database
pabs has joined #ruby
<dminuoso>
arne: there's a wonderful solution here that relies soley on TQueues now.
<dminuoso>
arne: you could write a small server that has a TBQueue and serves RSA keys from it to requests
<dminuoso>
perhaps a miniature sinatra server listening on a unix domain socket
<dminuoso>
and then each process has a "producer" that fetches from that server
<dminuoso>
and uses a local TBQueue
<dminuoso>
or perhaps you do some other form of IPC, maybe pipes
<dminuoso>
(transactional queues are such a wonderful method of synchronization)
Zarthus has joined #ruby
<dminuoso>
arne: but I dont know whether you gain any advantage from that
<dminuoso>
10:54 arne | which results in 8*8 8192-length rsa keys being created on startup
<dminuoso>
this will happen in separate threads though
<dminuoso>
but. GVL.
<arne>
yeah but still, thats a lot of calculations
<arne>
causes some lag in other proccesses
<dminuoso>
not as much other processes but your ruby app
<arne>
mini-IPC i wonder how you would do that
<dminuoso>
like I said.
<dminuoso>
you have one small server with a TBQueue
<arne>
but i guess not possible, since each process is a docker container :/
<dminuoso>
so what?
<dminuoso>
arne: you can use network
<arne>
well it would be tcpip.. and would need a stupid complexity for such simple task
<arne>
well then i would just use the database as IPC
<dminuoso>
you dont need complexity thats the point
<dminuoso>
Burgestrand: And I can seamlessly integrate it into concurrent code.
<arne>
uhh and that thing blocks when it's full?
<dminuoso>
SizedQueue wont go well
<Burgestrand>
arne Yeah.
<dminuoso>
Burgestrand: But yeah, I didnt know about that.
<dminuoso>
Burgestrand: Id prefer the TBQueue still.
<Burgestrand>
dminuoso How so?
<arne>
i wonder about that one too
<dminuoso>
Burgestrand: Because `atomically`?
<Burgestrand>
SizedQueue is documented to be thread-safe for both push and pop
<Burgestrand>
(same as Queue)
<dminuoso>
Concurrent.atomically { b = someQueue.read; a = someTvar.read; someOtherQueue.write(a + b) }
<dminuoso>
Voila. SizedQueue no longer works for this kind of thing.
<dminuoso>
You end up with crazy locking mechanics if you do anything non trivial with SizedQueue
<dminuoso>
with STM you talk in terms of transactions and consistent views of memory
<Burgestrand>
Yeah, I agree, when you start coordinating multiple pieces of mutable state then locking becomes prone to a bunch of problems that you don't really have with STM.
<Burgestrand>
Although in this case it feels like using a nuke to open an egg when a spoon is sufficient >D
<Burgestrand>
… although, to be fair, in the case of generating expensive resources you want to spread that across multiple machines anyway so neither approach is actually useful
<dminuoso>
Burgestrand: Ive grown accustomed to defaulting to STM because I found that I have fewer issues in the long run.
<dminuoso>
Because at some point you may decide to "make a little tweak" and then you end up wasting weeks of debugging race conditions
<dminuoso>
Also I can trivially reason about STM. I cant trivially reason about SizedQueue without fully diving into its implementation.
<Burgestrand>
Absolutely. I used STM in haskell quite extensively, I like it, especially when the type system helps you even further to make it impossible to attempt to use it where it doesn't make sense.
<dminuoso>
Burgestrand: btw its funny that the haskell implementation and my code line up exactly.. :D
<lupine>
I bought hardware on the strength of it having hardware transactional memory
<lupine>
but then they disabled it in a microcode update :'(
<Burgestrand>
dminuoso I'm not surprised you brought up STM with your recent (well, a year or two) interest in type theory and functional programming
<Burgestrand>
dminuoso sorry, that sounded way more douchy than I realized at first, I apologize!
<dminuoso>
Burgestrand: All good. I read it as "it seemed like a logical consequence"
<Burgestrand>
dminuoso Indeed, it's been interesting to read your explanations on all the advanced stuff you've been teaching in here :)
pabs has quit [Ping timeout: 255 seconds]
amar_ has quit [Remote host closed the connection]
pabs has joined #ruby
<dminuoso>
Burgestrand: By the way, SizedQueue might be substantially slower
<dminuoso>
The reason is that uses a single mutex protected queue
<dminuoso>
The double buffering in my TBQueue makes concurrent accesses possible without conflict
<dminuoso>
(as long as the read buffer still has resources left of course)
<Burgestrand>
dminuoso I admit I didn't read the entire TBQueue implementation, but I assume it holds true no matter the number of producers/consumers or speed of production/consumption?
apeiros_ has joined #ruby
karapetyan has joined #ruby
<dminuoso>
Burgestrand: Right. My TBQueue internally has two tvar buffers: An in buffer and an out buffer. Reads are served from the in buffer, writes are served to the out buffer
<dminuoso>
if the read buffer is empty, the write buffer is flushed into the read buffer
<dminuoso>
err.. switch in and out in that sentence =)
<dminuoso>
though I suppose if the producer is really slow it wont really matter
ellcs has joined #ruby
<Burgestrand>
dminuoso My memory is a bit foggy, I recall the transaction is only retried if the initial state of accessed memory is changed from the conditions you entered the transaction in, i.e. it's not gonna spin forever if the circumstances don't change?
Beams has quit [Ping timeout: 240 seconds]
<dminuoso>
Burgestrand: right
<dminuoso>
Burgestrand: STM keeps a log on all writes and logs on each transaction
<Burgestrand>
(because otherwise we'd end up in a case where the consumers could starve the producers of resources if they keep polling while the queue is empty)
<dminuoso>
Burgestrand: so every `t.read` I do is recorded. If I retry the transaction, it will block until any tvar I've read has been changed
karapetyan has quit [Remote host closed the connection]
<Burgestrand>
dminuoso Liking type systems (e.g. haskell, or more recently swift) AND dynamic non-typed systems (e.g. ruby) alike is a constant battle of mine, it doesn't make sense to me but it's there nonetheless
<dminuoso>
Burgestrand: The more I get into type theory, the more I realize that "no type system" (there is *no such thing* as a dynamic type system) have very few to no benefits.
<dminuoso>
No type systems gain the ability to express certain good programs (according to your operational model) that a type system might prevent. But with good habits this will very rarely be the case.
<dminuoso>
Burgestrand: Why do you like lack of types?
minimalism has quit [Quit: minimalism]
<Burgestrand>
Yeah, I try to avoid the labels of what to call the different type systems, I try to stick to providing concrete examples of implementations instead :)
<Burgestrand>
(mainly because I don't know what terminology to use, and even if I did I'm not sure my audience does either)
karapetyan has joined #ruby
<dminuoso>
Burgestrand: ruby has no type system to begin with.
<Burgestrand>
dminuoso I probably like it because all explicitly typed systems I've come across so far has lacked expressiveness in one way or the other, which causes a bunch of boilerplate that makes things (feel) unecessarily difficult to implement
karapetyan has quit [Remote host closed the connection]
<dminuoso>
Burgestrand: Many programmers conflate runtime object tagging and types. They are somewhat related, but types are not about the former.
<dminuoso>
And you cant do the former to do the latter *at all*
<Burgestrand>
e.g. my gripe with haskell started as I was writing a network protocol parser and the only acceptable path forward was Template Haskell, and at the time that wasn't really a nice compromise either
<dminuoso>
Huh? :o
<dminuoso>
TH is quite a bag, what kind of problem did you have?
<Burgestrand>
I'm not sure I can do the specifics justice to justify it today, but I had the luck of having a handful of haskell core members around me to ask for advice at the time that verified my approach, i.e. put up with the boilerplate or use template haskell. I wish I had a better answer than "trust me", because honestly I don't think that's a good argument :)
<dminuoso>
Burgestrand: No I get it. Im writing a protocol implementation and I have to use TH for one part of it (but thats really just boilerplate reduction) as well.
<dminuoso>
Burgestrand: In most cases you *could* still escape into the value world (like you would do in Ruby anyhow)
<Burgestrand>
Aye, it wasn't something that couldn't be solved in regular haskell, it just required A LOT of typing, it was essentially turning a stream of bytes into a stream of records
karapetyan has joined #ruby
<Burgestrand>
s/records/packet data types/
<dminuoso>
Burgestrand: But I like TH for the fact that I get to do meta programming before the type checker runs.
<cdunklau>
dminuoso: when you say "type" what do you mean
<cdunklau>
like, type theory type?
Mike11 has joined #ruby
<dminuoso>
cdunklau: what other types are there?
<cdunklau>
dminuoso: it's a massively overloaded term
<dminuoso>
cdunklau: if you implement a type system, its really not
<dminuoso>
cdunklau: its just programmers that dont understand it well/at all that have a bajillion ideas what a type might be
<dminuoso>
cdunklau: the probably best universally accepted definition arises from TaPL: "A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute"
karapetyan has quit [Remote host closed the connection]
<cdunklau>
dminuoso: okay
shinnya has quit [Ping timeout: 260 seconds]
<cdunklau>
dminuoso: i was mostly just wondering what you meant by type there, semantically
<cdunklau>
dminuoso: thanks for the link, i was looking for a rabbit hole to dive into :)
<dminuoso>
cdunklau: There's a lot of depth in that definition by the way, and it might hint at what Im trying to say.
<dminuoso>
a "type-safe" language, is that that ties types to a certain operational model
<dminuoso>
cdunklau: ah yeah its a nice little read :)
<cdunklau>
dminuoso: i never had a formal CS education (or math beyond linear algebra), so getting tidbits like this is as frusterating as it is astonishing :)
ellcs has quit [Ping timeout: 260 seconds]
<cdunklau>
dminuoso: i suppose what i'm trying to say is "i have no idea what you're saying"
<dminuoso>
cdunklau: Let me give you an example:
<cdunklau>
if you want. i'm not confident i'll be able to understand it, fair warning :)
<dminuoso>
cdunklau: Type safe means: "Within some model, a well-typed program will not perform a set of *bad* behaviors"
<dminuoso>
cdunklau: On Java that set of bad behaviors includes "not seg faulting"
<dminuoso>
Which is to say: If a Java program type checks, you are guaranteed to not have seg faults.
<Burgestrand>
dminuoso I guess my opinion stems from the common one, i.e. I'm okay with trading correctness (better type system) for convenience (and in effect, higher risk of bugs)
<Burgestrand>
Which is why I like both ruby… and not ruby :)
<dminuoso>
Burgestrand: but what convenience do you get?
<Burgestrand>
Anyway, lunch time!
<Burgestrand>
dminuoso I do believe it's more convenient to not have to think about the types in such a rigid fashion
<cdunklau>
dminuoso: clearly, the freedom of lunchtime
<Burgestrand>
I'll be back later to elaborate if necessary
<dminuoso>
Burgestrand: foo.bar.quux[10] ... "It's okay to not think too hard what `quux` actually is. Maybe its an array, or maybe it's an Integer.. but its beneficial that this is accepted and crashes instead"
<dminuoso>
This is what Im getting from you :P
<dminuoso>
*`foo.bar.quux`
AJA4350 has joined #ruby
<dminuoso>
We programmers tend to think a lot about types implicitly. When we write code, we always have some intuition about how to use results further - we have some intuition about what state the data is in.
<dminuoso>
We have some intuition about some of the invariants we have
<dminuoso>
Here's one proof that you do think about types:
cadillac_ has quit [Ping timeout: 260 seconds]
Mike11 has quit [Ping timeout: 264 seconds]
amar_ has joined #ruby
<dminuoso>
1.puts({ nil.nil.nil => raise "This is nonsense" })
cadillac_ has joined #ruby
<dminuoso>
This would make any ruby programmer scream.
<dminuoso>
But why?
<cdunklau>
dminuoso: can you translate that to a language i know? :P
<dminuoso>
Thats ruby.
<cdunklau>
say, python, or javascript
<cdunklau>
i know, i'm new here :)
<dminuoso>
cdunklau: Oh.
<cdunklau>
i assume the arg to puts() is a hash?
<dminuoso>
cdunklau: 1.puts({ (nil.nil.nil): throw "this is nonsense" })
<cdunklau>
or is => a different thing
<dminuoso>
this then
<dminuoso>
equivalent in JavaScript
<cdunklau>
well that's a syntax error isn't it?
<dminuoso>
Is it?
<dminuoso>
Oh I think I may have to use
<dminuoso>
1.puts({ [nil.nil.nil]: throw "this is nonsense" })
<dminuoso>
maybe some more parens for throw?
<dminuoso>
1.puts({ [nil.nil.nil]: throw("this is nonsense") })
<dminuoso>
cdunklau: we constantly think in terms of contracts, what we can do with things, and what we get back
<cdunklau>
dminuoso: 1.puts({ nil.nil.nil => raise "This is nonsense" }) is a syntax error in ruby too
<cdunklau>
dminuoso: for the sake of discussion, can i just assume that `raise "this is nonsense"` is supposed to be an expression that throws an exception?
<dminuoso>
1.puts({ nil.nil.nil => raise("This is nonsense") })
<dminuoso>
cdunklau: Yes.
<cdunklau>
ok
marius has quit [Quit: baj]
<dminuoso>
cdunklau: Here's the following contracts I broke: puts is not a (public) method of Integer. I probably meant `Kernel#puts` but who knows.
<dminuoso>
nil.nil.nil is a silly thing to do
karapetyan has joined #ruby
marius has joined #ruby
<dminuoso>
and Im putting a `raise` in a spot where a value is expected
<cdunklau>
dminuoso: ok, i have to step away for a few minutes, but please continu
<cdunklau>
e
<dminuoso>
if you write: console.log.log("foo") in javascript this would obviously be wrong too. the reason for that, is that you mentally know that `console.log` does not give you something back, that has .log in its prototype.
<dminuoso>
even when you type `console.log` you make the implicit assumption that `console` has a prototype that provides `log`
<dminuoso>
when you write: `a + b` you already have the thought lingering in your head "a" and "b" are numbers
karapetyan has quit [Remote host closed the connection]
<cdunklau>
dminuoso: no, because add doesn't return something callable
Beams__ has quit [Ping timeout: 248 seconds]
<dminuoso>
cdunklau: would you accidentally write it? or would you think about what add returns when you use it?
<cdunklau>
dminuoso: i would think that add returns a number, so calling the result would not make sense
oxx16 has left #ruby [#ruby]
<cdunklau>
and presumably i'd have a unit test for add() that would catch that it doesn't return the result
za1b1tsu has quit [Quit: WeeChat 2.1]
<dminuoso>
cdunklau: so this would trigger a certain bad behavior: A runtime error "blablabl is not a function" right?
<cdunklau>
sure
schleppel has quit [Quit: Konversation terminated!]
<dminuoso>
flow for example, wrt to the operational model of JavaScript, classifies "is not a function" as bad behaviors.
<dminuoso>
cdunklau: and it does the same thing that you did in your head.
<cdunklau>
flow is the typescripty thing right?
<dminuoso>
nope
<dminuoso>
its a great example of what type systems are about.
<dminuoso>
its just a stand alone program. you give it some JS code, and it will either "type check" or "not"
jrafanie has joined #ruby
<dminuoso>
it does so soley based on syntactic elements
<dminuoso>
it "stares at the code" and says "this doesnt make sense"
<dminuoso>
just what you did.
<dminuoso>
except it doesnt justify by guessing, but by employing an automated theorem solver
<dminuoso>
its particularly a good example because it shows that type checking and compilation/runtime are not necessarily related in any way
aufi_ has quit [Quit: Leaving]
karapetyan has quit [Remote host closed the connection]
<dminuoso>
now the value from type checkers stems from the fact that they prove the absence of certain behaviors.
karapetyan has joined #ruby
<cdunklau>
neat
schleppel has joined #ruby
<dminuoso>
flow doesnt provide a particularly useful type system *in that sense* because there exist escape hatches that basically invalidate most such proofs.
<dminuoso>
its still valuable in a different sense
<dminuoso>
but in Haskell and Java the type system *proves* (amongst other things) the absence of segmentation faults.
<dminuoso>
which means you can get rid of all tests that assert segfaults dont happen, because you have 100% complete provable coverage for that behavior.
<dminuoso>
Haskell too has escape hatches (which means it's not *as provable* as one might hope), that is there's certain primitives I can use to provoke a segfault.
<dminuoso>
So again, it's not that useful to make that particular claim.
karapetyan has quit [Remote host closed the connection]
Zaab1t has joined #ruby
ramfjord has joined #ruby
<dminuoso>
but they prove the absence of many other properties too. rich type systems allow you to specify such properties within the type system, so you can codify arbitrary "bad properties", and have the type system *prove* their absence to you
<dminuoso>
For example you might have some type `InputString a` parameterized over another type. If you then consume only `InputString Sanitized` in the database, and produce `InputString Unsanitized` from the userinput, then the type system will prove that no unsanitized string enters your database,.
raynold has quit [Quit: Connection closed for inactivity]
<Burgestrand>
dminuoso your original interpretation sounds about right :)
<Burgestrand>
dminuoso in theory I guess there could be a perfect type system and perfect type inference, but I'm not aware of any such implementation today
dionysus69 has quit [Quit: dionysus69]
<arne>
wow, you're still going
dionysus69 has joined #ruby
<Burgestrand>
arne Well, lunch is over, and I got a question :)
ldnunes has joined #ruby
jrafanie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Burgestrand>
arne or, well, it felt like an implied question!
yokel has joined #ruby
cadillac_ has quit [Ping timeout: 265 seconds]
cadillac_ has joined #ruby
agent_white has quit [Quit: bbl]
<cdunklau>
dminuoso: out of curiosity, what languages do you enjoy using?
psychicist__ has joined #ruby
<cdunklau>
dminuoso: let me be more specific
fmcgeough has joined #ruby
<cdunklau>
what languages do you enjoy using to write useful software
<cdunklau>
i'm not sure there's a difference, but just in case :)
ur5us has quit [Remote host closed the connection]
tvw has joined #ruby
ur5us has joined #ruby
micutzu has quit [Ping timeout: 244 seconds]
jottr has quit [Ping timeout: 268 seconds]
chamar has joined #ruby
Nuve has left #ruby ["✌"]
synthroid has joined #ruby
whowantstolivefo has joined #ruby
jcalla has joined #ruby
karapetyan has joined #ruby
ellcs has joined #ruby
karapetyan has quit [Ping timeout: 256 seconds]
conta has quit [Quit: conta]
llua` has joined #ruby
cyberg has joined #ruby
llua has quit [Ping timeout: 260 seconds]
llua` is now known as llua
ellcs has quit [Ping timeout: 264 seconds]
karapetyan has joined #ruby
c0ncealed1 has quit [Remote host closed the connection]
chamar has quit [Quit: Leaving]
k0mpa has joined #ruby
c0ncealed1 has joined #ruby
ellcs has joined #ruby
reber has quit [Ping timeout: 248 seconds]
reber__ has joined #ruby
<dminuoso>
Burgestrand: Actually it's been shown that a perfect type system cant exist.
<dminuoso>
Burgestrand: Id have to dig but there are proofs that demonstrate that type systems always filter out *some* good programs.
<Burgestrand>
dminuoso Oh, cool, I didn't know that
ramfjord has joined #ruby
jottr has joined #ruby
kliq has quit [Ping timeout: 264 seconds]
<dminuoso>
Burgestrand: Just asked some friends. Rice's theorem is the foundation.
<cdunklau>
my intuition tells me that's probably related to Gödel's incompleteness theorem
<dminuoso>
cdunklau: Ah shoot, that's far less boring.
<cdunklau>
lol
<cdunklau>
but iirc there's a limiting factor for scripts
<cdunklau>
like you can only have a certain number of "fleet scripts"
<dminuoso>
cdunklau: but to answer your original question I enjoy Haskell a lot these days. Rust is also quite fine, PureScript is on my list as well as Idris.
jamesaxl has joined #ruby
<dminuoso>
Probably should learn more OCaml as well.
<mudwaf>
Well, the program starts out by opening a SQLite database read-only, and reading in many rows. It then forks many processes (based on the data read in), but when those processes attempt to use the database, some of them sometimes raise an exception: `SQLite3::CorruptException: database disk image is malformed`. The database is not actually corrupted and it works fine if the children processes execute serially. It's not consistently at a single spot
<mudwaf>
in the child process code, so I'm thinking it has to do with the code being parallel, though Sequel claims to be fully "Thread safe." Has anyone here run into something similar?
<cdunklau>
dminuoso: if you're curious about schemaverse maybe poke them in #schemaverse to tell them about it
<dminuoso>
cdunklau: Nah. With PL/.. stuff its boring.
<cdunklau>
heh
<cdunklau>
dminuoso: you don't have to use PL/
<cdunklau>
the game is what you make it ;)
<dminuoso>
cdunklau: I actually know of one major "business" company that makes million on a grand software consisting of literalls tens of thousands of *triggers*
<dminuoso>
They encoded a whole identity managemer, transitions, rule engine - all with triggers.
pabs has quit [Ping timeout: 268 seconds]
<cdunklau>
dminuoso: i'm not a good enough DBA to grasp the implications of that, but i can't imagine it's good
<dminuoso>
You have to run this on a MSSQL server with 64GiB of RAM to perform well.
<cdunklau>
shite
<dminuoso>
At first I thougth it was a joke when the guy was telling me about it in amazement.
<cdunklau>
lol
<cdunklau>
dminuoso: i haven't gotten deep into many languages. my python is on point, i'm decent with JS, but i can't claim more than passing familiarity with any other languages
<cdunklau>
dminuoso: i'm here because i'm considering a job that uses Java, Groovy, PHP, and Ruby
<dminuoso>
Sounds horrid!
<cdunklau>
java is... eh. dunno about groovy. PHP is clearly awful. ruby looks niceish though
<cdunklau>
dminuoso: eh, devops
<dminuoso>
devops with Java, Groovy and PHP?
<cdunklau>
and ruby
<cdunklau>
:P
epochwolf|2 has joined #ruby
<cdunklau>
that's just "languages our company uses", not necessarily what devops uses
<cdunklau>
i suspect a lot of the job would be messing around with puppet and such
synthroid has joined #ruby
* dminuoso
can already see cdunklau ending up in a dark cellar being locked away with ancient cruft PHP scripts invoking `ldapsearch` to pump information from one place to the next
* dminuoso
... and it being called devops
<cdunklau>
the thing that gets me excited about it the possibility of working with people more experienced with me. right now i'm doing QA-ish automation stuff, and nobody else knows wtf they're doing
donofrio has joined #ruby
<cdunklau>
that's not *really* a fair assessment, but it's the feeling i have
pabs has joined #ruby
<cdunklau>
dminuoso: jesus don't put that poison in my brain! :D
epochwolf|2 has quit [Client Quit]
snickers has quit [Ping timeout: 245 seconds]
rippa has joined #ruby
hobbes_ has joined #ruby
chamar has joined #ruby
Creatornator has joined #ruby
hobbes_ has quit [Remote host closed the connection]
mrBen2k2k2k has joined #ruby
TomyWork has joined #ruby
hays_ has joined #ruby
hays_ has joined #ruby
hays_ has quit [Changing host]
karapetyan has joined #ruby
karapetyan has quit [Ping timeout: 256 seconds]
<cdunklau>
dminuoso: what do you like about rust?
Azure has quit [Read error: Connection reset by peer]
<dminuoso>
cdunklau: It has a type system that is somewhat expressive.
Azure has joined #ruby
<dminuoso>
cdunklau: In a lot of ways it's built on first principles and has managed to avoid a lot of the issues of many mainstream languages.
jottr has quit [Ping timeout: 260 seconds]
Rapture has joined #ruby
Jeff_D has joined #ruby
chat_ has joined #ruby
chat has quit [Ping timeout: 256 seconds]
k0mpa has quit [Remote host closed the connection]
karapetyan has joined #ruby
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ciscam has quit [Ping timeout: 276 seconds]
<Jeff_D>
Can anybody answer, or point me to where I can find answered, questions about running capybara-webkit tests from `rake` inside a Docker container? I understand that I need to run within the context of Xvfb. `docker-compose exec web xvfb-run -a ruby path/to/some_spec.rb` works, but `docker-compose exec web xvfb-run -a bin/rake` has a failure in `some_spec.rb` because a Capybara match fails. I'm pulling my hair out here, and I really don't have a lot to start
ciscam has quit [Read error: Connection reset by peer]
ciscam has joined #ruby
hays_ has quit [Remote host closed the connection]
ur5us has quit [Remote host closed the connection]
<Jeff_D>
hmmmm...anybody awake?
dendazen has joined #ruby
amar_ has quit [Ping timeout: 265 seconds]
Creatornator has joined #ruby
rsh has joined #ruby
jrafanie has joined #ruby
gnufied has joined #ruby
kliq has quit [Ping timeout: 276 seconds]
andikr has quit [Remote host closed the connection]
<flips>
I'm afraid being awake is not enough, I have no idea about capybara/docker stuff ...
dionysus69 has quit [Ping timeout: 265 seconds]
aupadhye has quit [Remote host closed the connection]
<Jeff_D>
well, thanks anyway. I'll keep beating my head against this until one or the other breaks, or until massive expenditures of Google-fu start showing less whimsical returns
nowhere_man has quit [Ping timeout: 256 seconds]
amar_ has joined #ruby
akaiiro has joined #ruby
[Butch] has joined #ruby
[Butch] has quit [Client Quit]
Axy has joined #ruby
Mia has quit [Ping timeout: 245 seconds]
mikecmpbll has joined #ruby
snickers has joined #ruby
jinie has quit [Ping timeout: 256 seconds]
megamos has joined #ruby
jinie has joined #ruby
yorickpeterse has joined #ruby
t0xik has quit [Quit: Connection closed for inactivity]
tvw has quit [Remote host closed the connection]
akaiiro has quit [Ping timeout: 260 seconds]
za1b1tsu has joined #ruby
shinnya has joined #ruby
clemens3 has quit [Remote host closed the connection]
Burgestrand has quit [Quit: Closing time!]
karapetyan has joined #ruby
jinie has quit [Ping timeout: 264 seconds]
jottr has quit [Ping timeout: 264 seconds]
yorickpeterse has quit [Quit: WeeChat 2.1]
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jinie has joined #ruby
Creatornator has joined #ruby
karapetyan has quit [Ping timeout: 245 seconds]
yokel has quit [Ping timeout: 264 seconds]
suukim has joined #ruby
nowhere_man has joined #ruby
apparition has quit [Quit: Bye]
akaiiro has joined #ruby
chouhoulis has joined #ruby
psychicist__ has quit [Ping timeout: 264 seconds]
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
shinnya has quit [Ping timeout: 268 seconds]
darkhanb has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cam27 has joined #ruby
pabs has quit [Ping timeout: 248 seconds]
dmgk has joined #ruby
pabs has joined #ruby
DTZUZO has quit [Ping timeout: 240 seconds]
yohji has quit [Remote host closed the connection]
pabs has quit [Ping timeout: 264 seconds]
karapetyan has joined #ruby
anisha has quit [Quit: This computer has gone to sleep]
jottr has joined #ruby
karapetyan has quit [Remote host closed the connection]
karapetyan has joined #ruby
mikecmpbll has quit [Ping timeout: 264 seconds]
pabs has joined #ruby
jcarl43 has joined #ruby
Creatornator has joined #ruby
megamos has quit [Ping timeout: 240 seconds]
Immune has joined #ruby
Creatornator has quit [Client Quit]
sysvalve has quit [Quit: Leaving]
amar__ has joined #ruby
amar_ has quit [Ping timeout: 256 seconds]
pabs has quit [Ping timeout: 260 seconds]
darkhanb has joined #ruby
amar__ has quit [Ping timeout: 265 seconds]
cthulchu has joined #ruby
Immune has left #ruby ["WeeChat 2.1"]
amar_ has joined #ruby
jinie has quit [Ping timeout: 240 seconds]
cyberg has left #ruby ["Leaving"]
jinie has joined #ruby
bbobb has joined #ruby
Jeff_D has quit [Quit: STRPT: JMP $ ; Story of my day.]
FernandoBasso has joined #ruby
chopin has joined #ruby
DTZUZO has joined #ruby
jottr has quit [Ping timeout: 260 seconds]
biberu has joined #ruby
<chopin>
Any time I run rspec "x86_64-darwin-17" is added to my Gemfile.lock under the PLATFORMS heading. Any ideas why that is / how to stop it?
pabs has joined #ruby
nowhere_man has quit [Ping timeout: 256 seconds]
amar__ has joined #ruby
eckhardt_ has joined #ruby
amar_ has quit [Read error: Connection reset by peer]
Beams has quit [Quit: .]
psychicist__ has joined #ruby
BlopMonster has joined #ruby
sanscoeur has joined #ruby
synthroid has quit []
BlopMonster has quit [Ping timeout: 256 seconds]
chouhoulis has quit [Remote host closed the connection]
jyaworski has joined #ruby
chouhoulis has joined #ruby
ldepandis has joined #ruby
chouhoul_ has joined #ruby
ldepandis has quit [Client Quit]
venmx has quit [Ping timeout: 256 seconds]
chouhou__ has joined #ruby
chouho___ has joined #ruby
chou_____ has joined #ruby
chouhoulis has quit [Ping timeout: 276 seconds]
chouhoul_ has quit [Ping timeout: 276 seconds]
chouhoulis has joined #ruby
chouhou__ has quit [Ping timeout: 264 seconds]
chouhoul_ has joined #ruby
chouho___ has quit [Ping timeout: 276 seconds]
chouhou__ has joined #ruby
karapetyan has quit [Remote host closed the connection]
chou_____ has quit [Ping timeout: 264 seconds]
RougeR has quit [Ping timeout: 248 seconds]
chouh____ has joined #ruby
chouhoulis has quit [Ping timeout: 240 seconds]
chouhoulis has joined #ruby
chouhoul_ has quit [Ping timeout: 264 seconds]
chouhoul_ has joined #ruby
chouhou__ has quit [Ping timeout: 264 seconds]
millerti has joined #ruby
chouhou__ has joined #ruby
chouho___ has joined #ruby
chouh____ has quit [Ping timeout: 248 seconds]
ta_ has quit [Remote host closed the connection]
chouh____ has joined #ruby
chouhoulis has quit [Ping timeout: 248 seconds]
chouhoulis has joined #ruby
chouhoul_ has quit [Ping timeout: 264 seconds]
chouhoul_ has joined #ruby
chouhou__ has quit [Ping timeout: 256 seconds]
chouhou__ has joined #ruby
ta_ has joined #ruby
chouho___ has quit [Ping timeout: 248 seconds]
TomyWork has quit [Remote host closed the connection]
chouho___ has joined #ruby
chouh____ has quit [Ping timeout: 256 seconds]
chouh____ has joined #ruby
chouhoulis has quit [Ping timeout: 264 seconds]
chouhoulis has joined #ruby
chouhoul_ has quit [Ping timeout: 265 seconds]
chouhoul_ has joined #ruby
chouhou__ has quit [Ping timeout: 240 seconds]
chouho___ has quit [Ping timeout: 265 seconds]
chouh____ has quit [Ping timeout: 248 seconds]
chouh____ has joined #ruby
chouhoulis has quit [Ping timeout: 265 seconds]
chouhoulis has joined #ruby
chouhoul_ has quit [Ping timeout: 256 seconds]
jinie has quit [Ping timeout: 245 seconds]
chouhoul_ has joined #ruby
chouhou__ has joined #ruby
chouho___ has joined #ruby
chouh____ has quit [Ping timeout: 264 seconds]
chouh____ has joined #ruby
jinie has joined #ruby
chouhoulis has quit [Ping timeout: 260 seconds]
chouhoulis has joined #ruby
paraxial has quit [Read error: Connection reset by peer]
chouhoul_ has quit [Ping timeout: 268 seconds]
chouhoul_ has joined #ruby
mikecmpbll has joined #ruby
Mike11 has joined #ruby
chouhou__ has quit [Ping timeout: 268 seconds]
chouhou__ has joined #ruby
chouho___ has quit [Ping timeout: 240 seconds]
mtkd has quit []
chouho___ has joined #ruby
chouh____ has quit [Ping timeout: 256 seconds]
[Butch] has joined #ruby
chouh____ has joined #ruby
jottr has joined #ruby
chouhoulis has quit [Ping timeout: 260 seconds]
chouhoulis has joined #ruby
chouhoul_ has quit [Ping timeout: 256 seconds]
chouhou__ has quit [Ping timeout: 268 seconds]
paraxial has joined #ruby
chouho___ has quit [Ping timeout: 240 seconds]
chouh____ has quit [Ping timeout: 240 seconds]
nowhere_man has joined #ruby
jottr has quit [Ping timeout: 240 seconds]
lytol has joined #ruby
paraxial has quit [Read error: Connection reset by peer]
paraxial has joined #ruby
Cavallari has joined #ruby
Cavallari has quit [Client Quit]
npgm has joined #ruby
mtkd has joined #ruby
cam27 has quit [Quit: cam27]
Mike11 has quit [Ping timeout: 264 seconds]
suukim has quit [Quit: Konversation terminated!]
Zaab1t has quit [Quit: Zaab1t]
ta_ has quit [Remote host closed the connection]
ramfjord has joined #ruby
amatas has joined #ruby
RougeR has joined #ruby
RougeR has joined #ruby
RougeR has quit [Changing host]
amatas_ has joined #ruby
micutzu has quit [Ping timeout: 240 seconds]
dviola has joined #ruby
za1b1tsu has quit [Quit: WeeChat 2.1]
bmurt has joined #ruby
amatas_ has quit [Remote host closed the connection]
amatas_ has joined #ruby
amatas has quit [Ping timeout: 276 seconds]
amatas_ is now known as amatas
amatas has quit [Client Quit]
karapetyan has joined #ruby
za1b1tsu has joined #ruby
amatas has joined #ruby
apeiros_ is now known as apeiros
mtkd has quit [Read error: Connection reset by peer]
mtkd has joined #ruby
paraxial has quit [Ping timeout: 264 seconds]
karapetyan has quit [Ping timeout: 245 seconds]
TomyLobo has joined #ruby
pabs has quit [Ping timeout: 260 seconds]
pabs has joined #ruby
amatas has quit [Quit: amatas]
chat__ has joined #ruby
paraxial has joined #ruby
jottr has joined #ruby
chat_ has quit [Ping timeout: 276 seconds]
jottr has quit [Ping timeout: 255 seconds]
sauvin has quit [Remote host closed the connection]
paraxial has quit [Ping timeout: 260 seconds]
mtkd has quit []
paraxial has joined #ruby
micutzu has joined #ruby
mtkd has joined #ruby
paraxial has quit [Read error: Connection reset by peer]
paraxial has joined #ruby
orbyt_ has joined #ruby
paraxial has quit [Ping timeout: 264 seconds]
paraxial has joined #ruby
\void has joined #ruby
darkhanb has quit [Ping timeout: 264 seconds]
paraxial has quit [Ping timeout: 265 seconds]
izaac has quit [Changing host]
izaac has joined #ruby
dendazen has quit [Ping timeout: 276 seconds]
jenrzzz has joined #ruby
jenrzzz has joined #ruby
jenrzzz has quit [Changing host]
dionysus69 has joined #ruby
cadillac_ has quit [Ping timeout: 264 seconds]
cadillac_ has joined #ruby
lethan has joined #ruby
kapil___ has joined #ruby
rsh has quit [Quit: leaving]
moei has joined #ruby
millerti has quit [Ping timeout: 240 seconds]
tanema has joined #ruby
paraxial has joined #ruby
tanema has quit [Quit: WeeChat 2.1]
paraxial has quit [Ping timeout: 256 seconds]
agent_white has joined #ruby
mjolnird has quit [Remote host closed the connection]
mtkd has quit []
amar__ has quit [Remote host closed the connection]
paraxial has joined #ruby
<cthulchu>
folks, how do we execute_script having the @selenium_wrapper
tanema has joined #ruby
mtkd has joined #ruby
<cthulchu>
or @driver_wrapper
cthulchu_ has joined #ruby
cthulchu has quit [Ping timeout: 245 seconds]
pabs has quit [Ping timeout: 264 seconds]
dionysus69 has quit [Ping timeout: 240 seconds]
<dminuoso>
arne: Hah okay. So it turns out the Ruby implementation of TVar is way too naive to pull this off.
pabs has joined #ruby
tanema has quit [Ping timeout: 256 seconds]
tanema has joined #ruby
tdy1 has joined #ruby
micutzu has quit [Ping timeout: 264 seconds]
tdy has quit [Ping timeout: 264 seconds]
jenrzzz has quit [Ping timeout: 245 seconds]
amar has joined #ruby
tdy1 has quit [Ping timeout: 240 seconds]
nowhere_man has quit [Ping timeout: 256 seconds]
grilix has quit [Ping timeout: 256 seconds]
tanema has quit [Ping timeout: 265 seconds]
ta_ has joined #ruby
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
karapetyan has joined #ruby
jcalla has quit [Quit: Leaving]
orbyt_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tanema has joined #ruby
dionysus69 has joined #ruby
tdy1 has joined #ruby
karapetyan has quit [Ping timeout: 255 seconds]
tanema has quit [Ping timeout: 240 seconds]
grilix has joined #ruby
biberu has quit []
jottr has joined #ruby
cthu| has joined #ruby
megamos has joined #ruby
cthulchu_ has quit [Ping timeout: 240 seconds]
jottr has quit [Ping timeout: 256 seconds]
venmx has joined #ruby
ta_ has quit [Remote host closed the connection]
tanema has joined #ruby
mudwaf has quit [Quit: Leaving]
beefjoe has joined #ruby
megamos has quit [Ping timeout: 248 seconds]
megamos has joined #ruby
fmcgeough has quit [Quit: fmcgeough]
tdy1 has quit [Ping timeout: 240 seconds]
megamos has quit [Ping timeout: 240 seconds]
ta_ has joined #ruby
tanema has quit [Quit: WeeChat 2.1]
ta_ has quit [Remote host closed the connection]
edwardly has quit [Ping timeout: 264 seconds]
weaksauce has joined #ruby
lethan has quit []
lunarkitty7 has quit [Ping timeout: 276 seconds]
tdy1 has joined #ruby
akem has joined #ruby
edwardly has joined #ruby
edwardly has joined #ruby
edwardly has quit [Changing host]
micutzu has joined #ruby
akem_ has quit [Ping timeout: 256 seconds]
BlopMonster has joined #ruby
bga57 has quit [Remote host closed the connection]
<apeiros>
you'd have to ask the author. I do it to make it clear which variables will be used in a class.
<cthulchu_>
oh, good
<apeiros>
i.e. I'll always initialize all ivars in #initialize
<apeiros>
but it's not required.
<apeiros>
ivars and globals are special in that they can also autovivify on first read (they'll automatically be assigned nil)
<apeiros>
>> class Foo; attr_accessor :x; end; foo = Foo.new; p before: foo.instance_variables; foo.x; p after: foo.instance_variables # check the link
<apeiros>
that's interesting. probably an optimization
<cthulchu_>
if I have a thing -> living being -> dog -> saint bernard structure and I have a saint bernard object. Can I access methods of a thing directly from my lovely saint bernard?
<cthulchu_>
oh, one more thing. there's no protection?
<cthulchu_>
I don't see private, public, protected, etc
<apeiros>
wow, apparently that has changed a long time ago already.
<cthulchu_>
this is very unusual, but I guess Ruby had a reason to complicate things like so
<Zarthus>
*shrug* i would still use a getter
<Zarthus>
i haven't really got the ruby expertise for it, but just because something exists doesn't mean it should be used :P
<cthulchu_>
sure, a getter... even Java has easier access to them and it can enforce the use of getters
amar has quit [Remote host closed the connection]
amar has joined #ruby
<cthulchu_>
oh! it worked
ogres has joined #ruby
<cthulchu_>
hell I wouldn't expect something so trivial to be so difficult, but cool! I have the driver! ha! congrats!
ramfjord has quit [Ping timeout: 264 seconds]
amar has quit [Remote host closed the connection]
<cthulchu_>
ahahahah, and now I see that there actually is a get_driver
<cthulchu_>
loool
<cthulchu_>
but it's good to know I can get stuff I need when I need it
venmx has joined #ruby
<apeiros>
cthulchu_: are you using pry?
<apeiros>
if so, try `ls @selenium_wrapper`
<cthulchu_>
I don't know what pry is.
<apeiros>
do you know irb?
<cthulchu_>
no. It's not my framework. I'm just studying it to inject my testing in existing tests
<cthulchu_>
they test frontend functionality and I'm injecting analytics testing in there
<apeiros>
trying to find common ground here… do you know what a repl is?
<cthulchu_>
no
<apeiros>
ok, I guess best thing is you just try it. in your shell, type `irb` and hit enter.
<apeiros>
you're in an interactive ruby env there. every line you type is executed and the result shown.
<apeiros>
repl = read eval print loop
<apeiros>
irb ships with ruby
<cthulchu_>
yeah
<cthulchu_>
that I have
<apeiros>
pry = a better irb, but doesn't ship with ruby (`gem install pry` to get it)
ta_ has joined #ruby
<cthulchu_>
why do I need irb though?
<apeiros>
to quickly test things
<cthulchu_>
yeah
<cthulchu_>
but I won't be able to test my classes there
<apeiros>
if you have pry installed, you can put `binding.pry` anywhere in your code and it'll drop you into a pry session when that line hits
<cthulchu_>
only basic Ruby functionality
<apeiros>
you can load any code into irb
<cthulchu_>
woooooooow
<cthulchu_>
hell yeah
<apeiros>
also binding.pry is more what I wanted to tell you about
<cthulchu_>
wait
<apeiros>
it makes it easy to poke around
beefjoe has quit [Remote host closed the connection]
<cthulchu_>
let me play with it first
<apeiros>
another note: if @selenium_wrapper.driver does not exist (and hence does not return @driver), it usually means that the author did not want users to access @driver
eelster has joined #ruby
<apeiros>
since classes are open, you can always patch it in live in a session. @selenium_wrapper.class.class_eval do attr_accessor :driver end
<cthulchu_>
should I require it first maybe?
<apeiros>
:) yes
<cthulchu_>
how do I require it after I installed it?
<apeiros>
sorry, some things become obvious at some point and one forgets to mention them.
<apeiros>
require 'pry'
<apeiros>
if your project uses a Gemfile, you have to add it there
<apeiros>
brb
<cthulchu_>
no, require 'pry' doesn't work
<cthulchu_>
says can't cannot load such file -- pry (LoadError)
agent_white has quit [Quit: brb]
agent_white has joined #ruby
venmx has quit [Ping timeout: 256 seconds]
<cthulchu_>
and it's installed. weird
ta_ has quit [Remote host closed the connection]
chat has joined #ruby
<cthulchu_>
aha
<cthulchu_>
gemfile thenn
<Zarthus>
if it's a literal wrapper, it makes sense it's called get_driver
<Zarthus>
but a good wrapper would make it use rubyisms.
psychicist__ has quit [Ping timeout: 256 seconds]
<lupine>
mm, rename it to chunky_bacon
shinnya has quit [Ping timeout: 240 seconds]
ta_ has joined #ruby
<cthulchu_>
hooooooooly coooow!
<cthulchu_>
wow
<cthulchu_>
this is like a debugging heaven
chat__ has quit [Ping timeout: 255 seconds]
<cthulchu_>
my QA friends will be so happy to learn about it
<Zarthus>
it's uh.. pretty normal.
<Zarthus>
are you not a ruby developer by trade?
<cthulchu_>
no
<cthulchu_>
I wonder if JS has it
<cthulchu_>
gonna go ask
<Zarthus>
your colleagues don't really do teamwork huh :P
<Zarthus>
it's called a "REPL", and nodejs has one
<cthulchu_>
oh, good then
<Zarthus>
pry is by far one of the most pleasant ones to use though.
<cthulchu_>
hell
<cthulchu_>
and I have two bloody computer science higher educations
<cthulchu_>
why don't they teach it
<Zarthus>
they don't teach kids useful things in school ;)
<cthulchu_>
ridiculous
<agent_white>
A cozy cottage of code creations cushioning comfortably conjunctively.
ta_ has quit [Ping timeout: 240 seconds]
<apeiros>
cthulchu_: eh, higher eds are supposed to learn about the "lower level stuff" themselves ;-p
gnufied has quit [Ping timeout: 240 seconds]
<Zarthus>
apeiros: Lower level stuff, like SQL injections and upgrading your PHP version from old, EOL versions ;)
<apeiros>
yupp
<apeiros>
"here's some books, read them". or actually even just: "there are books, you should pick some and read them"
<apeiros>
oh well, I'm old
<apeiros>
today it's probably just "eh, you know how google works, right?"
<Zarthus>
apeiros: Not kidding, they used php5.2 and `ext-mysql` (which doesn't support prepared statements, only "real_escape_string", even that wasn't taught) in the first year of college. In 2016 or so.
<Zarthus>
for the record, php5.2 was created in 2006 or so
<apeiros>
I know. I used php5.2, one of the last versions I used before I found ruby.
<cthulchu_>
we used php of 2013 version in my college.
<cthulchu_>
it had issues with chaining
<cthulchu_>
and ternaries
<apeiros>
lolwut? still?
<apeiros>
I remember php4 could not chain at all.
<cthulchu_>
I know
<cthulchu_>
it could, but not always
<apeiros>
$foo->bar()->baz() was a syntax error
<Zarthus>
php 2013 shouldn't have any problems with either of those.
<apeiros>
more like: I'm not aware of a situation where it could. you had to assign to temp variables to chain.
<Zarthus>
would be nice if most colleges would just brush up on their modernisation a little bit, anyhow.
<cthulchu_>
exactly
<cthulchu_>
I ended up having temporary vars
<cthulchu_>
completely unneded otherwise
<Zarthus>
php4 was terrible, php5 (later versions, 5.4+) was OK, php7+ is nice.
<apeiros>
yeah. same.
<apeiros>
I came to php4 from perl. always considered it a downgrade.
<Zarthus>
sounds about right.
<cthulchu_>
after so much disappointment with php, I rewrote all my php stuff into node
<cthulchu_>
I embrased callbacks
<cthulchu_>
lol
grilix has quit [Ping timeout: 256 seconds]
<Zarthus>
we use nodejs at work for a small application made by one node fanatic which has since left the company. None of us want to really learn it
<Zarthus>
we're competent enough to write javascript, though.
<lupine>
just transpile it to C
<lupine>
get your own back
<cthulchu_>
node is js. very convenient to work with web
<Zarthus>
i'm sure there's specific things to nodejs that we don't learn/care about.
<cthulchu_>
although I must admit, I enhoy ruby's syntax a lot more than JS'
<Zarthus>
we just treat it as vanilla js
<cthulchu_>
yeah
<apeiros>
transpile… unword of the year 2016…
mikecmpbll has quit [Quit: inabit. zz.]
<FernandoBasso>
Damn php killed perl.
<apeiros>
(it's compile)
<FernandoBasso>
People stopped using perl for web because php was the new shiny cute thing.
<FernandoBasso>
(well, not cute, and not shiny)
<cthulchu_>
yes! it worked!
<apeiros>
FernandoBasso: right. polished turd.
<cthulchu_>
I managed to get JS objects from Selenium into here
<apeiros>
cthulchu_: 👍🏻
<cthulchu_>
how do we work with JS objects in Ruby though?
<Zarthus>
i imagine it involves reading the documentation.
<apeiros>
cthulchu_: depends on how the integration layer works. the objects are probably bridged. at least if it uses libv8 or something similar.
<cthulchu_>
in JS I can cast json into object and work with it very conveniently
<apeiros>
?jsonobject
<ruby[bot]>
there is no such thing as a JSON object. You either have a String containing serialized JSON, or you have ruby objects (usually Hashes/Arrays/Strings). Which is it?
<apeiros>
and from your image, I'd say you have a ruby object
<apeiros>
(array of hashes & stuff)
<cthulchu_>
oh
chamar has quit [Ping timeout: 276 seconds]
<cthulchu_>
really?
<apeiros>
I *can* be mistaken. you can verify by asking for its class.
<cthulchu_>
I will then
eelster has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<apeiros>
re json object not existing: in other languages, it'll of course be objects of that language instead of "ruby objects". e.g. in javascript it'll be javascript arrays, objects, strings etc.
cajone has left #ruby [#ruby]
<cthulchu_>
the type is array
<cthulchu_>
which is perfect
<cthulchu_>
it's how I work with it in the browser console