unrelenting.technology

The web standards process is a weird thing. Something as complicated and incredible as CSS Grid is already shipping everywhere… while something as mundane and simple as registering a website as a share target has been in the bikeshedding stage for two years already.

Compiled oxipng to WebAssembly, very littlechanges were required :)

Polymer 3.0 is pretty exciting! R.I.P. HTML Imports.

Paper elements were automatically converted to ES Modules… except for the deprecated neon-animation, which is a dependency of paper-dialog and some others. Hopefully this will be solved soon. micro-panel is a heavy user of paper-dialog! :D

Also, a new interesting thing by the Polymer team is lit-html, which is not yet actually integrated with Polymer…

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?!

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?

Added Custom Elements v1 wrappers to a small WYSIWYG editor and a small code editor, because micro-panel.

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.

I can’t believe NO ONE made a rewrite of VisualSearch.js / Search.js without all the dependencies (jQuery, jQuery UI, Backbone and Underscore!)

I’m working on a server-side HTTP cache! It’s a Haskell WAI middleware. It’s controlled by Cache-Control / Vary. It doesn’t have real storage backends yet, but it has a test that I’m really happy with and some thoughts about using caches against DoS attacks in the README.

Oh, also it’s probably a good example of OOP-ish Haskell. Thanks to GADTs, the CacheConf constructor “eats” the backend types :D It’s like class Conf { BackendInterface backend; } in Java/C#.

I made a thing that lets me post Dungeon Crawl Stone Soup game logs to my website!

It has… kind of a long story, actually. So back in 2013 when I was a huge fan of App.net, I wanted to make an App.net client that would be “like Battlelog but for Crawl”. (Why would anyone use that instead of the Tavern, I don’t know. I thought I could get DCSS players to sign up for App.net :D)

So I wrote clj-dcss, a working parser for DCSS morgue files (out of date by now; also turns out it’s a bad idea to parse the whole log), and rxjava-http-tail for following logs on public servers. And Crawllog itself was also somewhat complete, but I never actually deployed it.

Fast forward to 2016, I no longer use App.net, I’m a huge fan of the IndieWeb and I made a new Crawllog :D