--- Log opened Thu Apr 19 00:00:38 2018 |
00:12 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has joined #code |
00:12 | | mode/#code [+o himi] by ChanServ |
00:21 | | macdjord|slep is now known as macdjord |
01:07 | | Jessikat [Jessikat@Nightstar-c6vsc1.dab.02.net] has joined #code |
01:13 | | celmin|sleep is now known as celticminstrel |
01:14 | | Derakon[AFK] is now known as Derakon |
01:46 | <~Vornicus> | hng. border-collapsed cells with filter hide the borders under the filtered content |
02:18 | | Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has quit [Ping timeout: 121 seconds] |
02:23 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
02:54 | | Degi [Degi@Nightstar-no3sid.dyn.telefonica.de] has quit [Connection closed] |
05:12 | | Jessikat` [Jessikat@Nightstar-m88bot.dab.02.net] has joined #code |
05:14 | | Derakon is now known as Derakon[AFK] |
05:15 | | Jessikat [Jessikat@Nightstar-c6vsc1.dab.02.net] has quit [Ping timeout: 121 seconds] |
05:16 | | celticminstrel is now known as celmin|sleep |
05:22 | | macdjord is now known as macdjord|slep |
05:29 | | Kindamoody[zZz] is now known as Kindamoody|afk |
06:11 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
06:11 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:30 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has quit [Ping timeout: 121 seconds] |
10:31 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
11:29 | | Degi [Degi@Nightstar-no3sid.dyn.telefonica.de] has joined #code |
11:42 | | Jessikat [Jessikat@Nightstar-rnscae.dab.02.net] has joined #code |
11:44 | | Jessikat` [Jessikat@Nightstar-m88bot.dab.02.net] has quit [Ping timeout: 121 seconds] |
14:42 | | Degi [Degi@Nightstar-no3sid.dyn.telefonica.de] has quit [Connection closed] |
14:47 | | Jessikat [Jessikat@Nightstar-rnscae.dab.02.net] has quit [[NS] Quit: Bye] |
15:03 | | macdjord|slep is now known as macdjord |
15:58 | | mac [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
15:58 | | mode/#code [+o mac] by ChanServ |
16:00 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
18:44 | | Jessikat [Jessikat@Nightstar-mmaddb.dab.02.net] has joined #code |
19:26 | | Degi [Degi@Nightstar-no3sid.dyn.telefonica.de] has joined #code |
20:01 | <&jerith> | I hate working with very new protocols. |
20:02 | <&jerith> | I also hate trying to figure out what C++ code is doing. |
20:02 | < [> | it could be doing literally anything |
20:02 | < [> | best language? |
20:04 | <&jerith> | Not so great when I'm trying to figure out what I should put in the "target_uri" string field in a gRPC message. |
20:07 | <&jerith> | The obvious place to discover this (after finding nothing in the docs and failing to turn up a usage example) is the tests for the thing that accepts that message, but I lost track of stuff three includes deep into the test harness setup code. |
20:07 | < [> | can you run the code? |
20:08 | < [> | step through w/ the debugger |
20:08 | <&jerith> | I don't want to debug this bloody thing, I want to talk to its API. |
20:09 | < [> | oh i thought you were examining already working code |
20:10 | <&jerith> | It is already working code, I just don't know what input it wants. |
20:10 | <&jerith> | Well, I do now. |
20:12 | <&jerith> | I found someone complaining about a similarly-named thing in another gRPC thing and got enough information from that to find another bit of code that had a comment in it with the format I should be using. |
20:15 | <&jerith> | Which, as it turns out, is "host:port" rather than any kind of URI. |
20:19 | <&jerith> | HTTP/2.0 seems to be a pretty good idea, although the tooling isn't really there yet. |
20:20 | <&jerith> | gRPC is a much less good idea, mostly because it's made out of protobuf. |
20:20 | <&jerith> | And I have never had any kind of good experience with protobuf. |
20:27 | < [> | i've read blog posts from people that love it, but i've never used it |
20:27 | <&McMartin> | protobuf may be one of those things that is fantastic if someone else is using it |
20:28 | <&jerith> | Its two biggest problems are that it's too flexible and that it's not flexible enough. |
20:29 | <&jerith> | It's sufficiently flexible that you need codegen for packing and unpacking it, and only a very small number of languages have decent codegen. |
20:29 | <&McMartin> | Given the world I generally live in I often find myself saying codegen stuff is what Make is for, but I acknowledge that this is not a universal or scalable solution. |
20:31 | <&jerith> | McMartin: I don't object to codegen in general. I object to a nontrivial input format and complicated packing/unpacking rules. |
20:33 | <&jerith> | The inflexibility is that it doesn't support certain kinds of composition very well, and thus you end up with vast libraries of wrappers for various data types. |
20:34 | <&McMartin> | Yeah |
20:34 | <&McMartin> | Carelessness on the C++ end with a JSON-based protocol over here has resulted in an implausibly large generated datatype file |
20:35 | <&jerith> | So you're not just feeding your own .proto files into the codegen, you're also feeding half a dozen third-party .proto files in at the same time. |
20:35 | <&McMartin> | One of my endless backburner projects is how to wipe most of that out while retaining the fancy guarantees that C++'s type checker gives me. |
20:37 | <&jerith> | My very favourite part of the thing I'm working with (I'll mop up that sarcasm later) is the "any" wrapper that consists of a "type_url" and a "value", both strings. |
20:38 | <&jerith> | So after you've unpacked the message you received, you need to look up the type and manually unpack the value. |
20:39 | < [> | :/ |
20:39 | <&jerith> | The thing I'm working on at the moment has both JSON and gRPC versions of the API. |
20:41 | <&jerith> | The protobuf constructs are *significantly* more verbose than the JSON. They nest about twice as deep. |
20:42 | <&jerith> | The packed binary is nice and small, but the code that operates on the data is pretty bloody awful. |
20:43 | <&jerith> | To the point where I've already written my own packing/unpacking layer around the generated packing/unpacking layer. |
20:50 | < Vorntastic> | How implausibly large is implausibly large |
20:56 | <&McMartin> | 30 KLOC |
20:56 | <&McMartin> | Most of which, admittedly, does not actually turn into actual bytes in the binary |
20:57 | <&jerith> | Gotta love a message format that has four different kinds of 32-bit signed integer and still needs a separate wrapper type for a 32-bit signed integer. |
21:04 | < Vorntastic> | What happens to the "unused" code? |
21:06 | <&McMartin> | It's not that it's unused, it's that it's things like forward declarations, type definitions, blank lines, lines with just braces on them, etc. |
21:06 | < Vorntastic> | Ah, well |
21:08 | <&McMartin> | We could save a few hundred KB by being more aggressive about what the compiler is not allowed to generate, but even on mobile devices a few hundred KB of app size is noise |
21:19 | | Kindamoody|afk is now known as Kindamoody |
21:53 | | Degi [Degi@Nightstar-no3sid.dyn.telefonica.de] has quit [[NS] Quit: Leaving] |
22:12 | | Kindamoody is now known as Kindamoody[zZz] |
23:12 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Connection closed] |
23:50 | | * Vornicus decides to write a simple undo system |
--- Log closed Fri Apr 20 00:00:40 2018 |