164 karma · joined November 18, 2011
contact@clarkdave.net
co-founder of LoyaltyLion (https://loyaltylion.com)
[ my public key: https://keybase.io/clarkdave; my proof: https://keybase.io/clarkdave/sigs/88m6iucm3wCPGSzi7ZwJNBlrIImo9rhh-6hKs7B0Kj0 ]
Isn't that exactly what Availability Zones are for? They're physically separate[0] datacenters and each one contains a copy of each S3 object (unless using the explicit single-zone options)
It's also straightforward (although not necessarily that cheap) to replicate S3 objects to another region
From a marketing perspective it’s not (as far as I’ve seen) driven by eco credentials, but by not needing planning permission - external AC compressors are not automatically permitted in the UK.
[0] https://www.urbancooling.com/water-cooled-air-conditioning
It does have some drawbacks though: if you have thousands of mirrored or quorum queues, managing the cluster becomes more cumbersome - it can take a while to replace nodes (rebalancing thousands of queues around). Also, the management tools (the web UI especially) don't perform that well if you have 10,000s of queues and 100,000s of consumers
For example, the no-floating-promise[0] rule catches some easily-made mistakes involving promises in a way that TypeScript doesn't on its own.
Other rules can be used to increase type safety further. There are various rules relating to `any`, like no-unsafe-argument[1], which can be helpful to prevent such types sneaking into your code without realising it; TS has `noImplicitAny`, but it'll still let you run something like `JSON.parse()` and pass the resulting any-typed value around without checking it.
[0] https://typescript-eslint.io/rules/no-floating-promises [1] https://typescript-eslint.io/rules/no-unsafe-argument
# select '{ "id": "\u0000" }'::json;
-> { "id": "\u0000" }
# select '{ "id": "\u0000" }'::jsonb;
-> ERROR: unsupported Unicode escape sequence
For example, if you wanted to go from Farringdon to Liverpool St, Google Maps would suggest using the Elizabeth line, but, in practice, it's usually better to use the sub-surface lines (Metropolitan etc). The time taken for the extra stops will be cancelled out because the Elizabeth line takes significantly longer to get into/out of of as it's so much deeper. Add another couple of minutes if you happen to get on the wrong end of the train, because those platforms are long!
That being said, it's a joy to ride and is the only air-conditioned train that runs through the central section of London.
> The most challenging thing is the absence of the specification. I had to infer everything just from test cases.
> The second thing is the velocity of tsc. It's way too fast, and I was unsure if I could follow it up. So I decided to use semi-automated translation and selected Golang.
> But it was too boring, and more importantly, my programming ability has improved enough to follow tsc only by myself.
MacOS in particular does an excellent job of rendering 2560x1440 to a 4K screen, and the increased DPI over a regular 1440p 27" screen is very noticeable.
Another option if you're not a fan of 27" displays is a pair of 24/25" 4k screens which can be run at a scaled 2304x1296 resolution. This still provides a decent amount of space without text being too tiny. Alas, 4k monitors <27" are increasingly rare these days.
The only one I have bookmarked is https://getmibo.com, which claims to "currently only work in Google Chrome"
Before Firefox I used Brave with multiple profiles and it was very painful to use in practice; two sets of extensions, two unlocks of 1Password X, no ability to force certain websites to open in Profile X or Y, etc.
But yes, Firefox feels like it's getting progressively slower and I'm finding more and more things that don't support it. In particular, many of the recent spatial audio tools just flat out refuse to run in Firefox, and tools like Apple Business Manager don't run even though they typically work fine if you spoof the User Agent.
If a Chromium-based browser like Vivaldi or Brave added containers it'd be a very compelling alternative.
The one downside for me is that iOS Safari doesn't support custom search providers, so I can't use it on my phone unless I switch to an alternate browser. That said, once iOS 14 lands I can set Firefox as my default browser and use it that way.
Eventually we switched to Debian-based images because of intermittent DNS-related woes that plagued our alpine containers. We struggled to isolate the cause but it seemed to be a combination of Node + Consul DNS. Suddenly those saved gigabytes and smaller Dockerfiles didn’t seem worth the hassle; after jumping to Debian we never saw that issue, nor anything similar.
We were using Synthetics during beta alongside Pingdom - doing pretty much the same on both. Beta period ended and sales rep said our Synthetics bill would be something crazy, like 10x our Pingdom bill, and it’d start next month (they later said that was a mistake and it would actually start in 2 months, when I pushed back).
We immediately suspended all our Synthetics tests. It’s nice having them with the rest of our Datadog stuff, but it’s not 10x better than Pingdom.
Datadog is still a great tool overall, but experiences like that make me wary of putting all our eggs in the DD basket and getting locked in.
Prettier actually has a beta Postgres plugin, but progress on it seems to have stalled. Hooking it up with sqlfmt would be neat - then prettier could format SQL inside other languages too, like code fences in Markdown or template literals in JS.
Not affiliated, just a happy user.
That's some outage! Looking forward to a post mortem.
(edit) Everything seems to be back now - lasted around ~10 minutes.
As you mentioned, it is limited by instance size, but for a DB that fits it works great and has fewer moving parts. Knowing that your entire database is essentially ephemeral raises the stakes too and forces you to take replication, backups and restore testing seriously.
It won’t help if you need to retain anything Excel specific, but I find it very useful to deal with any Excel files that come my way.
I first tried the experimental 2 camera 360 tracking which sort of worked but had plenty of dead zones. The official line on that is to add a third sensor, which I did. It came with a 5m USB extension cable which wasn't long enough to reach the back of the room so I had to hunt around for a 10m extension instead; that in itself is a gamble as everyone's mileage seems to vary as to what will work for them.
After setting up all the cameras I still had to ignore lots of "low quality tracking" errors reported by the setup - apparently that's because my motherboard couldn't provide enough juice for all the cameras and the headset.
The lighthouses in comparison are just great. I just screwed them into the wall, plugged them in to an outlet and that was it.
I do prefer the touch controllers. The capacitive buttons are superb and well used in many Rift games. The headset itself is more comfortable than a vanilla Vive, although the Vive's deluxe audio strap make them equally as comfortable for me (at significant additional expense!)
The I3 instances are pricey, but if you can suffer possible CI outages and everything is self-healing, they're extremely cheap as spot instances.
Another similar option we tried is AWS CodeBuild which has per-minute billing and provisions the build machines for you. However, it's very bare-bones and because you always get a from-scratch instance for each build you have to distribute your docker cache which is not ideal.