--- Log opened Fri Jan 05 00:00:00 2018 |
--- Day changed Fri Jan 05 2018 |
00:00 | <&McMartin> | (This is usually a much slower channel with occasional bursts of activity) |
00:00 | <&[R]> | I think I'm the most JSy guy here, and I don't touch that stuff. I do think I know a guy who does Angular though. He's in irc.slashdot.org#codelove |
00:01 | <&[R]> | He definately does that one Facebook lib, forget the name off the top of my head |
00:04 | < [> | react |
00:04 | <&[R]> | Yes |
00:04 | <&[R]> | That's the one |
00:04 | < [> | my team is moving from .net/mvc5 to node/angular4 |
00:04 | <&[R]> | Fun |
00:05 | < [> | i'm a little nervous about it bc i dont like what i've seen so far on either the noke or angular side :/ |
00:05 | < [> | node8 |
00:05 | <&[R]> | Angular on the backend stuff too? |
00:05 | < [> | i don't know enough about it to answer that. we haven't started developing anything with it yet, just gearing up atm |
00:05 | <&[R]> | Ah |
00:06 | <&[R]> | I can field node.js questions, but if you're using some backend lib, I can't help much. They pretty much all use a routing model, which I dislike. |
00:10 | <&[R]> | Though it's very nice if you want to make a REST-based API |
00:10 | <&Reiver> | Welcome, [! |
00:11 | <&Reiver> | (I must assume that stops feeling odd... eventually...) |
00:11 | <@TheWatcher> | names |
00:11 | <@TheWatcher> | I hate them |
00:11 | <&Reiver> | As McMartin noted, this channel is low volume (read: Can go days without anything), but when something is discussed it's usually worthwhile |
00:12 | <&Reiver> | Historically this place was effectively neutral territory for a whole /bunch/ of programmer types all across various Nightstar channels, wherein there was an awful lot of copy-pasting of conversations between each other because A needed expertise that Z had, but neither shared a channel etc |
00:13 | <&Reiver> | (It was actually founded to let a friend of mine find someone to help them solve an interesting problem in Python) |
00:13 | <&Reiver> | (People very rapidly realised that a 'this is where you go to poke at code things' channel was in fact fabulously productive~) |
00:13 | < [> | thanks for the welcome |
00:14 | < [> | i dabble in all sorts of things as a hobbyist, my work is not nearly as technical as i'd like |
00:14 | | * TheWatcher tries to decide whether this should be YogSothoth::Sphere::Irssi or go for a general YogSothoth::Sphere::IRCUtils hrrrms |
00:14 | | * Reiver eyes TheWatcher |
00:14 | | * Reiver runs screaming. |
00:39 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has quit [Connection closed] |
00:44 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has joined #code |
00:44 | | mode/#code [+o Alek] by ChanServ |
01:02 | | celticminstrel [celticminst@Nightstar-m9434e.dsl.bell.ca] has joined #code |
01:02 | | mode/#code [+o celticminstrel] by ChanServ |
01:06 | | Degi [Degi@Nightstar-5rb14m.dyn.telefonica.de] has quit [Connection closed] |
01:34 | | Derakon[AFK] is now known as Derakon |
01:36 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
01:38 | <&[R]> | https://danluu.com/input-lag/ |
01:39 | <&[R]> | Emmy: I keep seeing your nick and think you might be someone else. You aren't known as Q elsewhere are you? |
01:40 | < Emmy> | Nope |
01:40 | <&[R]> | Alrighty |
01:41 | <&[R]> | Interesting how in all tests Linux > Windows for latency |
01:41 | < [> | heh |
01:43 | <&McMartin> | I wonder if that's into an X/Wayland terminal or if it's onto a direct TTY |
01:43 | <&[R]> | iPhone freaking kills in the mobile side |
01:43 | <&McMartin> | Also I'm kind of surprised that the IIe, PET, VIC-20, etc aren't all Exactly 26 ms. |
01:44 | < [> | i'd be curious to see results of other browsers on android |
01:44 | < [> | i think the chrome browser kinda sucks |
01:45 | <&[R]> | "Computer results were taken using the “default” terminal for the system (e.g., powershell on windows, lxterminal on lubuntu" |
01:45 | <&McMartin> | Aha, OK |
01:45 | <&[R]> | McMartin: ^ there you go |
01:45 | <&McMartin> | Yeah, missed that |
01:45 | <&[R]> | It's way down |
01:45 | <&McMartin> | You can tell when I'm just skimming >_> |
01:45 | <&[R]> | Like near bottom |
01:45 | <&[R]> | I was skimming specifically for that answer :po |
01:47 | <&McMartin> | I should be able to find out why it takes 4 frames for a PET to process a key |
01:47 | <&McMartin> | I didn't think CBM BASIC was that slow |
01:47 | <&McMartin> | (And in particular, CBM and Applesoft BASIC were both IIRC forks of the MS BASIC of the time) |
01:48 | <&[R]> | He's apparently got a ton of research on this topic |
01:48 | <&[R]> | Or at least he writes a ton about it |
01:48 | <&McMartin> | Oh, I see |
01:49 | <&McMartin> | It takes 10ms for the CRT to change color |
01:49 | <&McMartin> | So I bet the PET case is "its wacky builtin green screen has high inertia" |
01:49 | < [> | lol |
01:50 | <&McMartin> | PET and Apple both will be able to command a letter to display simply by writing One Byte To RAM and the video controller chips will cover the rest |
01:51 | <&McMartin> | There's more work to do because CBM maintains a separate edit buffer and stuff and maybe it messes with those before writing video memory, but that's not four frames of work. |
01:51 | <&[R]> | PET? |
01:51 | <&[R]> | Oh Commodore? |
01:52 | <&McMartin> | Yeah |
01:53 | <&McMartin> | They're showing it as twice as slow as the 2e, which seems wacky |
01:53 | <&McMartin> | C64 felt infamously laggy but a lot of that was the keyboard scan was inconsistent |
01:53 | <&McMartin> | If it worked out that the key was *there* things would go fine |
01:56 | <&[R]> | Change in topic, I'm looking at setting up an automatic build system, but have never actually used anything like that before. I need something that'll run on Linux, and work with nearly anything (I'll be building packages for inclusion in a software repo, so code will be nearly every language) |
01:57 | <&McMartin> | Do you care about non-Unix systems? |
01:58 | <&[R]> | I don't mind doing a bit of setup (in the range of setting up stuff like CFengine, Nagios, etc) |
01:58 | <&[R]> | Not really |
01:58 | <&McMartin> | Okay. |
01:58 | <&McMartin> | autotools can be made to work but is a pain because it's got a strong gcc focus |
01:58 | <&McMartin> | The only other similarly generic tools I'm aware of are SCons and CMake. |
01:59 | <&McMartin> | Oh wait, that's not what you're asking, is it |
01:59 | <&McMartin> | You're asking about systems like Jenkins. |
02:00 | <&McMartin> | I've had acceptable experiences with both Jenkins and Buildbot, and I've heard of Cruise Control. |
02:02 | <&McMartin> | Buildbot's stuff it can build is basically "can you write a command line command that builds it" and it operates as a series of python modules |
02:02 | <&McMartin> | Here's a chart of things most of which I have never heard of: https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software |
02:05 | <&[R]> | Cool, I'll poke around with BuildBot then, thanks |
02:05 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds] |
02:06 | <&[R]> | Know if BB can handle a repository that holds multiple build targets (and that it only needs to build the ones that changed)? |
02:09 | <&McMartin> | Absolutely. |
02:09 | <&McMartin> | We used it at work, tied to an SVN repository with dozens of branches and each branch had between 1 and 5 products, each of which was built individually |
02:09 | <&McMartin> | Setting that up was nontrivial, I think, but it only had to be done once, and that happened before I arrived. |
02:10 | <&McMartin> | (Also it had to farm it out to multiple build machines, because the Windows Device Driver product and the Macintosh Desktop Application product needed to happen on the machines with the correct OS installed, etc.) |
02:10 | <&[R]> | Perfect |
02:11 | <&McMartin> | Our server team (Java stuff) used Jenkins at my previous employer, and my current one uses it to build apps for both iOS and Android. |
02:11 | | * [R] was planning on having 3 instances of it (arm, i686 and x86_64) |
02:11 | <&McMartin> | But I never directly dealt with either, while I had Mandatory Bonus Fun Involuntary Build Engineer Duty at the last place for client stuff |
02:13 | <&McMartin> | For packaging you probably don't even need the multihost stuff; you can just use cross tools. |
02:13 | <&[R]> | Hmm, virtualenv is being touted as a container-like solution (alternative being Docker), do I /need/ virtualenv? I recall having problems with it in the past. |
02:13 | <&[R]> | I'd rather use multi-host |
02:13 | | * McMartin nods |
02:14 | <&[R]> | https://docs.buildbot.net/current/tutorial/firstrun.html <-- looking at this FYI |
02:14 | <&McMartin> | I don't know about details at that level; I saw it as a machine I could ssh into if needed, but normally it was reading its scripts out of a repo |
02:14 | <&McMartin> | Nod |
02:14 | <&McMartin> | Note that this would have been like 5 years ago for my experience |
02:14 | <&McMartin> | And most of that was "check out repo full of Python, edit or add some files, commit it, that system's cron stuff did the rest" |
02:15 | <&McMartin> | I'm unfamiliar with both virtualenv and docker, but as noted, I wasn't the one standing the instance up |
02:19 | <&[R]> | Alright, I'll poke around |
02:23 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
03:40 | | celticminstrel [celticminst@Nightstar-m9434e.dsl.bell.ca] has quit [[NS] Quit: KABOOM! It seems that I have exploded. Please wait while I reinstall the universe.] |
04:09 | | * McMartin does some mental and lexical gymnastics to remove a dependency on std::enable_shared_from_this<>. |
05:01 | | Kindamoody[zZz] is now known as Kindamoody|afk |
05:16 | <@himi> | Jenkins isn't horrible, but it's not wonderful |
05:24 | <@Alek> | Leeroy? |
05:37 | | VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has quit [Connection reset by peer] |
05:45 | | Derakon is now known as Derakon[AFK] |
06:13 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
06:13 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
06:43 | | Vornlicious [Vorn@Nightstar-4oeeqi.sub-174-210-0.myvzw.com] has joined #code |
06:45 | | Vorntastic [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
06:49 | | himi [sjjf@Nightstar-dm0.2ni.203.150.IP] has quit [Ping timeout: 121 seconds] |
07:07 | <&McMartin> | Man, that is ridiculous |
07:07 | <&McMartin> | I spent today rewriting a 500-line module and now the binary as a whole is eight megabytes smaller. |
07:07 | <&McMartin> | Let this be a lesson to you: Type Erasure is your friend. |
07:32 | <&[R]> | As in you removed the type safety? |
07:33 | <&McMartin> | As it happens, I didn't! |
07:34 | <&McMartin> | I wrote a less type-safe core implementation and then made the templated implementation do a layer of typechecking and casting over calls to it. |
07:34 | <&McMartin> | External API did not change at all. |
07:35 | <&[R]> | Weird |
07:35 | <&McMartin> | Reworking it so that it did not inherit from std::enable_shared_from_this<> and thus also did not require any vtables saved one of those eight megabytes, but that *did* change the API slightly. |
07:36 | | * [R] should really play with the new C++ stuff |
07:36 | <&McMartin> | That class was not as small as one might hope and it was instantiated with thousands of different types; it was being used in part to impose compiler-checkable type safety on an complicated RPC protocol. |
07:36 | <&[R]> | It's all so alien though |
07:36 | <&[R]> | Ah |
07:37 | <&McMartin> | Nothing I did except for std::enable_shared_from_this was anything that wasn't in C++98, and that part was just part of using the library's reference-counting features instead of rolling my own. |
07:37 | <&[R]> | Yeah, each type of a template class is its own class when compiled isn't it? |
07:37 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Connection closed] |
07:37 | <&McMartin> | Yep. |
07:37 | <&McMartin> | Which is why Having No Vtables is really important, which means not inheriting from anything and no virtual methods |
07:38 | <&McMartin> | And then also really important is that all your methods should then be basically inline and also be One Function Call To Something Else with some casts the compiler looks at but generates no code for |
07:38 | <&McMartin> | And then your binary isn't type-aware but the source was. |
07:38 | <&[R]> | There a way to see a program's vtable or other such things? |
08:17 | <&McMartin> | Kinda. It's part of the ELF format |
08:17 | <&McMartin> | So the binutils will dump lots of information but working out what's which can be tough |
08:18 | <&McMartin> | Fortunately there's a tool for sorting that material out |
08:18 | <&McMartin> | Unfortunately, it was named by the Internet, and thus is called "Bloaty McBloatface" |
08:18 | <&[R]> | Seriously? |
08:18 | <&McMartin> | Which is where we'd learned that shitloads of our too-large iOS app was expending space on run-time type information and similar data. |
08:18 | <&McMartin> | Seriously. |
08:18 | <&McMartin> | It's a pretty solid tool, works on Mach-O binaries too. |
08:18 | <&McMartin> | https://github.com/google/bloaty |
08:19 | <&[R]> | https://github.com/google/bloaty |
08:19 | <&[R]> | Wow |
08:19 | <&McMartin> | We never actually used std::dynamic_cast<> for anything, so we saved some tens of MB just by turning RTTI off |
08:20 | <&McMartin> | But really we should be rearchitecting bits of that so that it isn't generated to begin with and what *is* generated instead can be wiped out by dead code eliminators |
08:20 | <&McMartin> | As it stands, I just have occasional space-optimization sprees whenever we start getting close to levels where app stores complain |
08:21 | <&McMartin> | Today went rather longer than I would normally have liked but I'm pretty happy with the results, and there's one other module I think we might be able to profitable attack with the same techniques. |
08:21 | <&McMartin> | *profitably |
08:51 | < Vornlicious> | I always find it interesting how much variation you get in compiled code from small-looking changes |
09:02 | <&McMartin> | While this actually also shrank the total source code size, it's still +684, -796. |
09:02 | <&McMartin> | I can't call that a small change |
09:02 | < Vornlicious> | This is true |
09:03 | <&McMartin> | (37 files changed, too, but most of those are like +4,-4 as I address some minor changes in the API now that it doesn't maintain its own refcount) |
12:23 | | Reiver [quassel@ServerAdministrator.Nightstar.Net] has quit [Connection closed] |
12:23 | | NSGuest34587 [quassel@Nightstar-ksqup0.co.uk] has quit [Connection closed] |
--- Log closed Fri Jan 05 12:23:57 2018 |
--- Log opened Fri Jan 05 12:24:39 2018 |
12:24 | | TheWatcher [chris@GlobalOperator.Nightstar.Net] has joined #code |
12:24 | | Irssi: #code: Total of 30 nicks [21 ops, 0 halfops, 0 voices, 9 normal] |
12:24 | | mode/#code [+o TheWatcher] by ChanServ |
12:25 | | Orthia [quassel@Nightstar-ksqup0.co.uk] has joined #code |
12:25 | | mode/#code [+o Orthia] by ChanServ |
12:25 | | Irssi: Join to #code was synced in 64 secs |
12:29 | | Orthia [quassel@Nightstar-ksqup0.co.uk] has quit [Ping timeout: 121 seconds] |
12:32 | | VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has joined #code |
12:32 | | mode/#code [+ao VirusJTG VirusJTG] by ChanServ |
12:39 | | Degi [Degi@Nightstar-5rb14m.dyn.telefonica.de] has joined #code |
12:39 | | Reiver [quassel@Nightstar-ksqup0.co.uk] has joined #code |
12:39 | | mode/#code [+ao Reiver Reiver] by ChanServ |
12:39 | | Orthia [quassel@Nightstar-ksqup0.co.uk] has joined #code |
12:39 | | mode/#code [+o Orthia] by ChanServ |
13:08 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
13:08 | | mode/#code [+o himi] by ChanServ |
13:21 | <&ToxicFrog> | I didn't realize you could traget iOS with C++ |
13:23 | | * TheWatcher stab and stab and stab API documentation that doesn't tell you what'll happen if a function fails |
13:24 | <@TheWatcher> | Does it die? return undef? Make things explode in a shower of oranges? |
13:24 | <@TheWatcher> | Summon Azathoth? |
13:39 | < Vornlicious> | I don't think Bob will ever live that down |
14:24 | <@gnolam> | <TheWatcher> Damn those past selves. |
14:24 | <@gnolam> | Ah, the coder's version of Titivillus: the Pasts Elf. |
15:17 | | Vornlicious [Vorn@Nightstar-4oeeqi.sub-174-210-0.myvzw.com] has quit [Connection closed] |
15:17 | | Vorntastic [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
15:22 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
15:22 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
15:27 | | Degi [Degi@Nightstar-5rb14m.dyn.telefonica.de] has quit [Connection closed] |
15:28 | | Irssi: #code: Total of 35 nicks [27 ops, 0 halfops, 0 voices, 8 normal] |
15:40 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
15:40 | | mode/#code [+o Syloq] by ChanServ |
15:41 | | Vash [Vash@Nightstar-1l3nul.res.rr.com] has quit [Connection closed] |
16:07 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
17:26 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
17:26 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
18:15 | | Kindamoody|afk is now known as Kindamoody |
18:41 | | gnolam [lenin@Nightstar-ego6cb.cust.bahnhof.se] has quit [[NS] Quit: Combatting Chernobyl and Blofeld] |
18:43 | | gnolam [lenin@Nightstar-ego6cb.cust.bahnhof.se] has joined #code |
18:43 | | mode/#code [+o gnolam] by ChanServ |
19:34 | <&McMartin> | ToxicFrog: Apple has gone to considerable lengths to permit C++ and Objective-C to interoperate as closely as their semantics allow |
19:35 | <&McMartin> | Which isn't very but is still quite good. |
19:36 | <&McMartin> | (The object models are entirely different, but C++ can treat ObjC objects like other pointers, the reference counters can hand data off between them, and most importantly *ObjC Blocks and C++ std::function objects are interchangable*) |
19:36 | <&McMartin> | Though captures work slightly differently between the two so it's not just a syntax choice, but in three years of recklessness that's burned me maybe twice. |
19:44 | <&ToxicFrog> | Neat. |
19:59 | <&McMartin> | That said, despite the fact that they currently both use clang, Android and iOS system services are far enough apart that I don't think "C++ core, wrap it with Java or ObjC as needed" is a good an idea as it sounded three years ago. |
20:25 | | Kindamoody is now known as Kindamoody|afk |
20:53 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has quit [Ping timeout: 121 seconds] |
21:13 | | Kindamoody|afk is now known as Kindamoody |
21:20 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Connection reset by peer] |
21:22 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
21:22 | | mode/#code [+o Kindamoody] by ChanServ |
21:37 | | Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Connection reset by peer] |
22:04 | | Degi [Degi@Nightstar-5rb14m.dyn.telefonica.de] has joined #code |
22:18 | | Kindamoody|autojoin [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code |
22:18 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
22:18 | | Kindamoody|autojoin is now known as Kindamoody |
22:42 | | Kindamoody is now known as Kindamoody[zZz] |
23:14 | | Vornicus [Vorn@Nightstar-1l3nul.res.rr.com] has joined #code |
23:14 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
23:35 | | Degi_ [Degi@Nightstar-k7gv4o.dyn.telefonica.de] has joined #code |
23:38 | | Degi [Degi@Nightstar-5rb14m.dyn.telefonica.de] has quit [Ping timeout: 121 seconds] |
--- Log closed Sat Jan 06 00:00:30 2018 |