--- 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 |