--- Log opened Wed Aug 03 00:00:12 2016 |
00:08 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
00:13 | | PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has joined #code |
00:13 | | ServerMode/#code [+o PinkFreud] by *.Nightstar.Net |
00:13 | | mode/#code [+o Syloq] by ChanServ |
01:05 | <&McMartin> | "setContentHuggingPriority" |
01:05 | | * McMartin sends in the Hexapals |
01:05 | <&McMartin> | \ |
01:06 | <~Vornicus> | wat |
01:06 | <&McMartin> | It's a method name in iOS's UI library |
01:06 | <&McMartin> | The Hexapals are friendly robot dudes in Broken Age |
01:17 | | Netsplit Deepthought.Nightstar.Net <-> Krikkit.Nightstar.Net quits: @PinkFreud |
01:52 | | catadroid` [catadroid@Nightstar-tchn44.dab.02.net] has joined #code |
01:55 | | catadroid [catadroid@Nightstar-oho33n.dab.02.net] has quit [Ping timeout: 121 seconds] |
01:56 | | Netsplit over, joins: @PinkFreud |
02:15 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [Connection closed] |
02:16 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code |
02:16 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
02:25 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has quit [[NS] Quit: Leaving] |
02:25 | | VirusJTG [VirusJTG@Nightstar-6i5vf7.sta.comporium.net] has joined #code |
02:26 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
02:57 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
02:57 | | mode/#code [+o mac] by ChanServ |
02:59 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
04:34 | | Vornicus [Vorn@Nightstar-71g.jub.19.76.IP] has quit [Connection closed] |
04:34 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
04:34 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
04:43 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
04:44 | | Netsplit Kakrafoon.Nightstar.Net <-> Krikkit.Nightstar.Net quits: @PinkFreud |
04:45 | | Netsplit over, joins: @PinkFreud |
05:04 | | Derakon is now known as Derakon[AFK] |
06:12 | | * Vornicus gets mad, starts writing Vornball. |
06:12 | <@abudhabi> | Mad. |
06:20 | < catadroid`> | ? |
06:20 | < catadroid`> | Vornball ? |
06:23 | <~Vornicus> | Vornball is a game that's been kicking around in my head for about 12 years now |
06:24 | <~Vornicus> | It's metroid except you're *always* in morph ball mode. |
06:25 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
06:25 | | mode/#code [+o mac] by ChanServ |
06:29 | <~Vornicus> | So let me get that ball rolling. Literally. |
06:30 | < catadroid`> | Ah neat |
06:59 | | Kindamoody[zZz] is now known as Kindamoody |
07:31 | <@abudhabi> | Hm. |
07:32 | <@abudhabi> | Is there, anywhere, some kind of Ajax-compatible service that returns a random word or words from the dictionary file? |
07:33 | <@abudhabi> | I'd like to, from JS, make an AJAX call and get a random English word. |
07:35 | <~Vornicus> | not that I'm aware of |
07:36 | <@abudhabi> | My intent: I'm trying to make a random pseudonym generator to be used with greasemonkey. |
07:36 | <@abudhabi> | What I don't want to do is include /usr/dict with the script. |
07:37 | | celticminstrel is now known as celmin|sleep |
07:41 | <&McMartin> | hell yes vornball |
07:44 | <@abudhabi> | Yes. Go Vornicus! |
07:45 | <@abudhabi> | Maybe I'll get going on my perennial game project sometime soon, after I'm unemployed. Concentrating on any work-like thing after 8 hours of work per day is hard. |
07:46 | <@abudhabi> | All I want to do is read something, play something or watch some cat videos. |
07:52 | <&[R]> | abudhabi: I could whip one up for you if you really wanted |
08:14 | <@abudhabi> | [R]: I could whip one up myself, but given that the point of this is anonymity, that would defeat the point. |
08:15 | <&[R]> | I actually plan on hosting a few services. I don't mind adding that early. |
08:20 | <@TheWatcher> | abudhabi: http://randomword.setgetgo.com/ ? |
08:21 | <@TheWatcher> | Oh, wait, took random too literally there |
08:21 | <~Vornicus> | "cephalocone" |
08:21 | <~Vornicus> | that is indeed sufficiently random |
08:22 | <@TheWatcher> | http://developer.wordnik.com/docs.html then |
08:22 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has joined #code |
08:25 | | catadroid` [catadroid@Nightstar-tchn44.dab.02.net] has quit [Ping timeout: 121 seconds] |
08:26 | | Kindamoody is now known as Kindamoody|afk |
08:26 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has quit [[NS] Quit: Bye] |
08:28 | <@abudhabi> | TheWatcher: Ooh! |
08:28 | <~Vornicus> | aaah it rolls |
08:31 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has joined #code |
08:31 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has quit [The TLS connection was non-properly terminated.] |
08:33 | <~Vornicus> | http://imgur.com/6lyXZFI BEHOLD, MORTALS: IT MOVES |
08:41 | | macdjord|slep [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
08:41 | | mode/#code [+o macdjord|slep] by ChanServ |
08:44 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
08:57 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has joined #code |
09:17 | | * Vornicus adds decay and collisions with the side of the screen, which he'll need to factor out into collisions with actual walls, but for now this works. |
09:33 | < catadroid> | :) |
09:59 | <~Vornicus> | Guess next is a very basic map and gravity |
10:01 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
10:01 | | mode/#code [+o mac] by ChanServ |
10:04 | | macdjord|slep [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
10:26 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed] |
11:21 | | M-E [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
11:45 | < catadroid> | Go and clojure are closer idiomatically than I expected |
11:46 | <@Pi> | Both are basically polished Java, right? :) |
11:46 | | * Pi ducks |
11:47 | | * catadroid swans |
11:48 | < catadroid> | Inasmuch as Java is polished C++ |
11:48 | < catadroid> | I suppose lisps are polished mathematics |
11:49 | < catadroid> | The essence of my problem with primary type systems is that they require you to know the name of the type to implement it |
11:50 | < catadroid> | Rather than using them to identify systems that have the correct characteristics |
11:50 | < catadroid> | ...oddly C++ gets this right in its template system but for the wrong reasons |
11:50 | < catadroid> | (And then you're writing C++ templates, so you know you went wrong somewhere) |
11:54 | < catadroid> | Go's interfaces are a pure implementation of this idea so far as I can tell |
11:58 | < catadroid> | Hm |
11:58 | < catadroid> | Hmhm |
11:59 | < catadroid> | Can Haskell type classes share a function implementation? |
12:03 | < catadroid> | I guess they can have a common shared base typeclass |
12:03 | < catadroid> | But that's still prescriptive |
12:04 | < catadroid> | And uses effectively inheritance |
12:04 | < catadroid> | I think my problem is that humans abstract from concrete things and languages encourage you to concrete from abstract things |
12:04 | < catadroid> | BOOM |
12:04 | < catadroid> | That's what my brain has been trying to find words for |
12:05 | < catadroid> | Hm |
12:05 | < catadroid> | Which works fine if you have done the abstraction work |
12:05 | < catadroid> | But designing new systems encourages you to build your abstractions before you can intuit what to abstract |
12:06 | < catadroid> | This is a friction point with normal human cognition |
12:06 | | * catadroid bounce bounce bounce |
12:07 | <@Tamber> | "And, in summary, this is why everything is terrible." |
12:09 | <@Pi> | catadroid: Haskell type class instances can inherit default implementations, and it's very common to have instance definitions just use existing functions. |
12:09 | <@Pi> | e.g. fmap = map, for Functor [] |
12:09 | < catadroid> | Sure, but they're different names |
12:09 | < catadroid> | That doesn't really capture what I'm trying to get at |
12:09 | <@Pi> | Right, because they have different levels of abstraction. |
12:09 | <@Pi> | map is for lists, fmap is for any functor. |
12:10 | <@Pi> | In Haskell it's also common to discover and lift out abstractions: as soon as you start getting duplicate code, you can start lifting stuff out into "discovered" type classes. |
12:10 | < catadroid> | My point is that concrete language objects are built in service of the abstractions, not vice versa |
12:10 | <@Pi> | (for example) |
12:10 | <@Pi> | Most Haskell type classes are probably discovered this way, fairly organically. |
12:10 | < catadroid> | Aye, which is how human cognition works and I believe us good |
12:11 | < catadroid> | Is* |
12:11 | <@Pi> | It's like the three strikes and you're out rule of refactoring. |
12:11 | < catadroid> | The problem is that once you write your type class, new things are in terms of that type class and it becomes hard to mutate for iterative abstraction |
12:11 | <@Pi> | Code until you hit duplication, then start factoring out helpers, type classes, or whatnot. |
12:11 | <@Pi> | Well, you can always split the type class and modify it. |
12:12 | < catadroid> | I contend that that process becomes backwards at the point you begin making type classes concrete |
12:12 | < catadroid> | But your users are now bound to that definition of the type class |
12:12 | <@Pi> | Only for a particular version of your library |
12:12 | <@Pi> | Or however the case may be. |
12:12 | < catadroid> | Whereas the thing that cares about the abstraction isn't in the user code |
12:12 | < catadroid> | It's in the client code of those objects |
12:12 | <@Pi> | Well, if they're using the type class then surely they do care about the abstraction. |
12:13 | < catadroid> | I think I may need to write this out in long form |
12:13 | < catadroid> | I feel we are talking originally |
12:13 | < catadroid> | Orthogonally* |
12:13 | <@Pi> | Probably, yeah. |
12:14 | < catadroid> | What I think is that perhaps it is nice to be explicit about the abstraction, but it perhaps should not be required |
12:15 | < catadroid> | (I admit this is brittle in different ways) |
12:18 | <@Pi> | Well, the alternative is duck typing, a la Python and other dynamic languages with implicit interfaces. |
12:19 | <@Pi> | What gain from being explicit about the abstraction is a _huge_ amount of help from the compiler / verifier. |
12:19 | <@Pi> | It enables type-driven development, among other things. |
12:20 | < catadroid> | I'm advocating a structured approach that lets you name and type protocols and write to those protocols (by which I mean type classes) but doesn't require you to define them by name in code providing those language objects |
12:20 | <@Pi> | It sounds like you're talking about both naming them and not naming them. |
12:21 | < catadroid> | This is why I need to write a longer example and that's difficult on a phone |
12:21 | <@Pi> | In Haskell, you don't have to name them at the point of use; you can just let type inference take care of it. |
12:21 | <@Pi> | Only the class and instance definitions need mention the type class. |
12:25 | < catadroid> | That's my point - you must create instances, not infer them |
12:27 | < catadroid> | And that implies that your type classes don't share functions, they are exclusive |
12:28 | < catadroid> | It's contra to normal human intuition about abstraction, I contend |
12:33 | < catadroid> | And this is captured by Go interfaces and C++'s template duck typing to a degree |
12:33 | < catadroid> | I really need to write a longer form thing |
12:34 | < catadroid> | I think code is generally written in service of the type system rather than vice versa |
12:57 | <@Pi> | catadroid: I'm not sure inferring a type class instance can make any sense in general... |
12:57 | <@Pi> | It's only possible in very specific cases, such as mechanically deriving classes like Show and Read |
12:58 | <@Pi> | And then only because there is a well-understood and expected implementation pattern for those specific things. |
12:59 | <@Pi> | That's not true of type classes in general, though. |
13:01 | <@Pi> | The whole point of a type class is to give a name to some expected (to humans) semantics, and to give a place to hook your code on. |
13:01 | < catadroid> | What I mean is that the function writing against the type class must be explicit, but calling it attempts to infer an instance if one can be |
13:01 | <@Pi> | I would consider that as the type system working in service of the code, rather than vice versa. |
13:02 | <@Pi> | Oh, you mean the type system just inferring the concrete instance from context when calling generic code? |
13:02 | <@Pi> | That's how Haskell works, yeah. |
13:03 | <@Pi> | So you can have some generic function that just uses some type class, but at each point of use of that generic function, the type class instances get inferred based on the actual concrete types it gets called with. |
13:20 | < catadroid> | The instances cab be infered from types with the functions but not concretely naming any type instance ? |
13:21 | | macdjord|slep [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
13:21 | | mode/#code [+o macdjord|slep] by ChanServ |
13:24 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
13:34 | | * TheWatcher stabs and stabs and stabs Jenkins |
13:34 | <@Pi> | catadroid: Yeah |
13:35 | <@Pi> | The type system itself automatically infers the class instance to use based on the types at the call site. |
13:36 | <@TheWatcher> | Dear, sweet, merciful Cthulhu, how has this pile of utter putrescent excrement become such a widely-used piece of software?! |
13:37 | < catadroid> | Javascript? |
13:37 | <@TheWatcher> | Jenkins |
13:38 | <@Pi> | For lack of anything better~ |
13:55 | < catadroid> | What I mean is, I have a type T, and implement foo :: T -> int, say, and then define a typeclass Bar which must implement a foo with that signature - can i implicitly infer that T is an instance of Bar? |
13:55 | < catadroid> | Or must I implicitly instance it? |
13:55 | < catadroid> | Explicitly* |
13:55 | < catadroid> | Explicitly instance* |
13:55 | < catadroid> | My fingers are letting me down here |
14:04 | | celmin|sleep is now known as celticminstrel |
14:07 | | M-E [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds] |
14:26 | < catadroid> | WPF would be better if it were transducers and channels instead of bindings, I feel |
14:28 | | gizmore [kvirc@Nightstar-3seqvl.dip0.t-ipconnect.de] has joined #code |
14:42 | < catadroid> | It has converters that are almost exactly transducers |
14:52 | | catadroid` [catadroid@Nightstar-crneak.dab.02.net] has joined #code |
14:54 | | catadroid [catadroid@Nightstar-jptlk5.dab.02.net] has quit [Ping timeout: 121 seconds] |
15:17 | | Netsplit Deepthought.Nightstar.Net <-> Krikkit.Nightstar.Net quits: @PinkFreud |
15:21 | | Netsplit over, joins: @PinkFreud |
15:28 | < catadroid`> | Oh, they're not really transducers I suppose |
15:28 | < catadroid`> | But they could potentially be |
15:29 | | * Tamber balances a hydraulic pressure sensor on catadroid`. |
15:29 | <@Pi> | catadroid`: I'm not sure I understand that question. |
15:30 | <@Pi> | The way type classes work is that they're parameterised by a type variable, and the methods just use that type variable where relevant. |
15:31 | <@Pi> | So if you have a type class Bar with method foo, then whether its parameters are Bars or not is determined simply by whether foo's signature contains the type parameter or not. |
15:31 | <@Pi> | (Or rather, just by where the type parameter appears.) |
15:34 | < catadroid`> | I'll write it out in longer form when I get home |
15:50 | | catadroid` is now known as catadroid |
17:00 | < catadroid> | I found an essay on how people abstract things and now I can't find it again |
17:00 | < catadroid> | It was related to how people learn what a dog is and that kind of thing |
17:02 | < catadroid> | It was excellent :< |
17:07 | < catadroid> | YES found it |
17:09 | < catadroid> | It's called 'experts make bad teachers' |
17:14 | < catadroid> | How do people do blogs nowadays? |
17:29 | <@abudhabi> | All sorts of ways. |
17:30 | <@abudhabi> | Wordpress is popular. |
17:32 | < catadroid> | I need to write these thoughts somewhere so I can get them out of my head and get feedback on them |
17:33 | <&McMartin> | catadroid: Belated: I think the answer to your question is the "instance" declaration |
17:34 | <&McMartin> | Haskell figures out that you're tying T to Bar because you tell it that you're doing so. |
17:49 | < catadroid> | Yes, that's my problem with it |
17:49 | < catadroid> | I think it's contra to human intuition |
17:49 | < catadroid> | Heard at the office today: "emotion is the plural of emoji" |
17:53 | < ToxicFrog> | catadroid: for recipe blogging I use Blogger; for technical blogging I write it in markdown and use github.io, except I never remember to update it |
17:53 | < ToxicFrog> | Also, link please |
17:53 | < catadroid> | To the experts thing? |
17:53 | < catadroid> | I'll send one when I get home |
17:53 | < ToxicFrog> | I offer in trade http://sigtbd.csail.mit.edu/pubs/veryconference-paper10.pdf , "solving the dating problem with the SENPAI protocol" |
17:58 | | * catadroid has solved the dating problem with IRC |
18:05 | <&McMartin> | "You do not want senpai to notice you, because senpai is the Holy Roman Empire." |
18:05 | <&McMartin> | (Probably not from that paper) |
18:13 | <@celticminstrel> | Oh wow, Terminal trimmed scrollback buffers to conserve memory. o.o |
18:14 | <@celticminstrel> | And gained almost a gigabyte of disk space on the startup drive? |
18:14 | <@celticminstrel> | (I guess swap eats into the startup drive.) |
18:30 | | celticminstrel [celticminst@Nightstar-nhhr58.dsl.bell.ca] has quit [[NS] Quit: KABOOM! It seems that I have exploded. Please wait while I reinstall the universe.] |
18:30 | <@ErikMesoy> | ToxicFrog: this is silly |
18:47 | | celticminstrel [celticminst@Nightstar-nhhr58.dsl.bell.ca] has joined #code |
18:47 | | mode/#code [+o celticminstrel] by ChanServ |
18:55 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
18:55 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
19:20 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
19:20 | < catalyst> | Link from earlier - https://medium.com/@cscalfani/why-experts-make-bad-teachers-ccaed2df029b#.7ieznd b26 |
19:24 | <&McMartin> | *yoink* |
19:30 | < catalyst> | Please yoink |
19:30 | < catalyst> | I think it's incredibly important |
19:54 | | * McMartin finishes reading it |
19:54 | <&McMartin> | I think it overstates its case a bit, but it's a sharp demonstration. |
20:52 | <@gnolam> | Nghhgnghgh |
20:53 | <@gnolam> | DPI, MOTHERFUCKER, DO YOU SPEAK IT? |
20:54 | <@abudhabi> | DPI is the painting you speak? |
20:55 | <@gnolam> | I'm trying to use Pandoc to generate a PDF from Markdown. |
20:55 | <@gnolam> | All images are hilariously oversized. |
20:55 | <@gnolam> | There appears to be no way to change this. |
20:57 | <@gnolam> | There is a --dpi argument. It does absolutely fuck all. |
21:26 | | catadroid [catadroid@Nightstar-crneak.dab.02.net] has quit [Ping timeout: 121 seconds] |
21:29 | | Kindamoody|afk is now known as Kindamoody |
21:53 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has joined #code |
21:53 | | mode/#code [+o ion] by ChanServ |
22:00 | | * Alek bookmarks the article in his reference folder. |
22:00 | <@Alek> | SO insightful. :D |
22:05 | <@Alek> | this is pretty good too: https://medium.com/@cscalfani/pokemon-go-is-just-the-beginning-6898aac902e#.sy2j ievce |
22:12 | | gizmore [kvirc@Nightstar-3seqvl.dip0.t-ipconnect.de] has quit [[NS] Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/] |
23:20 | | Alek [Alek@Nightstar-9qtiqv.il.comcast.net] has quit [Ping timeout: 121 seconds] |
23:28 | | Alek [Alek@Nightstar-9qtiqv.il.comcast.net] has joined #code |
23:29 | | mode/#code [+o Alek] by ChanServ |
--- Log closed Thu Aug 04 00:00:29 2016 |