• 63 Posts
  • 472 Comments
Joined 7 months ago
cake
Cake day: February 10th, 2024

help-circle
  • I’m trying to understand Git, but it’s a giant conceptual leap.

    In that case, I suggest learning Mercurial first. Its underlying design is very similar to Git, but the interface is more consistent and does a much better job of presenting the concepts to humans (especially those already familiar with traditional version control). Then, once you’re comfortable with the concepts and commands in Mercurial, learn Git, since it’s everywhere nowadays.

    Consider learning at least one new language. Java is only one of many (and not even a particularly nice one IMHO). Try to find a language that you enjoy using; your programming life will be better for it. If you want something flexible and productive, consider Python. For more structure than that, maybe Go. If mobile apps interest you, there are Kotlin (Android), Swift (iOS), and Dart (both). If web development appeals to you, along with lots of job openings and lots of competition for those jobs, JavaScript. If you fancy the esoteric (and well-paying), Elixir and Erlang are worth a look. Lower level languages are in demand as well (e.g. C++, Rust) but they come with various kinds of pain that I wouldn’t recommend to someone in your situation.

    Above all, please make sure you’re reserving time for things that make you happy, sleep, and (if still possible) some kind of exercise. Your own physical and mental health are important. If you endure a bad working environment or wear yourself thin for too long, you will burn out, which won’t help you provide for yourself or anyone else.

    Take care, OP.


  • One pattern I’ve noticed is people seeking a language that’s better than {JSON,XML,INI,etc} at wrangling their slightly complex configuration files, noticing the additional features and type support offered by YAML, and assuming it will be a good solution.

    Then, as their configs grow ever larger and more complex, they discover that expressing them in YAML requires large sections of deep nesting, long item sequences, and line wrapping. The syntax style that they saw working well in other places (e.g. certain programming languages) breaks down quickly at that level of complexity, making it difficult for humans to correctly write and follow, and leading to frequent errors.

    YAML doesn’t suck for small stuff, IMHO. (But it is more complex than necessary for small stuff.)

    For things likely to grow to medium-large size or complexity, I would recommend either breaking up the data into separate files, or looking for a different config/serialization language.





  • A large part of the reason Mercedes and other German brands were considered high quality was that they were more reliable than a lot of other brands on the market, while being good to drive.

    “Good to drive” is a bit of an understatement. German cars have enjoyed car enthusiasts’ favor for decades, despite often mediocre reliability, specifically because they were great to drive. There are multiple dimensions to that, ranging from the safety advantage (and fun) afforded by giving the driver a good feel for what’s going on between the tires and the road surface, to an excellent balance of responsiveness and comfort from well-designed suspension. VW even ran an ad campaign around it: Fahrvergnügen

    Japanese and American cars generally could not compete in this area.

    However, those same German cars also became famous for developing endless little problems over the course of ownership, from annoying rattles to failing parts that were either expensive to buy or difficult to reach (and therefore expensive to replace).

    If there was a time when German cars were known for above average reliability, I think it must have preceded the more recent generations. Maybe back before Japan had started investing in this area?





  • What new direction is D taking that has you worried? Maybe I should watch out for it, too. :)

    one of the features I dislike the most in C/C++ is the super slow and super obsolete precompiler with its header files,

    Are you sure you should lump those two languages together? In my experience, C++ preprocessing can be slow (especially when you use templates), but not C. I shudder to think what preprocessor shenanigans the C libraries you’ve used might be doing to make compiling with them super slow. (LLVM isn’t exactly known as a speed demon, though; maybe you’ve run into that?)

    In any case, I guess that rules out transpiled languages like Nimskull (work in progress) and its parent language.

    Have you looked at Odin?

    Maybe Vale?

    There is Jai (work in progress), though I haven’t looked closely enough to know if it fits your needs. (I’m not sold on Jonathan Blow’s judgment.)

    I suspect there are few languages well suited to both system and game programming (unless you mean game engine programming) that avoid all the things you seem to dislike. If you find one, I hope you’ll write about it here. If not, there’s always the option of using two languages.












  • ISO 8601 date format. Not because it’s from a standards body, but because it’s simple, sensible, clearly defined, easy to recognize, and very effective.

    Date field placement in any order other than most-significant-digits-first is not only counterintuitive, but needlessly complicated to work with. Omitting critical information like the century is ambiguous and confusing.

    We don’t live in isolated villages any more. Mixing and matching those problems by accepting all the world’s various regional and personal date styles, especially with no reliable indication of which ones apply in any given case, leads to the hodgepodge of error-prone date madness that we have today.

    The 2024-09-02 format should be taught in schools and required in official documents. Let the antiquated date styles fall into disuse outside of art and personal correspondence, like cursive writing.