So Amazon Lambda has a 6 MB limit on request (and response) size. Binary files have to be Base64 encoded (LOL) which makes the limit even SMALLER! So my micropub media endpoint chokes on full DSLR resolution photos. Yeah the "right way" is to have the API Gateway endpoint upload to S3, and the upload event trigger the Lambda processing which would download from S3, and use a separate Lambda for authentication on that endpoint… but I need the processed URLs in the response body. I need everything to happen in one request! How did AWS engineers not see that use case coming?!
People running Postgres on ZFS in Serious Production™ will tell you to set
recordsize to 8k or 16k, because performance. Don't listen to them if you're just running personal stuff on VPSes with expensive storage! Small
compressratio. So turn it up and rewrite the database with
VACUUM FULL ANALYZE. (My Matrix server: going up from 16K to 128K raised
compressratio from 2.11x to 3.08x! That's with lz4.)
AWS Route 53 looks like a nice DNS hosting service because API (automated ACME DNS verification is pretty cool) and automatic config for adding domains to other AWS things but they're really slow with new DNS record types. Still no CAA! And SSHFP! What in the hell, the most powerful Cloud™ company in the world can't add a simple record type?
If that's the new "streamlined review process" I can't imagine how slow the old one was. Although I definitely got into the big initial wave of everyone publishing WebExtensions…
Seems like the node.js world isn't too excited about WebAssembly on Node. Come on, it's cool! You could just take a node_modules folder full of image encoders, crypto libs and compressors from a Windows machine to a Raspberry Pi running FreeBSD and it would just work! (And it's sandboxed.)
Quake Champions is awesome (as in the gameplay — performance is meh).
Amazon Web Services is not awesome: it wasn't really obvious that promotional credits aren't spent on reserved EC2 instances :( Also HardenedBSD was behaving weird on it (secadm kernel panic, Python libssl segfaults).
But with regular FreeBSD I've set up a Matrix homeserver (Synapse) on EC2! I am now @greg:unrelenting.technology :) It's working as my new IRC bouncer, so with that I've been able to say goodbye to the previous VPS that served this website (which was still running my ZNC).
tfw you forget you've installed a browser addon called "falsehoods to bullshit"
Some time ago, Firefox Nightly on Windows displayed SVGs in a… strange way :D
It's terrible hot take time:
React is capitalist. Since it's been ported to many platforms (browsers, node.js, iOS, Android, now even Sketch) it is designed to let businesses reach customers on all platforms with less development effort, instead of hand-crafting apps that care about each individual platform's users. And there's a sort of lock-in, you're not a web/iOS/Android developer, you're a React developer. That's kinda like businesses trying to lock you in to their ecosystems (Apple, Microsoft).
In contrast, Polymer
is good and communist fully embraces the web as the only platform, which is good for the open web.
Since 2017-02-01 I've been working on a big change to Sweetroll, the engine that powers this website, and today it's finally live, right here! (Also it's now on my newer VPS, hosted at prgmr and running HardenedBSD 11. The old one was FreeBSD 10 at DigitalOcean.)
tl;dr about the change: from one Haskell app powered by a Git+JSON store and embedded Duktape templates (lol) to two services (Haskell + Node.js) backed by Postgres. It's really cool. I'll be writing more documentation for it soon.
I just realized that it’s possible to make a WebExtension version of micro-panel. Not sure if that enables any cool benefits though… maybe using one token for the panel and a share panel in the browser or something.
Today in “oddly specific”: Bethesda.net’s code of conduct doesn’t allow you to make a username that references names of modern serial killers.
I made a WebExtension! It’s called Transmitter for Transmission. It lets me add torrents to the
transmission-daemon instance running on my home server. And watch their status. I think Transmission actually allows you to expose the remote API in desktop versions as well.
tl;dr on WebExtensions: it’s Chrome’s extension API, but with
Promises and it’s a W3C standard. Fully supported in Firefox. Chrome/Opera need a tiny polyfill for the
Promise support. MS Edge can be supported too.
Publishing experience: Chrome’s store asks for $5 to get your stuff published (one time payment for up to 20 extensions) and there’s no pre-moderation. Addons.Mozilla is pre-moderated but the extension shows up on its URL before approval. Opera is pre-moderated and the extension doesn’t show up before it’s moderated.
Converted my music library from mostly-AAC to Opus: from 11.3 GB down to 5.2 GB! (using some PowerShell to run ffmpeg on all the things) This is especially good for my phone. For some reason Android still needs the file extension to be
Compression in general seems to be a pretty exciting field… Redox TFS promises full disk compression. Maybe not really “full” but with large huge clusters, instead of ZFS’s per-block compression. Brotli already works in browsers for HTTPS compression. Game texture stuff is improving (because 58 GB texture packs :D). A better video codec is coming.
If you still have AAC or Vorbis files — convert to Opus now!
TIL: Intel chipsets have a hardware watchdog. Just like a Raspberry Pi.
Speaking of the Raspberry Pi watchdog (
bcmwd): it supports 15 seconds max interval. But if you try to run FreeBSD’s
watchdogd with 15 seconds, it’ll still complain. Look in the output — for some reason
watchdogd rounds it up to 17 or something. So the max interval is 9.
Made a small command line app to manage a personal X.509 CA. Better than searching shell command history for arcane
Got my one character patch merged into the FreeBSD kernel :D