• 3 Posts
  • 21 Comments
Joined 3 months ago
cake
Cake day: August 16th, 2024

help-circle
  • I have a Fairphone 4 and would definitely give them the biggest recommendation I could.

    Any part can be replaced with a screwdriver which is an order of magnitude better than I’ve seen with other brands. I dropped and broke my phone screen and although I had to buy a new screen, after that I had a phone working as if it was brand new.

    I also got mortar into my usb charging socket and was able to replace the charging socket.

    You might be able to tell that I’m not the best at looking after things, I’m working on this but in the meantime, fairphone have saved me at least two situations where I’d normally need to buy a new phone. Can’t recommend them enough.



  • Thanks for such a detailed response! I’m planning on mainly using it for smallish trips, say heading into my local town. I’ve recently move to being just outside walking distance but it’s very short distance to drive for.

    I also live around a lot of woods and it’d be good to be able to ride on a dirt path now and then.

    From what I can see a ‘hybrid’ sounds like it’d be a good fit?






  • I have advice that you didn’t ask for at all!

    SQL’s declarative ordering annoys me too. In most languages you order things based on when you want them to happen, SQL doesn’t work like that- you need to order query dyntax based on where that bit goes according to the rules of SQL. It’s meant to aid readability, some people like it a lot,but for me it’s just a bunch of extra rules to remember.

    Anyway, for nested expressions, I think CTEs make stuff a lot easier, and SQL query optimisers mean you probably shouldn’t have to worry about performance.

    I.e. instead of:

    SELECT
      one.col_a,
      two.col_b
    FROM one
    LEFT JOIN
        (SELECT * FROM somewhere WHERE something) as two
        ON one.x = two.x
    

    you can do this:

    WITH two as (
         SELECT * FROM somewhere
         WHERE something
    )
    
    SELECT
      one.col_a,
      two.col_b
    FROM one
    LEFT JOIN two
    ON one.x = two.x
    

    Especially when things are a little gnarly with lots of nested CTEs, this style makes stuff a tonne easier to reason with.



  • Ok really tangential rant here!

    I find societal attitudes to art and morality really crazy.

    I don’t necessarily disagree with the idea that art and morality should be linked, but it only ever seems to happen in a negative capacity of “don’t listen to x because they did y”.

    There’s a whole strain of:

    • Artists who are not necessarily bad people, but whose art is aggresively immoral (I guess an obvious example would be Biggie Smalls or someone who frequently raps about sexual assault and violence in a positive way, but also the ammount of mainstream pop or country that has sexist or racist undertones)
    • Artists who try hard to inject their morality into their work (such as Becky Chambers’ climate positive fiction, or Giancinto Scelsi’s anti-facist music)

    On the whole, I don’t see anyone care very much about the above two points, people just “like what they like”, which is as if we think morality and art are two seperate things.

    That makes sense, but then there’s this wierd category where “oh that person did this bad thing, so now their art is invalid”.

    So, what’s the overall attitude? Like, art isn’t related to morality generally, but there’s some mysterious line where if it’s crossed art moves into the “forbidden zone”?

    I’m all for calling bad people to account for their moral behaviour, but the way we do it in art is so jumbled and inconsistent.





  • It’s not easier to do getters or setters but especially in python there’s a big culture of just not having getters or setters and accessing object variables directly. Which makes code bases smaller.

    Same with the types (although most languages for instance doesn’t consider None a valid value for an int type) Javascript has sooo many dynamic options, but I don’t see people checking much.

    I think it boils down to, java has a lot of ceremony, which is designed to improve stability. I think this makes code bases more complex, and gives it the reputation it has.



  • houseofleft@slrpnk.nettoProgrammer Humor@programming.devLanguages
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    1 month ago

    I think a lot of it is “ceremony”, so it’s pretty common in java to:

    • create a get method for every object variable
    • create a set method for every object variable

    Then add on top that you have the increased code of type annotations PLUS the increased code of having to check if a value is null all the time because all types are nullable.

    None of that is hugely complicated compared to sone of the concepts in say Rust, but it does lead to a codebase with a lot more lines of code than you’d see in other similar languages.




  • I’m a data engineer, use parquet all the time and absolutely love love love it as a format!

    arrow (a data format) + parquet, is particularly powerful, and lets you:

    • Only read the columns you need (with a csv your computer has to parse all the data even if afterwards you discard all but one column)

    • Use metadata to only read relevant files. This is particularly cool abd probably needs some unpacking. Say you’re reading 10 files, but only want data where “column-a” is greater than 5. Parquet can look at file headers at run time, and figure out if a file doesn’t have any column-a values over five. And therefore, never have to read it!.

    • Have data in an unambigious format that can be read by multiple programming languages. Since CSV is text, anything reading it will look at a value like “2022-04-05” and say “oh, this text looks like dates, let’s see what happens if I read it as dates”. Parquet contains actual data type information, so it will always be read consistently.

    If you’re handling a lot of data, this kind of stuff can wind up making a huge difference.


  • I’m a data engineer, and have seen an ungodly ammount of 200-but-actually-no-stuff-is-broken errors and it’s the bane of my life!

    We have generic code to handle pulling in api data, and transforming it. It’s obviously check the status code, but any time an API implements this we have to choose between:

    • having code fail wierdly further down the line because can’t parse the status
    • adding in some kind of insane if not response.ok or "actually no there's an error really" in response.content logic

    Every time you ignore protocols and invent your own, you are making everyone sad.

    Will take recommendations of support groups I can join for victims of terrible apis.