<elliottcable>
mmm, it chokes on colour escapes, but so does everything-th'fuck-else.
<prophile>
i don't necessarily want everything i say here to end up as public record...
<prophile>
particularly when half my presence in this channel is purr quoting me from the past
<whitequark>
prophile: doesn't irclogger.com do that anyway?
<elliottcable>
prophile ⑊ it's been public record for years.
<whitequark>
besides
<prophile>
bah humbug
<elliottcable>
irclogger, -logs,
<prophile>
i wasn't aware of this
<prophile>
apparently I should run /names more
<elliottcable>
if you say it on Freenode, and the channel has more than ten people, assume it's publically logged.
<elliottcable>
↑ excellent advice. take it to heart.
<prophile>
imagine I'm pulling my grumpy old man face at you, right now
<prophile>
what you are imagining
<prophile>
is in fact reality
<whitequark>
elliottcable: actually I can fix colour escapes
<whitequark>
just didn't see a reason until now
<whitequark>
besides, what's that symbol you use anyway? it shows up as a rectangle for me.
<elliottcable>
me, being annoying. ;)
<Nuck>
white supremacy logger wooooo
<elliottcable>
I tend to gravitate to the least-favoured approach to public interaction.
<Nuck>
I for one welcome our new klan overlord
<elliottcable>
I was “that guy” with a 1px x 1px transparent avatar on Twitter, just to make people think their client was broken, for years
<whitequark>
haha that's evil
<elliottcable>
but this is an actual character.
<Nuck>
elliottcable: Worked fine on TweetBot
<whitequark>
what did twitter clients do?
<elliottcable>
looks good in *my* terminal, and like shit in anybody who isn't using a Mac; and I'm completely okay with that.
<elliottcable>
whitequark ⑊ often just their “avatar drop-window” hole or something, with whatever background it might have, and nothing in it. Just looked like it wasn't loading.
<elliottcable>
People would always complain, and I would always tell them to fuck right off.
<whitequark>
actually it does look fine in non-monospaced fonts, wtf
<whitequark>
no, not even that. looks fine not in irssi :/
<elliottcable>
and I write software that looks like this
<whitequark>
elliottcable: how the hell do you make it so everything breaks?
<whitequark>
I have NO IDEA
<elliottcable>
i'm just special like that.
<prophile>
whitequark: bold
<whitequark>
⑊
<whitequark>
wow
<prophile>
0x01 if memory serves
<whitequark>
prophile: you are indeed correct
<prophile>
i could tell by the pixels
<prophile>
and having seen a lot of bold in my time
<elliottcable>
whitequark: "elliottcable: how the hell do you make it so everything breaks?" wat.
<purr>
beep.
* elliottcable
hugs purr
* purr
rrr
<whitequark>
elliottcable: "make it" = "insert ⑊ in your messages" here
<whitequark>
brb I've only half a hour until grocery shop closes
<elliottcable>
whitequark ⑊ sorry, “wat” is a bot command.
<elliottcable>
-what @ whitequark
<purr>
<micahjohnston> somebody should get a large corpus of english text in IPA and markov-chain it to a text-to-speech
<elliottcable>
-what @ whitequark
<purr>
<yuffster> No, like, moon-base level awesome people. I mean, they have enough money for a goddamn moon base.
<elliottcable>
you get the idea.
<elliottcable>
good non-sequitur material, usually.
<Nuck>
Aaaaaand sent.
<Nuck>
That was a hell of an experience, and I officially never want to touch a fax machine ever again.
<Nuck>
Also, Macs are amazing. The PDF shit and the scanning shit and the tablet shit
<Nuck>
Everyting works so flawlessly.
PragCypher has quit [Remote host closed the connection]
<Nuck>
Not a day goes by that I'm not thankful for lacking Adobe Acrobat Reader.
PragCypher has joined #elliottcable
yorick_ has joined #elliottcable
yorick has quit [Read error: Operation timed out]
cloudhea1 has quit [Read error: Operation timed out]
<whitequark>
ok. now, so that I, unlike those nondescribed programmers, do have some nutrients in me, let me tell you a horror story
<whitequark>
(also, in a moment of a fridge brilliance I recognized cshneider as the author of irclogger.com. No, I don't know him, but when I got tired of 1990-ish pure-html logs and went searching for something more modern, I found just irclogger.com.)
<whitequark>
back to the horror. You've all heard that ol' mantra "plz, no exceptions for flow control, kthxbye", right?
<whitequark>
I recently learned how C++ does stack unwinding.
<whitequark>
in particular, it compares all ancestors of the class of thrown object with all the classes in catch clauses across the call stack
<whitequark>
for most of them, it does that twice
<whitequark>
and of course, it uses strcmp.
<whitequark>
that is, apart from the fact that unwinder parses DWARF debug info in runtime, complete with offsets encoded as LEB128 variable-length integers.
<whitequark>
suddenly the latency of thousands of clock cycles is easily explained.
<Nuck>
lmao
<whitequark>
not exactly a reply I was expecting, but ok
<Nuck>
I only vaguely understood that, and I know that's horrifying.
<Nuck>
whitequark: I laugh in the face of terribleness.
<Nuck>
Comes from years of JS development
<whitequark>
I guess the true reason it works this way is that it *could* be solved by a special kind of relocation and a PLT-ish structure for C++ classes
<whitequark>
and lazily translating the class inheritance hierarchies to LLVM-style casts
<whitequark>
when the shared librarires are loaded
<whitequark>
but requiring special support from linker just to run C++ programs was too much
<whitequark>
"The trick is that you arrange the enum values so that they correspond to a preorder traversal of the class hierarchy tree."
<elliottcable>
okay. I understood the problem you described thoroughly, but your proposed solution is way, way over my head.
<whitequark>
elliottcable: let me elaborate
<Nuck>
This is the first time I've seen elliottcable admit something was over his head. I think whitequark is a definite keeper.
<whitequark>
if a C++ class has virtual functions, it also has a vtable pointer which points to the corresponding RTTI info
<whitequark>
the aforementioned LLVM-style casts require all of the casting methods, even for base classes, to have knowledge of complete class hierarchy
<whitequark>
that is, adding a leaf to it is no more a zero-impact operation
<whitequark>
it is still more or less fine until you consider how most of the systems have shared libraries, and how the .code and .rodata of these shared libraries actually corresponds to just one piece of memory for all the processes.
<whitequark>
also consider that you can create an instance of a class from both the shared library and any of the host applications using it
<elliottcable>
Nuck ⑊ That's your own fault for not trying hard enough to challenge me. ;)
<elliottcable>
Nuck ⑊ others in this channel than whitequark are definitely capable of it, though. prophile and inimino, to name two, know plenty that I don't.
<whitequark>
elliottcable: so, you have to somehow allow the code residing inside the shared library to refer to different hierarchies depending on the host application
<whitequark>
for plain old C stuff this is done through PLT, as in procedure linkage table
<whitequark>
which is the OS version of lazily linking symbols to improve startup speed
<elliottcable>
PLT? unfamiliar
<elliottcable>
ah
<whitequark>
PLT is basically a chunk of memory with thunks required by the shared library, which resides at the same virtual address in each address space yet actually points to different physical memory blocks
<whitequark>
so you see how a PLT-like structure could solve the problem with C++ hierarchies
<elliottcable>
not in the slightest.
<elliottcable>
lame's terms (that's not a typo),
<elliottcable>
so you're saying C++ app-code could have a chunk of memory which appears to be shared (copy-on-write, I suppose), but can have additional leafs to the class structure?
<elliottcable>
and this, somehow that I don't grasp yet, solves the fact that we need knowledge of that entire structure inside every instantiation, when the instantiation has runtime-dynamic calls?
<elliottcable>
forgive me, I'm miles and miles from a C++ genius. I hate the stuff with a livid passion.
<whitequark>
elliottcable: no, not COW
<whitequark>
the problem is that the class hierarchy appears to be different in each application using the library
<whitequark>
yet the library code referring to whatever describes the class hierarchy is by definition the same
<whitequark>
so, doing this memory trick is the most efficient way to perform indirection in this case. You could use something simpler, of course, like a TLS (as in thread local storage) pointer managed by runtime or so.
<whitequark>
given that C++ is specified by efficiency nuts, this would be the only way to pass the committee, if any.
<elliottcable>
ahhhhhh.
<elliottcable>
not a performance/insanity thing, a possible-at-all thing.
<whitequark>
yeah.
<whitequark>
PLT presence also isn't performance driven; what I said might have been misleading in that regard.
<whitequark>
also if you ever wondered how shared libraries can have global data and that data is different for each app: GOT
<whitequark>
which is PLT but for data :)
<elliottcable>
Josh Goban, montery jack, and git
<whitequark>
what.
<elliottcable>
it's “wat.”
<elliottcable>
and you have to name:-hilight them
<elliottcable>
if you don't catch them immediately after their latest message, you have to copy-paste, too.
<elliottcable>
because, bot UI? what UI?
<whitequark>
"<+elliottcable> Josh Goban, montery jack, and git" wat.
<whitequark>
like this?
<whitequark>
ah, name:
<elliottcable>
that would make sense, too, but no
<elliottcable>
elliottcable: "Josh Goban, montery jack, and git" wat.
<purr>
beep.
<elliottcable>
-what
<purr>
<micahjohnston> but the discussion of how sociopolitical dynamics lead to particular fat-carb ratios in MREs versus USDA recommendations for civilians is qutie interesting
<whitequark>
mkay.
<elliottcable>
this is purr. he's sentient. maybe.
<elliottcable>
purr: hi!
<purr>
elliottcable: hi!
<whitequark>
so, that PLT-alike thingy is what I'm going to eventually employ. "Eventually," because I employ a closed-world approach for now.
<elliottcable>
closed-world as in no shared objects?
<whitequark>
no code loading at runtime (this is more strict)
<elliottcable>
this is all intimately interesting to me.
<elliottcable>
I can pull off a basic interpreter to showcase my linguistic ideas, a P.O.C., but anything related to compiler design is currently beyond me.
<elliottcable>
I've got the Dragon book, and I need to read through it, but it's currently down in North Carolina.
<elliottcable>
whitequark ⑊ where're you located?
<whitequark>
elliottcable: Moscow, Russia
<elliottcable>
mmm, Chicago
<elliottcable>
travel to the States much? your English is excellent. Learnt it young?
<whitequark>
elliottcable: I actually never spoke (as opposed to written communication) to a person whose first language is English.
<whitequark>
neither have I really been outside Russia even a single time
<elliottcable>
you use Linux, not Macs, yes?
<whitequark>
linux, yeah
<elliottcable>
could FaceTime if you'd like :)
<elliottcable>
mmm, Skype then, sometime.
<elliottcable>
for now: i need to procure food.
<whitequark>
I hate Skype, but as I need it for work anyway and it's not like there is another V[ideo]oIP solution which works: sure.
<elliottcable>
Skype is so, goddamn, terrible.
<whitequark>
even on OS X?
<elliottcable>
have an iDevice? FaceTime is truly excellent, in every way.
<elliottcable>
yep.
<whitequark>
I mean, the linux version is an order of magnitude more horrible than the os x one
<whitequark>
nay, no iDevices near me. I'm one of these people who want and do recompile a kernel for their mobile device with their own patches.
* elliottcable
laughs
<whitequark>
ever wanted to plug in a real motherfucking 2.5" hard drive to your smartphone?
<elliottcable>
I used to be a Linux nut (long before Android was a thing, so never on mobile ... in these days, I had a Razr)
<elliottcable>
used to know everything there was to know about CentOS (don't laugh! D: )
<whitequark>
you can now, if you have galaxy s 2 and cyanogenmod and my special cable which provides power to both hard drive and the smartphone
<elliottcable>
nowadays I use quite a bit of Arch, but OS X is my true love.
<elliottcable>
despite the constraints Apple places upon me, it's just *so much more productive*. My computer never bothers me. It just *works*, does what I want, all the time, and does it well.
* whitequark
sighs
<whitequark>
KDE is... tolerable. once you rip off all the bells and whistles.
<whitequark>
I oh so much understand you.
<whitequark>
and PC hardware got much, much better. Asus UX32VD has a display vaguely resembling a retina one by pixel density, nice CPU and discrete GPU, pluggable RAM and hard drive, weighs like an Air and costs twice less
<elliottcable>
KDE? egads
<elliottcable>
I was an awesomewm boy.
<whitequark>
they also totally cloned the look and feel of air, up to the point when it's not really funny anymore
<elliottcable>
I hear Xmonad is the way to go right now, or wmii? yes? or have I lost touch>
<whitequark>
elliottcable: try i3! it's like awesome, but already configured so you don't have to set up obvious things.
<elliottcable>
I haven't had a head-ful Linux system in more than a year. or maybe two.
<whitequark>
its config is not turing-complete, and it simply gets out of your way and never bothers you.
<elliottcable>
mmmm sounds like the direction starnix needs to be going.
<whitequark>
elliottcable: on the other hand, talking about linux and hardware... I'm not sure if it's me or not
<elliottcable>
... the world needs another discussion of folds, unfolds, lazy lists, and purely functional data structures like it needs another Haskell or Clojure blog post explaining that “Schrödinger’s Cat is a Monad”
<whitequark>
on my previous-previous notebook, I've had to patch ACPI DSDT to get backlight control working
<elliottcable>
omg lolcute
<purr>
lol
<whitequark>
on my previous notebook, I've had to patch xf86-input-synaptics to get touchpad to work
<elliottcable>
yeah, that shit
<whitequark>
it wasn't even synaptics, just a cheap clone ALPS/2
<elliottcable>
I was relatively happy with Linux on an Air, back when Airs were fuck-snappin' new.
<elliottcable>
despite all the patches, obscure information, and fucked-up quirks.
<whitequark>
on this notebook, I've had to fuck with PCIe ASPM to figure out why doesn't it enumerate new USB devices anymore if I plug out the AC power!!!
<whitequark>
gawd
<elliottcable>
Computers.
<whitequark>
on the other hand, it forces you to keep up with the recent development in hardware :D
<elliottcable>
it's fairly masturbatory, from what I *do* undertsand.
<elliottcable>
er, understand. I can type, no, really!
<elliottcable>
“functional programming” as a field bores me no less than OO or old-school procedural crap.
<elliottcable>
I want to see new things, not more complicated things. There's a difference.
<whitequark>
MONGODB
<whitequark>
USE MONGODB; IT'S WEB SCALE
<elliottcable>
I created a languge named Paws, with things like ghosts, soups, forks, and time-machines in it.
<whitequark>
*ahem*
<elliottcable>
I couldn't care less about monoids in the category of endofunctors.
<whitequark>
what is OO programming, anyway?
<elliottcable>
some crap to do with inheritance and encapsulation?
<whitequark>
all programmers seem to have different (and mutually contradicting) definitions of it anyway
<whitequark>
is Ruby OO? Smalltalk? C++?
<elliottcable>
I dunno, I think mine pretty much covered it.
<whitequark>
Alan Kay, who has defined OO (or has he?), is quoted saying that C++ has nothing to do with his idea of OO
<elliottcable>
that.
<elliottcable>
but it doesn't really matter.
<elliottcable>
ask micahjohnston_ about his concept of the Oases sometime.
<whitequark>
*in Victoria Seras' voice* yes, my master
<elliottcable>
ah. anime.
<elliottcable>
for that, you'll want sephr and Nuck.
<elliottcable>
yeah. this channel gets around.
<whitequark>
not sure if googled or knew already
<elliottcable>
google'd. Not my cup of tea.
<sephr>
oh ec is back
<whitequark>
the response time was pretty impressive
<elliottcable>
I'm impressive like that.
<elliottcable>
I pretend to know everything about everything; I basically have to have a Google Search IV.
<whitequark>
but what if google is down
<whitequark>
(I think I've seen that two times in my life)
<elliottcable>
⌘␣⌘v⌘b
<whitequark>
wat.
<elliottcable>
open spotlight, paste, skip to a websearch in the currently-open browser
<whitequark>
neat
<elliottcable>
one of the advantages to Mac OS X is that since you *can't* really customize it very much, once you *do* learn it, it sticks around forever.
<elliottcable>
and works everywhere you find a Mac.
<whitequark>
also I've just noticed that you write so-called 'semicolonless javascript'
<whitequark>
I officially hate you now
* elliottcable
grins
<whitequark>
(to be serious... I don't even remember what was the problem with it. But it sure was teh drama when it happened.)
<elliottcable>
A thorough understanding of ASI makes that a non-issue.
<elliottcable>
Anyway, the fact that the aspect of my code that you pay attention to is the lack of semicolons, shows that you *just may* be as insane as me.
<elliottcable>
Most people find much more pertinent things to complain about.
<elliottcable>
you think that's bad, how about this?
<elliottcable>
... that's one file. And it's hand-written, before you go thinking I have some sort of exotic source-to-source-transpiler in the background.
<whitequark>
it seems that I'm more or less able to read such a wide variety of crappy code so that I cannot even reliably say if it's crappy or not. Kinda a problem for code review
<whitequark>
mmm
<whitequark>
that indeed pleases my inner obsessive-compulsive alter ego
<whitequark>
what the fuck is vvvvvv
<elliottcable>
a function
<elliottcable>
I don't think it's visible in that portion of the file, I've another screenshot somewhere
<whitequark>
*shrug* it's a variable which is not semantically named. I don't have anything else to complain about in this code.
<whitequark>
(apart from having some files where C, lisp and assembly are *interleaved*.)
<alexgordon>
doesn't really matter though
<alexgordon>
don't need to manage memory that well in a short-lived program
<whitequark>
alexgordon: shortlived? LOL
<purr>
lol
<alexgordon>
well depends how big your files are ;)
<whitequark>
not really
<whitequark>
try to link webkit with LTO enabled
<alexgordon>
I try not to
<whitequark>
well, it takes eight hours on a top-notch 12-core i7
<whitequark>
and you simply cannot do it on a 32-bit machine
<alexgordon>
and that is why god invented ec2
<whitequark>
alexgordon: lto does not parallelize
<alexgordon>
doesn't need to
<whitequark>
I'm not exactly convinced that you can use ec2 for this
<whitequark>
but whatever
<whitequark>
it definitely does not have unlimited RAM.
<alexgordon>
well you buy the beefiest computer you can for however long it takes
<purr>
<jeannicolas> you guys have a way of grabing a programming language and making it suck its own wiener!
<whitequark>
but does purr purr
sephr has quit [Quit: Leaving]
sephr has joined #elliottcable
sephr has quit [Ping timeout: 264 seconds]
sephr has joined #elliottcable
<sephr>
elliottcable: anyways it was just that i pmed you a bunch of your credit card info including cvv2, ccn, full name, and other private stuffs
<sephr>
also can anyone suggest a novella that i can finish in 2-3hrs?
<whitequark>
sephr: True Names
<whitequark>
Vernor Vinge
<sephr>
oh then it must be good
<sephr>
ive read his The Peace War
<whitequark>
it is
<whitequark>
also the russian translation is truly horrible, so I can't even recommend it to any of my friends :/
<whitequark>
well, most of them
<sephr>
translate it yourself and sell it to your friends to recompensate
<sephr>
sell it for $999 each
<whitequark>
easier to impose the imperative of learning english on them
<sephr>
whitequark: woah this has a lot to do with my current vr project
<whitequark>
link?
<sephr>
whitequark: not much public info yet but it's essentially a general purpose vr os that makes use of the oculus rift, leap motion, kinect 2, and an architecture that runs well on memristors as well as high-memory classical computers
<sephr>
you can ask around on #oftn later
<sephr>
in 4hrs i think
<whitequark>
memristors?
<sephr>
non-volatile ram-speed memory
<sephr>
also high density
<whitequark>
iirc intel can only do only about 100 of them on a single die at this moment
<whitequark>
despite all the density claims
<sephr>
imagine 10TB of DDR4 RAM that doesn't require power
<sephr>
well for persistence
<whitequark>
sephr: I'm very well aware of what a memristor *is*.
<whitequark>
I wonder how exactly are you planning to use them in 2013, and why.
<sephr>
anyways unlike windows/osx/linux it does what chrome os does
<sephr>
entire os and most used apps have to all fit in ram
<sephr>
and its going to be a pretty heavy os so 32GB to 64GB minimum
* whitequark
recalls elliottcable saying something about idiots
<sephr>
whitequark: not using them, i'm just designing zero-change future compatibility for reram when it comes out
<whitequark>
if. if it comes out.
<whitequark>
and YAGNI.
<sephr>
you can already get samples
<whitequark>
yea
<elliottcable>
whitequark ⑊ stay away from sephr
<elliottcable>
whitequark ⑊ he's poison.
<sephr>
elliottcable: #################
<sephr>
guess how many cars i bought elliottcable
<whitequark>
2kB, up to 500kHz
<sephr>
bought,* elliottcable
<whitequark>
we have yet to see how it scales even to megabytes
<whitequark>
and to DDR4 frequencies.
<sephr>
whitequark: i have some very long term plans that i wont be able to do with conventional small ram + large storage
<whitequark>
you can trivially get huge amounts of RAM right now
<whitequark>
64GB is worth a few hundred dollars
<sephr>
and using this architecture does benefit classical computers as well
<sephr>
much much much more responsive
<whitequark>
of course not.
<sephr>
i know, i have 64GB of ram
<sephr>
clocked at ddr4 speed
<whitequark>
I have just 10G of classical RAM, and entire OS and all apps I use are already cached, with plenty of room left.
<whitequark>
with the even larger SSDs approaching market, storage speed is becoming much less of an issue.
<sephr>
this os is very very info heavy with all of the huge info and interaction graphs
<whitequark>
ReRAM is going to have a lead time of decades until the cost for it becomes low enough for such huge storage pools to be economically viable
<whitequark>
sephr: graphs
<whitequark>
?
<sephr>
by graph i'm talking about neural net type graphs
<sephr>
not graphical graphs
<whitequark>
`graph' is a broad term.
<sephr>
yeah sorry
<sephr>
it is
* whitequark
shrugs
<purr>
¯\(º_o)/¯
<whitequark>
per my knowledge, neural nets benefit most from greater degrees of parallelism, not bigger storage