• 1 Post
  • 23 Comments
Joined 2 years ago
cake
Cake day: June 18th, 2023

help-circle


  • To be fair, this was originally the point of plastic. The primary point of plastic today is that it is an extremely cheap material that you can mould into pretty much any shape.

    Need a bag to carry stuff? Plastic.

    Packaging for toothpicks? Plastic.

    Spacers inside an electric circuit? Plastic.

    Packaging for clothes? Plastic.

    Fake plant? Plastic.

    Part of the problem is that we’re using a wonder-material that lasts forever (plastic) for a bunch of mundane shit where we don’t need it, because that wonder-material turns out to be the cheapest material around as well.




  • I definitely have a hangup on students I teach saying something along the lines of “I don’t know how to get started on this, I asked GPT and…”. To be clear: We’re talking about higher-level university courses here, where GPT is, from my experience, unreliable at best and useless or misleading at worst. It makes me want to yell “What do you think?!?” I’ve been teaching at a University for some years, and there’s a huge shift in the past couple years regarding how willing students are to smack their head repeatedly against a problem until they figure it out. It seems like their first instinct when they don’t know something is to ask an LLM, and if that doesn’t work, to give up.

    I honestly want shake a physical book at them (and sometimes do), and try to help them understand that actually looking up what they need in a reliable resource is an option. (Note: I’m not in the US, you get second hand course books for like 40 USD here that are absolutely great, to the point that I have a bunch myself that I use to look stuff up in my research).

    Of course, the above doesn’t apply to all students, but there’s definitely been a major shift in the past couple years.


  • Then I absolutely understand you :)

    How common it is 100 % depends on the code base and what practices are preferred. In Python code bases where I have a word in decisions, all Boolean checks should be x is True or x is False if x should be a Boolean. In that sense, if I read if x or if not x, it’s an indicator that x does not need to be a Boolean.

    In that sense, I could say that my preference is to flip it (in Python): Explicitly indicate/check for a Boolean if you expect/need a Boolean, otherwise use a “truethiness” check.




  • Exactly as you said yourself: Checking falsieness does not guarantee that the object has a length. There is considerable overlap between the two, and if it turns out that this check is a performance bottleneck (which I have a hard time imagining) it can be appropriate to check for falsieness instead of zero length. But in that case, don’t be surprised if you suddenly get an obscure bug because of some custom object not behaving the way you assumed it would.

    I guess my primary point is that we should be checking for what we actually care about, because that makes intent clear and reduces the chance for obscure bugs.



  • I write a lot of Python. I hate it when people use “X is more pythonic” as some kind of argument for what is a better solution to a problem. I also have a hang up with people acting like python has any form of type safety, instead of just embracing duck typing.This lands us at the following:

    The article states that “you can check a list for emptiness in two ways: if not mylist or if len(mylist) == 0”. Already here, a fundamental mistake has been made: You don’t know (and shouldn’t care) whether mylist is a list. These two checks are not different ways of doing the same thing, but two different checks altogether. The first checks whether the object is “falsey” and the second checks whether the object has a well defined length that is zero. These are two completely different checks, which often (but far from always) overlap. Embrace the duck type- type safe python is a myth.





  • I have to be honest in that, while I think duck typing should be embraced, I have a hard time seeing how people are actually able to deal with large-scale pure Python projects, just because of the dynamic typing. To me, it makes reading code so much more difficult when I can’t just look at a function and immediately see the types involved.

    Because of this, I also have a small hangup with examples in some C++ libraries that use auto. Like sure, I’m happy to use auto when writing code, but when reading an example I would very much like to immediately be able to know what the return type of a function is. In general, I think the use of auto should be restricted to cases where it increases readability, and not used as a lazy way out of writing out the types, which I think is one of the benefits of C++ vs. Python in large projects.


  • While I do agree with most of what is said here, I have a hangup on one of the points: Thinking that “docstrings and variable names” are a trustworthy way to indicate types. Python is not a statically typed language - never will be. You can have as much type hinting as you want, but you will never have a guarantee that some variable holds the type you think it does, short of checking the type at runtime. Also, code logic can change over time, and there is no guarantee that comments, docstrings and variable names will always be up to date.

    By all means, having good docstrings, variable names, and type hinting is important, but none of them should be treated as some kind of silver bullet that gets you around the fact that I can access __globals__ at any time and change any variable to whatever I want if I’m so inclined.

    This doesn’t have to be a bad thing though. I use both Python and C++ daily, and think that the proper way to use Python is to fully embrace duck typing. However that also means my code should be written in such a way that it will work as long as whatever input to it conforms loosely to whatever type I’m expecting to receive.



  • I love how the mathematician ends the interview by saying

    [this] may help us uncover something beautiful, or maybe even useful.

    It’s great seeing how these people work with science for the sake of science itself, because it’s beautiful, not because they suspect that they’ll find something that immediately changes the world. It makes me think that they see themselves more as artists than as engineers, and I think that if you have a career in science it’s a healthy approach to have. Most scientists never have an “Einstein-like” breakthrough, but contribute pieces to the puzzle that may lead to breakthroughs long after they’re gone. Being satisfied with that is probably key to having peace of mind as a scientist.


  • One of the advantages of hydrogen is that tanks and fuel cells can withstand a large number of “charging cycles” much better than batteries. Additionally, for ships, the amount of energy needed to move is so enormous that I fear we’ll have a hard time creating batteries that are feasible for long-distance shipping.

    For short distance ferrying (including large, car carrying ferries) on the other hand, Norway has already implemented quite a few electric stretches. The major issue there is building the infrastructure to charge the ferries.