code logs -> 2018 -> Wed, 26 Sep 2018< code.20180925.log - code.20180927.log >
--- Log opened Wed Sep 26 00:00:50 2018
00:05 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
00:05 mode/#code [+qo Vornicus Vornicus] by ChanServ
00:06 macdjord|wurk is now known as macdjord
00:42
<&McMartin>
https://i.imgur.com/RGXWVVb.jpg
00:53 celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code
00:53 mode/#code [+o celticminstrel] by ChanServ
00:55 celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [[NS] Quit: KABOOM! It seems that I have exploded. Please wait while I reinstall the universe.]
00:55 celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code
00:55 mode/#code [+o celticminstrel] by ChanServ
01:29 Kindamoody is now known as Kindamoody[zZz]
02:17 Degi [Degi@Nightstar-cntg73.dyn.telefonica.de] has quit [Connection closed]
02:55 Alek [Alek@Nightstar-o723m2.cicril.sbcglobal.net] has quit [Connection closed]
03:03 mac [macdjord@Nightstar-grpbnp.mc.videotron.ca] has joined #code
03:03 mode/#code [+o mac] by ChanServ
03:03 macdjord [macdjord@Nightstar-grpbnp.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
04:07 celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
04:36 mac is now known as macdjord
05:12 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
05:15 Vorntastic [uid293981@Nightstar-6br85t.irccloud.com] has joined #code
05:15 mode/#code [+qo Vorntastic Vorntastic] by ChanServ
05:21
< simon_>
I remember when I celebrated having used IRC for ten years. now I've been on this channel for something like ten years.
05:26 Derakon is now known as Derakon[AFK]
05:34
< simon_>
so... I'm removing an optional boolean argument from a function because it's always true, and I realize there's two other things that can be removed because they depend on it being false and no other code in the codebase refers to it any more.
05:34
< simon_>
one of them is "legacy => 0". there's no documentation of what it does, and the commit that introduced it has the full description: Accept legacy=0 parameter
05:43
< simon_>
reading the code, it basically tells if the presence of an optional integer constraint is implied as zero or not defined. gotta hate Perl's unityping.
06:06
< simon_>
statistics => 1, # Set to prevent the cvsearcher from generating HTML
06:06
< simon_>
obviously.
07:01 himi [sjjf@Nightstar-1drtbs.anu.edu.au] has quit [Ping timeout: 121 seconds]
07:18 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
07:18 mode/#code [+qo Vornicus Vornicus] by ChanServ
07:18 macdjord is now known as macdjord|slep
07:23 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
09:36
< simon_>
Total queries: 1046
09:36
< simon_>
these SQL queries are all side-effects of a function called _get_search_results_from_solr, where solr is a nosql search engine web service.
09:37
< simon_>
998 of them are "get the user associated with the search result", one at a time. then throw them away.
09:37
< simon_>
I like how you'd think you're avoiding the database, but actually you're abusing it excessively only to throw away the result. :D
10:19 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has joined #code
11:07 Reiver [quassel@Nightstar-ksqup0.co.uk] has joined #code
11:07 mode/#code [+ao Reiver Reiver] by ChanServ
11:43 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has quit [Connection closed]
13:41 macdjord|slep is now known as macdjord|wurk
14:03 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has joined #code
14:27 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has quit [Connection closed]
15:05 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
15:05 mode/#code [+qo Vornicus Vornicus] by ChanServ
16:05 Vorntastic [uid293981@Nightstar-6br85t.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity]
16:50 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
17:54 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
19:11 Derakon[AFK] is now known as Derakon
20:05 Kindamoody[zZz] is now known as Kindamoody
21:27
<&jerith>
(Continued from #fleet, the deficiencies of Go.)
21:27
<&jerith>
Lack of generics are only one of the problems.
21:28
<&jerith>
The whole error checking clusterfuck is another.
21:28
<&Derakon>
Ah yes.
21:28
<&Derakon>
foo, err := doSomething(); if err != nil {return nil, err}
21:28
<&Derakon>
This is sane error handling.
21:28
<&Derakon>
It does not resemble manually throwing exceptions in the slightest.
21:29
<&jerith>
And you have to do it manually at every level of the call stack.
21:29
<&Derakon>
Yep.
21:30
<&jerith>
Then, of course, gofmt spreads `if err != nil { return nil, err }` across three lines.
21:31
<&jerith>
So literally half the code (by non-empty line count) in some of my Go packages is error checking.
21:31
<&jerith>
90% of which is boilerplate "toss this up to the caller".
21:31
<&jerith>
This interacts very poorly with test coverage tooling.
21:34
<&jerith>
Because there are some error handlers that literally cannot be tested (preconditions in the code paths leading up to the check preclude errors from occuring, for example) which means it's impossible to get 100% coverage.
21:34
<&jerith>
And, of course, the coverage tool doesn't support any kind of "ignore this line/block/whatever" annotation.
21:35 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
21:35 mode/#code [+qo Vornicus Vornicus] by ChanServ
21:36
<&jerith>
Heya Vornicus.
21:37
<&jerith>
You arrived mid-rant. Have an asbestos onesie.
21:37
<&McMartin>
They recognize that that's a problem too at least, but their solution doesn't fill me with confidence either
21:37
<&McMartin>
Part of my problem is that I've become very skeptical of RAII but there's no other way to avoid 'manual exception throwing"
21:41
<&jerith>
Anyway, the end result of this is that Go lacks (by design) most of the facilities I need to write working code, the tooling lacks (by design) most of the facilities I need to compensate for my cognitive limitations, and the community lacks (for reasons I have tried and failed to comprehend) the will to do anything about it.
21:42
<&Derakon>
My understanding, which admittedly is limited, is that enabling the abstractions you want without compromising on type safety is actually a super-hard problem.
21:43
<&Derakon>
They want those abstractions, but it's taken them years to figure out how to get them without the sacrifices other languages make, or something along those lines.
21:44
<&jerith>
Derakon: They get to either have `interface{}` or complain about type safety. Not both.
21:45
<&Derakon>
Heh.
21:47
<&jerith>
I'd also be more sympathetic to the "exceptions are bad" arguments if they didn't already have the worst implementation of exceptions I've ever seen.
22:33
<&McMartin>
Yeah, the argument that exceptions are bad comes from different communities. >_>
22:34
<&McMartin>
and I've recently concluded that the more OOP you are, the less persuasive the argument is.
22:34
<&McMartin>
My reading of early Go docs parrot the argument without apparently understanding it
22:36
<&jerith>
AIUI, they mostly wanted to avoid nonlocal flow control.
22:36
<&McMartin>
https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling-overview.md 's overview explains both the argument and why Go fails to solve it quite elegantly in its first example.
22:36
<&McMartin>
"This code is not nice, not clean, not elegant, and still wrong"
22:37
<&McMartin>
Yes, but they don't get why you'd want to do that.
22:38 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has joined #code
22:38
<&jerith>
Because they don't see the value of abstraction.
22:39
<&McMartin>
This document also misses why Rust doesn't have this problem despite being syntactically isomorphic to Old Go code.
22:39
<&McMartin>
Which is, in part, that Rust isn't traditionally garbage-collected and relies extremely heavily on what the C++ folks call "precise destructors"
22:40
<&jerith>
It's not syntactically isomorphic, because Rust does not allow you to skip the error handling.
22:40
<&McMartin>
It does not allow you to skip the error *checking*.
22:41
<&jerith>
Result<T, E> and Option<T> are vastly better mechanisms for this.
22:42
<&McMartin>
Agreed
22:42
<&McMartin>
But what disliking this proposal has crystallized for me is that it's not just those two, but also the Drop protocol
22:46
<&jerith>
While that's a legitimate concern, it's not one that really bothers me much.
22:47
<&jerith>
(Probably because I tend to work in languages that give me better tools to manage it.)
22:48 * McMartin nods
22:49
<&McMartin>
Neither Rust, Go, nor C++ are those languages, as it happens >_>
22:51
<&jerith>
I guess what I really mean is that it's a little higher on my hierarchy of concerns.
22:52 * McMartin nods
22:52
<&jerith>
I'll worry about it once I can write a hundred lines of code without being reduced to a gibbering wreck.
23:34
<&McMartin>
Speaking of writing units of a hundred lines of code or less, I popped in on exercism again and they've redone everything.
23:34
<&McMartin>
I'm not convinced that their new direction is going to make it more useful for *me* but they have a coherent vision now as opposed to being some dude's website
23:35
<&jerith>
Hrm. I should take a look sometime.
23:36
<&McMartin>
They seem to be designating specific mentors, but the one for Erlang has been notably unhelpful so far in my recent experiments
23:37 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has quit [[NS] Quit: Leaving]
23:37 Degi [Degi@Nightstar-asu3e2.dyn.telefonica.de] has joined #code
23:55 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds]
--- Log closed Thu Sep 27 00:00:51 2018
code logs -> 2018 -> Wed, 26 Sep 2018< code.20180925.log - code.20180927.log >

[ Latest log file ]