• 0 Posts
  • 11 Comments
Joined 1 year ago
cake
Cake day: July 4th, 2023

help-circle


  • Comments get stale and over time transition from: accurate to outdated, to eventually flat-out lies.

    Sounds like some people aren’t doing their work enough then. Code comments are part of the work that a programmer should do, not an afterthought. Who else is gonna update that code if not the programmer? And if a programmer isn’t supposed to update their code and we can just all write clean code that would somehow make us all be better engineers (yeah, I use this title differently from programmers), then why are code comments even a thing?

    Self-documenting code is good and all, but so should there be good comments.




  • Hard disagree that documentation is a waste of time. I think you’re just failing to see and use documentation correctly.

    Tech documentation should never:

    • record implementation details; that’s what commits and PRs are for
    • be about the code, but about the solution, information, or provide guidance; use code comments when talking about code
    • be taken as 100% accurate or infallible, but the general direction or essence should still remain true (related to the 2nd point)
    • be expected to be up-to-date; readers should always look at the created / completed / last edited date and make a judgement how much salt to actually take from it

    Documentation can

    • be some kind of paper trail that shows how we got to where we are
    • provide guidelines for getting started on a project, or some part of a larger project, with more context with respect to the business, so that readers are equipped with sufficient context when diving into the code (READMEs can then just focus on setup and testing instructions)
    • go further into what goes around a solution, eg considered alternatives, what actually requires solving given a functional requirement (it’s not always the case that we can fit a solution within a sufficiently small ticket, so tickets might be too localized to give a bigger picture of how a problem is being solved)
    • record system architecture, with actual illustrations, which can be easier to grok than 50 Terraform files

    Writing these out is also good for people who don’t read code or don’t have the time to read code, eg your tech lead, your manager, Tech VP, etc, people who should have some idea of your system or solution, but not necessarily the implementation detail, so that they can do their work more effectively.

    There’s also a culture where a project, or a sufficiently complex problem, starts with a tech proposal, which would properly capture the problem and do solution planning. It’s easier and faster to change than a PR, and reviewers can read that for context. In any case, this democratizes knowledge, instead of creating more tribal knowledge.


  • It’s not possible for everyone to just tell if it’s supposed to be sarcasm. ADHD makes it hard. A bad day makes it hard. A tiring day makes it hard.

    The downside of the misunderstanding isn’t just downvotes. It’s possibly a proliferation of misinformation and an impression that there are people who DO think that way.

    Being not serious while saying something grim is not a globally understood culture either. It’s more common and acceptable in the Western world as a joke.

    So… call it accessibility, but it’s just more approachable for everyone to just put an “/s”.



  • Many of these meanings seem to be captured in some modern solutions already:

    • We plan to provide a value, but memory for this value hasn’t been allocated yet.
    • The memory has been allocated, but we haven’t attempted to compute/retrieve the proper value yet
    • We are in the process of computing/retrieving the value

    Futures?

    • There was a code-level problem computing/retrieving the value

    Exception? Result monads? (Okay, yea, we try to avoid the m word, but bear with me there)

    • We successfully got the value, and the value is “the abstract concept of nothingness”

    An Option or Maybe monad?

    • or the value is “please use the default”
    • or the value is “please try again”

    An enumeration of return types would seem to solve this problem. I can picture doing this in Rust.


  • I swear, these bad EULA updates that basically force users to “accept the agreement, or we’ll brick your device” needs to fucking stop and be made illegal. The price that’s set for a product, especially a damn physical product, should include the acceptance of an existing EULA, and it should be honoured even when new ones come out and the user chooses to not accept the new agreement. You’ve basically never owned the product if companies can just pull the rug underneath you, and render your hardware useless. And you can’t foresee such changes too; a predatory company can acquire one that you’ve trusted and pull this shit. It’s borderline daylight larceny.


  • Ehhh, golang’s pretty down there for me too. Sure, you have types, but the way you “implement” an interface is the sussiest thing I’ve seen in most well-known programming languages. Not to mention all the foot guns (pointers for nullables is a common one, and oh, if you forgot that a function returns an error, and you called it for its effects, you’ve just built a possibly very silent bomb) you end up building into your programs. I use in prod, and I get scared.