ELLIOTTCABLE changed the topic of #elliottcable to: #ELLIOTTCABLE: Puppy paws patter placidly through the pale passageways ...
<ec>
hi, alexgordon
<ec>
sorry. Shit Happened™.
<ec>
/=
<alexgordon>
ec: your array indicies are messing with my brain
<ec>
I know. I'm sorry. I might rationale *that*, as well, so the specification has a single “language” to talk about indicies.
<alexgordon>
I can live with 1-based indexing. I can live with 0-based indexing. But the combination leads to communication difficulties
<ec>
like, “always use numbers to talk about indices, and always use words to talk about elements”
<alexgordon>
can we just use numbers everywhere
<ec>
i.e. “first, second, third” when treating things as 1-indexed / ordinal,
<ec>
and “0, 1, 2” when referring to index
<alexgordon>
if member[0] is the zeroth element, then member[1] is the first element and member[2] is the second element
<alexgordon>
then it's unambiguous
<ec>
yep!
<ec>
oh, wait
<ec>
that's the opposite of what I do v.v
<alexgordon>
"first" on its own could either mean member[0] or member[1]
<alexgordon>
lol
<ec>
hrm.
<ec>
yeah, I'll work it out in some way, and then document clearly the choice.
<ec>
anyway.
* alexgordon
is working on FastPaws
<alexgordon>
bitmaps!
<ec>
going through and re-writing a few things in this manner right now
<alexgordon>
spinlocks!
<ec>
wat
<alexgordon>
so by "There is some extant value in the second slot of member's own members" you must mean members[1]
<ec>
yes.
<alexgordon>
k
<ec>
every time in the document I use the words “first, second, third”
<ec>
*of members*
<ec>
“first of members” = members[0]
<ec>
etc
<alexgordon>
this is very confusing
<alexgordon>
because you also use "zeroth"
<alexgordon>
so zero = one
<ec>
yes
<ec>
“zeroth” was not intended as a part of that words
<ec>
i.e. it doesn't go zeroth, first, second
<ec>
which, yes, is retarded
<ec>
just explaining so you can understand what you're reading *right now*, before I've fixed it
<ec>
“zeroth” was my new name for the naughty.
<alexgordon>
yeah yeah
<ec>
so “zeroth” == “first,” but only when the first element is *left empty* for some reason.
* alexgordon
scratches head
* ec
headdesks
<ec>
least clear thing ever.
<ec>
fixing now.
<alexgordon>
the problem of list length and empty elements in lists is also tripping me up
<alexgordon>
using json notation: [] vs [null]
<alexgordon>
or [null] vs [null, null]
<alexgordon>
ec: what do I do if trying to look something up *and the list just isn't long enough*?
<alexgordon>
is that an error?
<alexgordon>
should I just skip it
<alexgordon>
treat it as null?
<alexgordon>
(i.e. empty)
<alexgordon>
return no result?
chris-tina has quit [Ping timeout: 240 seconds]
<ec>
not an error,
<ec>
lists are implicitly infinitely long, full of nulls.
<ec>
if you'd like to think of it that way.
<alexgordon>
alright
<ec>
given foo = [null, null, 1, 2, 3, null]
<alexgordon>
that makes things easier
<ec>
the effect of foo[0] is identical to foo[5] is identical to foo[999]
<ec>
at some point, there will have to be specification for a length() procedure; but there's not right now, so it doesn't matter.
<ec>
and when there are, I will make those decisions and document the exact operation well. (=
<ec>
k, brb
chris-tina has joined #elliottcable
<ec>
hi, alexgordon
<alexgordon>
hi ec
<ec>
am back for ~30 mins
<ec>
Chelsea is demanding me
<ec>
hmmmm
<ec>
'k, fixing index wording everywhere, or everywhere I can find it
eligrey has joined #elliottcable
<ec>
hi
<ec>
Going back to calling “zeroth” noughty, for now.
<ec>
to differentiate it from the already-confusing indexing stuff. For now.
chellio has joined #elliottcable
chris-tina has quit [Quit: Ex-Chat]
* alexgordon
waves to chellio
* chellio
waves to alexgordon
<chellio>
I'm sorry for stealing ELLIOTTCABLE.
<chellio>
All the time.
<chellio>
Actually.
<chellio>
No I'm not.
<chellio>
NOPE.
<alexgordon>
chellio: it's ok, I needed a break ;)
<ec>
alexgordon: COFFEE BREAK OVER. BACK ON YOUR HEADS
<chellio>
NO>
<alexgordon>
lol
<alexgordon>
-spec
<purr>
alexgordon: Paws' half-arsed Version 10 specification <http://ell.io/ihQzs>
<alexgordon>
ec: so I think my C implementation is pretty much up to date
<ec>
that's cooooool
<ec>
there's nothing interesting yet, so that's unsurprising ;D
<ec>
but luckily I *think* I've walked us through this in a way that means you won't have any huge surprises in tacking the reactor on top of everything you have right now
<alexgordon>
yeah
<ec>
alexgordon: okay, look under look-up algo
<alexgordon>
ec: err don't you mean slot [1]
<ec>
trying to work out how to word this with 0/1/2 zeroth/first/second
<ec>
yes. ddis
<alexgordon>
if slot [0] is the noughty
<ec>
FUCK IT
<ec>
scroll up.
<alexgordon>
haha, the nuclear option ;)
<ec>
?
<alexgordon>
don't worry :P
<ec>
ugh no
<ec>
that's more confusing
<ec>
“first” should be the first item in the list, index 0, in this spec.
<ec>
it's only at the *abstracted* level of Paws that we begin to treat index 1 as the first item in the list.
<alexgordon>
ec: just use my approach. [0] is the noughty, [1] is the element after, [2] is the element after that, etc
<alexgordon>
then it's intuitive
<ec>
[0] == first == noughty
<ec>
need to be able to use prose for this
<alexgordon>
don't use words at all
<ec>
don't want to dump `[1]` in prose
<alexgordon>
you're a programmer dammit
<alexgordon>
well then
<alexgordon>
0th
<alexgordon>
1st
<alexgordon>
2nd
<ec>
nope
<ec>
solved
<alexgordon>
oh god
<alexgordon>
that's even worse
<ec>
deal with it.
<ec>
MOVING ON.
<alexgordon>
it's still ambiguous
<ec>
it's the most clear, *in context*.
<alexgordon>
so now to refer to the first real object you use "second"
<alexgordon>
how the fuck does that make sense
<ec>
If I say something “is the first member” of something, that usually means the first item in the storage
<ec>
because Paws, and one-indexing.
<alexgordon>
but this is 2 indexing
<ec>
the entire point is to *hilight* the fact that the *second* element of the storage, is the “first” element lib-side
<alexgordon>
yeah but it makes more sense if you say
<alexgordon>
"libside is 1-indexed"
<ec>
yes, index-1
<ec>
members[1]-indexed
<alexgordon>
yes but you're starting at 2
<alexgordon>
the first libside element is "second"
<ec>
not worth arguing over. Best solution here is just to pick something, document it if it's mildly unclear, and be *consistent*.
<alexgordon>
if you say it's "first" then you still have "zeroth" for the noughty
<alexgordon>
lol whatever
<alexgordon>
micahjohnston will explain how this is a retarded convention to adopt
<ec>
okay
<ec>
cleared up everywhere
<ec>
alexgordon: Basically, everywhere *except* the ‘look-up algorithm’ section, it makes complete sense.
<alexgordon>
lol
<ec>
implementation-wise, i.e. from your point of view as implementer, Paws is zero-indexed.
<alexgordon>
I've lost the will the argue this
<ec>
That section is weird *precisely because* it's mapping the possibility of a one-indexed language, at a higher level of abstraction, down *onto* a zero-indexed implementation.
<ec>
okay, good :D
<ec>
next step.
<ec>
'k
<alexgordon>
ec: btw, just checking, the lookup algorithm treats the noughty the same as any other element, right?
<ec>
Symbol->content; -> Symbol->name
<ec>
good idea, done
<ec>
alexgordon: excellent question. Yes, it does.
<alexgordon>
yay an excellent question
<ec>
This is utilized in my Core design, because we always “wrap” the noughty in an underscore pair
<alexgordon>
GOLD STAR
<ec>
waaaaaaaaaaaaaaaaay back when, the noughty was called the underobject.
<ec>
so that means you can do a lookup like this:
<ec>
“foo _ is.cool”
<ec>
to look-up “is.cool” in the metadata of “foo”
<ec>
because it actually looks like this:
<ec>
((,'_', <metaobject>), …)
<ec>
make sense?
<alexgordon>
not one iota
<alexgordon>
oh
<alexgordon>
right
<alexgordon>
dots are for word separation
<alexgordon>
always catches me out
<ec>
sorry D:
<alexgordon>
ec: yeah makes sense
<ec>
cool cool
<ec>
cool
<ec>
where were we!
<alexgordon>
calling
<ec>
<ec> As you've probably surmised by now, “running code” (which until I come up with a better word, I will call the ‘realization’ of code), basically boils down to processing some series of these ‘combinations.’
<ec>
<ec> … which I guess, is our first topic: the queue.
<ec>
<ec> so mostly, what we have to talk about next, is going to be how we *order* the realization of a queue of combinations.
<ec>
so.
<ec>
nah.
<ec>
lied.
<ec>
another sub-topic we skipped over:
<ec>
advancement.
<alexgordon>
mmm
<ec>
FUCK
<ec>
I'm re-designing while trying to explain. I suck.
<ec>
the design right here around advancement was previously very tightly-coupled and complex, and thus difficult to explain or spec …
<ec>
… now, I'm trying to untangle it, to explain it to you, while writing the untangled version into the spec.
<ec>
and It Is Hard™.
<alexgordon>
lol
<alexgordon>
well take your time
<ec>
ugh boring
<ec>
NO
<ec>
FAST
<ec>
RIGHT HERE RIGHT NOW YOUUUU
<ec>
ELLIOTT: YOU ARE NOT GOING TO DOCUMENT STACK-HANDLING INSIDE ADVANCEMENT.
<ec>
OKAY? OKAY.
* ec
breathes
<ec>
I got this.
<ec>
alexgordon: okay, executions.
<chellio>
YOU GOT THIS, BRO
<ec>
have a program-counter, <pc>
<ec>
and a <stack>
<ec>
hm. design though.
<ec>
micahjohnston suggested this a looooooooong time ago with his “holes,” I think.
<ec>
and I'm just *now* grasping it, I believe.
<ec>
but instead of maintaining a stack of objects, and pushing the PC along the Script,
<ec>
we could *make copies of* the Script, and “reduce” it, gradually replacing nodes with the results of combinations
<ec>
since Scripts *already* store Objects, we'd just be replacing pairs of Objects with the values they “reduced” to.
<ec>
that'd mean a lot more copying, though; no longer a central copy of the Script, instead, every clone of an Execution would be holding a full copy of the Script.
<ec>
alexgordon: if any of that made any sense to you … thoughts?
<alexgordon>
errr
<alexgordon>
sorry I was having an argument with myself
<alexgordon>
must be getting late
<ec>
wat
<alexgordon>
literally that was exactly what I was doing
<ec>
so confus™
<alexgordon>
I was arguing a position. then responding. then arguing back
<alexgordon>
with myself
<ec>
about what!?
<alexgordon>
politics
<ec>
>,<lolwtf>,<
* ec
channels brr
<alexgordon>
reading
<alexgordon>
'micahjohnston suggested this a long time ago with his holes'
<alexgordon>
very rude, ec
<alexgordon>
ec: since I didn't understand how the bloody thing worked before, I don't think I'm in a position to judge how your new system is better or worse
<ec>
UGH
<ec>
bloody thing lol
<ec>
GETTING CLOSER
<ec>
OMFG
<ec>
okay.
<ec>
advancement.
<ec>
there's a stack, and a PC.
<ec>
let's consider this rather ugly little bastard:
<ec>
{ foo ((bar) baz) }
<ec>
that's,
<alexgordon>
ec: this seems like implementation details
<ec>
L'foo' E{ E{ L'bar' } L'baz' }
<alexgordon>
as whitequark or was it prophile was saying: operational fucking semantics
<ec>
well, at the moment, I don't know how else to explain it.
<ec>
no, this spec is tooooootes not an opsemantic
<alexgordon>
no operational semantics are good
<ec>
totes totes totes toots tootsie tote poot pop.
<alexgordon>
implementations details are bad
<ec>
yes, I know, but this document isn't remotely that.
<ec>
we're not talking at all about how user's experience things from within the language.
<alexgordon>
well we are, at a nuclear level
<alexgordon>
point is, just describe the necessary and sufficient conditions, preconditions and postconditions, whatever
<ec>
not sure how do
<ec>
you can help me reduce after this version, I guess :x
<alexgordon>
just describe *what* you expect it to be
<ec>
DOES NOT COMPUT™
<ec>
buttts⁽™⁾
<joelteon>
butts are cool
<ec>
butts are tm me, this year.
<chellio>
I have a butt.
<ec>
we're very familiar.
<ec>
anyway,
<ec>
SHIT.
<ec>
alexgordon: I madededededed a big mistake.
<alexgordon>
?
<ec>
I forgot to mention, that however you implement Scripts, you need to ensure that each Node has a reference to the next Node in that Script.
<ec>
whether you crawl the Script, or do it with some sort of linked-tree structure, idk
<alexgordon>
linked lists? EW
<ec>
blrrigp.
<alexgordon>
ec: and by nodes you are including objects in this?
<alexgordon>
or just exprs?
<alexgordon>
actually how does that even work
<ec>
no, the *nodes*
<ec>
not the expressions/objects stored in the node
<alexgordon>
alright. in my implementation they're the same
<alexgordon>
expressions and objects inherit from node
<ec>
problematic: given a handle on a Node, you need to be able to “advance” to the next node.
<ec>
which is what I'm spec'ing right now.
<joelteon>
my shoulders!
<alexgordon>
okay so I just add a pointer to Node?
<ec>
something like that.
<alexgordon>
Node* next;
<ec>
wait
<ec>
just let me write out advance, and you read it and tell me what you can do with it.
<ec>
advance()*
<alexgordon>
-spec
<purr>
alexgordon: Paws' half-arsed Version 10 specification <http://ell.io/ihQzs>
<ec>
do you keep closing the window or something.
<alexgordon>
yeah I lose it behind other windows :P
<ec>
LOL
<alexgordon>
fuck, arguing with myself again
<ec>
I'm done, for the night. This is too difficult, and I'd said I wanted to wrap it up within thirty minutes. /=
<ec>
alexgordon: <3<3<3<3,3<3,#,#,3<#,#,#<#
<ec>
<3 alexgordon
<ec>
<3 alexgordon's butt
<ec>
<3 alexgordon's face
<chellio>
alexgordon: <3<3<3<3<3
<ec>
<3 alexgordon's words
<alexgordon>
my face is a calculator
<ec>
bbl it's calling me
<alexgordon>
my arse is a abacus
chellio has left #elliottcable [#elliottcable]
<joelteon>
my butthole is an abacus
<fannkuch>
i have an elmo vibrator i always say ohh yes tickle me elmo
sanitypassing has quit [Read error: Connection reset by peer]
devyn_ has joined #elliottcable
devyn has quit [Read error: Connection reset by peer]
sharkbot has quit [Remote host closed the connection]
sharkbot has joined #elliottcable
Determinist has quit [Ping timeout: 252 seconds]
Determinist has joined #elliottcable
sanitypassing has joined #elliottcable
Determinist has quit [Ping timeout: 256 seconds]
Determinist has joined #elliottcable
Determinist has quit [Ping timeout: 252 seconds]
Determinist has joined #elliottcable
devyn_ has quit [Changing host]
devyn_ has joined #elliottcable
devyn_ has quit [Quit: leaving]
devyn has joined #elliottcable
_whitelogger_ has joined #elliottcable
duckinator has joined #elliottcable
Determinist has quit [Ping timeout: 256 seconds]
Determinist has joined #elliottcable
wudofyr___ has quit [Remote host closed the connection]
cloudhead has joined #elliottcable
wudofyr___ has joined #elliottcable
wudofyr___ has quit [Remote host closed the connection]
wudofyr___ has joined #elliottcable
wudofyr___ has quit [Remote host closed the connection]
wudofyr___ has joined #elliottcable
Determinist has quit [Ping timeout: 252 seconds]
Determinist has joined #elliottcable
PragCypher has joined #elliottcable
<ec>
alexgordon: “my arse is a abacus” wat.
irclogger_com has quit [Remote host closed the connection]
<ec>
-start
irclogger_com has joined #elliottcable
<ec>
hiiiii
<ec>
Nobody here >:
<whitequark>
i am
alexgordon has joined #elliottcable
<ec>
whitequark!
<ec>
and alexgordon!
<ec>
perfect
<ec>
hey, whitequark, would you like to talk to us? I'm bringing the old Murmur back online
<whitequark>
murmur?
<alexgordon>
-spec
<purr>
alexgordon: Paws' half-arsed Version 10 specification <http://ell.io/ihQzs>
<alexgordon>
whitequark: y u no blackquark? racist
<alexgordon>
ec: yeah so, calling executions
<whitequark>
alexgordon: executions now have stack!
<whitequark>
so, they are truly coroutines now.
<alexgordon>
lol
<purr>
lol
<alexgordon>
that'll be hard to do in C
<whitequark>
alexgordon: fuck C
<alexgordon>
no fuck YOU
<whitequark>
also no, not really
<whitequark>
man getcontext
<whitequark>
alexgordon: no, fuck C. just fuck.
* alexgordon
hugs C
<alexgordon>
don't worry C, I won't let the russians hurt you
* whitequark
crushes C with his bulldozer.
<ec>
hi
<purr>
ec: hi!
<ec>
whitequark: stack?
<ec>
whitequark: not the stack you're thinking of.
<ec>
fuck, maybe I shouldn't call that. But it *is* a LIFO-list, a stack-y queue?
<ec>
idfk.
cloudhea1 has joined #elliottcable
<ec>
it's not a stack of callers; it's a stack of indirected combinations.
<ec>
i.e. if you have,
<whitequark>
ec: same thing.
<ec>
locals['foo'][ locals['widget'] ]['bar']
<whitequark>
likely.
<ec>
(foo (widget) bar)
<alexgordon>
whitequark is making the mistake I made when I first tried to learn about paws: he's trying to understand it
<ec>
then you've gotta store the result of local['foo'] somewhere, while it's running locals['widget']
<ec>
so it can then lookup foo[widget]
<whitequark>
ec: yes, this is the stack I was thinking of.
* ec
eyebrows
<whitequark>
the stack for incomplete computations.
<ec>
how is that coroutiney?
<ec>
oh. I always thought you meant call-stack, stack.
<whitequark>
well, because there can be two kinds of stack... a value stack for a stack machine (yours), or a call stack
<whitequark>
mind you, you have a call stack too.
<whitequark>
it just does not appear directly in paws.
<whitequark>
well, you can likely get away without it, by writing code which is analogous to one huge main() with gotos everywhere
<whitequark>
but if you add some structure, then you effectively have an implicit call stack (or call tree... google "spaghetti stack") stored in various data cells all around.
<whitequark>
it doesn't really matter except for nitpicks.
cloudhead has quit [Ping timeout: 268 seconds]
<whitequark>
ec: in other words, paws does not intrinsically provide an abstraction analogous to call/return of structured languages.
<whitequark>
it provides an abstraction analogous to goto;
<ec>
sorry, multitasking out the ass
<ec>
won't be able to Paws much this moring before I leave
<ec>
but I'll be ~here for the next couple hours, while I pack and finish up this murmur config and shit
<ec>
that said …
* ec
reads
<whitequark>
however, the second you build something which looks like call/return, you make a call stack, even if it doesn't appear as a stack-like data structure directly in the source or the VM.
<ec>
yeah, I gotcha
<whitequark>
and by "looks like call/return"
<whitequark>
I mean for example composable callbacks
<ec>
but the point is not *whether* it's got a call-stack,
<ec>
it's whether it *forces* one.
<whitequark>
sure
<ec>
The point is to force that decision into userspace.
<whitequark>
note that, for example, x86 doesn't force a call stack on you either
<ec>
i.e. you can implement a stackful language in Paws, or a non-stackful language in Paws.
<whitequark>
or, fuck x86
<whitequark>
even better
* ec
nods
<ec>
yesyesyes got that
<alexgordon>
whitequark: lol
<purr>
lol
<whitequark>
ARM does not mostly have a concept of stack
<ec>
goto-analogous mechanism on top of which you build whatever you want.
<ec>
don't care about pedantry or terminology.
<whitequark>
you can store with postincrement and index over whatever register you want
<whitequark>
ldmia/stmia
<whitequark>
etc.
<whitequark>
so you do not have a distinct "stack pointer"
<ec>
only care whether I'm accidentally forcing too much of *my* decision onto the language-implementer
<ec>
i.e. “accidentally forcing a stack upon the implementer”
<whitequark>
or a distinct "call"/"return" command
<ec>
which, as far as I can tell, I'm not.
<whitequark>
ec: well, you *are* forcing a stack machine
<whitequark>
:p
<whitequark>
stack machines usually have compact code, but it's a nightmare to optimize (or, worse, write stuff by hand). for example.
<whitequark>
compactness is why you have stack machines all around... YARV. JVM. CLR.
<ec>
okay
<ec>
more on this later. 3
<ec>
<3
<whitequark>
it's also convenient to compile for, PROVIDED all you want is a fucking dumb interpreter which won't even analyze the stuff it's reading.
<whitequark>
otherwise, use a register machine!
<whitequark>
LLVM is one
<whitequark>
Dalvik is one, and Dalvik's bytecode corresponds often 1:1 to ARM code
<whitequark>
which is why you need to compile JVM bytecode to Dalvik bytecode, in fact
<whitequark>
to spare your fucking phone from doing that
yorick has joined #elliottcable
<alexgordon>
ec
prophile has joined #elliottcable
prophile has quit [Changing host]
<ec>
alexgordon: hi
<alexgordon>
hi
<purr>
alexgordon: hi!
<alexgordon>
-spec
<purr>
alexgordon: Paws' half-arsed Version 10 specification <http://ell.io/ihQzs>
eligrey has joined #elliottcable
<alexgordon>
ec
<ec>
yes?
<ec>
next time we work on the spec, I'm gonna do it over audio
<ec>
screw typing all the time when I'm trying to write
<ec>
vil: you here?
<vil>
allo
<ec>
you got a Mumble client?
<vil>
not at the moment
<vil>
why?
<vil>
oh
<ec>
fuxing with the server
<ec>
end-goal: purr-managed Mumble server.
<vil>
nice
<ec>
automatically managing channels for each IRC channel.
<ec>
and ops in the IRC channel, having full control over the relevant Mumble channel if they wish.
<vil>
you should hook purr up to voice-synthesis so he can participate as well
<ec>
oh gods.
<ec>
basically, #Node.js Mumble channel.
<ec>
and eventually #JavaScript.
<ec>
er, twohash.
<joelteon>
I found this voice synthesizer written in 1024b of javascript once
<joelteon>
it was awesome
<vil>
nice
<ec>
lies!
<vil>
I want to make one sometime
<vil>
it'd be a fun project
<joelteon>
it was pretty bad but it was good for one kilobyte of javascript
<vil>
and probably hilarious until it was working properly
<ec>
lolololol
<purr>
lolololol
<ec>
but seriously.
<ec>
Voice-purr? egads.
<ec>
I just had Mac OS X read “purr”
<vil>
it would just have to say lol over and over, that's the core feature set
yorick has quit [Remote host closed the connection]
<dsamarin>
ew sourceforge
<vil>
I think I deleted my account when I changed usernames
<vil>
it's not in 1Password
<vil>
erg. I should just build my own alternative to Mint
<alexgordon>
ec: so when do we get to paws
<alexgordon>
also, when do I get my MBP
<alexgordon>
;)
<joelteon>
i love my MBP
<vil>
my sister has my old MBP right now
<vil>
hard drive just died
<vil>
:(
<alexgordon>
:(
<vil>
poor thing
<alexgordon>
I should back up
<vil>
waiting for a Universal Drive Adaptor to arrive to see if it's salvagable
<vil>
I don't back up my Air, I just make sure that there's no local data that isn't mirrored elsewhere
<vil>
everything's on the server
<joelteon>
what server?
<joelteon>
also, that's a pretty clever idea
<joelteon>
all my dev stuff that's actually useful is on github, my dotfiles are on github, my VPS isn't going anywhere, and my personal data is mostly in dropbox
<joelteon>
well, I could put my movies in dropbox
<joelteon>
can't you store music on icloud or something?
<ec>
I've done the same for years
<ec>
Spotify for music, photos on Photo Stream or Flickr or Instagram or my phone, code and config on GitHub
<ec>
all that I have to re-download when I get a new machine is applications.
<joelteon>
and no, that thing is awesome, I want one
<alexgordon>
will probably cost $10k
<joelteon>
yep
<alexgordon>
wish you could buy a GPU-less version
<joelteon>
i just wanna get the best possible one
<alexgordon>
don't need GPUs for coding :P
<joelteon>
that GPU though
<joelteon>
i want to game on it
<alexgordon>
I have a PC for that
<joelteon>
i'll hook it up to my TV
<ec>
I wonder if I could tie libspotify up to purr up to a *server-side* Mumble-client.
<ec>
purr-radio? :D
<ec>
I think irc bots are the single juiciest bloat-target on the planet. I'm not quite sure why.
<vil>
because it's like building a personality
<ec>
yes <#<3<3<3<3purrrrrrrrrr
<vil>
purrsonality
<vil>
lolol
<purr>
lolol
* ec
grins
* vil
pats purr
* purr
r
<joelteon>
heh
<ec>
I love that his primary feature started out as responding to ACTION messages with purring.
<joelteon>
I just recently added a feature to my bot where it says "hi" when you say hi
<joelteon>
it confuses a bunch of people but everyone on deviantart is retarded anyway
<ec>
and he's bloated up to having passable sentience, porn-spidering, and music-search-engine integration.
<ec>
like, that's just, the best example of bloat ever
<ec>
wait, *you* have a dA bot *too*?
<ec>
jesushchrist.
<vil>
I didn't realize that anyone but Nuck used DA's chat
<ec>
right!?
<vil>
I've never been there
<ec>
ATMOSPHERE OHEMGEEE
<ec>
I think the dA chat is like Freenode for artists?
* vil
shrugs
<purr>
¯\(º_o)/¯
<joelteon>
Yeah, except it's way more retarded
<vil>
IRC > everything
<vil>
DAMN
<vil>
the new Universal Drive Adaptor is SEXY
<ec>
hey, vil, connect to my mumble
<ec>
audio ain't up or anything
<ec>
but I'm trying to configure it
<ec>
stupid ACLs ddis
<vil>
ok
<vil>
lemme download it really quick
<ec>
mumble://ell.io
<ec>
-mumble
<purr>
ec: We don't use Mumble for voice-chat! Talk to us: mumble://ell.io/ (Download the client for Mac, Linux, or PC at http://mumble.sourceforge.net/)
<ec>
LOL that's still there
<purr>
LOL
<ec>
-factoid mumble
<purr>
ec: Popularity: 4, last changed by: sephr, 163ſ 712mſ ago
<vil>
wat
<ec>
thx sephr
<vil>
I love how quickly Alfred picks up new apps lately
<joelteon>
It uses the spotlight index, right?
<vil>
I think that's part of it? I honestly don't remember
<vil>
ec:
<vil>
oops
<vil>
I'm on now
<ec>
self-register
<vil>
?
<joelteon>
i'm sure it does
<joelteon>
i doubt he wrote his own indexing engine
<ec>
did you set up a certificate when you connected?
<vil>
no
<vil>
well
<vil>
it told me yours was invalid and I accepted it anyway
<vil>
I didn't generate one
<ec>
you need to generate your own.
<vil>
ok
<ec>
Configure > Certificate Wizard.
<vil>
yep, already doing so
<vil>
better?
<ec>
right-click self, register
<ec>
then re-connect
<ec>
cooooooolio
<ec>
need a domain for purr
<ec>
vil: who was going to help us with the new purr?
<joelteon>
dude lenses are FUCKING COOL
<ec>
joelteon: what.
<purr>
beep.
<joelteon>
lenses
<joelteon>
you know
<vil>
uh
<joelteon>
functors that operate on nested structures
<joelteon>
and stuff
<vil>
joelteon: it was you, wasn't it?
<joelteon>
what was
<vil>
purr update?
<joelteon>
dunno
<alexgordon>
well clang is fucking useless
<vil>
wlecome to the team, then :D
<ec>
purr.gg?
<joelteon>
tahnk you
<ec>
purr.gy
<ec>
purr.gs
<ec>
hm
<ec>
purr.hn
<ec>
that seems so, er, strain-y.
<alexgordon>
haha
<vil>
pur.xxx, clearly
<alexgordon>
hacker news
<alexgordon>
vil YES
<ec>
“Ugh, I'm so constipated … PURRRHNNNN”
<vil>
except spelled right
<alexgordon>
purrxxx
<ec>
I want my name doesn't do xxx
<vil>
-- short cables
<purr>
Let it be known that vil hates short cables.
<vil>
ec: aww
<vil>
<3 iwantmyname
<purr>
Let it be known that vil hearts iwantmyname.
<vil>
I'm going to write myself a "currently listening" page for my website with some AppleScript hackery
<vil>
yet another purr feature I didn't know
<vil>
I need to go read all of his source as well
<vil>
and also all of the -learned stuff
<ec>
lololololol
<purr>
lololololol
ELLIOTTCABLE has quit [Remote host closed the connection]
<vil>
does Twitter rate-limit bio changes? it'd be neat to update it with the current track
<ec>
FUCKIGN FUCK
ELLIOTTCABLE has joined #elliottcable
<ec>
I don't believe they do
<vil>
hmmm
<vil>
now Musicality just needs to support grabbing the track playing in Grooveshark and I'll be good to go
<vil>
@EvaGiselle has a dynamic bio, should ask her
<vil>
*had
<ec>
she did? o_O
<alexgordon>
hi
<purr>
alexgordon: hi!
<vil>
ec: yeah, it rotated every couple of hours, only between a few things
<vil>
alexgordon!
<ec>
oh. lol.
<purr>
lol
<ec>
shit, it's alexgordon
<ec>
your timing is terrible, alexgordon. I've got to leave right now.
<ec>
or within a few moments.
<vil>
ec: explain me receivers first, because I think they've changed since I learned stuff
<vil>
I don't remember the parameters thing
<vil>
and why don't they get a naughty?
<ec>
I fucking hate didone typefaces, and thus I hate Computer Modern, and thus I hate 99.9% of TeX output.
<ec>
they don't get a naughty simply because there's *no reason* for one.
<vil>
because nobody can interact with them?
jdhartley has joined #elliottcable
<ec>
the parameters-object to receivers is *always* generated by the system. It can't be extended, monkey-patched, abstracted, modified, or otherwise improved upon.
<vil>
ok
<ec>
thus, there's no reason to leave “room for expansion.”
<ec>
there's a second reason:
<ec>
the “noughty rule” has two meta-rules to its application:
<ec>
First, and most importantly, we want to apply it *everywhere* the Nuclear design depends upon the exact layout of data-structures. (i.e. Object->find() algo.)
<ec>
Second, we want to apply it *nowhere*, if we can avoid it. That is, the Nuclear design should be as little-aware-of / as little-dependant-upon noughty-design, as possible. (i.e., hopefully nowhere *but* Object->find()'s algo.)
<ec>
Clear?
<vil>
yep
<vil>
ec: Eva has meticulously maintained a 420 following count for quite a while now
<ec>
seriously?
<vil>
I am honored to be one of them
<ec>
all respect lost.
<vil>
lol
<purr>
lol
<vil>
(that's what I've heard anyway, I haven't paid attention long enough)
<vil>
so a receiver is just another value of an object
<vil>
ok, I get how this all works
<vil>
ec: in regards to your comment on the comparison-operation, I can't see any reason to make it extensible either
<vil>
how is the comparison accomplished? using receivers? or special
<jdhartley>
vil: what is your twitter
<vil>
@vilhalmer
<vil>
follow-back'd
<jdhartley>
twitter bffs
<vil>
<3
<ec>
vil: wat
<vil>
wat
<ec>
-twitters
<ec>
-twitter
<ec>
fuhh
<vil>
like, internally, how does it perform object-identity comparison
<vil>
ec: when performing lookup, you have to compare the object ID of the keys
<vil>
how is that done?
<ec>
identity.
<ec>
not sure how else to define it in a spec.
<ec>
if two things *are the same thing*, references to the same value, then the comparison is true.
<vil>
ok, so its an internal implementation detail, not a feature of the objects themselves
<ec>
that's changing with distribution, but for now, that's it.
<ec>
yes.
<vil>
so yeah, definitely no reason to allow overriding that
<vil>
AppleScript is such a dumb language
<vil>
right so everything in the spec so far looks pretty good
<vil>
I understood it, so it can't be too bad
<joelteon>
applescript fucking sucks
<joelteon>
no interpolation
<joelteon>
no string padding
<joelteon>
everything is a float
<vil>
and the syntax, don't forget the syntax
<vil>
-- AppleScript
<purr>
Let it be known that vil hates AppleScript.
<joelteon>
-- applescript
<purr>
Let it be known that joelteon hates applescript.
<joelteon>
-- Applescript
<purr>
Let it be known that joelteon hates Applescript.
<joelteon>
-- case sensitivity
<purr>
Let it be known that joelteon hates case sensitivity.
<joelteon>
-hates joelteon
<purr>
joelteon: joelteon hates ##c, #css, javascript, css, objective-c, applescript, Applescript, and case sensitivity.
<vil>
joelteon: that'll be fixed in the new purr, I think
<joelteon>
ok
<vil>
whenever that actually happens
<vil>
-vil
<purr>
vil: the one who wears rugs.
<vil>
lolol
<purr>
lolol
<vil>
that was ONE TIME dammit
<joelteon>
heh
<joelteon>
-joelteon
<joelteon>
rats!
<vil>
teach her!
<vil>
-learn joelteon=Not an otter.
<purr>
vil: Learned `joelteon`.
<vil>
there you go
<alexgordon>
--applescript
<alexgordon>
-- applescript
<purr>
Let it be known that alexgordon hates applescript.
<alexgordon>
-whohates applescript
<purr>
alexgordon: applescript is hated by alexgordon, vil, joelteon, and joelteon.
<alexgordon>
ha
<vil>
great
<vil>
not just case-sensitive
<prophile>
++ applescript
<purr>
Let it be known that prophile loves applescript.
<vil>
but INCONSISTENTLY so
<alexgordon>
prophile: THEN YOU SHALL DIE
<prophile>
I have a nostalgic fondness for applescript
<prophile>
it was my first programming language
<vil>
I'm so sorry
<alexgordon>
prophile: that's like saying your first time was with andrew lloyd webber
<joelteon>
that's like saying "i have a nostalgic fondness for physical abuse, reminds me of my dad"
<joelteon>
huh. that might've been in poor taste
<vil>
what's the best formatting for track / album / artist info?
<joelteon>
oh oh
<vil>
I need this to look pretty
* joelteon
Extremophile Elite - Between the Buried and Me (The Parallax II: Future Sequence) [Progressive metalcore] {0:01/9:58} <1411kbps Apple Lossless> ★★★★★
<purr>
ec: is stuck up in the clouds; hilight 'em if you want 'em.
chris-tina has joined #elliottcable
<vil>
possibly leaving for food, if so see you guys later
<prophile>
bye vil
* Determinist
grrrrrs
<Determinist>
i need to redesign this room.
<prophile>
aha
<prophile>
it's :c1
<prophile>
fixes the rendering
<ec>
awww vv
<ec>
Determinist: lolwat
<purr>
lolwat
<Determinist>
putting 3 computers (1 mbp, one storage server, one beefy I7) with 2 27" monitors when it's 30C outside, in a 4 square meter room IS NOT a good idea