I got a keyboard.io when they first came out. On staggered layouts i was >85 wpm. But switching to ortholinear knocked me down to 25 wpm with excessive errors. It took several months before I got back up to about 60wpm. I stayed at that speed for a year or two before finally edging back up to 80wpm.
It did hurt my ability to use staggered but only at first. I was able to switch freely after about 3 months.
Those sound like huge trade offs. And they are. But for me carpal tunnel was quickly becoming a problem. Switching to ortholinear completely resolved my carpal tunnel pain. And that is priceless.
I still find the top row reach on my Model 100s a bit much, but I've gotten the hang of lifting my palms forward a little, especially for my pinkies.
In database design typically it recommends giving out opaque natural keys, and keeping your monotonically increasing integer IDs secret and used internally.
1. You don't want third parties to know how many objects you have
2. You don't want folks to be able to iterate each object by incrementing the id
But if you have composite IDs like this, that doesn't matter. All objects that belong to a repository have the repository id inside them. Incrementing the id gives you more objects from the same repo. Incrementing the repo id gives you...a random object or nothing at all. And if your IDs include a little entropy or a timestamp, you've effectively kneecapped anyone who's trying to abuse this.
> You don't want folks to be able to iterate each object by incrementing the id
If you have a lot of public or semi-public data that you don't want people to page through, then I suppose this is true. But it's important to note that separate natural and primary keys are not a replacement for authorization. Random keys may mitigate an IDOR vulnerability but authorization is the correct solution. A sufficiently long and securely generated random token can be used as both as an ID and for authorization, like sharing a Google Doc with "anyone who has a link," but those requirements are important.
Maybe. Until your natural key changes. Which happens. A lot.
Exposing a surrogate / generated key that is effectively meaningless seems to be wise. Maybe internally Youtube has an index number for all their videos, but they expose a reasonably meaningless coded value to their consumers.
On cars without the arrow they often follow the convention where the gas filler handle is depicted on the same side of the gas icon as the filler door is in the car.
The propulsion of nuclear-powered aircraft carriers isn't electric... it's driven directly from the steam produced by the reactors.
Edit: At least that's the case for US Nimitz-class aircraft carriers. Nuclear submarines apparently come in both types, with electric motors or direct drive steam-turbines, but I guess this ferry is bigger than any of those.
I feel like this misses the biggest advantage of Result in rust. You must do something with it. Even if you want to ignore the error with unwrap() what you're really saying is "panic on errors".
But in go you can just _err and never touch it.
Also while not part of std::Result you can use things like anyhow or error_context to add context before returning if theres an error.
You can do that in Rust too. This code doesn't warn:
let _ = File::create("foo.txt");
(though if you want code that uses the File struct returned from the happy path of File::create, you can't do that without writing code that deals somehow with the possibility of the create() call failing, whether it is a panic, propagating the error upwards, or actual error handling code. Still, if you're just calling create() for side effects, ignoring the error is this easy.)
Which can also be said about Rust and anyhow/thiserror. You won't see any decent project that don't use them, the language requires additional tooling for errors as well.
Independent thought and personal accountability are sadly lacking in the US. "I see a bunch of unreturned carts. I must follow and fit it. See im justified in not returning it." :-(
This is closer to a variant of the broken window theory than something that's US-specific. Where I am, people who don't return carts are clearly in the minority, so they probably choose to do it because they think it benefits them greatly.
Isn't senior leadership choosing languages or core technology, doing things wrong? Shouldn't senior leadership focus on outlining the business opportunities, value case, and requirements for their solution?
It did hurt my ability to use staggered but only at first. I was able to switch freely after about 3 months.
Those sound like huge trade offs. And they are. But for me carpal tunnel was quickly becoming a problem. Switching to ortholinear completely resolved my carpal tunnel pain. And that is priceless.
I still find the top row reach on my Model 100s a bit much, but I've gotten the hang of lifting my palms forward a little, especially for my pinkies.
Also the palm keys are amazing.