5,715 karma · joined December 15, 2013
Ultimately, what we all use it for is pretty straight-forward, and it seems like by now we should've arrived at having approximately one best implementation, which could be used both for personal archiving and for iternet-facing instances (perhaps even distributed). But I don't know if we have.
[0] https://www.sciencealert.com/get-inspired-by-carl-sagan-s-am...
Seriously, I just don't understand what's going on. To me it looks like all world just has gone crazy.
And also, second, this is more specific to this particular example, but when we say "DateTime object" we usually mean "your programming language stdlib DateTime object". Or at least "some popular library DateTime object". Not your "home-baked DateTime object". And I've yet to see a language where this object makes only correct assumptions about real-life datetimes (even only as far, as my own current knowledge about datetime goes, which almost certainly still isn't complete!). And you'd think datetimes are trivial compared to the rest of objects in our systems. I mean, seriously, it's annoying, but I have to make working software somehow, despite the backbone of all of our software being just shit, and not relying on this shit more than I need to is a good rule to follow. Sure, I totally can use whatever broken DateTime objects when the correctness is not that important (they still work for like 99% of use-cases), but when correctness is important, I'd better rely on a string (maybe wrapped as NewType('SpecialDate', str)) that I know won't modify itself, than on stdlib DateTime object.
> Why did God go with the complex numbers and not the real numbers?
> Years ago, at Berkeley, I was hanging out with some math grad students -- I fell in with the wrong crowd -- and I asked them that exact question. The mathematicians just snickered. "Give us a break -- the complex numbers are algebraically closed!" To them it wasn't a mystery at all.
Apparently, you weren't one of these math grad students, and, to be fair, Aaronson is starting with the question that is somewhat opposite to yours, but still, doesn't it intuitively make sense somehow? We are modeling something. In the process of modeling something we discover functions, and algebra, and find out that we'd like to use square roots all over the place. And just that alone leads us naturally to complex numbers! We didn't start with them, we only imagined an algebra that allows us to describe some process we'd like to describe, and suddenly there's no way around complex numbers! To me, thinking this way makes it almost obvious that ℂ-numbers are "real" somehow, they are indeed the fundamental building block of some complex-enough model, while ℝ are not.
Now, I must admit, that of course it doesn't reveal to me what the fuck they actually are, how to "imagine" them in the real world. I suppose, it's the same with you. But at least it makes me quite sure that indeed this is "the shadow of something natural that we just couldn't see", and I just don't know what. I believe it to be the consequence of us currently representing all numbers somehow "wrong". Similarly to how ancient Babylonian fraction representations were preventing ancient Babylonians from asking the right questions about them.
P.S. I think I must admit, that I do NOT believe real numbers to be natural in any sense whatsoever. But this is completely besides the point.
I mean, of course having a string, when you mean "email" or "date" is only slightly better than having a pointer, when you mean a string. And everyone's instinctive reaction to that should be that it's horrible. In practice though, not only did I often treat some complex business-objects and emails as strings, but (hold onto yourselves!) even dates as strings, and am ready to defend that as the correct choice.
Ultimately, it's about how much we are ready to assume about the data. I mean, that's what modelling is: making a set of assumptions about the real world and rejecting everything that doesn't fit our model. Making a neat little model is what every programmer wants. It's the "type-driven design" the OP praises. It's beautiful, and programmers must make beautiful models and write beautiful code, otherwise they are bad programmers.
Except, unfortunately, programming has nothing to do with beauty, it's about making some system that gets some data from here, displays it there and makes it possible for people and robots to act on the given data. Beautiful model is essentially only needed for us to contain the complexity of that system into something we can understand and keep working. The model doesn't truly need t be complete.
Moreover, as everyone with 5+ years of experience must known (I imagine), our models are never complete, it always turns out that assumptions we make are naïve it best. It turns out there was time before 1970, there are leap seconds, time zones, DST, which is up to minutes, not hours, and it doesn't necessarily happen on the same date every year (at least not in terms of Gregorian calendar, it may be bound to Ramadan, for example). There are so many details about the real world that you, brave young 14 (or 40) year old programmer don't know yet!
So, when you model data "correctly" and turn "2026-02-10 12:00" (or better yet, "10/02/2026 12:00") into a "correct" DateTime object, you are making a hell lot of assumptions, and some of them, I assure you, are wrong. Hopefully, it just so happens that it doesn't matter in your case, this is why such modelling works at all.
But what if it does? What if it's the datetime on a ticket that a third party provided to you, and you are providing it to a customer now? And you get sued if it ends up the wrong date because of some transformations that happened inside of your system? Well, it's best if it doesn't happen. Fortunately, no other computations in the system seem to rely on the fact it's a datetime right now, so you can just treat it as a string. Is it UTC? Event city timezone? Vendor HQ city timezone? I don't know! I don't care! That's what was on the ticket, and it's up to you, dear customer, to get it right.
So, ultimately, it's about where you are willing to put the boundary between your model and scary outer world, and, pragmatically, it's often better NOT to do any "type-driven design" unless you need to.
…What? I suppose, if the OP feels he can give you imperative commands, so can I. I'll spare you the pretentious text elaborating the command — it carries as much substance as no text at all, anyway. And, seriously, if you don't use icons in data tables, you should try and see how it feels. For me personally it's the magic trick that often makes all the difference between an unreadable wall of numbers and a vivid, crystal clear picture.
So, I suppose you shouldn't give your fake id (digital or physical) to a government officials. It also seems "obvious" that it's similarly unwise to give it to a bank. But you can do that to a random guy on AirBnB? A hotel? To a delivery service (Uber/Wolt/whatever)? Dicsord? Where is the line between a bank (a private commercial corporation) and Discord (a private commercial corporation)?
In fact, if I make a proper leaderboard by that metric, you are #914. And #731 if we only consider accounts older than 60 days.
Here's the data: https://pastes.io/name-words
Obviously, like all ignorant people do, I am going to oversimplify things here. But still, to me, the "platonic idea" of Anki seems a dead simple thing. All what I care about when using Anki is what's on the 2 sides of a Card, a question + answer, which can only be some visual image (possibly encoded as text, possibly just JPEG, I really don't care as long as it fits in my mobile device memory) + optional sound. That's really it. If it should be bi-directional or uni-directional card is a detail of how the deck is generated/encoded, and the spaced repetition algorithm is a detail of the app that I use to study (so, usually AnkiDroid, I imagine — an unaffiliated 3rd party; who even uses desktop apps nowadays?).
So, I imagine there can exist (and do exist) some minor additional features, like an ability to require a typed answer for a card, but it seems pretty minor, and I really don't see a lot of room for the app to evolve.
So, ultimately people need only a common .apkg format, which exists and is relatively simple (although I suppose it could've been even simplier), and a place like AnkiWeb, where people can share their decks, so Spanish top-2000 or basic integrals deck isn't re-invented over and over again. It's a pity that AnkiWeb isn't more open and will be even less open from now on, but as long as someone is willing to just host it (which is ultimately just paying for downloads traffic) it's easy to replicate, so no super-valuable IP here.
Of course, a primary use-case for Anki is a tool to make decks, but you could really do with pretty simple python script + YAML/JSON/CSV/whatever metadata file to convert it to AnkiDroid-compatible .apkg file.
So, basically, who cares? What is to "own" there?
It's very tangential to your point (which is somewhat fair), but it's just extremely weird to see a statement like this in 2026, let alone on HN. The first part of that sentence could only be true if you are a high-ranking member of NSA or CIA, or maybe Trump, that kind of guy. Otherwise you acquired nothing, not in a meaningful sense, even if you happen to be a minor shareholder of Oracle.
The second part is just extremely naïve if sincere. Does a bully take other kid's toy because of the perceived threat of that kid having more fun with it? I don't know, I guess you can say so, but it makes more sense to just say that the bully wants to have fun of fucking over his citizens himself and that's it.