00:43:08 -!- nooga has quit (Ping timeout: 248 seconds).
00:50:30 <shachaf> kmc: I joined #python earlier and they were making fun of how stupid those static languages and people who use them are.
00:51:18 <Vorpal> shachaf, do they ever think about what the most common implementation of Python is written in?
00:51:41 <kmc> Vorpal: that's a silly argument
00:51:45 <shachaf> Vorpal: "I hate making hardware."
00:51:48 <kmc> shachaf: like bizarro world #haskell, eh?
00:51:55 <shachaf> "Are you aware what your software runs on?"
00:52:02 <Vorpal> kmc, true, but so is the idea that static languages are stupid
00:52:20 <Vorpal> shachaf, hardware is awesome though not easy.
00:52:23 <shachaf> Vorpal: It's a silly idea but that counterargument isn't very valid.
00:53:13 <madbr> hardware afaik is mostly long to design :D
00:53:36 <madbr> optimised assembler is like 10 times slower to write than C++ for instance
00:53:53 <madbr> though it's partly processor dependent
00:55:52 <Vorpal> anyway some good reasons to use statically typed languages: Better error checking at an early stage (compile time errors are much better than runtime errors)
00:55:52 <shachaf> kmc: Did I just troll-by-proxy?
00:55:52 <Vorpal> another good reason is that it provides the optimiser with much more information
00:55:52 <shachaf> Vorpal: You don't need to tell me about advantages of statically-typed languages.
00:55:53 <Vorpal> I think a statically typed language with some support for dynamic typing if you really want to (and where the dynamic typing would be easy to spot for someone reading the code) would be the optimal way to go. Something like a (static!) type Dynamic that can be contain any type or such. Wasn't there something for haskell kind of doing that?
00:56:29 <madbr> that would probably be nice yes
00:56:45 <Vorpal> madbr, I have written some VHDL. And that isn't even on the level of designing transistors and so on. Presumably doing ASIC development is even harder than just working against an FPGA
00:57:07 <madbr> Also with std::string, vector and map as basic types instead of half grafted on things
00:57:39 <kmc> fewer baked in things is better
00:57:53 <kmc> Vorpal: that Dynamic type is part of the GHC Haskell standard library, yes
00:58:02 <madbr> yeah but the base weakness of C/C++ is the lack of built in types
00:58:09 <madbr> ahaha that makes no sense
00:58:12 <Vorpal> kmc, really haven't worked that much with haskell, only the basics
00:58:22 <madbr> yeah but the base weakness of C/C++ is the lack of variable size structures
00:58:37 <kmc> Vorpal: oh, well, wishing for a static language with a feature Haskell already has is a common enough occurrence
00:58:45 <madbr> everything is fine as long as none of your strings or arrays ever change size
00:58:49 <Vorpal> I'm not sure a string should be a fundamental type. Sure there are some good arguments for it. It definitely shouldn't be handled as an array of chars. But I think a linked list of chars (in a language having the linked list as a fundamental type, like Erlang or Scheme) is a good representation.
00:59:06 <shachaf> What does "fundamental" mean?
00:59:12 <kmc> Vorpal: that has terrible performance though
00:59:19 <madbr> vorpal: that's kinda impossible to parallelize
00:59:21 <shachaf> A language should let you make your own abstractions.
00:59:28 <kmc> i think you need some general purpose type for things contiguous in memory
00:59:33 <kmc> and you can apply that to characters
00:59:35 <shachaf> That's probably the most important thing in a high-level language.
00:59:40 <Vorpal> shachaf, I presume kmc meant "baked into the syntax of the language, and is more than just syntax sugar for something else"
00:59:41 <madbr> I don't need abstractions
00:59:46 <madbr> I need arrays of floats
00:59:49 <madbr> and shit like that
01:00:08 <Vorpal> <kmc> i think you need some general purpose type for things contiguous in memory <kmc> and you can apply that to characters <-- you can create a binary containing a string in erlang as well
01:01:00 <Vorpal> purely functional data type though (can sometimes be optimised to be mutable if the compiler can be sure it won't be visible elsewhere though), so there are some interesting things to be aware of.
01:01:25 <madbr> mutable types are nice
01:01:41 <Vorpal> <shachaf> A language should let you make your own abstractions. <-- so something like lisp?
01:02:07 <kmc> Vorpal: are there popular implementations which do that?
01:02:08 <shachaf> Vorpal: That's one kind of abstraction.
01:02:29 <kmc> optimize data structures to be mutable locally
01:02:38 <shachaf> kmc: Languages with uniqueness typing, maybe?
01:02:42 <madbr> the problem is the aliasing caused by pointers
01:02:43 <Vorpal> kmc, popular implementations of erlang?
01:02:47 <kmc> of anything
01:02:50 <kmc> whatever you were talking about
01:02:50 <Vorpal> kmc, there is just one Erlang implementation
01:03:00 <Vorpal> I guess it is the most popular Erlang implementation
01:03:02 <kmc> "is that a thing at all"
01:03:05 <kmc> is what i'm asking
01:03:19 <kmc> it's a common misconception about GHC and Haskell
01:03:21 <shachaf> kmc: It's a thing that they tell young Haskell programmers to get them to go to sleep.
01:03:32 <kmc> to my knowledge GHC does not really do that
01:03:34 <shachaf> I believed it for a while!
01:03:42 <kmc> but it does eliminate intermediate data structures entirely, sometime
01:03:43 <Vorpal> kmc, oh yeah, erlang can optimise certain appending style operations to mutate the data in certain cases
01:03:58 <Vorpal> afaik it is fairly restricted, but it is documented in the efficiency section of the manual
01:03:59 <kmc> the nice thing about pure functional data structures isn't some weird compiler trick
01:04:20 <kmc> it's that they *fundamentally* support efficient non-destructive update
01:04:33 <kmc> if you implement a binary search tree in the most naive way in Haskell with a stupid naive Haskell compiler
01:04:38 <Sgeo_> pikhq, why are there no Tcl "data structures" that map cleanly to a bunch of Tcl commands?
01:04:39 <kmc> and you add a new node into a tree
01:04:40 <shachaf> "give your compiler this one weird tip to make your data structures support efficient non-destructive update"
01:04:48 <kmc> the "new tree" will share most of its storage with the old one
01:04:57 <Sgeo_> Lists are good for one Tcl command, thus making construction with [list ... ] simple
01:05:04 <Sgeo_> There seems to be nothing for multiple commands
01:05:05 <Vorpal> kmc, well binaries are fairly efficient anyway. A lot of operations on them will do stuff like "this is a view of byte 8 to byte 83 (plus 3 extra bits) of this underlying binary"
01:05:06 <shachaf> kmc: Not with a naïve implementation that copies everything!
01:05:09 <madbr> won't that have a zillion tiny allocations?
01:05:14 <shachaf> Which might be the most obvious implementation.
01:05:19 -!- monqy_ has joined.
01:05:20 -!- monqy has quit (Quit: Reconnecting).
01:05:24 <Vorpal> (yeah binaries don't have to be whole byte sizes)
01:05:41 <kmc> madbr: sure, but a typical Haskell runtime uses an allocator where allocation is vastly cheaper than malloc()
01:05:41 -!- monqy_ has changed nick to monqy.
01:06:01 <kmc> though you pay for it later in the garbage collector
01:06:09 <Vorpal> kmc, anyway LISP style linked lists support prepending for example without copying
01:06:10 <kmc> allocation in GHC is just a matter of incrementing a pointer
01:06:15 <madbr> what does it do, just increment a pointer?
01:06:23 <kmc> Vorpal: that is an example of my fundamental property, not of some compiler trick
01:06:24 <Vorpal> or tail without copying
01:06:42 <madbr> but what does it do later when half the data in the array is alive and half is not
01:06:50 <madbr> recompact everything???!??
01:06:53 <kmc> compacting garbage collector
01:07:00 <kmc> which is also good for cache utilization
01:07:31 <madbr> yeah provided you can lock the whole program for like 200ms once in a while
01:07:47 <Vorpal> <kmc> allocation in GHC is just a matter of incrementing a pointer <-- like a stack then?
01:07:51 <madbr> can't do that in the kind of code I write :D
01:07:55 <kmc> if you have realtime constraints then the story is different
01:07:56 <madbr> (games, software synths)
01:08:16 <Vorpal> hm real time haskell, is there any hard realtime haskell variant?
01:08:19 <madbr> both of which are traditionally programmed in C++
01:08:23 <kmc> Vorpal: ask in #haskell
01:08:30 <kmc> Vorpal: yes, like, a stack, but you never pop either
01:08:44 <kmc> you just accumulate objects in this region, in order, until it's full
01:08:46 <kmc> then you run the GC
01:08:47 <Vorpal> btw, I'm going to be working with hard realtime systems pretty soon
01:08:50 <shachaf> "like, a stack, but you never pop"
01:08:53 <madbr> ie you leak until the GC runs
01:09:05 <Vorpal> got a job at Atlas Copco, starting the end of this month
01:09:10 <kmc> madbr: uh, yes
01:09:17 <kmc> that is how a GC works
01:09:31 <shachaf> Not a reference-counting "GC"!
01:09:35 <kmc> using the word "leak" there is disingenuous
01:09:41 <shachaf> I guess that's not really a GC.
01:09:52 <kmc> shachaf: since when did words in CS mean anything?
01:10:01 <Vorpal> <shachaf> "like, a stack, but you never pop" <-- you could make your address space cyclic and use that as a cache kind of thing maybe??
01:10:18 <Vorpal> you need some way to detect overwritten references though
01:10:48 <kmc> really it's not disingenuous, just false
01:10:56 <kmc> a leak is an dead object which will never be freed
01:11:09 <madbr> well, I guess it's a hyperbole
01:11:18 <kmc> you say "hyperbole" i say "wrong"
01:11:21 <madbr> it's not really a leak
01:11:25 <kmc> anyway i'm not saying GC is the answer to anything
01:11:29 <kmc> but it is more efficient in some ways
01:11:32 <kmc> and less efficient in others
01:11:37 <shachaf> leak: Sometimes a leak is an object which has been freed despite best efforts to keep it hidden!
01:11:47 <kmc> people who don't like GC tend to paint it as strictly less efficient and for lazy programmers only
01:11:50 <kmc> that's simply not true
01:12:06 <Vorpal> since when was reference counting considered a GC? You could have a GC that detect and take care of cycles in such a system though (lol python)
01:12:13 <kmc> compacting garbage collection gives you faster allocation and better cache utilization, at the expense of periodic pauses
01:12:29 <madbr> I'm not convinced about better cache use
01:13:18 <kmc> well i don't have any numbers handy
01:13:24 <kmc> this isn't an area i know in depth
01:13:31 <madbr> what about non compacting GC?
01:14:04 <pikhq> It gives you all the downsides of GC with most of the downsides of malloc.
01:14:07 <shachaf> madbr: Better cache use than what?
01:14:21 <Vorpal> pikhq, I'm pretty sure many VMs use those for small collections
01:14:30 <Vorpal> with bigger, compacting collections more rarely
01:14:56 <madbr> shachaf: than traditional malloc-using C++ code I guess
01:15:04 <kmc> you shouldn't be using malloc in C++
01:15:09 <pikhq> Vorpal: The smaller your heap the cheaper compacting GC is.
01:15:14 <kmc> you should use new, preferably with smart pointers
01:15:21 <madbr> kmc: same as malloc
01:15:31 <kmc> i guess by "C++" most people mean "C with whatever C++ features i feel like understanding"
01:15:42 <Vorpal> pikhq, well if you have a pool for very large allocations it might not be a good idea to compact that too often I guess
01:15:48 <madbr> except for the smart pointer thing
01:16:04 <pikhq> Vorpal: Yes, you'd probably be best trying to split it into small and large object pools.
01:16:12 <Vorpal> kmc, what are C++ smart pointers?
01:16:15 <pikhq> Compacting large allocations is really rather painful.
01:16:26 <kmc> a smart pointer is a class which wraps a pointer, but provides some nicer semantics and/or guarantees
01:16:27 <madbr> vorpal: reference counted objects AFAIK
01:16:29 <Vorpal> pikhq, combined with a generational GC as well
01:16:33 <kmc> they aren't always reference counted
01:16:39 <kmc> you can have a reference-counted smart pointer
01:16:52 <pikhq> And besides which, you'll probably want to make it so that space contains objects that don't reference other things.
01:16:55 <Vorpal> <kmc> a smart pointer is a class which wraps a pointer, but provides some nicer semantics and/or guarantees <-- like that which more higher level languages do?
01:17:03 <pikhq> (because most large buffers won't be giant pointer buffers)
01:17:17 <Vorpal> anyway what, apart from reference counting could they usefully provide in C++
01:17:17 <kmc> you can construct a shared_ptr<T> from a T*, or copy-construct it from another shared_ptr<T>
01:17:35 <pikhq> Vorpal: They basically are reference counting...
01:17:39 <kmc> it records somewhere the number of shared_ptr<T>'s holding that particular T*
01:17:43 <Vorpal> pikhq, "<kmc> they aren't always reference counted"
01:17:47 <Vorpal> pikhq, so he is wrong then?
01:17:49 <kmc> the destructor for a shared_ptr<T> decrements the count
01:17:52 <kmc> let me finish
01:17:55 <pikhq> Vorpal: No, he's merely being more accurate.
01:18:03 <kmc> when it drops to 0, it calls delete on the original pointer
01:18:08 <kmc> that's a reference-counted smart pointer
01:18:12 <kmc> but you can also make other kinds
01:18:20 <itidus21> <kmc> i guess by "C++" most people mean "C with whatever C++ features i feel like understanding" -- which is actually fine so long as you don't have to read anyone elses code
01:18:30 <kmc> like unique pointers
01:18:55 <pikhq> Yeah. They also can be used to give you guarantees like "delete this when it falls out of scope".
01:18:58 <shachaf> kmc: How do you catch a unique pointer?
01:18:59 <Vorpal> kmc, how does it keep track of shared_ptr<T> though? What if I pass a function a reference to a shared_ptr<T>? Or are they small enough that you usually pass by value and invoke copy constructors all over the place?
01:19:08 <kmc> Vorpal: the latter
01:19:27 <kmc> Vorpal: the compiled representation of a shared_ptr<T> is probably the same as a T*
01:19:42 <Vorpal> kmc, plus a reference count surely?
01:19:44 <kmc> the reference counting is done in some global hidden structure
01:19:51 <kmc> no, the reference count has to ba global
01:19:54 <Vorpal> kmc, so are they thread safe?
01:20:03 <kmc> if each shared_ptr<T> had their own count, then they would all have a count of 1...
01:20:07 <madbr> it should be in the structure that is getting counted no?
01:20:12 <kmc> madbr: you can build those too
01:20:15 <kmc> "intrusive shared pointers"
01:20:22 <kmc> more programmer effort, somewhat more efficient
01:20:39 <kmc> Vorpal: I don't know about the thread saftey guarantees of Boost's or C++11's implementations of this idea
01:20:45 <Vorpal> doing it without having it in the structure being counted sounds very much like a kludge
01:20:50 <kmc> in general yes, you can make a thread-safe shared pointer
01:20:58 <kmc> doesn't seem like a kludge to me, really
01:21:07 <kmc> only a little bit
01:21:13 <pikhq> At least, no more so than anything else in C++.
01:21:27 <madbr> thread-safe shared pointer? what, by locking a mutex to it every time you manipulate it? :D
01:21:56 <kmc> madbr: well first of all, it would only be when you create/destroy a shared_ptr<T>, not dereference one
01:22:00 <Vorpal> madbr, implementing an atomic counter isn't that hard targeting most ISAs
01:22:15 <kmc> implementing a hash table of atomic counts is harder
01:22:20 <kmc> but still quite doable
01:22:35 <kmc> given that this is a piece of core library code which is hopefully not re-implemented in every project
01:22:38 <Vorpal> oh right, if it doesn't have anything except the pointer
01:22:39 <kmc> though knowing C and C++, it likely is
01:22:44 <Vorpal> a pointer pair seems better
01:22:46 <kmc> Vorpal: you need a map from T* to reference count
01:23:03 <kmc> Vorpal: pointer to T and also pointer to its count location in the table?
01:23:04 <madbr> you'd need atomic count+value no?
01:23:05 <kmc> yeah maybe
01:23:07 <kmc> i don't know how it's done
01:23:26 <shachaf> You could also maybe use a per-thread count for some things.
01:23:46 <madbr> otherwise your count may be accurate but it can still change whenever no? :D
01:23:54 <Vorpal> madbr, x86 provides atomic increment/decrement iirc. And there is always CAS
01:24:14 <madbr> you need atomic [inc/dec PLUS value read/write]
01:24:27 <Vorpal> of course if they are in a table, that is going to play hell with the cache line ownership between the CPUs
01:24:30 <kmc> shachaf: yeah
01:24:57 <kmc> i think the Linux kernel uses per-CPU reference counting for some objects
01:25:15 <kmc> don't remember the exact semantics
01:25:16 <Vorpal> the linux kernel uses a lot of snazzy data structures
01:25:34 <shachaf> kmc: It's a fun performance issue when you have per-thread counters for something (not referece counts, just integers) and you put them all in one array, so that each thread does arr[tid]++;
01:25:54 <Vorpal> shachaf, that is just going to kill the performance XD
01:25:56 <pikhq> Vorpal: Well, yes. A kernel is fundamentally no more than a pile of allocators and schedulers. :)
01:26:24 <Vorpal> pikhq, a lot of device drivers too (unless a micro kernel, in which case it is just some device drivers)
01:28:28 <madbr> how real time are real time OSes these days?
01:28:43 <kmc> uh, completely?
01:29:03 <madbr> well, what latency can you get :D
01:29:10 <kmc> that is a different question
01:29:18 <madbr> 1ms? 100us? 10us? :D
01:29:19 <Vorpal> madbr, you misunderstood the meaning of a real time OS
01:29:26 <kmc> "real time" does not mean "super low latency" necessarily
01:29:30 <kmc> it means that you care what the latency is
01:29:40 <kmc> you can have a "hard real time" system where the latency bound is 60 seconds
01:29:50 <kmc> it's still hard real time because if you miss that deadline, the plane blows up or whatever
01:29:54 <Gregor> It's not all that /likely/, but it fits the definition :)
01:29:59 <kmc> i think it is pretty likely
01:30:02 <madbr> "A key characteristic of an RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's task;"
01:30:04 <kmc> planes take a while to blow up
01:30:14 <Vorpal> it means that you can work out guarantees that the latency running a specific set of software on it will be within specific limits
01:30:21 <kmc> yes, it is about predictable and guaranteed latency bounds
01:30:27 <Gregor> madbr: Yes, CONSISTENCY, not BREVITY.
01:31:33 <shachaf> I confused you with Vorpal
01:31:42 <madbr> but then if your guaranteed time is 100ms... that's still not so cool :D
01:32:00 <kmc> that depends on the application
01:32:06 <Vorpal> <kmc> you can have a "hard real time" system where the latency bound is 60 seconds <-- I'd hate to draw the timing diagram for that, given that most other stuff will probably be in the millisecond range
01:32:09 <kmc> you really do not seem to be getting this idea
01:32:13 <Gregor> shachaf: Capital letter, five more letters.
01:32:29 <madbr> but yeah was asking for irl values
01:32:35 * Vorpal is now known as Vergor
01:32:43 * Vorpal is now known as Vregor
01:32:50 <shachaf> I wonder if capital letters are "actually" easy to distinguish without reading them.
01:33:06 <shachaf> If you gave someone who can't read English a text with capital and lower-case letters, would they be able to pick out the capitals?
01:33:23 <Gregor> Capital thorn is smaller than lowercase thorn! 8-D
01:33:36 <Vorpal> shachaf, well the rest of the word shape is different too, r is half the height of l
01:34:03 <Vorpal> shachaf, if they know the latin script, sure?
01:34:04 <madbr> kmc: just say that you don't know the values and don't care, jeez
01:34:39 <Vorpal> madbr, your question made no sense.
01:34:43 <shachaf> madbr: Come on, don't troll kmc. :-(
01:35:05 <kmc> it's dumb that you keep badgering us over t his
01:35:14 <kmc> when it's probably plastered all over the front page of anyone marketing a RTOS
01:35:26 <Vorpal> madbr, most real time systems are probably slower than your average PC in average response time. But the thing is, you don't know the maximum response time on your OS. It might suddenly swap trash for example
01:35:39 <soundnfury> shachaf: at least I haven't still got Virgil in here ;)
01:37:54 <madbr> seems more for military usage then yeah
01:38:19 <Vorpal> madbr, your car probably contains at least one if it isn't too old
01:38:32 <Vorpal> The ABS brakes for a start
01:38:53 <Vorpal> because if those took too long. Yeah would be bad
01:38:59 <kmc> realtime control systems outnumber "computers" by a huge factor
01:39:05 <kmc> not all of them use an "operating system" though
01:39:18 <kmc> many are just simple microcontrollers running a single program at a deterministic speed
01:39:19 <Vorpal> kmc, control systems in general outnumber what we normally think of as computers
01:39:54 <Vorpal> dishwasher, freezer, TV, washing machine. Doubt any of those run RTOS.
01:40:04 <Vorpal> or well maybe they though (not the TV though)
01:40:29 <madbr> no idea what they put in TVs these days
01:40:41 <soundnfury> as did set top boxes during the analogue->digital transition
01:40:51 <Vorpal> vxworks is probably convenient to put in a dishwasher even if you don't use the real time properties.
01:40:58 <Vorpal> either that or it runs on bare metal
01:41:07 <Vorpal> in which case it is most likely not real time in any way
01:41:26 <kmc> that's about as real time as it gets.
01:41:32 <kmc> if you're the only program running on the chip...
01:41:49 <Vorpal> kmc, you have to design that program so you can be sure it won't ever enter an extra long loop though
01:41:51 <madbr> and the chip has no cache and out of order execution?
01:41:53 <Vorpal> otherwise it isn't real time
01:41:59 <kmc> Vorpal: sure
01:42:09 <madbr> vorpal: some people do that afaik :D
01:42:14 <kmc> or you do everything time sensitive in a timer interrupt
01:42:19 <Vorpal> madbr, sure, I done it at university
01:42:27 <Vorpal> using vxworks was much easier though
01:42:30 <kmc> simple microcontrollers give you totally deterministic execution
01:42:34 <kmc> no cache, no out of order execution
01:42:38 <Vorpal> since then you knew the scheduler would prioritise the right thing
01:42:43 <kmc> each instruction takes a known number of clock cycles, always
01:42:49 <Vorpal> without a scheduler, well you have to get everything perfectly right
01:42:56 <madbr> kmc: ie too long :D
01:43:16 <Vorpal> madbr, they work fine for what they are designed for
01:43:26 <madbr> well, not too long for a microcontroller application where there's little data to crunch through
01:43:33 <kmc> madbr: that's fucking annoying, stop asserting that things are "too slow" without knowing what the application is
01:43:43 <kmc> you strike me as one of those people who programs in C because it means your e-penis is so big
01:43:49 <Vorpal> kmc, he is obviously trolling you
01:44:06 <Vorpal> don't feed the troll (I know that can be hard)
01:44:22 <soundnfury> kmc: don't be silly. He obviously writes direct to machine code. In binary. With butterflies.
01:44:40 <kmc> with e-penis
01:44:48 <Vorpal> soundnfury, you make me laugh. He loads customised microcode into the processor
01:45:03 <kmc> i shit trains, what now
01:45:05 <soundnfury> don't be silly, he doesn't use processors with microcode, they're "too slow"
01:45:25 <kmc> hardwired logic 4 lyfe
01:45:38 <madbr> it's the kind of system that doesn't have cache miss because essentially every memory access is a cache miss :D
01:45:42 <Sgeo_> Why am I still looking at Tcl instead of Lisp?
01:45:48 <madbr> so you have deterministic time
01:45:50 <Vorpal> TTL logic is kind of fun.
01:46:00 <kmc> madbr: no, it's more like every memory access is a cache *hit*
01:46:05 <kmc> AVR microcontrollers have all SRAM
01:46:07 <Sgeo_> What about time-loop logic?
01:46:10 <madbr> or it has like 1k ram so it doesn't have cache misses yeah :D
01:46:12 <Vorpal> kmc, hm do AVR processors even have a pipeline?
01:46:19 <kmc> in fact there's not much distinction between registers and RAM
01:46:25 <Vorpal> I guess some might have a 2 stage pipeline or something simple like that
01:46:44 <soundnfury> Vorpal: isn't "TTL logic" a PIN-number-ism?
01:46:45 <kmc> the registers are just the first n locations in RAM, they have a special addressing mode but show up as normal memory too
01:46:50 <kmc> soundnfury: oh god
01:47:00 <kmc> that is the dumbest thing to care about
01:47:13 <soundnfury> kmc: what can I say? I'm a pedantic dickweed
01:47:19 <Vorpal> soundnfury, it is also a CD disc thing. It is not quite a Personal PIN Number-ism though
01:47:24 <kmc> saying "TTL is kind of fun" is more ambiguous and awkward
01:47:29 <kmc> language exists to serve the needs of communication
01:47:35 <kmc> not to satisfy the arbitrary rules of pedantic dickweeds
01:47:41 <kmc> do you also object to "all OK"?
01:47:49 <Vorpal> the wires very quickly ends up being tricky to keep track of though
01:48:10 <Vorpal> I remember doing a binary->2 digit BCD converter in a lab at university
01:48:11 <soundnfury> kmc: the rules aren't arbitrary, they exist to serve the needs of communication
01:48:23 <kmc> after all OK might be (nobody's quite sure) an initialism for "oll korrect", an intentional misspelling of "all correct"
01:48:24 <Vorpal> the mess of wires, aiee
01:48:27 <kmc> so "all OK" is ambiguous
01:48:31 -!- ais523 has quit.
01:48:31 <kmc> er redundant
01:48:33 <kmc> just like "ATM machine"
01:48:35 <kmc> am i right
01:48:57 <shachaf> We don't *know* whether it's redundant or not!
01:49:05 <shachaf> It's, like, quantum pedantry, man.
01:49:11 <soundnfury> kmc: who cares? Everyone calls it a hole-in-the-wall anyway :p
01:49:14 <Vorpal> soundnfury, I have a compact CD disc here
01:49:26 <kmc> itt: nerds saying the things nerds always say
01:49:33 <Vorpal> soundnfury, with that I mean it is one of those mini-sized ones
01:49:57 <Vorpal> soundnfury, is that the name of them? Maybe
01:50:04 <kmc> "n order to maximize performance and parallelism, the AVR uses a Harvard architecture – with
01:50:08 <kmc> separate memories and buses for program and data. Instructions in the program memory are
01:50:11 <Vorpal> it fits into the inner depression in the CD reader
01:50:12 <kmc> executed with a single level pipelining.
01:50:16 <soundnfury> or one of those silly "singles" disks that play in a normal CD player?
01:50:21 <kmc> sorry for spam, failed copying from pdf
01:50:34 <Vorpal> and yeah I know it uses Harvard
01:50:37 <kmc> so yeah, it's a 2 stage fetch-execute pipeline
01:50:40 <Vorpal> a lot of microcontrollers do
01:50:46 <kmc> well you can also load data from program memory
01:50:52 <kmc> and you can write to program memory using special instructions
01:50:52 <Vorpal> PIC and AVR do at least
01:50:55 <madbr> everything uses either hard or soft harvard these days
01:51:02 <Vorpal> I really have no idea about any other micro controller architectures
01:51:06 <Vorpal> which ones are there even
01:51:08 <soundnfury> #Fight fiercely, Harvard, fight fight fight!
01:51:11 <kmc> 8051 is very popular
01:51:19 <Vorpal> kmc, which ISA is that?
01:51:21 <kmc> ARM is used as a microcontroller too
01:51:29 <kmc> Vorpal: it's, uh, the 8051 ISA?
01:51:32 <madbr> kmc: ah yeah, saw one of those
01:51:49 <soundnfury> I think for low-end applications the Z80 still gets used as a microcontroller
01:51:49 <kmc> 68k is used as a microcontroller too
01:51:50 <Vorpal> kmc, hm ARM really has a huge span
01:51:54 <madbr> tend to quite faster too
01:51:57 <Vorpal> soundnfury, like in my graph calculator
01:52:02 <kmc> and MIPS and PPC implementations
01:52:04 <Vorpal> though that is like 12 years old now
01:52:11 <madbr> with nice features like fast multipliers
01:52:12 <Vorpal> awesome battery time though
01:52:16 <kmc> you can synthesize a PPC chip on a higher end FPGA
01:52:26 <Vorpal> 4xAAA lasts several years in it
01:52:27 <kmc> Vorpal: yeah, ARM has a huge span
01:52:42 <kmc> it's a licensed ISA with many implementations
01:52:45 <soundnfury> Vorpal: graphical calculators are shoite tho
01:52:58 <Vorpal> kmc, which ARM ISA are they using for microcontrollers? Not ARM7 I guess
01:53:07 <madbr> no more like arm11
01:53:23 <Vorpal> madbr, stop trolling by making up stuff
01:54:00 <Vorpal> madbr, the last version is 8
01:54:27 <Vorpal> (and there are no products based on version 8 yet)
01:54:37 <Vorpal> soundnfury, hm, they work well for their intended purpose though
01:54:38 <madbr> afaik arm11 is the raspberry pi's processor and has armv6 instruction set but that's probably fairly higher end and there are probably much more limited ones
01:54:51 <madbr> yeah it's confusing
01:55:00 <shachaf> kmc: Hey, "PowerPC computing" is also redundant.
01:55:20 <Vorpal> shachaf, that C stands for computing?
01:55:22 <madbr> http://www.arm.com/products/processors/classic/arm11/index.php
01:55:32 <Gregor> Hrrrng, shachaf: that is NOT redundant.
01:55:48 <kmc> how about "ARM machine"
01:55:48 <Gregor> That's like when people say that "SMS message" is redundant because the 'M' stands for messaging.
01:56:16 <Lumpio-> But the C in PowerPC stands for computing ,__,
01:56:29 <Gregor> “ARM machine” I would be more agreeable to. Also the 'C' in PowerPC surely stands for comput/er/?
01:56:36 <Vorpal> Gregor, uh, Short SMS Service would be redundant technically
01:56:39 -!- comex has quit (*.net *.split).
01:56:44 <Gregor> Vorpal: Yes, that would be.
01:56:47 <Vorpal> though I think the interpretation would be rather different actually
01:56:48 <Gregor> Vorpal: But "SMS message" is not.
01:56:56 <kmc> the dumbest thing
01:56:57 <pikhq> I don't see what's redundant about Short Messaging Service message at all.
01:56:57 <kmc> to care about
01:57:10 <pikhq> The service is for short messaging, and you have a message through it.
01:57:25 <Lumpio-> I like the new automatic ATM machines
01:57:30 <Vorpal> pikhq, "Short SMS Service" is redundant.
01:57:34 <kmc> Lumpio-: HAHAHAHAHAHHAHAHHHA FUNNAY JOKE
01:57:36 * shachaf sends pikhq a short SMS message.
01:57:47 <kmc> it's not like 20 people have already made that joke in the past 5 min
01:58:01 <kmc> LET'S ALL USE ACRONYMS REDUNDANTLY GUYS, ON PURPOSE
01:58:06 <kmc> IT'S IRONY
01:58:10 <kmc> I.R.O.N.Y.
01:58:23 <Vorpal> Lumpio-, pay royalties. I started it with the compact CD disc (minidisc)
01:58:26 <kmc> fuckinfg nerds
01:58:31 <kmc> i should get drunk
01:58:33 <pikhq> kmc: Have you filed with the Department of Redundancy Department?
01:58:37 <madbr> surfin the web on my pc computer
01:58:41 <kmc> instead i'm going to eat a pizza
01:58:51 <Lumpio-> >joins #esoteric >complains about nerds
01:58:52 <shachaf> kmc: Hey, I wish I had a pizza right now.
01:58:58 <Vorpal> pikhq, You meant the Redundant Department of Redundancy Department?
01:59:19 <shachaf> kmc: Is your pizza vegetarian?
01:59:31 <kmc> Lumpio-: hey, i like interesting nerd conversations
01:59:32 <madbr> veggie pizza is nice
01:59:39 <kmc> not Standard Nerd Conversation #15
01:59:51 <kmc> next up: i don't care about sports and I want you to know this
01:59:52 <madbr> it has tons of nice things on it
01:59:59 <kmc> http://www.smbc-comics.com/comics/20120712.gif
02:00:09 * pikhq actually watches football
02:00:14 <Vorpal> the issue with pizzas is that too many seem to contain tomatoes. Sure there are those without, but I would say that the majority of pizzas found over here contain tomatoes
02:00:30 <Vorpal> don't know if it is the same elsewhere
02:00:38 <madbr> how is that an issue
02:00:41 <kmc> itidus21: please weigh in regarding pizzas and tomatoes
02:00:48 <pikhq> Vorpal: Here, pizza *typically* only contains tomato sauce.
02:00:51 <Vorpal> madbr, because I don't like tomato?
02:01:02 <madbr> ahah then you're screwed yes
02:01:04 <kmc> shachaf: I think I'll get a prosciutto calzone, actually. So, no.
02:01:16 <pikhq> I suppose some pizzas contain sun-dried tomatoes, but those aren't the "typical" ones.
02:01:33 <shachaf> kmc: I recommend a vegetarian pizza.r
02:01:41 <kmc> i probably should get one
02:01:43 <kmc> to be a good person
02:01:55 <kmc> i don't like "veggie pizza" generally, but i do like (say) mushrooms and pineapples
02:01:57 <Vorpal> <kmc> next up: i don't care about sports and I want you to know this <-- oh I care about some sports
02:02:00 <madbr> also nice: spicy chicken, mexican
02:02:08 * shachaf doesn't like "veggie pizza"
02:02:11 <Vorpal> don't really care about physical sports though
02:02:17 <madbr> depends on the kind of veggies it has
02:02:28 <madbr> onions, olives => yum
02:02:54 <shachaf> There are a lot of vegetables that I don't like that much, for being vegetarian.
02:03:00 <kmc> i dislike onions and, because this is the internet, my opinion of onions is also an objectively true fact
02:03:00 <shachaf> And a few that I really hate.
02:03:11 <Vorpal> kmc, what about garlic?
02:03:14 <kmc> i love garlic
02:03:18 <kmc> can't get enough garlic
02:03:20 <madbr> shachaf: what about hot peppers? :D
02:03:29 <pikhq> Friggin' bell peppers. They're peppers with too little flavor!
02:03:31 <kmc> i'm told that shallots are halfway between onion and garlic
02:03:34 <pikhq> 'Specially the green ones.
02:03:37 <shachaf> madbr: Less devil than bell.
02:03:38 <kmc> but i don't have a strong opinion of them yet
02:03:40 <pikhq> Jerks, not even ripe.
02:03:45 <Vorpal> kmc, as I don't have to kill you know due to taking taste way too seriously (as is the tradition on the internet)
02:04:07 <shachaf> pikhq: Their flavor -- and smell -- and texture -- makes me want to vomit.
02:04:08 <pikhq> shachaf: Why would you want peppers without capsaicin?
02:04:12 <soundnfury> kmc: if you think we're bad, try reading comp.lang.c
02:04:15 <madbr> shachaf: hah you remind me of one guy I met
02:04:18 <soundnfury> and ask them about the declaration of main
02:04:25 <Vorpal> I don't really like too much pepper
02:04:28 <madbr> was vegan, didn't like salad
02:04:31 <soundnfury> oh and see if you can fit in a cast of the return value of malloc while you're at it
02:04:32 <kmc> shachaf: do you like szechuan peppercorn?
02:04:37 <Vorpal> a bit of traditional black pepper is enough for me
02:04:38 <pikhq> shachaf: Also: green bell peppers are literally unripe. This is just evil.
02:05:04 <madbr> his diet consisted of veggie burgers, KFC potato wedges, chips and various other crunchies and sugary things
02:05:12 <Vorpal> pikhq, I don't really go above black pepper when it comes to pepper
02:05:48 <pikhq> Vorpal: What a bland existence.
02:05:53 <itidus21> a pizza base as an ingredient works with just about everything
02:05:54 <madbr> I buy those pots of minced chili at the corner store
02:05:57 <Vorpal> pikhq, eh, I add more garlic instead
02:06:04 <madbr> and then I put that shit on everything
02:06:06 <Vorpal> pikhq, you can't have too much garlic
02:06:08 <pikhq> Vorpal: Okay, that's at least respectable.
02:06:27 <shachaf> main(argc, argv) char **argv; { return 0; }
02:06:32 <madbr> today I had chicken nuggets with honey and chili paste
02:06:51 <kmc> shachaf: do you know about it?
02:06:56 <Vorpal> pikhq, I ate at an Indian restaurant once (and I ordered extra mild). I'm never going to eat at an Indian restaurant again!
02:07:01 <shachaf> pikhq: Green bell peppers, red bell peppers, yellow, orange, blue, I don't care.
02:07:11 <pikhq> Vorpal: The *mild* was too spicy?
02:07:19 <itidus21> on pizzas, i generally go for olives, mushrooms, anchovies, cows, pigs, chickens
02:07:19 <pikhq> shachaf: They're still in a shitty place, mind you.
02:07:23 <pikhq> shachaf: Sans capsaicin.
02:07:31 <pikhq> Vorpal: That's sad.
02:07:45 <Vorpal> pikhq, sure it tasted good, but it played hell with my mouth
02:08:00 <madbr> you need the antidote
02:08:01 <itidus21> i tend to assume a pizza will have a base of tomato, garlic and cheese, however, when my brother cooked vegan pizzas i found that you can taste the ingredients more without the cheese
02:08:12 <pikhq> What, do you guys do a British-style "boil the flavor out" diet? :P
02:08:18 <madbr> indians have that crazy yougurt drink
02:08:45 <pikhq> Yeah, that's pretty good stuff.
02:08:50 <Vorpal> madbr, yeah I used that. Too bad I don't really like yougurt though.
02:09:14 <Vorpal> Tomato, yougurt and fish. Those are the mostly random things I really hate eating.
02:09:18 <madbr> you need to get good yogurt, not cheap crap
02:09:20 <pikhq> I suppose next you'll tell me you don't like bacon.
02:09:26 <Vorpal> pikhq, oh I love bacon
02:09:39 <pikhq> Mmm, cured pig-meats.
02:09:41 <itidus21> i eat fish practically every day
02:09:49 <kmc> madbr: lassi?
02:09:54 <madbr> there's a large difference between a good yogurt brand and whatever cheap dental paste you can find
02:09:55 <kmc> mango lassi is fucking amazing
02:10:02 <kmc> also want to try bhang lassi sometime
02:10:12 <Vorpal> speaking of dental paste. I forgot mint
02:10:17 <Vorpal> I really don't like mint either
02:11:38 <madbr> let me guess, you don't like beer either? :D
02:11:45 <Vorpal> madbr, I'm a teetotaller
02:11:56 <Vorpal> cinnamon I have a slight negative opinion on. It doesn't taste good, but it is editable.
02:12:18 <Vorpal> as for coffee, the taste is okay, but eh, I can stay awake anyway
02:12:33 <Vorpal> cilantro? no clue what that is. Google Translate time
02:12:40 <madbr> aka coriander leaves
02:12:55 <Vorpal> madbr, no opinion either way
02:13:28 <pikhq> Guess you're not one of the unfortunate people who have a gene making it taste like soap, then.
02:13:52 <pikhq> madbr: "Yes please."
02:13:55 <Vorpal> pikhq, I honestly don't know if I ever eaten coriander though.
02:14:15 <Vorpal> I like Chinese restaurants though
02:14:29 <pikhq> Vorpal: Thai is profoundly spicy.
02:14:39 <Vorpal> pikhq, I would guess the answer is "no" then
02:14:58 -!- comex has joined.
02:15:05 <pikhq> Also peanutty in some cases...
02:15:21 <Vorpal> peanuts aren't used a lot in Sweden really
02:15:22 <madbr> haven't tried extremely hot thai yet
02:15:29 <Vorpal> we see it as something rather American
02:15:37 <pikhq> To be fair, it is.
02:15:42 <pikhq> We love our peanuts.
02:15:42 <Vorpal> peanut butter is very definitely regarded as an American thing over here
02:15:47 <pikhq> Especially peanut butter.
02:15:51 <Vorpal> I think it tastes meh. Editable sure, but what is the point
02:16:07 <madbr> vorpal: makes a good sauce for skewers :D
02:16:13 <pikhq> Peanut butter and jelly sandwiches.
02:16:31 <Vorpal> I have no idea what you are talking about
02:16:37 <Vorpal> pikhq, also you go crazy with apple pies
02:16:45 <madbr> peanut butter + thai hot sauce + some jalapenos
02:16:46 <pikhq> Vorpal: Yes. They are delicious.
02:17:09 <madbr> (the thai hot and really sweet sauce)
02:17:28 <madbr> + maybe some extra garlic if the thai hot sweet sauce doesn't already have tons
02:18:03 <Vorpal> the Swedish image of a stereotypical American: eats peanut butter, apple pies and hamburgers. Drives an oversized car and drives it even if he is just going like 4 houses away from home. Is most likely overweight. Has a gun without being a hunter.
02:18:19 <madbr> make some meat cubes, let that marinate in the sauce, put the cubes on some skewers (ie make kebabs), put on barbecue
02:18:25 <Vorpal> pikhq, how accurate is it?
02:18:37 <itidus21> vorpal, i would guess thats probably true on average
02:18:42 <pikhq> Vorpal: No American eats peanut butter straight, for one...
02:18:42 <madbr> keep some of the sauce for putting on the kebabs after cooking
02:18:44 <Vorpal> itidus21, that is kind of sad
02:18:53 <Vorpal> pikhq, what do you mean "straight"?
02:18:59 <Vorpal> sure I meant on toast or such
02:19:04 <Vorpal> possibly on the apple pie
02:19:12 <pikhq> Peanut butter on toast is a common thing.
02:19:19 <madbr> apple pie is american?
02:19:19 <Vorpal> if not, you should try peanut butter on apple pie
02:19:21 <pikhq> More common is as part of a sandwich, or as an ingredient.
02:19:29 <pikhq> Apple pie is typically done with ice cream.
02:19:30 <kmc> shachaf: szeuchan peppercorn produces a tingly sensation that is said to be like licking a 9 volt battery
02:19:30 <itidus21> Vorpal: american restaurants enjoy releasing burgers designed to give health problems :D
02:19:35 <Vorpal> madbr, yes definitely. Sure it happens elsewhere. But over there it is a constant state
02:19:36 <kmc> it's totally unlike spicy peppers or pretty much anything else
02:19:43 <pikhq> Hamburgers are very common.
02:19:50 <pikhq> Like, that *is* the stereotypical meal.
02:19:52 <itidus21> i mean.. like.. monster burgers
02:19:56 <kmc> itidus21: yes it's a conspiracy by the man that you're fat
02:20:06 <kmc> it couldn't possibly be that the restaurants are just producing what people want to eat
02:20:13 <pikhq> Vorpal: Nearly all US cars are probably oversized by your standards.
02:20:22 -!- azaq23 has joined.
02:20:33 <kmc> i have eaten scoops of peanut butter out of the jar
02:20:33 <madbr> I'm not sure I like szechuan pepper
02:20:35 <itidus21> kmc: its a pleasant coincedence..
02:20:39 <Vorpal> pikhq, I would say we have a large car, it being a station wagon. But it is small compared to the american ones
02:20:43 <shachaf> kmc: I've never licked a 9-volt battery.
02:20:45 <madbr> it's kinda like flavoring stuff with cedar fruit
02:20:49 <pikhq> Vorpal: We wouldn't drive somewhere actually that close, but we would probably drive distances you'd consider walking distance just because it's not sane to walk most places.
02:20:55 <itidus21> people want to eat satirically unhealthy burgers
02:20:59 <pikhq> Vorpal: Statistically, we are fairly likely to be overweight.
02:21:08 <madbr> burgers aren't too bad
02:21:13 <madbr> it's the cola that kills you
02:21:18 <Vorpal> pikhq, this https://upload.wikimedia.org/wikipedia/commons/c/c5/Fiat_Marea_Weekend_front_20090329.jpg
02:21:21 <pikhq> Vorpal: And the gun ownership thing is mostly rural areas or parts of the South.
02:21:22 <Vorpal> pikhq, do you consider that large?
02:21:25 <itidus21> "As many fast-food chains introduce healthier fare amid fears of being sued, Hardees is bucking the trend, serving up a megaburger with 1,420 calories and 107 grams of fat."
02:21:32 <kmc> isn't the number of calories you consume far more important than the particular composition of the food?
02:21:40 <kmc> i mean if you ate 20 "healthy" burgers t hat would be pretty bad too
02:21:42 <pikhq> Vorpal: Small-to-average.
02:21:45 <itidus21> The "Monster Thickburger" two 1/3-pound slabs of Angus beef, four strips of bacon, three slices of cheese and mayonnaise on a buttered sesame seed bun sells alone for $5.49, $7.09 with fries and a soda.
02:22:02 <Vorpal> pikhq, I would consider it large. Especially when I reverse it into a parking slot.
02:22:12 <kmc> non-diet soda is just dumb
02:22:18 <kmc> learn to like diet soda taste, or drink something else
02:22:19 <madbr> kmc: yeah but just compare that to the soft drink tubs that comes with them
02:22:29 <Vorpal> <kmc> isn't the number of calories you consume far more important than the particular composition of the food? <-- not really iirc
02:22:41 <Vorpal> you want a bit of everything and not too much of anything
02:22:46 <madbr> they are the worst cheap industrial crap
02:22:48 <Vorpal> and some healthy exercise as well
02:23:22 <madbr> drink pepsi in restaurants, whatever, they need a profit margin after all
02:23:26 <pikhq> Vorpal: We have tons of people driving fairly *large* pickup trucks.
02:23:31 <Vorpal> madbr, I drink water in there
02:23:32 <madbr> drink pepsi at home, are you crazy?
02:23:42 <pikhq> Vorpal: Not because they actually use it. But because they just want a giant vehicle.
02:23:43 <itidus21> and i think some places have these deals that if you can eat the whole meal you can have it for free (but i admit its all a bit satirical)
02:23:47 <Vorpal> why do people do carbonated drinks. They mess up my stomach
02:23:54 <Vorpal> and it doesn't add to the taste
02:24:30 <kmc> pikhq: it's a prisoner's dilemma, if you are driving a massive car and get into a collision with someone driving a less massive car, you will do better
02:24:32 <madbr> I think at some point coke or pepsi tried doing less ads, and the sales fell
02:24:47 <kmc> and we can't stop driving so many cars and having so many collisions because it's The American Way
02:24:48 <Vorpal> pikhq, my parents actually have a reason to own a station wagon. My mom is a garden nerd. That car can take 15 x 50 kg bags of earth or manure
02:25:07 <kmc> god forbid we should make transportation the responsibility of trained experts rather than every drunken idiot
02:25:15 <Vorpal> pikhq, would likely have had a smaller car if it wasn't for that
02:25:33 <Vorpal> kmc, your driving test is a joke
02:25:40 <kmc> my driving test?
02:25:43 * kmc doesn't have a driving test
02:25:47 <pikhq> Vorpal: European small vehicles literally don't sell in the US.
02:25:52 <Vorpal> and US car safety regulations the same
02:25:54 <pikhq> Vorpal: There's not a US driving test.
02:25:54 <kmc> Vorpal: there isn't a "US driving test"
02:26:02 <kmc> every state has their own test and procedures for granting licenses
02:26:02 <pikhq> Vorpal: There's 50 driving tests.
02:26:08 <Vorpal> most of them are jokes
02:26:09 <kmc> pikhq: probably at least 52
02:26:25 <pikhq> DC, Puerto Rico, et al.
02:26:42 <Vorpal> I mean come on, you don't regulate the maximum light emitted from the half-light (or whatever you call that in English)
02:26:49 <shachaf> In the US Virgin Islands they drive on the left side of the road.
02:26:52 <kmc> federalism isn't quite dead, it's just that now the states handle whatever the federal government doesn't want to do, rather than having some actual soverignty
02:26:58 <kmc> shachaf: really?
02:26:58 <Vorpal> from what I read your car headlamp rules are a joke compared to EU
02:27:07 <shachaf> kmc: Well, at least on the one island I was on.
02:27:12 <Vorpal> read the WP article about car headlamps
02:27:12 <kmc> there are federal car standards and state ones as well
02:27:20 <kmc> for example california is famous for more strict emissions standards
02:27:28 <kmc> shachaf: Wikipedia confirms it
02:27:54 <pikhq> Vorpal: Yes, our licensing and regulations are lax in general.
02:27:54 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:28:10 <pikhq> Vorpal: In part because you basically can't hold down a job without a vehicle.
02:28:21 <Vorpal> pikhq, they were overly strict before. Only permitting round ones from like the 1950s to the 1970s or so iirc
02:28:24 <kmc> except in certain areas
02:28:37 <Vorpal> and no smooth glass in front to reduce areodynamic drag
02:28:45 <Vorpal> what were you guys thinking?
02:29:00 <pikhq> Vorpal: Protectionism, of course.
02:29:14 <pikhq> If it's impossible to sell a European vehicle in the US, that protects the US car industry!
02:29:16 <kmc> gotta compete with the wily Japanese
02:29:20 <pikhq> ... Yes, this is a mindset.
02:29:25 <Vorpal> pikhq, they just made slight modifications
02:29:36 <pikhq> You'll note that this didn't actually work out too well. :)
02:29:55 <kmc> turns out that without competition, they made shit cars!
02:30:05 <Vorpal> and you use (used?) your own voltage standards for the car headlamps
02:30:19 <Vorpal> 12.8 instead of 12 V iirc
02:30:22 <Vorpal> or something like that
02:31:02 <madbr> the one thing I don't get is 50 vs 60 hz hdtv
02:31:07 <Vorpal> "The first dual-filament halogen bulb (to produce a low and a high beam with only one bulb), the H4, was released in 1971 and quickly became the predominant headlamp bulb throughout the world except in the United States, where the H4 is still not legal for automotive use. In 1992, the Americans created their own standard for a bulb called HB2/9003, almost identical to H4 except with more stringent const
02:31:08 <Vorpal> raints on filament geometry and positional variance, and power consumption and light output expressed at the U.S. test voltage of 12.8V."
02:31:32 <pikhq> madbr: That's just hysterical raisins.
02:31:41 <Vorpal> madbr, what are you talking about?
02:31:56 <madbr> why is there more than 1 hdtv standard
02:32:01 <Vorpal> the vertical refresh rate?
02:32:01 <pikhq> Vorpal: Some places use 1080i50, others use 1080i60.
02:32:21 <Vorpal> I thought TV used like 24 or 30 FPS
02:32:32 <kmc> well the specs for broadcast TV are completely different in USA vs elsewhere
02:32:35 <kmc> it's not just framerate
02:32:46 <kmc> Vorpal: NTSC (US and some other places) uses 29.97 FPS
02:32:52 <kmc> PAL (most of Europe) uses 25 FPS
02:32:55 <kmc> most film uses 24
02:32:58 <Vorpal> pikhq, that much? Aren't movies generally 24 FPS?
02:32:58 <madbr> 60 fields per second
02:33:07 <kmc> interlaced half-frames
02:33:10 <Vorpal> pikhq, how do you even properly scale that when broadcasting TV?
02:33:25 <pikhq> Vorpal: In Europe, they speed up the film.
02:33:26 <madbr> tbh I call it 50 and 60 fps
02:33:26 <Vorpal> I mean, when airing a movie
02:33:47 <kmc> yeah, 24 Hz to 25 Hz is done by speeding up and adjusting audio pitch
02:33:48 <madbr> you could say it's only half the lines but I think it's still a frame
02:33:48 <pikhq> Vorpal: In the US, they use a pulldown pattern, so not all frames are shown for the exact same amount of time.
02:33:57 <madbr> just that every other frame is offset by half a frame
02:33:58 <Vorpal> pikhq, wouldn't that be jerky?
02:34:10 <pikhq> Vorpal: Slightly. It's hard to notice.
02:34:12 <Vorpal> pikhq, what do DVD players do then on a typical PC?
02:34:22 <kmc> it's something you can train yourself to notice and then be insufferable about
02:34:35 <kmc> what really bugs me these days are the TVs that do frame interpolation
02:34:39 <madbr> vorpal: they probably just randomly vsync
02:34:49 <pikhq> Vorpal: Deinterlace and inverse pulldown. Also ignore the pulldown pattern if it's soft pulldown.
02:34:58 <shachaf> kmc: Is "Television remote" redundant?
02:34:59 <itidus21> i was reading about an upcoming south park game based on LOTR, and they were talking about using pulldown pattern to convert the walk cycle from 24fps to 30fps or whatever it is
02:35:13 <Vorpal> deinterlace I understood
02:35:13 <kmc> 30 FPS content looks "cheaper" than 24 FPS
02:35:15 <pikhq> (soft pulldown is where the video is stored 24fps, but with instructions on how to render it in 30fps)
02:35:18 <kmc> because video is cheaper than film
02:35:29 <kmc> an arbitrary association which has become entrenched in the way we consume content
02:35:30 <Vorpal> kmc, eh, I prefer 60 FPS, it looks smoother
02:35:33 <pikhq> Vorpal: Inverse pulldown is where you match the pulldown pattern and pull out the 24fps content.
02:35:45 <kmc> so these interpolating TVs make everything look like a Mexican soap opera
02:35:56 <kmc> (in the words of Jack Donaghy)
02:35:56 <Vorpal> kmc, you can see the difference between watching a game on youtube and playing it yourself at 60 FPS, and I don't just mean the compression
02:35:57 <pikhq> kmc: Except shittier.
02:36:00 <kmc> Vorpal: that's not what I mean
02:36:06 <kmc> I'm not talking about which one looks better objectively
02:36:10 <kmc> or even subjectively
02:36:15 <madbr> vorpal: games were lucky
02:36:23 <madbr> they started at 60 fps
02:36:24 <pikhq> I wouldn't actually care about the interpolation (much), except that they give you artifacts.
02:36:38 <kmc> i'm talking about the association formed from having lots of low production quality content at 30+ FPS and lots of high-budget or "artsy" content at 24 FPS
02:36:38 <Vorpal> madbr, you can easily go higher with most games though
02:36:40 <madbr> so the "more frames = better" mentality set in
02:36:41 <Vorpal> if the hardware can do it
02:36:47 <Vorpal> madbr, anyway consoles generally do 30 FPS
02:36:49 <kmc> james cameron also complained about this
02:36:50 <madbr> on a computer, sure
02:37:01 <madbr> vorpal: before 3d they did 60 fps
02:37:04 <kmc> because 3D films don't really work at 24 FPS, but anything above looks "cheap" to at least some viewers
02:37:14 <Vorpal> madbr, I know people who have 120 Hz monitors. Generally for usage with 3D glasses
02:37:30 <pikhq> Vorpal: Older consoles actually did 60fps, and emitted an invalid TV signal to do progressive scan at half the vertical resolution.
02:37:46 <Vorpal> pikhq, how comes that worked at all?
02:37:57 <madbr> SNES does progressive scan actually
02:38:07 <shachaf> kmc: Did you see Simon Marlow's concurrent and parallel Haskell slides?
02:38:13 <Vorpal> I only ever played SNES in emulator
02:38:17 <pikhq> Because TVs aren't strict validating devices, they're just NTSC/PAL decoders driving a CRT.
02:38:24 <madbr> essentially they just ignored all the bullshit timing you had to do to have the lines offset half the frames
02:38:47 <madbr> and generated the same timing every frame
02:39:03 <Vorpal> pikhq, surely you can't get 60 FPS on the TV from that though?
02:39:08 <shachaf> kmc: http://community.haskell.org/~simonmar/slides/cadarache2012/
02:39:09 <pikhq> Vorpal: Sure you can.
02:39:20 <pikhq> Vorpal: They're drawing 60 fields per second...
02:39:23 <madbr> vorpal: well, TVs are 60 fps
02:39:32 -!- oerjan has quit (Quit: Good night).
02:39:42 <madbr> but you offset your timing on half the frames
02:39:55 <pikhq> Vorpal: And if you've hacked the timing somewhat so they draw the lines of each field at the same place, you're basically doing 60 frames per second.
02:40:03 <Vorpal> pikhq, wouldn't there be problems with the time the phosphor stayed lit between 60 FPS and 25 FPS (for PAL)
02:40:12 <madbr> which gets you 480 lines instead of the real value of 240 lines
02:40:21 <pikhq> Vorpal: PAL systems did 50fps instead.
02:40:32 <madbr> SNES etc were progressive scan so they actually do a 240 line picture
02:40:40 <madbr> and you can see the black between the lines
02:40:41 <pikhq> Vorpal: And the answer is "yes".
02:40:44 <Vorpal> what is the resolution of PAL then
02:40:53 <Vorpal> pikhq, oh? So there were issues?
02:41:05 <pikhq> Vorpal: Just somewhat weird brightnesses, IIRC.
02:41:21 <pikhq> Vorpal: It's not like drawing on the phosphor too often actually causes *major* issues.
02:41:48 <madbr> irl most tvs were so fuzzy it didn't really matter anyways :D
02:42:01 <Vorpal> pikhq, what about it fading too slow when the screen changes though? Ghost images and such I mean
02:42:12 <pikhq> Older PAL consoles just did 240 lines...
02:42:12 <Vorpal> madbr, hardware antialias!
02:42:30 <madbr> afaik CRTs fade really fast actually
02:42:34 <Vorpal> pikhq, and usual PAL is how many lines?
02:42:40 <pikhq> Vorpal: IIRC, the phosphor fades really fast.
02:42:54 <madbr> so fast that most of the picture you see is actually just a residual image on your retina
02:42:55 <Vorpal> then why does 25 FPS even work
02:43:03 <madbr> that's how the light gun works
02:43:08 <pikhq> Vorpal: They're scanning it 50/60 times per second and interlacing because they needed to scan that fast to not blink.
02:43:28 <Vorpal> right, forgot the interlacing
02:43:58 <madbr> light gun watches for a change in brightness
02:44:05 <Vorpal> pikhq, anyway I found CRT computer monitors painful to use at less than 75 Hz
02:44:14 <Vorpal> and even then they are not nice to use
02:44:23 <madbr> once that happens you know the timing and can figure out which pixel you've been aiming at :D
02:45:06 <pikhq> Vorpal: PAL is usually 576i.
02:45:23 <kmc> Real Programmers use an analog vector generator with a vector CRT
02:45:39 <Vorpal> so doing 240p... right someone said they left black lines above
02:46:05 <Vorpal> what generation of consoles stopped doing this craziness?
02:46:45 <Vorpal> what is that in nintendo
02:47:04 <madbr> had enough fillrate to render in like 640x480 :D
02:47:04 <itidus21> technically ps2 in nintendo is gamecube
02:47:13 <madbr> yeah gamecube is interlaced
02:47:36 <pikhq> Yeah, pretty sure it was PS2/GC/Xbox.
02:47:49 <itidus21> gamecube can do component out.. i had component out on mine...
02:47:51 <Vorpal> did they go 30 FPS then too?
02:48:04 <Vorpal> or wait I guess not all modern console games are 30 FPS, only most
02:48:13 <itidus21> but when i traded it in.. the bitch at that store treated it like garbage
02:48:17 <Vorpal> pikhq, I would be surprising if fighting games weren't 60 FPS
02:48:29 <pikhq> Vorpal: The screen's not 60 FPS, though.
02:48:35 <madbr> actually even PSX can do interlaced
02:48:39 <madbr> but there's no point
02:48:39 <pikhq> It just redraws 60 times per second.
02:49:02 <itidus21> its also known as psx for some reason
02:49:04 <madbr> usually it's abreviated PSX
02:49:08 <madbr> for some reason yeah
02:49:18 <Vorpal> pikhq, what is the refresh rate for the screen then?
02:49:58 <itidus21> incidentally psone was a re-release of ps1/psx .. a pointless thing really
02:50:07 <Vorpal> pikhq, doesn't that equate to 60 FPS max possible?
02:50:22 <itidus21> can't actually do anything new, just comes in a case which is cheaper to manufacture
02:50:38 <pikhq> Vorpal: But if you're actually drawing a standard TV signal you only get 60 fields per second.
02:50:39 <madbr> iti: and probably combined all the chips together :D
02:51:04 <Vorpal> pikhq, with a field you mean?
02:51:11 <madbr> in fact I wonder if the snes can do interlace
02:51:42 <Vorpal> pikhq, also which TV signal standard is this
02:51:55 <pikhq> Vorpal: You get the same amount of *motion* with 240p60 and 480i30, BTW.
02:52:19 <pikhq> It's not that you get only 30 full frames per second with 480i30.
02:52:19 <Vorpal> pikhq, what do you mean with motion here
02:52:32 <pikhq> You get 60 frames with every other line chopped out.
02:52:38 <Vorpal> I know what interlaced is yes
02:53:02 <Vorpal> the US standard did 29.something right?
02:53:17 <itidus21> _features_ of the psone as listed on wikipedia is: added protection against the use of modchips, a lack of the original PlayStation's parallel and serial ports,
02:53:19 <Vorpal> maybe it is close enough
02:53:28 <pikhq> Yes, when we switched to color we divided the framerate by 1001 to prevent interference between the color signal and audio signal.
02:53:30 <Vorpal> though over time you should run into some issues
02:53:33 <madbr> and it's just some thing they introduced later to deal with some timing issue on some shitty TVs
02:53:47 <pikhq> It's 30000/1001 frames per second, though.
02:54:14 <pikhq> madbr: No, it's color.
02:54:26 <madbr> irl stuff like SNES probably generates like 29.9fps
02:54:29 <itidus21> also psone has an external power supply!
02:54:39 <pikhq> madbr: Part of the color signal would interfere with the audio if you stuck at 30fps.
02:54:46 <madbr> since it actually only draws 524 lines per 2 frames instead of 525 lines
02:54:58 <Vorpal> pikhq, why didn't you just go PAL?
02:55:06 <pikhq> Vorpal: PAL didn't exist.
02:55:38 <pikhq> PAL was invented to overcome NTSC's shortcomings.
02:55:49 <madbr> I think there's even a 60hz version of pal
02:55:55 <pikhq> 10 years after NTSC color came into being.
02:55:59 <pikhq> madbr: Yeah. Brazil uses it.
02:56:38 <Vorpal> pikhq, then why didn't you switch
02:57:01 <Vorpal> oh the N in NTSC stands for "national", how typical
02:57:02 <madbr> how did pal work again
02:57:02 <pikhq> Vorpal: PAL was *invented* 10 years after NTSC color was *adopted*.
02:57:16 <madbr> invert colors for every 2nd line or something like that no?
02:57:20 <Vorpal> pikhq, fair enough, what did Europe do during those 10 years?
02:57:54 <pikhq> Regular color broadcasts in Europe started in 1967.
02:58:02 <pikhq> (UK and West Germany, specifically)
02:58:23 <Vorpal> anyway, how typical of US to put "national" in a name. It is like how the UK puts "Royal" in names
02:58:30 <pikhq> At this point, NTSC color was 14 years old.
03:00:09 <Vorpal> pikhq, are the NTSC and PAL greyscale signals compatible?
03:00:22 <Vorpal> but why did they have separate systems there before then
03:00:42 <pikhq> Vorpal: Actually, the only differences are the framerates and the frequency allocation.
03:00:54 <kmc> there are only so many ways to do analog monochromatic TV
03:01:00 <Vorpal> why did the framerates end up being different before?
03:01:15 <kmc> Vorpal: different researchers working in different countries settled on different arbitrary choices
03:01:17 <pikhq> The framerates were based on the AC frequencies.
03:01:29 <Vorpal> pikhq, why was that important though
03:01:29 <madbr> because if you don't sync to AC on an old analog tv the picture dances :D
03:01:36 <madbr> was solved later on but still
03:01:42 <pikhq> Vorpal: Because it was available as a cheap oscillator.
03:02:04 <madbr> (ie they figured how to do actually good power supplies :D)
03:03:39 <Vorpal> also France had their own system right
03:04:06 <pikhq> Vorpal: The only differences you can have with analog black-and-white video are refresh rates, frequency allocations, and whether a low signal is white or black...
03:04:09 <madbr> essentially pal but with a different color scheme
03:04:19 <pikhq> All of these have been different in different countries.
03:04:25 <madbr> (FM color, alternating the color component on every line)
03:05:35 <Vorpal> what is the format of the audio signal of PAL? Plain FM?
03:06:02 <pikhq> Vorpal: "Depends".
03:06:02 <madbr> actually quadrature amplitude modulation or something
03:06:06 <Vorpal> I would expect worse sound quality then
03:06:18 <pikhq> Vorpal: There is not a single PAL OTA standard.
03:06:25 <pikhq> Vorpal: There are dozens.
03:06:26 <madbr> with amplitude of modulation = saturation and phase of modulation = hue
03:06:33 <Vorpal> pikhq, as used in Sweden
03:08:02 <madbr> or, real part of the color signal = red - luminance and imaginary part of color signal = blue - luminance
03:08:08 <Vorpal> pikhq, thing is I many years ago built a radio receiver from a kit (circuit board and components provided, solder yourself kind of deal) and managed to get the audio of one of the Swedish TV channels when tweaking the tuning knob. I think it was an FM receiver.
03:08:13 <pikhq> Vorpal: Seems it was FM.
03:08:26 <Vorpal> well that explains that
03:08:48 <madbr> yeah TV audio is over FM
03:09:04 <pikhq> Hmm. Seems it was almost always FM.
03:09:11 <Vorpal> madbr, you said it was "quadrature amplitude modulation or something" above :P
03:09:23 <pikhq> And positive video modulation...
03:09:37 <kmc> quadrotor amplitude modulation
03:10:11 <pikhq> Vorpal: Low signals are white, high signals are black.
03:10:31 <Vorpal> it is probably the most natural way to do it
03:10:43 <Vorpal> it is NOT the most natural way to do it
03:10:49 <pikhq> The exact opposite of what's used in every other system that survived past the 50s.
03:10:55 <Vorpal> pikhq, why would anyone do that, is there some technical advantage of it?
03:11:04 <pikhq> No technical advantage at all.
03:11:24 <Vorpal> any technical disadvantage though?
03:11:27 <madbr> vorpal: oh, QAM is for the color
03:11:29 <pikhq> Not that I know of.
03:11:32 <kmc> french system has to be different
03:11:56 <Vorpal> pikhq, I guess at least one of them needs to invert the signal controlling the power to the cathode ray though?
03:12:03 <pikhq> The UK also used to use positive modulation.
03:12:13 <pikhq> They shut off broadcasts on that signal ages ago though.
03:12:20 <kmc> what was that called?
03:13:12 <Vorpal> pikhq, which type of modulation needs to invert the signal compared to the cathode ray tube power though?
03:13:25 <madbr> inverted signals make sense no?
03:13:34 <madbr> ie high signal = black
03:14:23 <Vorpal> madbr, the case of high = no beam hitting the phosphor
03:14:56 <madbr> there's a good reason
03:15:05 <madbr> if high signal = white
03:15:16 <madbr> how do you correct for signal amplitude?
03:15:32 <Vorpal> I'm not sure what you mean
03:15:49 <madbr> suppose you receive the signal at half the amplitude you were expecting
03:16:12 <Vorpal> madbr, I presume you need to use transistors or similar to drive the high voltage to the cathode ray anyway
03:16:22 <madbr> like, you need 0 to 1
03:16:26 <madbr> but you got 0 to 0.5
03:16:33 <Vorpal> so you could just adjust the strength of it there
03:16:48 <madbr> yeah but you need to guess the amplification factor
03:17:02 <kmc> you know how TVs used to have all those knobs on the front
03:17:05 <Vorpal> won't you need to do that in the other case too?
03:17:08 <kmc> and you have to fiddle with them to get a good picture
03:17:12 <Vorpal> and yeah they used to have lot of knobs
03:17:18 <madbr> if you make black the highest level
03:17:21 <kmc> damn kids these days don't know about knobs
03:17:33 <madbr> then at least once per scanline you have a sync
03:17:46 <Vorpal> kmc, oh come on, I had a TV with lots of knobs until like 7 years ago.
03:17:53 <madbr> (which is encoded as hyper-black)
03:18:08 <Vorpal> madbr, surely you could just do a similar white sync instead?
03:18:10 <pikhq> madbr: You actually can tell what the amplitude is.
03:18:36 <itidus21> i remember one of my first tv's had sliders for colour, brightness, contrast
03:18:39 <pikhq> madbr: Because all signals are relative to the absolute low point of the sync signal, and you have a period of regular black after the sync.
03:18:39 <madbr> vorpal: would be harder on TVs :D
03:18:56 <itidus21> and that you could make the pictures larger by turning up some of these sliders
03:19:20 <itidus21> i don't know a better word than slider
03:19:35 <madbr> right, since you're guaranteed to have the lowest possible level at least once per scanline (sync), then you can easily guess the signal amplitude
03:19:41 <madbr> if you use negative signaling
03:20:19 <madbr> yeah I remember our tv having settings for that, but you changed them digitally with the remote
03:20:29 <madbr> and irl you could just make everything worse mostly
03:20:31 <kmc> shachaf: good call on "TV remote", by the way
03:20:40 <madbr> default adjust was fine
03:20:58 <kmc> when i was a small person i took a magnet to the front of our television
03:21:01 <itidus21> the red would really bleed onto everything
03:21:01 <pikhq> madbr: You're also sure to have the lowest ordinary signal level a bit higher above that.
03:21:04 <kmc> and my parents were too cheap to buy another one
03:21:10 <kmc> so for 10 years we had wrong colors on everything
03:21:23 <shachaf> kmc: That's why I made sure not to buy discount parents.
03:21:36 <shachaf> It'a big up-front cost, but you're stuck with them for life.
03:21:42 <madbr> pikhq: well, yeah you're sure to have some black too
03:21:44 <Vorpal> kmc, must have been a really strong one then. Usually such things clear themselves pretty quickly
03:21:54 <Vorpal> or you can hit the degauss thingy, at least on computer CRTs
03:22:02 <madbr> yeah that came later
03:22:12 <pikhq> Vorpal: Yeah, most TVs don't have degaussing coils.
03:22:16 <madbr> I think tv repairmen could degauss a tv too
03:22:24 <pikhq> Yeah. It's not hard to do.
03:22:41 <Vorpal> pikhq, but even then magnets usually don't leave lasting problems
03:23:38 <itidus21> every time you deguass a small man resembling gauss can be seen fleeing
03:24:31 <itidus21> http://img.spikedmath.com/comics/504-scumbag-gauss.png
03:25:57 <madbr> wonder how much time is left until an asshole proves p!=np
03:26:31 <itidus21> anyway im killing the topic... >.<
03:26:36 <Vorpal> pikhq, according to wikipedia the "thunk" when turing on the TV comes from automatic degaussing, don't know if that is correct though
03:26:48 <pikhq> Vorpal: Not all TVs do that. :)
03:26:56 <Vorpal> never seen one that didn't
03:27:20 <itidus21> <pikhq> madbr: Because all signals are relative to the absolute low point of the sync signal, and you have a period of regular black after the sync.
03:27:20 <itidus21> <madbr> vorpal: would be harder on TVs :D
03:27:34 <itidus21> <madbr> right, since you're guaranteed to have the lowest possible level at least once per scanline (sync), then you can easily guess the signal amplitude
03:27:34 <itidus21> <madbr> if you use negative signaling
03:27:56 <kmc> itidus21: he had to leave *something* for other people to do
03:28:28 <madbr> yeah if you use positive signaling you need at least a bit of white to figure out your signal range
03:28:46 <madbr> or you could try to guess it from the difference in level between hblank and black
03:28:57 <itidus21> wow, a whole wikipedia page for "List of things named after Carl Friedrich Gauss"
03:32:22 <soundnfury> Gauss Facts seems indicated at this point
03:32:57 -!- copumpkin has changed nick to Kronos.
03:33:05 -!- Kronos has changed nick to copumpkin.
03:35:24 <copumpkin> I'd be more excited about him than myself
03:35:40 <shachaf> Never mind about you, then.
03:35:43 <shachaf> comex: Are you the dual of mex?
03:59:57 <Vorpal> hm what do you do for android an java package names if you don't own a domain?
04:01:57 <kmc> cx.goatse.MyShittyApp
04:16:41 -!- ogrom has joined.
04:28:03 -!- DHeadshot has quit (Ping timeout: 245 seconds).
04:43:17 <kmc> oh i know the right answer
04:43:30 <kmc> you create a ytmnd for your project
04:44:05 <shachaf> Vorpal: You should get a domain name.
04:46:15 <kmc> yes it's a third world country
04:50:39 <pikhq> That and some digraphs, and you can write some really weird C.
04:52:01 <pikhq> int main(int argc, char *argv<::>) <% return not printf("Yes, really, this is C.??/n"); %>
04:56:05 <shachaf> main(argc, argv) char *argv<::>) <% return not printf("Yes, really, this is C.??/n"); %>
04:56:41 <pikhq> I don't think that'll work. IIRC C99 gets rid of K&R-style declarations.
04:56:52 <pikhq> And digraphs are C99.
04:57:25 <kmc> // Will the next line be executed????????????????/
04:58:50 <pikhq> shachaf: Oh, sorry, I'm wrong.
04:58:52 <shachaf> Weren't digraphs a thing invented for really old machines?
04:58:55 <pikhq> shachaf: '94 addon.
04:59:11 <pikhq> However, iso646.h *is* C99.
04:59:31 <pikhq> shachaf: Digraphs were also invented because trigraphs (a C90 thing) were ridiculous.
04:59:39 <shachaf> s/#include <iso646.h>/#define not !/
05:00:01 <shachaf> Oh, I confused digraphs and trigraphs.
05:00:12 <pikhq> main(argc, argv) char *argv??(??); ??< return not printf("So much uglier!??/n"); ??>
05:00:52 <pikhq> Trigraphs are the ones processed basically via sed before anything else.
05:01:03 <pikhq> Whereas digraphs are synonyms for tokens.
05:09:42 <madbr> they were invented because ebcdic was missing some characters no?
05:10:02 <kmc> i think it's because some keyboard layouts make those characters hard to type
05:11:24 <Sgeo_> "Tcl is formally just as powerful since everything is a string, but it is usually not practical to have Tcl code take Tcl scripts apart and modified, since there are few facilities available out of the box for handling Tcl scripts at a higher level than as a string of characters (there are packages for higher level handling, however)."
05:11:24 <kmc> and some national variants of ISO 646 don't have them
05:12:26 -!- azaq23 has quit (Remote host closed the connection).
05:13:30 <madbr> kmc: looking up ISO 646
05:13:36 <madbr> what the hell is this dinosaur
05:14:03 <kmc> it's ASCII and the various other national 7-bit codes based on it
05:15:25 <madbr> yes but where the heck was that char set used
05:15:45 <kmc> ASCII? it was pretty popular bro
05:15:55 <kmc> you've probably heard of it before
05:16:10 <shachaf> kmc: You mean restricted UTF-8?
05:16:14 <kmc> u madbr o?
05:16:42 <kmc> <kmc> [ISO 646 is] ASCII and the various other national 7-bit codes based on it
05:18:00 <kmc> so in ISO 646 you have 7-bit characters, with 82 positions fixed (the "invariant set") and others varying by language
05:18:18 <kmc> in ISO 8859 you have 8-bit characters, with 128 positions fixed (corresponding to all of ASCII) and the other 128 varying by language
05:18:46 <pikhq> Sgeo_: Incidentally, all valid Tcl scripts are also valid Tcl lists.
05:18:50 <kmc> and now we have Unicode, which is the same everywhere, with various different standards for representing Unicode characters as sequences of bytes
05:20:00 <Sgeo_> pikhq, but not necessarily easy-to-process lists: semicolons become part of elements and newlines are ignored when viewing a script as a list, right?
05:20:17 <pikhq> Sgeo_: Bleh, probably.
05:20:21 <madbr> yeah but what sort of real system uses iso 646
05:20:30 <pikhq> Sgeo_: Tcl metaprogramming eventually gets kinda weird.
05:20:35 <kmc> you are huffing glue or something
05:22:02 <Sgeo_> Yet Lisp metaprogramming seems like it's simpler
05:22:12 <kmc> Sgeo_: PARENTHESES LOLOLOLLOLOLLOLLOLOLOLOL
05:22:27 <pikhq> Sgeo_: That's because it is a bit simpler.
05:22:58 <Sgeo_> So why am I looking at Tcl? I think the whole starpack and Tk and event loop thing is drawing me in
05:23:18 <pikhq> Dunno. It is a neat language, at least...
05:23:39 <madbr> iso646 looks like a pie in the sky standard some idiot came up with "because ascii is to US centric"
05:24:24 <kmc> yeah, people outside the USA don't deserve computers anyway
05:24:37 <kmc> they should be happy with the free bombs we drop on them
05:25:03 <pikhq> kmc: *free freedom bombs
05:25:17 <kmc> http://en.wikipedia.org/wiki/ISO/IEC_646#National_variants so basically madbr you're arguing that all of these are fictional or just never used by anyone?
05:25:35 <kmc> note the various different national standards bodies which created each one
05:25:38 <madbr> they're not fictional but I'm looking around for uses
05:25:42 <kmc> just "some idiot" right
05:26:02 <kmc> god you annoy me
05:26:32 <kmc> "That's why foreign standardizers crafted up national variants of ASCII like the German DIN 66003 which my first CP/M computer (a Sharp MZ-731) used in 1984 to communicate with its daisy wheel printer or the Danish DS 2089 mentioned by Bjarne Stroustrup in § 6.5.3 of his C++ history."
05:26:39 <kmc> http://czyborra.com/charsets/iso646.html
05:26:55 <madbr> yeah that's the one I saw
05:27:04 <madbr> trying to find another
05:27:05 <kmc> i mean this stuff is all much older than the Internet
05:27:11 <kmc> so don't expect to find much of it on the Internet
05:27:18 <madbr> probably much older than DOS even
05:27:42 <madbr> then why did they have to put trigraphs in C
05:27:57 <kmc> because characters like { } aren't in the ISO 646 invariant set!
05:28:12 <kmc> they don't exist in all national variants, or they might be at different code points
05:28:17 <shachaf> Are they in the covariant or the contravariant set?
05:28:48 <kmc> the section "ISO-646: First attempts to internationalize the 7bit code" in that document
05:28:51 <kmc> explains the problem precisely
05:28:56 <madbr> what about digraphs
05:29:05 <madbr> which they put in in like 1994
05:29:25 <kmc> presumably some people were still using these codes in 1994
05:31:45 <kmc> TIL that the BCD in EBCDIC stands for BCD
05:33:03 <kmc> madbr: it takes years to upgrade legacy systems and it also takes years to get standards through the process
05:33:17 <madbr> fine for trigraphs
05:33:28 <madbr> but why did they have to add digraphs after that
05:33:34 <kmc> as a saner alternative to trigraphs
05:33:57 <madbr> 1994 is like PCs and amigas
05:34:08 <pikhq> madbr: Dude, we live in a world where UTF-8 is still not ubiquitous.
05:34:10 <kmc> and a bunch of legacy systems
05:34:18 <kmc> this is the typical mind fallacy
05:34:20 <pikhq> I was *3* when UTF-8 was invented.
05:34:30 <madbr> in 1994 it was DOS's weird ass character set
05:34:38 <kmc> you assume that the machine you had on your desk at home represents the typical computer in the world at that time
05:34:50 <kmc> ignoring the huge numbers of old mainframes, industrial control systems, etc
05:34:55 <madbr> vs whatever messed up sets the Macs had
05:35:01 <madbr> all of which are 8 bit
05:35:04 <pikhq> If it takes that friggin' long for legacy charsets to die die die die, it certainly makes sense for ISO-646 based charsets to still be in use in '94.
05:35:15 <pikhq> And it's perfectly reasonable to want to use C on some of them.
05:35:23 <madbr> yeah but they already had a solution (trigraphs)
05:35:26 <kmc> these shiny but useless PC toys were probably not at the forefront of the minds of the people designing C94
05:35:31 <pikhq> Except trigraphs sucked.
05:36:06 <pikhq> Trigraphs are essentially a sed process before you hit the tokeniser.
05:36:19 <kmc> they apply inside string literals and such
05:36:20 <kmc> kinda nasty
05:36:39 <pikhq> Digraphs are just synonyms for certain tokens.
05:37:45 <kmc> yeah there are many people who would laugh at you for asserting that 1994 was "PCs and amigas"
05:37:58 <kmc> what do you think was used to do real work back then
05:38:11 <madbr> yeah well I hope their lines of crummy servers died
05:38:31 <madbr> (most of them did)
05:38:44 <pikhq> You think this now because you know what survived.
05:38:58 <pikhq> Namely, the shittiest platform around at the time.
05:39:28 <kmc> madbr: must destroy what you don't understand, eh?
05:40:05 <madbr> no I'm pissed at them for taking a piss on C's tokenizer
05:40:09 <pikhq> madbr: The IBM PC is perhaps the single shittiest platform to have ever been notable.
05:40:36 <madbr> I'm not sure the macs compared favorably
05:40:37 <kmc> the major redeeming feature of the PC platform is that it's remarkably open
05:40:58 <kmc> which (as we're seeing today with smartphones and tablets) is not an inevitable property of successful products
05:41:03 <kmc> but rather some kind of historical accident
05:41:10 <kmc> basically IBM wasn't paying enough attention to lock it down
05:41:22 <pikhq> It's currently a 64-bit extension of a 32-bit extension of a 16-bit revision of an 8-bit CPU inspired by the *original* integrated circuit CPU. Which was 4-bit, BTW.
05:41:50 <shachaf> kmc: Did you see http://www.yesodweb.com/blog/2012/07/classy-prelude ?
05:41:54 <kmc> madbr: lol you're still thinking about "PC vs Macs"
05:42:12 <madbr> pikhq: still strangled the itanium to death
05:42:14 <kmc> "as soon as Hackage comes back up"
05:42:20 <kmc> sounds like i missed some drama
05:42:52 <pikhq> madbr: Quality and popularity have 0 correlation. Accept it, for this is the most fundamental truth of the world.
05:43:00 <kmc> i wouldn't say 0
05:43:04 <kmc> but it's pretty weak
05:43:24 <madbr> x86 has some nice features
05:43:36 <kmc> "PC platform" ≠ x86, also
05:43:47 <madbr> aside from the randomization of the instruction set
05:43:54 <madbr> and low number of registers
05:44:06 <kmc> people always fixate on the ISA but this is one of the less interesting choices made in designing a platform
05:44:48 <pikhq> The ISA is more-or-less just the consequence of backwards compatibility decisions made on day one.
05:45:03 <madbr> all the people trying to design VLIW stuff? failed
05:45:30 <madbr> Only the better RISC architectures hold a candle
05:45:57 <pikhq> (it was designed so you could trivially machine translate 8080/8008 code to it)
05:46:25 <madbr> yeah and then they carefully designed a processor to get away from that
05:46:30 <madbr> and ended up with the i432
05:48:51 <madbr> does the ISA really matter that much once you're doing out of order execution and register renaming?
05:49:50 <pikhq> It does, but not as much as several other shitty, shitty design decisions in the platform.
05:50:01 <pikhq> Figure 1: The BIOS.
05:50:43 <itidus21> is binary technically redundant? :D
05:52:15 <itidus21> i dunno how i got that idea in my head.. basic
05:52:40 <madbr> what I'm saying is that, yes PCs have lot of baggage, but then if you look at the competing personal computers from back then, they had worse flaws
05:53:03 <kmc> why do you think we're talking about personal computers
05:53:19 <madbr> that's what the PC is
05:53:25 <madbr> that's how it took the market
05:53:53 <pikhq> Imagine if the C64 had evolved like the IBM PC. ... In '94, it would be the shittiest platform.
05:54:49 <madbr> I guess it would eventually have ended up with the 16 bit version of the 6502
05:55:07 <kmc> well we were talking about how trigraphs are necessary for programming in C on certain platforms
05:55:15 <kmc> and you seem to have assumed those platforms are "personal computers"
05:55:25 <kmc> which is extremely far from the truth
05:55:41 <kmc> aiui even programs for personal computers would often be compiled on bigger machines, in that era
05:55:57 <madbr> kmc: never heard of that one
05:57:16 <pikhq> kmc: I didn't think that was *too* common by the 90s.
05:57:33 <pikhq> Certainly it was the case earlier.
06:01:58 <madbr> but yeah as flawed as the PC was, it was probably the best of the personal computers
06:03:07 <kallisti> yes the personal computer is the best personal computer.
06:03:13 <kallisti> nothing else could be as good of a personal computer.
06:04:10 <kmc> redundant acronyms am i rite
06:04:52 <itidus21> i don't think redundant acronyms represents a full survey of the absurdity unfolding
06:05:13 <kallisti> I just choose to interpret PC as literally "personal computer"
06:05:23 <itidus21> what other interpretations are possible?
06:05:27 <kallisti> instead of "machine running Windows" or whatever it's supposed to mean nowadays.
06:05:52 <kallisti> the whole "PC vs. Mac" thing...
06:06:16 <kmc> "IBM PC" is a computer platform
06:06:25 <shachaf> "It's not that I'm incapable of understanding what you meant, I just choose to misinterpret regardless of however it derails the conversation because it makes me feel better about something"
06:06:30 <kmc> meaning it's a set of specifications for a processor and how that processor interacts with peripherals
06:06:44 <kmc> stuff like, here is your bus, here is your BIOS and the functions it provides, here's how you boot
06:07:02 <kmc> "PC" today would refer to a large and evolving collection of such specifications
06:07:02 <kallisti> I see. I must have arrived late to the party.
06:07:17 <kmc> shachaf: is that a quote from somewhere?
06:07:47 <itidus21> kallisti: The term WC has been suggested for a computer running Windows.
06:08:08 * kallisti pretends to be an ignorant American. "I DON'T GET IT"
06:08:10 <kmc> i'm not sure to what extent "Macs are PCs" under that view
06:08:24 <kmc> EFI is part of the new world order for PCs, isn't it
06:08:45 <kmc> you can boot an EFI-aware Windows or Linux system on a Mac without Boot Camp, can't you?
06:08:49 <itidus21> perhaps a PC is a machine which is not a Mac
06:09:01 <kmc> itidus21: perhaps bonghits will fix your dichotomy
06:09:18 <shachaf> Well, maybe Apple is the only one who uses it.
06:09:20 <kmc> but Macs use it, no?
06:09:33 <kmc> i thought other consumer hardware was EFI capable by now
06:09:57 <madbr> does EFI still boot in 16 bit mode?
06:10:18 <kallisti> I thought a PC was a computer designed for and in the price range of an individual person.
06:10:25 <kallisti> I think kmc has taken a more specific definition the one I use.
06:10:26 <pikhq> kmc: Rather a lot of it is by now.
06:10:36 <kmc> kallisti: I took the definition used by the preceeding discussion
06:10:37 <pikhq> madbr: Technically, all x86 CPUs do.
06:10:40 <kmc> where "PC" was short for "IBM PC"
06:11:02 <pikhq> madbr: EFI firmware just switches to protected or long mode early in the boot sequence, before control is handed to the OS.
06:11:27 <madbr> was just thinking they were trying to find a way to avoid the 16 bit part in the boot
06:11:47 <madbr> to eventually make 16bit support not necessary at all and eventually take it out of CPUs
06:12:06 <pikhq> It'll take the death of the BIOS first.
06:12:38 <pikhq> And then a new generation of CPUs which are incompatible with EFI firmwares that start in 16-bit mode.
06:14:09 <pikhq> Even then, you'd probably want those CPUs to be long mode only, so you don't have to think about virtual 8086 mode.
06:17:26 <madbr> 32bit mode on x86 still probably has a long life left tho
06:18:36 <pikhq> And so we're stuck with a single platform with ludicrous floats.
06:19:11 <madbr> isn't it slowly being replaced by SSE?
06:19:49 <madbr> not that it really matters, afaik for most cpus, x87 and SSE use the same ALUs anyways
06:19:55 -!- pikhq_ has joined.
06:20:20 <kmc> but x87 supports the wacky 80-bit float format
06:20:30 <kmc> if x87 went away you could drop the hardware to support that
06:20:34 <kmc> not sure if that really matters
06:20:34 <madbr> for intermediate computation only
06:20:42 <kmc> you can also load/store them
06:20:52 <kmc> but anyway, you still need that hardware to produce the correct results
06:20:53 <pikhq_> madbr: The 32-bit x86 ABIs don't generally *permit* you to ignore x87.
06:21:06 <pikhq_> Floats are passed on the x87 register-stack.
06:21:15 <madbr> kmc: yeah but that's actually rare
06:21:27 <pikhq_> kmc: x87 is technically available on x86_64 as well.
06:21:30 <madbr> afaik loading/storing 80bit floats is really slow
06:21:46 <madbr> thought it was deprecated on x86-64
06:21:50 <kmc> madbr: but the CPU still needs to support it
06:21:50 <pikhq_> madbr: Then passing floats is really slow?
06:21:58 <pikhq_> madbr: You pass floats on the x87 register stack.
06:22:04 <pikhq_> Which only knows about 80-bit floats.
06:22:12 <madbr> pikhq: no I mean loading and saving them to ram
06:22:46 <kmc> well you can set a FPU control bit to make them act like 64-bit floats, iirc
06:22:59 <madbr> kmc: which almost works
06:23:08 <madbr> (exponent range isn't affected)
06:23:14 <madbr> it's not actually faster though
06:23:16 -!- pikhq has quit (Ping timeout: 248 seconds).
06:23:20 <pikhq_> x87's weird ass floats at least gives you a funny property...
06:23:28 <madbr> except for / and sqrt
06:23:45 <pikhq_> x86 has, in effect, 64-bit integers, and has even when it was a 16-bit platform.
06:25:29 <Sgeo_> Did someone make an esolang where that would be a useful thing to do?
06:25:34 <Sgeo_> It vaguely sounds familiar
06:25:36 <kmc> yes, it's called C++
06:26:35 <kmc> i mean, if you have some bad / weird design
06:26:48 <kmc> then operator= might have some useful side effect
06:26:56 <kmc> at least a performance optimization
06:27:12 <madbr> performance optimization?
06:27:57 <kmc> like rebalancing a data structure
06:28:37 <madbr> how would you optimize that with 80 bit floats? :D
06:29:00 <kmc> i was responding to Sgeo_
06:29:06 <kmc> who i do not believe was talking about 80 bit floats
06:29:36 <pikhq_> Sgeo was talking about "x = x;", which could potentially have strange semantics in C++.
06:29:48 <madbr> I thought it was an emoticon
06:30:12 <madbr> (x += 2) returns x+2 I think
06:30:33 <pikhq_> rvalue *as opposed to lvalue*, presumably.
06:30:46 <madbr> unless I guess it could return the address of x
06:31:55 <kallisti> in perl it's perfectly reasonable to do ($hash{x} = $x = $arr[2] += 1) %= 256;
06:32:08 <madbr> yeah but that's perl
06:32:16 <kmc> "perfectly reasonable"
06:32:53 <madbr> which has some operators that can change behavior depending on if there's 0, 1 or 2+ values in an array
06:32:59 <madbr> If I'm not mistaken
06:33:09 <madbr> barely remember it tho
06:33:29 <kallisti> perl is far more consistent than it's given credit.
06:43:18 <kallisti> madbr: oh, I guess you're talking about subroutines arguments, since they're stored in an array.
06:43:29 <kallisti> that's the same thing as having default values in other languages.
06:50:42 -!- Taneb has joined.
06:50:59 -!- DHeadshot has joined.
07:03:23 -!- Taneb has quit (Quit: Leaving).
07:03:56 <pikhq_> The fuck. Guess when Egyptian (well, its evolved descendant) died?
07:05:01 <pikhq_> The 17th friggin' century.
07:09:16 <Sgeo_> http://news.cnet.com/8301-1009_3-57471178-83/yahoos-password-leak-what-you-need-to-know-faq/
07:09:30 <Sgeo_> They're vulnerable to SQL injection, why expect them to store passwords sanely?
07:17:40 <fizzie> Assuming volatile int x that coincides with some memory-mapped device, 'x = x;' can be a reasonable thing to do.
07:18:08 <fizzie> Can't exactly think of an example offhand, but anyway.
07:18:53 <pikhq_> Could also be handy to pad your executable. :P
07:19:57 -!- madbr has quit (Quit: Radiateur).
07:22:35 <fizzie> And to nitpick a little, 'x += 2' returns new value of x, not necessarily the same as 'x+2'. Consider e.g. unsigned char x = 255, in which case (assuming regular sizes) x+2 is likely to be 257 thanks to the default integer promotions, while x+=2 is likely to return 1.
07:48:52 -!- myndzi has joined.
08:03:09 -!- asiekierka has joined.
08:08:05 <Sgeo_> " The -- switch can be used to mark the end of switches; it may be needed if path is an unusual value such as -safe."
08:08:11 <Sgeo_> Well, I feel safe now (no I don't)
08:13:38 -!- nooga has joined.
08:20:45 -!- ogrom has quit (Ping timeout: 255 seconds).
08:35:48 -!- copumpkin has quit (Ping timeout: 250 seconds).
08:36:20 -!- copumpkin has joined.
08:46:15 <mroman> Sgeo_: General rule when doing stuff like foo * is to use foo -- * ;)
08:49:42 -!- ogrom has joined.
09:10:00 -!- sirdancealot has quit (Read error: Connection reset by peer).
09:12:38 -!- sirdancealot7 has joined.
10:00:56 -!- AnotherTest has joined.
10:01:49 -!- AnotherTest has quit (Client Quit).
10:01:56 -!- AnotherTest has joined.
10:48:24 -!- ogrom has quit (Ping timeout: 255 seconds).
10:55:57 -!- Phantom_Hoover has joined.
11:37:07 -!- boily has joined.
11:50:04 -!- DHeadshot has quit (Read error: Connection reset by peer).
11:51:33 -!- derdon has joined.
12:55:45 -!- gkunno has joined.
13:12:02 -!- asiekierka has quit (Read error: Connection reset by peer).
13:17:34 <fizzie> Insert requisite combo breaker.
13:17:57 -!- gkunno has quit (Remote host closed the connection).
13:41:24 <fizzie> From elsewhere, though I think I recall an older similar thing few years back: http://www.legoturingmachine.org/ (it's
13:41:33 -!- sirdancealot7 has quit (Remote host closed the connection).
13:41:38 <fizzie> I forget what the bit in parens was trying to be.
13:48:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:53:10 -!- Sgeo has joined.
13:53:18 -!- stanley has quit (Read error: Operation timed out).
13:54:53 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
13:56:02 -!- stanley has joined.
14:01:48 -!- Sgeo has quit (Quit: Leaving).
14:02:15 -!- Sgeo has joined.
14:02:37 -!- Sgeo has quit (Client Quit).
14:02:55 -!- Sgeo has joined.
14:07:02 -!- copumpkin has joined.
14:27:53 -!- aod has joined.
14:30:53 <HackEgo> aod: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
14:31:00 -!- aod has left.
14:33:00 -!- asiekierka has joined.
14:37:42 -!- pikhq has joined.
14:37:46 -!- pikhq_ has quit (Ping timeout: 244 seconds).
14:52:35 -!- ernesto1 has joined.
14:52:47 -!- ernesto1 has quit (Remote host closed the connection).
14:53:27 -!- ernesto1 has joined.
14:56:54 -!- ernesto1 has left.
14:57:18 -!- ernesto1 has joined.
15:01:58 <HackEgo> HackEgo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
15:02:26 <fizzie> At least HackEgo didn't run away screaming.
15:02:33 <fizzie> Unlike most other welcomees.
15:04:50 -!- ernesto1 has left.
15:06:47 -!- Taneb has joined.
15:09:01 <mroman> NOn your plane were snakes?
15:09:39 <Taneb> Have you incorrectly configured your terminal?
15:09:51 <Taneb> Am I seeing things?
15:10:35 <mroman> You should see NOn your plane were snakes?
15:10:45 <Taneb> Anyway, the bad news is that I'm going to start volunteering in a charity shop
15:11:07 <mroman> But my internet connection is very slow at the moment so I don't see what I type
15:11:34 <mroman> He's not getting paid for it?
15:13:24 <Taneb> mroman, http://imgur.com/wAJFC
15:16:48 <Taneb> You mean in that line you just said?
15:17:08 <Taneb> They aren't there :)
15:18:26 <nortti> what. what the fuck it that what happens when you press ^A c ^[ on screen?
15:20:14 <fizzie> Isn't that the copy mode by default?
15:20:27 <fizzie> Screen's built-in copy-paste thing.
15:20:48 <fizzie> Select stuff by... several keys, and then paste with ^A^].
15:21:28 <fizzie> hjkl (or cursor keys) move, enter starts/ends selection, and there's other less useful keys too.
15:25:03 <nortti> getting message: Welcome to hacker's treasure zoo - Column 13 Line 64(+1000) (160,64)
15:25:15 <nortti> was just kinda strange
15:34:55 -!- ogrom has joined.
16:08:21 -!- ais523 has joined.
16:10:30 -!- Taneb has quit (Quit: Leaving).
16:16:13 -!- edwardk has joined.
16:19:44 -!- Lumpio- has quit (Read error: Connection reset by peer).
16:20:31 -!- Taneb has joined.
16:23:48 -!- Lumpio- has joined.
16:25:10 -!- kallisti has quit (Ping timeout: 246 seconds).
16:27:49 -!- aloril has quit (Ping timeout: 244 seconds).
16:29:49 -!- ais523 has quit.
16:31:21 -!- ais523 has joined.
16:32:11 <mroman> Taneb: You still haven't told us why you think that your news is bad.
16:32:27 <Taneb> BECAUSE I WILL LOSE MY SATURDAYS
16:32:56 <mroman> Jeez. No need to scream.
16:40:09 -!- aloril has joined.
16:47:50 -!- zzo38 has joined.
16:48:54 -!- aloril has quit (Ping timeout: 250 seconds).
16:55:19 <Sgeo> Got a spam with the subject "i'm dying"
16:55:26 <Sgeo> Apparently referring to the laptop battery
16:56:15 <Sgeo> http://www.reddit.com/r/spam
17:01:20 -!- aloril has joined.
17:11:04 -!- kallisti has joined.
17:14:26 <Taneb> zzo38, will there be a new version of prelude-generalize to reflect the new version of comonad?
17:15:07 -!- boily has quit (Quit: WeeChat 0.3.8).
17:17:30 -!- kallisti has quit (Ping timeout: 250 seconds).
17:17:48 <zzo38> Taneb: Perhaps I may do that one day but then I should fix my other packages using comonads too
17:18:11 <nortti> how does a comonad work?
17:18:44 <Taneb> duplicate :: w a -> w (w a); extend :: (w a -> b) -> w a -> w b; extract :: w a -> a
17:19:17 <Taneb> This lets you manipulate context without adding to it
17:20:06 <zzo38> I really think monads should be defined in a similar way class Functor m => Monad m where { join :: m (m a) -> m a; bind :: (a -> m b) -> m a -> m b; return :: a -> m a; }
17:20:18 <Taneb> zzo38, that's tangentical
17:20:21 <Taneb> Consider the ((,) e) comonad
17:20:55 <Taneb> This lets you do extend (\(a,b) -> a + b) :: Num a => (e, a) -> (e, a)
17:20:58 -!- aloril has quit (Ping timeout: 250 seconds).
17:21:16 <Taneb> *Num a => (a, a) -> (a, a)
17:21:36 <Taneb> This lets you use the environment element of the tuple while keeping it the same
17:22:23 <zzo38> Yes I do understand that it is an environment comonad, I like that.
17:22:35 <Taneb> Imagine an image data type data Img a = Img (Array (Int, Int) a) (Int, Int)
17:22:43 <Taneb> So it has the image, and a coordinate
17:22:59 <Taneb> extract would get the pixel at the specified coordinate
17:23:13 <Taneb> (the pixel is an arbitrary type, of course)
17:23:49 <zzo38> And I guess extend would do convolution filters
17:24:02 <Taneb> If you define a function that gives the pixel above the specified pixel, call it f, extend f shifts the image down a pixel
17:24:36 * edwardk looks up at the comonad chatter
17:24:37 <Taneb> Blurs aren't that hard to do, etc, etc
17:24:53 <Taneb> edwardk, was it you who showed me this example
17:25:03 <zzo38> Blur, shift one down, these are both kinds of convolution filters
17:25:21 <Taneb> For recolouring, you can just use fmap
17:25:26 <edwardk> its one of my favorite comonad examples
17:25:35 <Taneb> It's a good example
17:25:50 <edwardk> cellular automata are another good one
17:26:03 <edwardk> because you can run a game of life in that image comonad as well for instance
17:26:27 -!- Phantom__Hoover has joined.
17:26:42 <copumpkin> I want to use comonads to derive the convolution theorem
17:26:53 <zzo38> What convolution theorem?
17:27:02 <copumpkin> http://en.wikipedia.org/wiki/Convolution_theorem
17:28:27 <Taneb> The NonEmpty comonad lets you use the remainder of the list as context, which is useful sometimes
17:28:31 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
17:29:04 <zzo38> duplicate for non-empty list makes the part of the list starting from each element
17:29:11 <zzo38> So it will do that
17:29:21 -!- kallisti has joined.
17:29:21 -!- kallisti has quit (Changing host).
17:29:21 -!- kallisti has joined.
17:30:18 <Taneb> duplicate copies the context to the content, sort of?
17:30:42 <Taneb> While keeping the content
17:31:05 -!- edwardk has quit (Quit: Computer has gone to sleep.).
17:32:11 -!- edwardk has joined.
17:32:19 <zzo38> The purpose of duplicate differs by the comonads and the purpose of join differs by the monads, what they mean for each one is differ as long as the laws are followed. Therefore it also makes a Kleisli category or coKleisli category and can use bind and extend to mean something too. Or you can do it the other way around also work.
17:33:07 <Taneb> I've got an unrelated question
17:33:22 <Taneb> How are Arrows generalizations of Monads?
17:34:15 -!- aloril has joined.
17:34:22 <zzo38> I do not understand that either. To me it seem, Arrow is a category, having a functor from (->), and is a tensor category, and fanout, and possibly some additional laws.
17:36:19 <Taneb> Arrows are a specialisation of Categories, I get that
17:37:07 -!- Taneb has quit (Quit: dinner).
17:43:07 -!- aloril has quit (Ping timeout: 240 seconds).
17:43:24 <zzo38> edwardk: Do you know anything about Penrose graphical notation? And about what categories are possible to draw in this way (with restrictions, such as you may be unable to cross lines and whatever depending on what category)
17:43:49 -!- edwardk has quit (Quit: Computer has gone to sleep.).
17:44:34 -!- zzo38 has quit (Remote host closed the connection).
17:45:34 -!- zzo38 has joined.
17:47:19 -!- azaq23 has joined.
17:48:02 -!- edwardk has joined.
17:51:26 <edwardk> re: penrose diagrams I'm more familiar with the trace diagram special case
17:52:10 -!- atehwa has quit (Ping timeout: 246 seconds).
17:52:16 -!- ernesto1 has joined.
17:53:19 <edwardk> and you can probably use some form of tensor diagrams in monoidal categories, which would make sense given the existence of string diagrams
17:53:32 <edwardk> zzo38: are you familiar with string diagrams?
17:55:28 -!- aloril has joined.
17:56:14 -!- ernesto1 has left.
18:17:01 -!- aloril has quit (Read error: Operation timed out).
18:17:43 -!- pikhq_ has joined.
18:17:52 -!- neutrino2000 has quit (Quit: leaving).
18:17:53 -!- pikhq has quit (Ping timeout: 265 seconds).
18:30:56 <edwardk> zzo38: they are what you are looking for in category theory as an equivalent
18:31:18 <edwardk> there is a video series by the catsters on them
18:31:18 <edwardk> http://www.youtube.com/watch?v=USYRDDZ9yEc
18:31:20 -!- aloril has joined.
18:31:46 <edwardk> they have ~5 videos, and the recent hinze paper on kan extensions uses them a lot, so you may get some intuition on them from that
18:32:11 <edwardk> they are closer to trace diagrams, which are a special case of the penrose notation
18:41:35 <Vorpal> I wonder what these dmesg lines spamming my dmesg is about:
18:41:36 <Vorpal> [203653.110416] cdc_acm 2-2:1.1: This device cannot do calls on its own. It is not a modem.
18:41:36 <Vorpal> [203653.110589] cdc_acm 2-2:1.1: ttyACM0: USB ACM device
18:42:25 <Vorpal> I only think I used an USB mouse and an USB memory then?
18:42:36 <kmc> hacked by chinese
18:43:16 <Vorpal> oh actually I might have connected my phone yesterday
18:43:22 <Vorpal> that would make some sense
18:46:17 -!- edwardk has quit (Ping timeout: 244 seconds).
18:46:18 -!- Lumpio- has quit (Read error: Connection reset by peer).
18:49:39 -!- asiekierka has quit (Remote host closed the connection).
18:51:05 -!- edwardk has joined.
18:52:43 -!- derdon has quit (Remote host closed the connection).
19:01:43 <fizzie> I like the error message.
19:01:53 <fizzie> It's somehow whimsical.
19:03:24 <fizzie> "I'm a doctor, not an escalator", or whatever.
19:05:52 -!- oerjan has joined.
19:10:44 -!- Taneb has joined.
19:14:56 -!- AnotherTest has quit (Quit: Leaving.).
19:25:04 -!- kallisti has quit (Ping timeout: 265 seconds).
19:29:12 -!- Dovregubben has quit (Ping timeout: 252 seconds).
19:30:03 -!- Dovregubben has joined.
19:31:36 <zzo38> Do you know what NES mappers map the name tables as well as additional RAM both to $6000..$7FFF CPU memory?
19:42:20 -!- azaq23 has quit (Read error: Connection reset by peer).
19:44:20 -!- nooga has quit (Ping timeout: 248 seconds).
20:07:57 -!- ogrom has quit (Ping timeout: 255 seconds).
20:07:58 -!- pikhq has joined.
20:08:30 -!- kallisti has joined.
20:08:34 -!- pikhq_ has quit (Ping timeout: 265 seconds).
20:12:51 -!- kallisti has quit (Ping timeout: 246 seconds).
20:26:27 -!- ernesto1 has joined.
20:29:33 -!- kallisti has joined.
20:29:45 -!- ernesto1 has left.
20:36:07 <ion> IT’S A SHARK! http://youtu.be/ZcuYjDR2tSg?t=40s
20:40:17 -!- ogrom has joined.
21:11:23 -!- ernesto2 has joined.
21:19:24 -!- ernesto2 has left.
21:29:37 -!- ernesto1 has joined.
21:29:51 -!- ernesto1 has left.
21:38:16 -!- nooga has joined.
21:38:36 -!- nortti has changed nick to ].
21:38:46 -!- ] has changed nick to nortti.
21:44:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:45:23 -!- edwardk has quit (Quit: Computer has gone to sleep.).
22:02:57 -!- copumpkin has joined.
22:06:08 -!- Taneb has quit (Read error: Connection timed out).
22:06:38 -!- Taneb has joined.
22:13:43 -!- Taneb has quit (Quit: I'm really interesting, aren't I?).
22:16:59 * oerjan is having a bout of simon tatham's Loopy puzzle
22:17:26 <oerjan> they require a fascinating variety of little tricks
22:17:45 <oerjan> and the occasional deeper logic
22:18:27 <oerjan> and which tricks are useful changes subtly with the chosen grid shape
22:39:21 -!- david_werecat has joined.
22:52:36 -!- nooga has quit (Ping timeout: 248 seconds).
23:02:05 <oerjan> except when you have to restart...
23:05:21 -!- edwardk has joined.
23:17:33 -!- nortti_ has joined.
23:21:39 <zzo38> edwardk: Why did you make a Plus that requires Functor as well even though it can be used without?
23:24:00 -!- edwardk has quit (Quit: Leaving...).
23:24:58 <zzo38> If you make a type for F-algebra newtype Algebra f x = Algebra (f x -> x) then you can make a monoid of coKleisli endomorphisms
23:31:34 <zzo38> You get CodensityAsk ((->) x) to be like Either x including a MonadPlus instance if x is a monoid
23:32:28 <zzo38> Free (Const x) is also like Either x and it is similar by ((->) x) like Algebra (Const x) too.
23:35:16 -!- david_werecat has quit (Read error: Connection reset by peer).
23:35:25 -!- david_werecat has joined.
23:37:03 -!- nortti_ has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )).
23:38:01 -!- nortti_ has joined.
23:40:46 -!- nortti_ has quit (Client Quit).