code logs -> 2018 -> Fri, 05 Jan 2018< code.20180104.log - code.20180106.log >
--- 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
code logs -> 2018 -> Fri, 05 Jan 2018< code.20180104.log - code.20180106.log >

[ Latest log file ]