96 karma · joined August 12, 2013
My personal preference is more subtle loading indicators near the element that triggered the interaction (the filter inputs themselves in this case) but that's probably subjective. I think at the very least you should keep filter bar visible while it's loading so that the element you're interacting with doesn't disappear while you're using it and pop back into view.
Whatever the measurement, I find it just as interesting that there was such a large increase over pre-covid for the high income zipcodes. My assumption would have been a decrease in the low-income zipcodes (due to access to technology resources for e-learning, more friction in adjusting to staying at home, economic woes effecting low income families more, etc), but the high-income zipcodes to stay roughly the same. It looks like (for math at least) that e-learning is working out great when you have access to the technology, much better than regular in-person school (assuming what they're measuring as 'progress' is actually meaningful to begin with).
I think that the "query builders" though are just one piece of the ORM that you mention, alongside the change-tracking, data mapping, etc. Having a decent query builder that isn't abstracting away too much of the underlying sql (essentially just mapping 1-to-1) plus data mapping are the sweet spot for me personally.
One potential issue is that the order fulfillment service still needs to validate that the data its getting from the client is correct. For example, even if you send a list of full product details rather than a list of productIds to create the order, the fulfillment service still need a way to associate the Order entity with the Product entities. You could also send the ID with each of the products, but how would you know if the product has since been deleted or otherwise doesn't exist.
You end up needing the order service to either have its own set of knowledge about what products exist in the system for that user, or you need to make the synchronous call to ensure they're real products.
// No error here
type Animal = 'dog' | 'cat';
const notAnimal = 'couch' as Animal;
// No error here either
type Food = { isSpicy: boolean };
const empty = {} as Food;
https://www.typescriptlang.org/play/index.html#code/C4TwDgpg...usb-c connectors are (8.4mm x 2.6mm) whereas micro-a is (6.85mm x 1.8mm) and micro-b is (6.85mm x 1.8mm)
It might just be a matter of simplicity, since USB-C seems to have a larger surface area for the spec, but I don't really know if that's the case.
Still not a great comment I admit, but with the amount of discussion going on I would be surprised if everyone is subscriber or if they are going off of the headline alone.
> Once we consider ESLint feature-complete w.r.t. TSLint, we will deprecate TSLint and help users migrate to ESLint; our primary tasks until then include:
> Continued TSLint support: The most important maintenance task in TSLint is ensuring its compatibility with new compiler versions and features.
> TSLint → ESLint compat package: Once the ESLint static analysis checks are on a par with TSLint, we’ll publish an eslint-config-palantir package, a drop-in ESLint replacement for our TSLint rule set.
It could have been implemented without needing the same special treatment with something like:
with do
x <- foo()
y <- bar(x)
z <- baz(y)
blah(z)
else
err -> handle_err(err)
endSince you're dealing with them from within an observable stream you have access to all the rxjs operators, so you can do things like waiting for multiple actions to be dispatched before doing something, etc.
Unfortunately most IDEs that have vim keybindings don't support this, and it has become such a baked in part of my muscle memory that it makes switching to anything else such a pain.
So you end up with the best of both worlds (in my opinion), where your state is made up of simple plain objects and you behaviors are just functions that accept simple plain objects, but you get all of the benefits of compile time static type checking because they are checked against the interface.
I think some of that shift is probably because of interviewers second guessing those courses though.
What I like about the tiling wm is that I can launch an application and have it immediately fill the entire screen (without annoying decorations). Then opening and closing windows, changing windows, moving workspaces, etc, is all just a hotkey away.
This same setup would be possible with openbox I think, but it all comes "out of the box" with most tiling window managers.
Having programs available from anywhere with just a few keystrokes makes everything feel very accessible. Whenever I want to run something I just need to type a few characters of the binaries name to launch it.
I use a similiar set up for ssh, where I pipe the Hosts from my ~/.ssh/config into dmenu and only need to type part of the hostname to connect.
[dmenu] http://tools.suckless.org/dmenu/
let x = if number > 2 { "yes" } else { "no" };
It's not quite the same, and I'm not sure what the failure case would be if the 'else' statement was ommitted, but it comes close.After experimenting with Rust and Elixir I've really come to like the 'everything is an expression' approach. That and pattern matching can make some things really expressive.
For example, it will expand `ls *` to `ls foo bar baz`, etc
> ThatOnePrivacyGuy should use their open source speed test tool instead
Using their instead of our makes it sound like there is no affiliation.
I wonder if it has to do with imgur compressing the image, or maybe approximating/ignoring the colorspace as was mentioned above.