ec changed the topic of #elliottcable to: a π•―π–Šπ–“ 𝖔𝖋 π•―π–Šπ–™π–Šπ–—π–’π–Žπ–“π–Šπ–‰ π•―π–†π–’π–˜π–Šπ–‘π–˜ slash sΝ”ΜžuΝ•Ν™pΝ™Ν“e̜̺rΜΌΜ¦i̼̜oΜ–Μ¬rΜ™Μ™ c̝͉α»₯Μ§Ν˜αΈ·Μ‘Ν™Ε£Ν“Μ€ || #ELLIOTTCABLE is not about ELLIOTTCABLE
meowrobot has quit [Quit: let us connect our intestines and mutually digest]
meowrobot has joined #elliottcable
judofyr has joined #elliottcable
<judofyr> is this channel still alive?
<ljharb> judofyr: ALIIIIIIIVE
<judofyr> sweet
<judofyr> I haven't been here in like four years?
<judofyr> but hey, isn't every project elliott starts everlasting, never-completed?
<ljharb> lol
Sgeo_ has joined #elliottcable
Sgeo has quit [Ping timeout: 268 seconds]
<Cheery> judofyr: I suppose it's alive as long as there are people innit.
<Cheery> I've been doing bayes classification on hacker news and reddit posts for two days now.
<Cheery> I've fed it hundreds of posts to describe what is spam, what's just stuff I don't want to read, and interesting stuff.
<judofyr> titles only?
<Cheery> titles only.
<judofyr> is it improving?
<Cheery> I think it stopped at some point. It's correctly classifying some absolute crap.
<Cheery> but it's also giving some interesting results that turn out to be quite bad.
<Cheery> also lots of stuff is going into 'worthless' bin, even if it should go into spam.
<Cheery> by some parts it spam classifies also stuff that I would click and then find it just piece of crap.
<Cheery> but it doesn't have much information to do that. it's weird.
Rerik has joined #elliottcable
<Rerik> is this place still alive
<Rerik> ec\, elliottcable are you still alive?
<judofyr> Rerik: hah. nice timing. I just asked that question two hours ago
<Rerik> Well, I'm probably going to die soon
<Rerik> and I didn't even need to make an effort towards it
mylesborins has quit [Quit: farewell for now]
mylesborins has joined #elliottcable
Rzrik has joined #elliottcable
Rerik has quit [Ping timeout: 240 seconds]
Rerik has joined #elliottcable
Rzrik has quit [Ping timeout: 246 seconds]
Rzrik has joined #elliottcable
Rerik has quit [Ping timeout: 240 seconds]
Rerik has joined #elliottcable
Rzrik has quit [Ping timeout: 246 seconds]
Rerik has quit [Ping timeout: 240 seconds]
judofyr has quit [Remote host closed the connection]
judofyr has joined #elliottcable
judofyr has quit [Ping timeout: 240 seconds]
<joepie91> [15:29] <Cheery> A.K.A. OOP sucks.
<joepie91> "OOP" or "classical inheritance"?
judofyr has joined #elliottcable
judofyr has quit [Remote host closed the connection]
judofyr has joined #elliottcable
judofyr has quit [Ping timeout: 255 seconds]
Rurik has joined #elliottcable
Sgeo__ has joined #elliottcable
Sgeo_ has quit [Ping timeout: 268 seconds]
judofyr has joined #elliottcable
fujisan has joined #elliottcable
<Cheery> joepie91: OOP in whole
<joepie91> Cheery: that sounds like you're more referring to the buzzwordy OOP culture than the actual technical concept of OOP :P
<joepie91> eg. classes are not really a part of OOP, neither are interfaces, etc.
<joepie91> OOP just means bundling state and behaviour into an object, that's it
<joepie91> how you produce that object is a separate matter entirely
<Cheery> bundling state and behavior into an object is not a paradigm
Rurik has quit [Read error: Connection reset by peer]
<jfhbrook> GOF is honestly pretty good
<jfhbrook> also, that's absolutely a paradigm
<jfhbrook> even if you don't like it
<Cheery> it's not like & hate thing.
<Cheery> The concepts thrown around by OOP simply suck because they make it very difficult to figure out what's going on in the program.
<Cheery> it's a shortcut to objectively bad design
<Cheery> the ideas and concepts and techniques presented are not necessarily bad or good.
<Cheery> but the bias OOP associates to all of it is very bad.
<Cheery> There's not much difference between natural languages and programming after all.. The kind of rules about understandability apply.
<Cheery> when you create a new function, you create a new word.
<Cheery> or new action
<joepie91> Cheery: I'm pretty sure by this point that you're blaming the wrong thing, and that you're thinking of eg. classes
<joepie91> not OOP
<Cheery> when you create a new class, you create whole class of new values, and every method adds into small sublanguage you use with them.
<joepie91> Cheery: so, again, classes are not a part of "OOP"
<joepie91> it's a part of the concepts that people have built *around* OOP
<Cheery> design patterns then concentrate on solving problems by creating new words that slightly vary over some concept.
judofyr has quit [Remote host closed the connection]
<Cheery> instead of just saying the thing you want to happen, that's very cumbersome and hard to follow.
<joepie91> none of this is OOP :P
judofyr has joined #elliottcable
<joepie91> OOP is *just* bundling state and behaviour into an object, that's it. everything else is tacked on top of that by various parties for various reasons as separate paradigms, some of which are commonly misnamed "OOP"
Rurik has joined #elliottcable
judofyr has quit [Ping timeout: 240 seconds]
<Cheery> if that is OOP, what is not OOP?
<Cheery> because if you write maths on paper, you associate state and behavior into symbols.
<Cheery> your definition makes any kind of abstract thinking OOP, rendering the term unnecessary.
<Cheery> and if it is an unnecessary term, why the appreciation?
<Cheery> and why the defense?
<joepie91> Cheery: it's not an unnecessary term. the key point here is "bundling" - if you have pure functions that operate purely on input arguments (and that are managed separately from the arguments put into it), or functions that operate on global state or scope as opposed to data that is bundled in the same value, then neither of those are OOP
<joepie91> because you're not bundling state and functionality - you're just representing functionality and passing in state
<joepie91> bundling != using with
<joepie91> Cheery: and I'm defending it because I have a strong dislike for incorrect technical points, especially when they lead people towards disliking something that *when used correctly* can be greatly beneficial to code quality :)
<Cheery> but the pure function itself is an object, and it has an implementation of the function associated to it.
<joepie91> Cheery: I'm talking about "object" as a data type
<joepie91> Cheery: in which case, no, a function is not an object, unless you can associate data with it and pass around the whole as a single value (which is the case in JS, but not in most other languages)
<joepie91> (and even in JS that pattern is frowned upon outside specific cases)
<jfhbrook> pretty sure functions are objects in python; at the least, you can make callable objects
<jfhbrook> this is by far my favorite blog post on OOP ^^
<joepie91> jfhbrook: "are callable objects functions" is an interesting philosophical debate :p
<pikajude> state and behavior;
<pikajude> state and behavior
<pikajude> (state and behavior)
<jfhbrook> callable objects are probably my favorite python shenanigan
<Cheery> if you treat everything as a value, you end up with that question.
<Cheery> because even the functions themselves just point to a buffer, that contains bytecode of some sort.
<Cheery> or then they are something else that you can interpret
<Cheery> and treating everything as a value makes sense too, because when you do that, you can compute on them.
<Cheery> lot of data structures can be thought to cross that gap.
<Cheery> state machines, stacks.
<Cheery> graphs
<Cheery> lists of functions.
<jfhbrook> I don't understand your point
<jfhbrook> like
<jfhbrook> "values are a thing" seems useless
<jfhbrook> s/useless/trivial to the point of meaninglessness/
<Cheery> you can draw functions on paper, or into memory, how are they different from other values?
<Cheery> your state and functionality collapses if you agree there.
<Cheery> to just.. state.
<Cheery> then lets ask you, is struct { int a; int b; } foo; object oriented programming?
<Cheery> and you should see the headlights of that cadr far away.
<joepie91> Cheery: I feel like you're wrongly treating 'executable' and 'is a value' as being mutually exclusive in your reasoning
<joepie91> something being a value does not preclude it from being classifiable as 'functionality'
<joepie91> [20:37] <Cheery> then lets ask you, is struct { int a; int b; } foo; object oriented programming?
<joepie91> no, there is no functionality/behaviour
<joepie91> there is only state
<joepie91> (unless you do hacks like 'make the int point at a function and then execute that' of course, but at that point you're well in hack territory)
<Cheery> how do you know there is no functionality or behavior associated to those two numbers?
<joepie91> because they're numbers, not functions?
<Cheery> what if 'a' represents an opcode and 'b' represents an argument that is fetched from a stack?
<joepie91> Cheery: that would qualify as "well into hack territory"
<joepie91> at which point discussing paradigms for code quality is meaningless
<Cheery> joepie91: is that distinction useful? that's the question.
<joepie91> ... yes? why wouldn't it be?
<joepie91> the point of programming paradigms like OOP is to produce more maintainable/reliable/secure code (leaving aside whether any given paradigm actually succeeds at that)
<joepie91> so if you're doing things that are very obviously bad for those code quality metrics, then why would you still care about what paradigm it counts as? you've already abandoned the whole idea of "good code quality", so at that point it seems pointless to argue over whether it belongs to a given paradigm that promotes the thing you've abandoned
<joepie91> so yes, "is a hack" vs. "is not a hack" is absolutely a useful distinction
<Cheery> 'hack' being everything that is in the boundary of code and data?
<joepie91> "hack" being everything that uses language constructs or APIs for purposes other than their intended semantic meaning
<pikajude> also, a type system bolted onto PHP
<joepie91> lol
<Cheery> Personal Hack PHP
<pikajude> no, like, the language
<joepie91> Cheery: for both interpretations of "hack"
<joepie91> :p
<Cheery> it's both right or left recursive if you reorder the words.
<Cheery> acronym
<pikajude> PHP: Hack Personal
<pikajude> doesn't have the same ring to it
<pikajude> P "Hack" HP
<Cheery> wrong order.. PHP: Personal Hack
<joepie91> PHackP
<Cheery> or.. arg.h
<Cheery> confusing
<joepie91> Cheery: .... PPH?
<pikajude> p hack p
<Cheery> what p means - left for interpretation.
<pikajude> wonder if i'll get in trouble for putting an emoji in this commit message
<pikajude> is the proper term emojus
<joepie91> emojii
<Cheery> joepie91: Although this discussion seems a bit spammy, I think it's useful kind of wondering.
<joepie91> Cheery: eh, I don't consider it spammy :P
<pikajude> lmfao it caused an error in one of our internal tools
<pikajude> god damn it
<joepie91> lol pikajude
<joepie91> death-by-emojii
<pikajude> because SOMEONE wrote a bad format string for mysql
<joepie91> (denial-of-emoji attack?)
<Cheery> pikajude: which emoji was it?
<pikajude> the thinking face
<joepie91> appropriate
<pikajude> because someone pushed an update to the hack typechecker
<pikajude> that made my (imo) perfectly valid code throw some errors
<joepie91> Cheery: fwiw, concerning the earlier discussion, I'm very much in the "you don't need classes in JS and you certainly want to avoid inheritance, just create objects as needed" camp
Rerik has joined #elliottcable
<Cheery> I think that when we think about programming in general, we go too much in the "programming" terminology and ideas. Even the concepts of Bret Victor are far away from everyday things.
Rurik has quit [Ping timeout: 276 seconds]
<Cheery> if you see ordinary people explaining things on paper, it's not happening in the way we think about things in general.
<Cheery> and the thinking of an ordinary person isn't necessarily worse or wrong.
<Cheery> that thing bothers me a lot.
<Cheery> it's like tying yourself to a knot, then feeling insight when you figure out how to do something while being tied to a knot.
judofyr has joined #elliottcable
<joepie91> Cheery: I actually do precisely the opposite, and that's exactly why I object against dogmatic arguments about 'paradigms'
<joepie91> especially when misnamed
<joepie91> that's why I originally addressed your remarks about OOP - because it's not helpful to think of OOP(-but-not-actually-OOP) as evil
<joepie91> it's much more useful to understand what it really is, what the benefits of it are, under what circumstances, and when to use it or not use it
<joepie91> but the first step in that is accurately defining what something is, and what its identifying characteristics are
<joepie91> until that point you can't assess in what circumstances it's beneficial :)
judofyr has quit [Ping timeout: 268 seconds]
Rzrik has joined #elliottcable
Rerik has quit [Ping timeout: 240 seconds]
Rzrik has quit [Ping timeout: 255 seconds]
judofyr has joined #elliottcable
Rurik has joined #elliottcable
Rerik has joined #elliottcable
Rurik has quit [Ping timeout: 246 seconds]
Rzrik has joined #elliottcable
Rerik has quit [Ping timeout: 268 seconds]
Rerik has joined #elliottcable
Rzrik has quit [Ping timeout: 240 seconds]
Rerik has quit [Ping timeout: 268 seconds]
judofyr has quit [Remote host closed the connection]
judofyr has joined #elliottcable
judofyr has quit [Ping timeout: 240 seconds]
judofyr has joined #elliottcable
judofyr has quit [Ping timeout: 260 seconds]
<pikajude> pet peeve: guides online telling you to reboot instead of kextload
<pikajude> how much work went into kextload being a thing that was possible
<pikajude> just for people to ignore it
<joepie91> pikajude: as a documentation writer: the reason for this is to reduce the "YOUR GUIDE DOESN'T WORK" complaints when something inevitably fails because they did weird shit on their OS and it got into an odd state
<pikajude> yeah but
<joepie91> pikajude: easier to just tell people to reboot so that it will certainly work, and those who know about kextload etc. will substitute at their own risk
<pikajude> "restart your computer" is the implicit answer to any question starting with "why does my computer _____"
<pikajude> yeah but i didn't find out about kextload for years
<pikajude> when i could have found out from a guide suggesting it
<pikajude> and saying reboot if it dont work
<pikajude> idk, whatever
<joepie91> I mean, I understand the pet peeve, but computers are fucking nightmarish at times and it's a lot less stressful to just tell people to do the minorly-inconvenienced thing that always works
<joepie91> :p
fujisan has quit [Quit: Connection closed for inactivity]
judofyr has joined #elliottcable
judofyr has quit [Ping timeout: 240 seconds]