• 61 Posts
  • 367 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.




  • no long-term OS support

    IMHO, we need well-enforced laws requiring manufacturers to do both of these things:

    • Provide service manuals and reasonably priced parts for a sensible period, much like existing requirements for replacement car parts. (Perhaps 5 or 7 years minimum?)
    • Put into escrow all the information needed for community support of these devices, to be publicly released when the official support period ends. (The easiest way to satisfy this might be in the form of source code, but data sheets and API documentation could suffice if they are reasonably complete.)

    Some people have argued that the second point is impossible because phones are made with components that don’t come with specs or source code themselves. That might be true today, but if large economies start requiring it, then those component manufacturers will either fall into line or lose the market to competitors who do meet the requirements.

    and not easy to load an alternative OS on.

    This is another big one. We need to be able to unlock our bootloaders, install an OS of our choice, and re-lock our bootloaders. (Without permanently disabling any of the hardware features; there must be a way to fully revert to stock.) The only major brand smartphones I know of with a reputation for doing this right are from Google, which is kind of embarrassing.






  • 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.








  • All of those things are implemented in modern Android.

    No, they are not all implemented on any version of Android that I’ve seen. I don’t know about iOS.

    Well, almost.

    Right. We don’t need just a few pieces of what I listed. We need them all.

    an OS popup asks you if you want to give the app permission to use the feature.

    That’s not a bad interface, but it doesn’t address what I wrote: Individual control.

    Why should email address, sexual orientation, and home address be lumped all together into a single permission? Lumping installed apps and search history together isn’t much better. Why should a music player, which obviously needs access to music files, be also granted access to biometric data like voice recordings?

    This is impossible? The OS can either let the app use the mic or not,

    Of course it’s possible. The OS can record the file and then hand it off to the app. No microphone access required.

    Android always shows a green indicator on screen (upper right corner) when any app is using the microphone

    That alone is better than nothing, but not enough. How is a user to know if something was captured when the screen was off?

    These things are indeed improving as new versions come out, but at a glacial pace. Heck, it was ages before Android stopped letting apps spy on each other’s log messages. It’s now at version 15 and still doesn’t have basic controls like restricting network access.





  • Pretty sure that qualifies for that permission.

    I don’t know what you mean. Existing behavior does not provide the control or visibility that I described.

    One important difference is that the “permissions” in the screen shot are effectively all-or-nothing: if you don’t agree to all of them, then you don’t get to install the app. They’re not permissions so much as demands.

    (Some OS do have settings that will let you turn them off individually after installation, but this is not universally available, is often buried in an advanced configuration panel, leaves a window of time where they are still allowed, and in some cases have been known to cause apps to crash. Things are improving on this front with new OS versions, but doing so in microscopic steps that move at a glacial pace.)