• 1 Post
  • 225 Comments
Joined 2 年前
cake
Cake day: 2023年6月12日

help-circle
  • I remember it as just beer and cider, with the addition of blackcurrant making it a Purple Nasty, and all sorts of tales of how they allegedly reacted to make a vicious drink more than the sun of the parts that I am sure was fiction.

    And for Americans, this means alcoholic ciders, since they also call raw apple juice cider, and most Americans have no idea what a blackcurrant is (a delicious intense berry that was illegal to cultivate in the US for a lot of the recent past).


  • sping@lemmy.sdf.orgtoFuck Cars@lemmy.worldAmericans are getting new trains
    link
    fedilink
    English
    arrow-up
    14
    arrow-down
    1
    ·
    28 天前

    Looks like they have reasonable height windows, unlike the weird little slit windows that Amtrak typically has for some reason. I’ve always assumed it’s to minimize greenhouse effects, because maybe nobody was able to imagine blinds or heat-reflective glass used elsewhere.

    While Amtrak trains always seem crude and old fashioned compared to modern trains in other countries, one thing they’ve always been is very comfortable and spacious. I’m a little concerned by 27% more seats - is that the end of the generous space?

    I’m probably unlikely to find out for a while, because faced with the usually dramatically higher prices for ~20% shorter journey times, I usually choose the cheaper, slightly slower standard Amtrak service instead of Acela. It’s a testament to the benefits of rail that even the rickety slow Amtrak trains are often still a good option for the few journeys they serve.


  • Well yes they are more efficient than butyl for drag and weight, it’s just a very small amount that would be hard to detect. And it’s only for acceleration that rotational weight counts extra - up to double at the tire edge. Climbing at constant speed it is just simple weight.

    And if course on the flat at constant speed weight is irrelevant, which is why a few kg of weight has a small effect on times, and 100-300g less tube weight is barely measurable, being a fraction of one percent better some of the time.






  • I’m now 1 year in to working in Go having been mostly C++ and then mostly large-scale Python dev (with full type annotation).

    Frankly, I bristle now at people giving Python a hard time, having worked with Go and I now hate Go and the de-facto ethos that surrounds it. Python may be slow, but for a lot of use cases not in any way that matters and modern computers are very fast. Many problem areas are not performance-limited, and many performance problems are algorithmic, not from raw statement execution. I even rewrote an entire system in Python and made it use 20% of the CPU the former C++ solution used, while having much more functionality.

    The error returns drive me nuts. I looked around for explanations of the reasoning as I wasn’t seeing it, and only found bald assertions that exceptions get out of control and somehow error returns don’t. Meanwhile standard Go code is very awkward to read because almost every little trivial function calls becomes 4 lines of code, often to do nothing but propagate the error (and errors are just ignored if you forget…). With heavy use of context managers, my error and cancellation handling in Python was always clean, clear, and simple, with code that almost read like whiteboard pseudo-code.

    The select statement can be cool in Go, but then you realize that literally 98% of the times it’s used, it’s simply boilerplate code to (verbosely) handle cancellation semantics via the context object you have to pass everywhere. Again, literally code you just don’t need in exception-based languages with good structures to manage it like Python context managers.

    And every time you think “this is stupidly awkward and verbose, surely there’s a cleaner way to do this” you find people online advocating writing the same boilerplate code and passing it off as a virtue. e.g. get a value from a map and fall back to a default if it’s not there? Nope, not offering that, so everyone must write their own if foo, ok := m[k]; !ok {...} crap. Over and over and over again the answer is “just copy this chunk of code” rather than “standard libraries should provide these commonly needed utilities”. Of course we can do anything we want ourselves, it’s Turing Complete, but why would we want to perpetually reinvent these wheels?

    It’s an unpopular language, becoming less popular (at least by Google trends) and for good reason. I can see it working well for a narrow set of low level activities with extreme concurrency performance needs, but it’s not the only language that could handle that, and for everything else, I think it’s the wrong choice.





  • sping@lemmy.sdf.orgtoLinux@lemmy.mlAny window manager suggestion
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    2
    ·
    4 个月前

    I know about window managers and how using them will reduce the memory usage by system a lot because they are less bloated etc.

    Ehhhh… I think it’s more “not using a curated general-purpose DE”, rather than “using a WM”. All graphical systems include a WM, and a DE in some senses is more of a concept or category than a concrete thing. The choice is whether it’s one you cobble a DE together yourself, or use a pre-configured, curated one.

    Many people use stand-alone WMs and then create their own DE, but quite a few of us put the WM of our choice within existing DE because we want the WM but have no interest in re-inventing all those DE wheels (and/or have >4Gb memory so the “bloat” is not an issue). In my case it’s i3 on Gnome via gnome-flashback.

    Curated DEs do tend to use more resources - typically mostly memory - partly because they tend to be comprehensive for diverse users. Rolling your own minimal DE for your personal needs can often be lighter weight. If you have a very constrained system then it can be beneficial, though that circumstance is more and more unusual these days when 8Gb of memory is often considered “minimal”.

    The main reasons for making your own DE is to do things exactly the way you want, at the expense of having to do it. Beware though, there will be various helpful features of DEs you may not realize you appreciate until you have realize you don’t have them. E.g. what happens when you plug in a USB drive? Nothing, by default - a DE usually manages that. SSHing into servers a lot - a credentials agent is nice - better add one of those…

    A lot of rolling your own DE is months or years of “oh yeah, that is a useful thing to have; I need to find tools and configure them to do that”. Conversely, dropping your WM of choice into another DE is often a case of “huh, that happens automagically; nice!”.







  • I have decades as a SWE, including deep (but now out-of-date) C++ experience, a lot more recently in serious Python systems, and a fair amount of web UI dev on the side.

    Now I have 1 year with Go. I came to it with an open mind having heard people sing its praises I thought it would be broadening to spend some time with a language new to me.

    My advice now is do anything you can to avoid working in golang. Almost daily, I seriously contemplate whether it’d be worth quitting and being unemployed, even in this economy (US). It is a better C, but that’s a low, low bar at least for the project domains I ever work in. Where it’s an even plausible answer, Rust is probably a better one (I think? - haven’t used Rust for anything real).