Person 1 adds code that uses this with Pandas. Person 2 sees the csvbase:// URIs and copy/pastes them to use with some other library Foozle that uses URIs and it works because Foozle also happens to use fsspec. Foozle migrates off of fsspec to some other filesystem wrapper. 3 years later, after persons 1 and 2 have left the company, person 3 bumps the version of Foozle the project uses and suddenly tests are failing because they can't resolve csvbase:// URIs, but the Foozle release notes say nothing about removing support for csvbase:// URIs.
I just read this article and have very conflicting feelings about it. It is clever, and the nice kind of clever that does not require one to be a mega-brain. On the other hand, it creates invisible and uncontrollable dependencies, such as the one you describe.
Another drawback: something is broken and I want to set a debug point in the code that fetches the CSV data. Unless you know about fsspec it will be hard to follow the breadcrumbs to know how this library injects itself into your code.
The problem can be even more immediate. Person 2 (a junior or intern) is given the normally mundane task to go through the code base and replace pandas with foozle, a faster, but less mature alternative. They try to replace the pd.read_csv() calls with foozle's equivalent, say fz.read_csv(). So, pd.read_csv("csvbase://") becomes fz.read_csv("csvbase://"). Only, Foozle hasn't implemented fsspec and person 2 doesn't know anything about it either. Fun times.
How is this different from the risk that a dataframe library will stop supporting S3:// URIs? Why wouldn't Foozle's release notes mention a major protocol change? How is this scenario different from any other library making a major change without documenting it?
Because fsspec handles the extensions directly, Foozle does not have to opt in to get the csvbase:// support, all that's required is for the csvbase Python client to be installed. So users of Foozle might start depending on these extensions without Foozle ever finding out about it.
But I guess that's the reality of making libraries, even bugs will be relied on, we really don't have any methods for evolving software ecosystems reliably and compatibly.
Not sure what should be my takeaway here. It feels one can say the same story with any third party dependency. Are you saying one should not use dependencies at all?
In this hypothetical case, there would be some floundering to discover the cause, and a two-line fix. Rather than having the two extra lines from the start. Seems acceptable risk to me.
The opening of the animation has the phrase “A Mickey Mouse Sound Cartoon” on screen. IANAL but I saw on the news that this means the character’s name and old-style likeness are fair game for new content by anybody.
I don't know what's going on, but your posts to HN have been increasingly offtopic lately, and against the site guidelines. I'm guessing that it's best if we ban your account for now.
You've been a good HN user for many years and we definitely want you part of the community, but only if you're able to participate meaningfully and within the site guidelines (https://news.ycombinator.com/newsguidelines.html).
If and when that happens, please email hn@ycombinator.com and we'll take a look and hopefully unban you.
This here is why I don't seek out gonzo-style writing. I absolutely cannot tell if you're satirizing your position or if you're doubling down on being completely, factually, verifiably incorrect.
The most common point is that they're safe to share between threads making parallel algorithms easier to invent, understand, and implement correctly.
You can also safely re-use sub-structures without performing a deep copy. For example, if you want to keep a sub-tree around for later you can do that in O(1) time because it's safe to keep a reference to it. If it is a mutable tree you don't know what's going to happen to it so you need to do a deep copy of the entire sub-tree you're holding on to. This can save a lot on memory allocation and copying depending on your use case.
I think starting with Standard ML is a good idea. It is the core of ocaml and really highlights the differences with other approaches to programming. I went from SML to ocaml to Haskell.
I've been using Java since version 1.1 and I've seen features added that required a new version of the language spec to go through committee and get implemented before we got to use them where you could just add these features yourself at the top of any Lisp file and then immediately start using them. For example consider the try-with-resources [0] syntax sugar. So instead of thinking "I never actually ran into a need for them", think of new language features that you have started using: those are the kinds of things you could've added yourself.
Also look at any kind of code-gen tooling like parser generators or record specifications like Protocol Buffers as examples of what you could do within the language.
It's clear he can do it: the ending of Anathem ties up everything very neatly and it is hard for me to imagine any major events happening in the characters' lifetimes that would rival the plot arc they've been through.
I don't think Anathem had a good ending per-se; rather the whole novel sets up a gimmick revealed at the end that explains away the lack of a good ending.
I think a well set up gimmick is still a gimmick. And I think probably for the first two thirds of the book at least, the reader will have no clue what's coming even though it's being set up.
Anyway I do like the book, but the ending wraps up very abruptly thanks to the employment of this gimmick.
Going by the comments on this thread, it's hard to believe everyone's talking about the same book... (which I haven't read, and I'm now torn as to whether I should!)
It's doesn't go "off the rails" at all, it completely and satisfactorily explains everything. It goes fast but it's good. I highly recommend it. You won't want to miss the worldbuilding, it's absolutely incredible.
Yeah it's wild! Second-guessed myself a tiny bit after seeing all the conflicting views.
Minor spoilers:
I loved the world-building and mystery in the first half, the main character lives in a post-apoc monastary, tons of great details and tidbits. It felt vibrant, deep, reminded me of Redwall and the 5th Harry Potter, with the sexual repression and small-scale rebellion against authority.
He leaves the walls in the second half and stuff happens, I forgot most of it. The journey part felt like an afterthought. Something something aliens, really didn't feel earned or connected.
Anathem is one of his few books with a denoument. It's not super long, but it's nice to have some scene hinting at where things are going next after the main crisis is resolved.
That sounds great; I have had Anathem on my bookshelf for years after life got in the way just after starting it; I had planned to finally read it this fall. Your observation makes me look forward to it even more, thank you!
I like about 2/3 of Stephenson’s novels and Anathem took some work for me to get into. It really gets moving several hundred pages in and then the last 1/3 makes it all worth it.
It took me a few tries to get past the first 1/3rd of Anathem but once I did, it became one of my all time favorite books. Stephenson paints a rich rich world which I have often thought about outside of the major plot points of the book.
It's one of those books where you have no idea what's going on for the first chunk of the book--and probably don't really realize what's fully going on until close to the end. Reading a book in at least partial confusion can be taxing and hard to hold interest. (Though I certainly liked Anathem quite a bit overall.)
I feel that his novels are becoming more and more mainstream friendly, and Termination Shock is my suggestion. The world is very similar to our own, set in the near future (versus The Diamond Age) of our planet (versus Anathem) and is very relatable.
My other suggestions would be REAMDE for people who are into action movies or spy novels, or the first half of Seveneves for space nerds.
I think they are becoming more mainstream friendly as, well, the world has caught up with him, more or less - I find he's a master at grasping what technologies will explode into the mainstream a few years early, then spin a wonderful yarn around that.
Cryptonomicon, REAMDE (to some extent) and The Diamond Age seemed really future-y when released - but now, their basic concepts are all over the media and on people's minds.
REAMDE came out a very short time before awareness of ransomware went from "a handful of people in the hacker world" to "infosec industry starts becoming aware of it".
To more than a few people, it seemed very prescient.
Reamde is much more thriller than SF. My big objection to it is that it was one of those novels where if everything didn't fall right into place again and again, there wouldn't be a story.
A large enough increase in supply could cause property values to level off while also increasing the vacancy rate for rental properties. I think the idea is that those circumstances would make real estate no longer attractive as an investment.
In a Scrabble AI coding contest I discovered the GADDAG which is like a trie but indexes all of the words forwards and backwards from any starting point within the words.