Twitter: @ewenmcneill -- March 2021

Sun Feb 28 19:31:27 +0000 2021 (#)

RT @TubeTimeUS: a short but highly technical history of DRAM - dynamic random access memory! 🧵

Mon Mar 01 00:51:26 +0000 2021 (#)

Replying to @ewenmcneill

For anyone else finding this thread, the major challenge on older systems is salt 300x needs a newer “msgpack” (0.6). There’s an amd64 binary deb in the Saltstack repo, but if you’ve got 32-bit (i686) VMs you’ll have to build the binary deb yourself.

Mon Mar 01 00:54:29 +0000 2021 (#)

Replying to @ewenmcneill

salt 3001 and 3002 seem to need a few other newer debs too.

But salt 3000.8 will install on Debian Stretch just with a backport of python3-msgpack 0.6, and seems to run okay on the Python 3.5 in Debian Stretch.

So 3000.8 is a good short term fix (6 months support left).

Mon Mar 01 02:31:07 +0000 2021 (#)

RT @theavalkyrie: Holy shit. I've always wondered why GTA Online takes so long to load.

They're parsing a 10MB JSON file with the world's…

Mon Mar 01 02:37:33 +0000 2021 (#)

Replying to @freakboy3742

Patreon does 2FA via email (at least for “browsers it doesn’t recognize”, eg mine because most cookies don’t live long on my computer).

Those links at least work every time once they arrive. But the “login, wait for email, click link” cycle is.... painfully slow :-(

Mon Mar 01 06:27:23 +0000 2021 (#)

RT @NickFalacci: My long-awaited (by two people) CITIZEN KANE story:

After NYU, I was working in a film restoration lab in NYC. It had tw…

Mon Mar 01 08:38:47 +0000 2021 (#)

“Actually Portable Executable” which is a Unix 6e shell script, PE executable, Linux/*BSD/MacOS binary, and BIOS. At once. And a zip too, of course. As implemented in Cosmopolitan.

(Via a tweet which I seem to have misplaced.)

Mon Mar 01 08:45:49 +0000 2021 (#)

Replying to @ewenmcneill

With a “run anywhere” libc and some great ANSI art.

(Having embedded Python in shell and vice versa I could almost imagine using this for something...)

Mon Mar 01 09:41:16 +0000 2021 (#)

Replying to @ewenmcneill

FTR I rediscovered the original thread about Cosmopolitan / Portable Executables, which has some additional links in it.

Tue Mar 02 03:40:10 +0000 2021 (#)

RT @tarah: For any app that asks for your Contacts list: unless you contact each & every person in your list & ask their permission to shar…

Tue Mar 02 03:45:05 +0000 2021 (#)

RT @gnat: Ok, who had "Pride parade features Director-General of Health in a drum and bass remix of pandemic advice" on their bingo card? h…

Tue Mar 02 04:13:59 +0000 2021 (#)

RT @chrisjrn: Thinking that anything can be "apolitical" just means you've never experienced your life be negatively impacted by other peop…

Wed Mar 03 01:11:52 +0000 2021 (#)

TIL that latitude and longitude shouldn’t be stored in floating point fields (at least if you have 6 decimals of precision to start with).

(I discovered this because the old format and new format of a data file a client is sent didn’t quite match exactly.)

Wed Mar 03 01:14:50 +0000 2021 (#)

Replying to @ewenmcneill

After much investigation I’ve been able to confirm the latitude or longitude (sometimes both 😢) differ by one hundredth thousandth between the old and new files.

Always, in all mismatches. And floating point representation of problem values have many recurring digits 😬

Wed Mar 03 01:21:06 +0000 2021 (#)

Replying to @ewenmcneill

I’m not entirely sure where the floating point storage is happening, eg in the source database or the export format (one of the formats is Excel which is renowned for “adjusting” data). Fortunately Excel is the “old” format here....

Wed Mar 03 01:24:18 +0000 2021 (#)

Replying to @ewenmcneill

FTR many databases have geographic point types, and you should use those. Or maybe an exact precision decimals type. Or a string if you have nothing else.

And 1/100,000 of a degree is around 1m, so usually a small error. But it makes data validation unnecessarily hard.

Wed Mar 03 01:32:46 +0000 2021 (#)

Replying to @kiwibrew

Almost certainly not.

But “please use this new export format” / “send us the same data in old and new formats” is way easier to validate if you don’t introduce gratuitous random differences along the way.

(Way easier here is “would have saved me 2 hours checking differences”)

Wed Mar 03 01:36:58 +0000 2021 (#)

Replying to @LaurieFleming

Yeah. But hey at least we have fractional degrees now :-)

(Yes, same new data export that previously sent latitude/longitude with just the integer part. So this is a lot better! Just... frustratingly difficult to validate.)

Wed Mar 03 01:51:43 +0000 2021 (#)

Replying to @kiwibrew

TBH anything working with latitude/longitude should have a geographic type. And data interchange should probably be done via consistent export to a text string with the same precision and rounding/truncation every time.

Mixing round() and trunc() makes me sad 😢

Wed Mar 03 05:07:16 +0000 2021 (#)

“[S]emVer is a TL;DR of the changelog”.

Ie it tells you about the magnitude of expected/intentional changes. But it cannot tell you the negative, that “upgrading is safe”, because lots of potential impacts could be overlooked. Test updates, regularly.

Wed Mar 03 05:14:44 +0000 2021 (#)

RT @jillrouleau: 🧵but also THIS

Wed Mar 03 05:43:41 +0000 2021 (#)

Replying to @kiwibrew

While I agree that 3m x 3m grid is about the useful measurement resolution (eg from GPS), I think there’s all sorts of edge cases in binning GPS values into a fixed 3m x 3m grid, that could cause surprise moves to adjacent grid cells.


Wed Mar 03 05:48:02 +0000 2021 (#)

Replying to @kiwibrew

As problematic as the artificial resolution of 6 decimals is, at least with 6 decimal I can make a reasonable guess why the value shifted. Whereas with a fixed 3m x 3m grid the edges are close to measurement resolution, but result in a less “decodable” output change.


Wed Mar 03 05:48:44 +0000 2021 (#)

RT @pjf: If you're ever designing a system of any type, and it contains a weakness you think nobody will exploit because "who would possibl…

Wed Mar 03 06:32:14 +0000 2021 (#)

SSH over Wireguard, with dynamic key authentication. All as a user space application, just sending appropriately formatted UDP packets.

“All problems in computer science can be solved by another level of indirection” — Butler Lampson

Wed Mar 03 06:40:20 +0000 2021 (#)

Replying to @kiwibrew

Fortunately I’d entirely missed the NZ Govt doing that!

Basically all geo data I deal with these days is implicitly WGS84, with 6 decimal degrees. It’s okay, give or take supplier export bugs, and projection vagueness around NZ, if you treat it as “close enough to see thing”.

Wed Mar 03 06:56:29 +0000 2021 (#)

Replying to @ewenmcneill

And “coming soon” a SOCKS5 proxy into Wireguard in userspace for regular TCP.

Down thread, it seems like the obvious “API for Wireguard in userspace as a library” is already being worked on, so you can link in your networking code directly :-)

Thu Mar 04 19:31:42 +0000 2021 (#)

A tale from the 2GB to 4+GB disk transition days, when field upgradable disk firmware was somewhat more DIY...

Fri Mar 05 22:10:51 +0000 2021 (#)

Replying to @ExcitedLeigh

FWIW I use mute quite frequently too, and would really miss it going away. It’s annoying enough that it’s often inexplicably a tiny hard to locate button.

But there’s still at least 33 unnecessary buttons on my TV remote, even after keeping some buttons for setup menus.

Sat Mar 06 22:40:43 +0000 2021 (#)

RT @RealSexyCyborg: Now live for everyone!

Cyberpunk Ultrasonic Microphone Jammer- with @JLCPCB!

I also show off the new @Creality3dprin…

Sun Mar 07 07:53:49 +0000 2021 (#)

Glasgow is a FPGA/Open Source powered hardware interface board which makes hardware interface protocols into software problems.

The talk about it from FOSDEM 2021 is a great overview of the architecture. WebM video link in QT, and link to YouTube copy of the video down thread.

Sun Mar 07 08:29:18 +0000 2021 (#)

Replying to @pjf

Arguably if one were willing to plant the tulip bulbs (which granted did become less common during The Mania) they were actually carbon negative. Those were the days!

Sun Mar 07 21:09:08 +0000 2021 (#)

Microsoft Teams: Password (8-character minimum; case sensitive)

Me: enters 25 character password

Microsoft Teams: The password does not meet the complexity requirements.

Me: ?!

Me: Can I buy a vowel?

Microsoft Teams: ...

Me: ...

Sun Mar 07 21:12:57 +0000 2021 (#)

Replying to @ewenmcneill

Me: makes password shorter, while adding a character class

Microsoft Teams: The password is too long.

Me: ?!

Sun Mar 07 21:39:47 +0000 2021 (#)

Replying to @ewenmcneill

Because I’ve been doing computers a long time, I eventually guessed an acceptable password. It appears “8 character minimum” should read “8 to 16 character password, with 3 to 4 character classes”.

16 characters seems... rather short 😬

Mon Mar 08 10:17:57 +0000 2021 (#)

Replying to @Erstejahre

TBH I don’t think POSIX every really embraced the idea of a user being in more than a handful of groups. Especially at once. The POSIX API makes more sense if one assumes the use of a “set active group” command to change the one active group (which 30 year old unixes had).

Mon Mar 08 10:22:56 +0000 2021 (#)

Replying to @Erstejahre

There’s been about 20 years of nsswitch during which some “I just want the GIDs (or names) for all this user’s active groups” API could have been added, as a (common Linux/BSD) extension. Which could be answered more efficiently when stored usefully (even an inverted index).

Mon Mar 08 10:27:25 +0000 2021 (#)

Replying to @Erstejahre

Yes, that too. Tweets are (still) to short for all details :-) (But if “active groups” == 1, and command gets group to set, you can getgrbynam.)

FWIW I feel your pain. I have a client with this exact problem at present, and 40ms RTT on each call. Performance is... not great.

Mon Mar 08 10:37:55 +0000 2021 (#)

Replying to @Erstejahre

And yet here we are :-)

Change is apparently hard :-/

Tue Mar 09 04:24:55 +0000 2021 (#)

Replying to @aurynn

TBH a couple of years ago I concluded “the web” really was its own overlay network, implemented with HTTP over TLS over TCP or UDP over IPv4 (with NAT) or IPv6.

The world seems to have chosen “the web” instead of “the Internet” (at least the 1990s version) as its comms platform.

Tue Mar 09 08:21:40 +0000 2021 (#)

Replying to @aurynn

Yes I feel like the point that there were corporate firewalls everywhere with tight rules, and home gateways with NAT (making inbound hard) is the point the Internet ossified.

And the “route around” was building an overlay network (“the web”, HTTPS as transport for everything).

Fri Mar 12 05:22:20 +0000 2021 (#)

Pretty unimpressed with the (now VodafoneNZ subsidiary) ISP of my mother’s home phone/fibre Internet connection.

Service went out Wednesday early afternoon; ISP supplied home gateway would no longer power on. ISP finally sent replacement Thursday, which arrived late Friday. 1/n

Fri Mar 12 05:25:35 +0000 2021 (#)

Replying to @ewenmcneill

When I connected the “pre configured” replacement, it didn’t connect to the network. So still no phone, no Internet.

Called the ISP helpdesk at 17:00 exactly, to be told their helpdesk hours were Monday to Friday “8am to 5pm”!!

So 2 more days of no phone/Internet 😢 2/n

Fri Mar 12 05:27:29 +0000 2021 (#)

Replying to @ewenmcneill

I did manage to find a username/password to log into the home gateway. And the logs show the PPPoE authentication is failing. So either it didn’t get preconfigured properly, or someone forgot to update something on the ISP systems to match. 3/n

Fri Mar 12 05:29:41 +0000 2021 (#)

Replying to @ewenmcneill

All this does nothing to reduce my prejudice against Internet delivery via PPPoE over Ethernet over Fibre. There’s more useful diagnostics with just Ethernet VLANs. And you don’t give up Ethernet MTU or PPP overhead.


Fri Mar 12 05:31:41 +0000 2021 (#)

Replying to @ewenmcneill

Ironically this ISP was literally the only choice ~10 years ago when my parents moved into the then brand new house. It’s a “just prior to UFB” fibre connection. Which had the same ONT/home gateway from the beginning.


Fri Mar 12 05:36:15 +0000 2021 (#)

Replying to @ewenmcneill

All preconfigured and installed on behalf of Chorus 10 years ago. So it’s not like there’s any record of what the Internet login username/password is supposed to be that can be checked by me. (I’d hoped the ISP got that right.)


Fri Mar 12 05:39:19 +0000 2021 (#)

Replying to @ewenmcneill

My guess is that the old pre UFB configuration didn’t 100% match how UFB connections get set up now. Or the clearly repurposed home gateway sent down didn’t get fully reconfigured before being shipped, despite taking 24h to do that. 😔


Sat Mar 13 01:44:17 +0000 2021 (#)

Close inspection of the ISP’a contact page implied an “urgent faults” on call daytime weekend. With the help of the on call support person we were able to get phone/Internet working early this afternoon. Phew.

Thanks to on call! :-)

Sat Mar 13 01:47:58 +0000 2021 (#)

Replying to @ewenmcneill

AFAICT the problem with the replacement was that it was pre used, and had old PPPoE login credentials in it that no longer worked. So it wasn’t “fresh device” provisioning or connecting via PPPoE to do regular boot provisioning. (We corrected username and changed password.)

Sat Mar 13 08:05:04 +0000 2021 (#)

RT @internetarchive: So, just how does a small-ish nonprofit like the @InternetArchive manage to serve & preserve 70 petabytes of data, 24/…

Sat Mar 13 23:40:30 +0000 2021 (#)

This pair of articles is a great explanation of how the various PKZip compression formats work. And references a bug PKZip 1.01, still supported for backwards compatibility.

Sat Mar 13 23:43:34 +0000 2021 (#)

Replying to @ewenmcneill

Also referenced, a History of Data Compression in Japan. Covering programs leading up to LHArc, and LHArc.

Sun Mar 14 00:18:15 +0000 2021 (#)

This is an amazingly detailed report on the open Linux bring up (especially early boot) on the Apple M1 hardware. Well worth reading if you like hardware and OS internals. (Allow a few tens of minutes to read in detail :-) )

Sun Mar 14 00:21:26 +0000 2021 (#)

Replying to @ewenmcneill

There is source code on GitHub for m1n1 (the M1 boot stage they’re working on; see blog post for details).

Sun Mar 14 00:26:18 +0000 2021 (#)

RT @alexwlchan: Drawing inner and outer strokes in SVG, using clips and masks:

This was super fun to write, explai…

Sun Mar 14 00:32:15 +0000 2021 (#)

Semantic Linefeeds: treating your documentation source file as source, and formatting it so that small changes don’t propagate down multiple lines.

(The original *roff formats basically required this because format markers were mostly start of line.)

Sun Mar 14 06:44:04 +0000 2021 (#)

RT @pjf: If you've never seen this beautiful show then you can hop in with any episode, but The Secret Life Of Sewing Machines holds a very…

Mon Mar 15 20:27:31 +0000 2021 (#)

Replying to @ewenmcneill

Of relevance to implementers: efficient implementation of Huffman decoding on real world CPUs (based on a Moffat and Turpin paper from 1997, published by IEEE).

Tue Mar 16 08:23:01 +0000 2021 (#)

RT @jonoxer: Innfos Gluon progress thanks to @RealSexyCyborg. We had to work around some problems with position reporting but now @ChrisFry…

Wed Mar 17 09:15:18 +0000 2021 (#)

RT @PyConAU: Please save the date and reserve your spot on the couch as we're excited to join you once more online, very online, for an onl…

Thu Mar 18 01:31:36 +0000 2021 (#)

RT @jonty: Out of curiosity I dug into how NFT's actually reference the media you're "buying" and my eyebrows are now orbiting the moon

Thu Mar 18 01:39:18 +0000 2021 (#)

Replying to @ExcitedLeigh

I’m now imagining a counter movement in favour of “traditional consent” 😃

(And all this is leaving aside the tricky implementation detail that “consent can be withdrawn”...)

Fri Mar 19 02:02:51 +0000 2021 (#)

The Metlink (local government public transport timetable) website seems to have been “improved”, at some point since I last looked, to only display an empty page (Firefox 78.8 ESR, MacOS). So that’s useful.

(Appears to be just a JS app, which clearly isn’t very robust.)

Fri Mar 19 02:05:14 +0000 2021 (#)

Replying to @ewenmcneill

FTR I do allow JavaScript to run in that browser. But don’t give it free rein to store/access third party cookies. (Not really sure why a timetable website needs lots of cookies to be honest.)

It did load okay in a less locked down browser (Safari on macOS in this case).

Fri Mar 19 02:58:37 +0000 2021 (#)

Replying to @kiwibrew

It’s the current Firefox ESR release (ESR == Extended Support Release, or similar). Ie what you run when you don’t want a whole new major browser version every few weeks.

IIRC the build I’m running had a minor update a week or so ago.

Fri Mar 19 03:00:36 +0000 2021 (#)

Replying to @kiwibrew

FWIW I’m 99% sure it’s breaking because of blocking cookies or similar. But failing to an entirely blank screen is just lazy developers. (My patience for debugging others broken JS is low at the end of the week.)

Fri Mar 19 03:12:17 +0000 2021 (#)

RT @lindamciver: Stop talking about boys and girls as separate species with different needs! gender, like personality, is a multi dimension…

Fri Mar 19 03:45:58 +0000 2021 (#)

Replying to @kiwibrew

My investigation stopped at view source and view console log, making some screenshots, and an educated guess. I didn’t even look at the JavaScript.

(FWIW, my guess is SilverStripe is just the CMS serving up the HTML/JS files. No idea who did JS/maps development.)

Sun Mar 21 10:34:24 +0000 2021 (#)

RT @kawaiiconNZ: T-236 days till launch 🚀

Kawaiicon 2 November 12-13, 2021 Michael Fowler Centre - Wellington, NZ

Wed Mar 24 09:40:20 +0000 2021 (#)

Kudos to all the people merging PRs on this petition. There were 9 new commits merged in the few minutes between me clicking “Fork” and “Pull Request”, and my PR was merged about 6 minutes after it was submitted. 💚

Wed Mar 24 20:12:40 +0000 2021 (#)

Replying to @thatcks

It is possible. And mine says pretty much exactly that.

In web UI, click top right, set current status with that text, mark it as never expire, and check the box that says “send to people who contact me in Teams”.

(I do similar on some Slacks, but I don’t think that autosends.)

Wed Mar 24 21:13:13 +0000 2021 (#)

Replying to @ewenmcneill

There’ve been around 650 pull requests merged in the last 12 hours 😮 (Mine was around 800, now around 1450 pull requests total.)

Oldest one still open now is 24 minutes ago (they’re merging them in batches).

Wed Mar 24 21:16:17 +0000 2021 (#)

Replying to @ewenmcneill

All of which is encouraging to see: the petition clearly has broad support.

TBH I suspect the FSF is too permanently tied to its founder, RMS, to ever properly separate itself from his influence. But clearly there’s a place for a non-RMS Free Software organisation now.

Thu Mar 25 01:03:42 +0000 2021 (#)

Replying to @pjf

Life as a Disney Princess turns out not to always be as glamorous as they show in the movies! 😃

(Good luck with preparing your report for your therapist 👍)

Thu Mar 25 09:01:45 +0000 2021 (#)

Replying to @gatecatte

Someone turns it off and then on again. Then it becomes wetter and sunnier.

I guess “increased chance of 🌈s” is a happy way to look at 😃

Mon Mar 29 01:59:07 +0000 2021 (#)

A “behind the scenes” reveal of how the clever Syzygy arrow sudoku puzzle was created.

You might want to try to solve the puzzle, or watch the solve video (second link), first. Links to try solving it in both video descriptions.

Tue Mar 30 05:06:49 +0000 2021 (#)

RT @mjg59: I'd just like to interject for a moment. What you're referring to as misogyny, racism and other bigotry is in fact GNU/misogyny,…

Tue Mar 30 05:26:39 +0000 2021 (#)

Replying to @ewenmcneill

Historically the FSF (and the GNU project) were very important to Free Software. Especially in the 1980s and 1990s.

These days it seems like the FSF is choosing its founder over the community that brought success to Free Software.

Tue Mar 30 05:31:35 +0000 2021 (#)

Replying to @ewenmcneill

Fortunately these days the FSF is mostly a footnote in the history of Free Software (and Open Source).

Other than all the source copyright the FSF owns, due to their mandatory copyright assignments. Oops. Hopefully the licenses really are something the community can rely on 😬

Tue Mar 30 05:55:53 +0000 2021 (#)

This talk from PancakesCon 2 (earlier this month) by @ErickGalinkin is both a good introduction to Machine Learning from an InfoSec perspective and a fascinating tour of different types of cotton / linen / wool fabrics and why you might choose them.

Tue Mar 30 20:59:59 +0000 2021 (#)

RT @SimoneGiertz: I built a chair for needy pets that always want to sit next to you.