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

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’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

The IFTTT vs Pinboard thing happened just as I was planning to use it to post bookmarks from Pinboard to this website. This plus the general desire to use open source software on my own server led me to exploring alternatives…

Huginn is the most popular one, but it’s not a good fit for my low-memory VPS. Unicorn/DelayedJob/MySQL? Uh… nope. So, the urge to Write My Own Thing is very strong :D But in the Pinboard Twitter thread people have suggested bip.io and Node-RED. Looks like I’ll try Node-RED first, because it does not use a fscking database! Just plain old files.

Just had to get some images from Pinterest. Wow, this is terrible. It’s just begging you to sign up. It’s 5 seconds, it’s free, sign in with Facebook, there’s more to see. Fuck off, I just want the full size image.

AWS Lambda, the new awesomeness in Cloud Computing™, reminds me of… CGI.

In Lambda, HTTPS requests are just one of the many types of events it can handle, but it’s the most interesting one. There’s been some IndieWeb interest in using Lambda for Micropub and Webmention endpoints that update static websites.

We can do better! No SDK required. We need a CGI Cloud. I might build that as a demo for sandblast :-)

It’s unfortunate that PubSubHubbub, while perfect for server-side subscribers, is completely unusable from the browser. Hubs really should provide two subscriber interfaces: the current webhook-style one and Server-Sent Events. I guess for now I’ll have to make a PuSH-to-SSE proxy.

Any sufficiently complicated network RPC API contains an ad hoc informally-specified bug-ridden implementation of HTTP/REST semantics.