• 8 Posts
  • 538 Comments
Joined 4 years ago
cake
Cake day: May 31st, 2020

help-circle
  • Yeah, that is my understanding, too. Otherwise you’d only want to generate them on the database host, as even with NTP there will be small differences. This would kind of defeat the purpose of UUIDs.

    If you’re saying that even without NTP, just by manually setting the time, things will be fine. I mean, maybe. But I’ve seen it far too many times already that some host shows up with 1970-01-01…


  • For others wondering what’s wrong with UUIDv4:

    UUID versions that are not time ordered, such as UUIDv4, have poor database-index locality. This means that new values created in succession are not close to each other in the index; thus, they require inserts to be performed at random locations. The resulting negative performance effects on the common structures used for this (B-tree and its variants) can be dramatic.

    I guess, this means with these new UUIDs, ideally you only create UUIDs on systems that are hooked up to NTP, though I guess, it won’t really be worse than UUIDv4 either way.



  • We’ve been using Leptos at work, which is a similar framework (and probably shares half the stack with Dioxus).

    And yeah, it’s really good. My favorite thing about using Rust for the UI is algebraic data types.
    So, in Rust when you call a function which can fail, there isn’t an exception being thrown, but rather you get a Result-type as return value.
    This Result can either contain an Ok with the actual return value inside. Or it can contain an Err with an error message inside.
    So, in your UI code, you just hand this Result all the way to your display code and there you either display the value or you display the error.

    No more uninitialized variables, no more separate booleans to indicate that the variable is uninitialized, no more unreadable multi-line ternaries.
    It just becomes so much simpler to load something from the backend and display it, which is kind of important in frontend code.




  • I actually even made my own bullshit-Spotify. As in, I’ve got a server running on a single-board computer which reads my music folder and serves a small music player as a webpage.

    I didn’t want to install a music player client on my work laptop, but still wanted to listen to my own songs there.



  • Agile tries to solve this differently.

    First and foremost, it puts you into tight-knit communication with your team and the customers, so just ask if anyone remembers why it is like that.

    If no one does, then Agile enables to basically fuck around and find out.

    Which is to say, change it to how you think it’s supposed to be and see if anything breaks / anyone complains. If that happens, Agile allows you to react quickly, i.e. to change it back and quickly release a fixed version.

    But yeah, as the others said, if your team feels like documents work better for them, then do Agile and documents. That’s why retrospectives are an integral part of Agile, because it’s not a perfect plan how to work together. You’ll know best what works in your context.










  • I imagine, you guys might be measuring with two different scales. Early Windows versions were fine, but even back then, a switch to Linux would give you so much more customizability to actually make it yours.

    This is a dumb anecdote, but I switched to Linux from Windows 8, and pretty much the first thing I did, was to figure out how to hide the window titlebars. Mostly because I realized, I could, but they also just took screen space away on my laptop.



  • There can also be circumstances where you have to offer people a natural-looking key for general consumption. You can’t put UUID’s on car plates for example.

    Often times, the first section of the UUID is unique enough. With certain UI design choices, one can encourage users to normally work with that, while having the full UUID available in a detail view or from a copy-button.

    Another strategy I quite like, is to have the UUID as the definitely-always-unique identifier, and then have a separate name, which either the users can enter or we generate something like random adjective+animal.

    But yes, neither of those strategies would work for car plates.