• 0 Posts
  • 19 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.


  • I’m probably replying to a troll, but I will do so anyways for the sake of those who need to read this.

    If we aren’t in any way bothered to see such narrow-minded reactions to a wrong being righted, then humankind is definitely headed for a few horrible decades ahead, filled with unnecessary strife and conflict out of pure indifference to each other’s backgrounds and current understanding of the world. And I’d even imagine it’d be worse than what we’re already seeing this decade. I suggest you go back and rethink what really matters as humans, instead of focusing on just some narrow definition of what a win is.


  • Wow, wtf is wrong with this comment section? People don’t realize how laws made in the past just stay around until someone steps up to change it? Or y’all don’t have the capacity to look at the world through a different mindset, even if you disagree with the mindset? As much as we all hope that people around the world are accepting, it doesn’t just happen, and you can’t just hope people who don’t understand your PoV will just realize something’s wrong waking up one day.

    Either those, or y’all have either grown too cynical or are trying to be cynical just for the sake of it.

    Can’t y’all just celebrate the fact that this is happening in Japan, an infamous nation that usually tries fervently to preserve their tradition and status quo?



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


  • 2 things I like about golang is just 1) the ease of getting someone to start work, and 2) goroutines. I have no complains about goroutines cause I’ve barely used it, and when I do it’s been fine. The first point though, I’d say the simplicity of the language is a double-edged sword — it’s easy to learn with little surface to cover, but it forces you to implement a lot of basic machinery you find in other languages by yourself, and so your codebase can get clunky to read really quickly, especially as your project grows.

    Not trying to dissuade you from learning golang tho. I think it’s a good language to learn and use, especially for small simple programs, but it’s not the great language many try to say it is. It’s… fine. There are many reasons why it grinds my gears, but I’m still fine with using it and maintaining it for prod.


  • Badland9085@lemm.eetoProgrammer Humor@lemmy.mlIn case you forgot.
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    1 year ago

    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.


  • When you have a large population with a strongman government, having little appetite for upheavals is likely impossible. Interacting with the Chinese, I’ve learned that their government is always actively monitoring online spaces to silence dissidents amongst their own people, such that their people are used to codify their languages, and switch whenever a code gets added to the list of words that would trigger the attention of authorities. Some years ago, it was something related to meditation (it was used as a code for their gatherings), and so the Buddhists had to change the word they use to avoid unnecessary trouble with the authorities. These don’t get mentioned very often in Western news sources.



  • I intended to give an explanation, but since this community is pretty general, i.e. we have people from basically all walks of life here, many with little to no involvement or understanding of the tech industry, so I decided to leave it out cause it would be too much to explain.

    rolauten@startrek.website has given us a pretty brief explanation, but I think it can be further simplified, though would require a lot more knowledge build up (i.e. more words). If anyone’s interested, I can try to write a fireplace story, though I can’t say I’m the most qualified person to do so, or give an absolutely accurate story.




  • You are correct. This notion of “size” of sets is called “cardinality”. For two sets to have the same “size” is to have the same cardinality.

    The set of natural numbers (whole, counting numbers, starting from either 0 or 1, depending on which field you’re in) and the integers have the same cardinality. They also have the same cardinality as the rational numbers, numbers that can be written as a fraction of integers. However, none of these have the same cardinality as the reals, and the way to prove that is through Cantor’s well-known Diagonal Argument.

    Another interesting thing that makes integers and rationals different, despite them having the same cardinality, is that the rationals are “dense” in the reals. What “rationals are dense in the reals” means is that if you take any two real numbers, you can always find a rational number between them. This is, however, not true for integers. Pretty fascinating, since this shows that the intuitive notion of “relative size” actually captures the idea of, in this case, distance, aka a metric. Cardinality is thus defined to remove that notion.