code logs -> 2016 -> Wed, 03 Aug 2016< code.20160802.log - code.20160804.log >
--- 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
code logs -> 2016 -> Wed, 03 Aug 2016< code.20160802.log - code.20160804.log >

[ Latest log file ]