• 0 Posts
  • 45 Comments
Joined 1 year ago
cake
Cake day: June 18th, 2023

help-circle



  • I greatly fear refactoring in Rust. Making a single conceptual change can require a huge number of code changes in practice, especially if it’s a change to ownership.

    Refactoring in languages like Java and C# is effortless in comparison, and not error prone at all in a modern codebase.

    You can use RC and clone everywhere, but now your code is unreadable, slow, and might even have memory leaks.

    You can use slotmaps everywhere, but now you’re embedding a different memory model with verbose syntax that doesn’t even have first-class references.

    I don’t even dislike Rust; I recently chose it for another project. I just think it has clear weaknesses and this is one of them.


  • What a whirlwind!

    Also, Rust is perhaps, the shittiest, slowest compiled language out there. Even TCC has a leg up on it.

    TCC is written exclusively to compile quickly, not to do any real optimisation. There is no conceivable situation in which TCC output will outperform equivalent Rust code.

    If you really like how Rust handles its syntax, use a real functional language like OCaml

    Rust takes inspiration from OCaml in almost every area except syntax. Close to zero syntax similarly.

    In fact, SML compilers like MLton are sometimes faster than Rust.

    Lmao, this is a classic line from ~2009 message boards, but with “C++” swapped out for Rust.

    Almost every single thing you said is wrong, but in a way too precise to be attributed to random noise. Like scoring zero in a multiple choice exam. I don’t know if you are some kind of performance art troll, but please continue. I’m an instant fan of your work.


  • Is it really fair to say retain doesn’t compose as well just because it requires reference-based update instead of move-based? I also think using move semantics for in-place updates makes it harder to optimise things like a single field being updated on a large struct.

    It also seems harsh to say iterators aren’t a zero-cost abstraction if they miss an optimisation that falls outside what the API promises. It’s natural to expect collect to allocate, no?

    But I’m only writing this because I wonder if I haven’t understood your point fully.

    (Side note: I think you could implement the API you want on top of retain_mut by using std::mem::replace with a default value, but you’d be hoping that the compiler optimises away all the replace calls when it inlines and sees the code can’t panic. Idk if that would actually work.)


  • A bit tangential, but if the US government really commits to pushing big tech firms to migrate to memory safe languages, where would that leave Zig?

    It seems completely implausible to rewrite all the deployed C and C++ in the world any time soon. Even so, the uncertainty created by a top-down push might be enough to stall adoption of an unsafe language.

    I just wondered if anyone knows whether that story has affected the plans of the Zig maintainers at all. Or whether there has been any spike in Rust job postings?


  • Software engineering has no culture - shared or otherwise.

    This is absurd. Everything about software engineering is culture. It’s built around shared cultural artifacts and texts. The idea of tech and a tech industry is a purely cultural delineation.

    Bezos, musk, gates et al were never seen as heroes by those who don’t idolize capitalists and corpos to begin with, and are still seen that way by the rest.

    Self-congratulating and utterly defeatist at the same time. Sorry but if you ever want a union it’s pretty important that your colleagues don’t think some CEO is the messiah. If you really haven’t noticed a shift in the perception of tech billionaires in the last 10 years I don’t know what to tell you.

    The future is indeed tech solutions and always has been, not an-prim nonsense and tech will indeed save us

    So you’re a historical materialist who thinks we need a communist and/or anarchist revolution to save us, but who also thinks that we can sit around doing nothing until someone invents one in their garage? What on earth are you talking about?

    the way you do that is by changing economic systems to communism or anarchism.

    Okay but HOW? You seem to think an article that documents the exploitative behaviour of capitalists is somehow actively obstructing this revolution.


  • Okay, but what is the utility in taking the title so literally and ignoring the real content? It’s a vague and mildly provocative title that is quickly clarified.

    The article doesn’t argue that the tech industry is uniquely evil. It is just spreading awareness about a specific phenomenon that is currently happening in the tech industry. That is what good journalism is. People can’t organise a response to something they don’t even know about.

    Besides, the tech industry does have its own culture and that culture is full of problems. Capitalism is very top-down, but it’s our shared culture that allowed tech solutionist billionaires to be embraced as heroes for so long. The least we can do is dispel the bad ideas they hide behind so people stop waiting for tech to save them.

    And sorry if my tone seems rude. It’s not intentional, it’s just a frustrating subject to think about.



  • If you see a real chance of it shipping soon, that might be good experience. As I mentioned, a surprising number of grizzled senior devs have never actually shipped anything.

    But if you see better opportunities elsewhere then just go. Sad reality is that job hopping early is what gets most people a good salary. Very few companies give real raises. The only time you have bargaining power is when you haven’t joined yet or when you’ve already made plans to leave.


  • It’s very common. I’d bet most software projects still fail. I once met a guy who’d been a gamedev for over 10 years at some big companies, and every game he ever worked on got cancelled.

    Sometimes these long, poorly managed projects do succeed though. Usually because they launch a beta or get publicly scheduled for release, and the sudden reality check causes someone senior to trim the scope down dramatically.

    It might be worth sticking around if you think you’re learning things, but impose some personal limits. Don’t kill yourself trying to meet some idiot’s impossible schedule. Work your contracted hours and no more. Be blunt and unashamed about how long tasks really take. Share your concerns when the month’s schedule looks unrealistic, referring back to previous tasks that overran. This is how you learn to one day become a lead who doesn’t run shitty projects like the one you’re on.






  • I’m still confused by this not being cross-platform. It’s made in Rust; basically every graphics library is cross platform out of the box, and so is all the file IO stuff. There will be some specialist OS api stuff in places but surely it can’t be much.

    For once this comment isn’t even snark. I acknowledge my ignorance and wonder if someone could explain why the cost is bigger than I think?

    Perhaps it’s setting up CI and packaging for other platforms? Maybe they want human QA on every release? Maybe the APIs for slick OS integration are more complicated than I realise? (e.g. putting UI in the taskbar)


  • Counter-point: Atom is terrible. Its electron competitors are terrible. Big IDEs are terrible. Simple text editors are terrible.

    If you are under 50 and chose to learn vim or emacs, there is a 100% chance that you were also forced to learn latin at school and honestly it’s not your fault that you turned out this way.

    These are all the options. Sometimes all the options are terrible.


  • Here’s one I learned from a past manager:

    Stress that everyone needs to pitch in and make themselves useful at all times, but do not share any information at all

    Make sure the work is not broken down into clear tasks. Make sure nobody else has access to the stakeholders. Make people ask separately for every single account or access credential they need, and respond with incredulity that they don’t already have it.

    Give the impression that there are no processes. When someone submits work, criticise them for not following the process.

    Each day, schedule meetings so you are impossible to contact until the early afternoon. That way you can interrupt any request for information by asking the person what work they did in the morning. The goal is to close the loop by making people scared to talk to you, so they blame themselves for not knowing anything.