I don't understand how they don't compose, from your example:
(X = A + B, Y = X + C, Y = A + B + C is false)
I understand that types aren't math values, but isn't the point of using a `+` to describe the communicative value of the type so that `(A + B) + C = A + B + C`?
There's absolutely no way to write this so it compiles. In fact, there isn't even a way to define the composed types so that they only express a sum, you have to add extra baggage.
I'm trying to manage my projects mostly like the steps the OP takes. The only thing that I would add, which has helped me is, is having build automation in place as well (CI/CD or just scripts like a Makefile).
This could fall under tests, but I've found that having concrete steps written down on how to build the thing helps. As there's many times something that's easy to forget that has to happen for things build correctly if I've stepped away from the project for a while.
I'm now religious about adding Makefiles to projects with standard commands to get them up and running. It's built-in, works across languages, overall a win when you switch often between things!
Could you regain this info by adding a static prefix to the rolled id? So you know it was rolled, but not from which previous id. Where as new id's would have no prefix, so you can count new users as new.
Could just be the date of install in UTC as a prefix, the other part randomized on the first of the month... they could still calculate relative drop off, and still get better stats more anonymously.
Do you think it would be interesting to analyze CSS across a few pages? I've created base CSS files that can cover a few pages, knowing that some elements won't be on all pages, but that the CSS document is cached so it makes sense to send everything down at once.
Or is this more for a launch page (or one-site website)?
Right now, this is more of a proof of concept than anything... I wanted to see if it's really possible to use Puppeteer like this to capture CSS usage, get some real user feedback on how to proceed.
Totally open to suggestions. I guess in a perfect world, you could eventually use this to totally capture all of the CSS you use on a single page and reduce it if you were just doing a single launch-type page and working with Bootstrap. In more complicated cases, the goal is to provide just the basic CSS your site needs to render quickly, then allow you to defer the rest.
The next thing on my ToDo list is to try to capture CSS usage at all the standard breakpoints and combine that into a single "critical path" css file
Is there a way to adjust the time between sending links? Also it's not clear if the links will disappear from my account after they are sent to my email, will they?
Also it looks like the Privacy Policy is included with the Terms of Service (https://es.gy/terms-of-service). These are two separate things, which I think should be split out; as some people may be looking for a Privacy Policy before using your service may not find it as they expect to.
Thanks for informing me regarding the PP and TOS, I didn't know this. Regarding links, they don't disappear once sent, but I'm currently working on being able to delete links.
If I understand you correctly regarding time between links, you can (even though this feature is not publicized) set custom delays for when links are mailed. Example: es.gy/2d/{url} would remind you of the link 2 days later. You can also do es.gy/2w/, 3w, 11w, etc for x weeks later. Same goes for 1m, 2m, etc for x months later ...
Also