Whoa, this post is actually really inspiring! It gives me a better understanding for why Echo Chess has more replayability than other lil' games I've toyed with. It makes me want to poke at new ideas now. Thanks for sharing this crazy journey of yours!
I guess I also want to ask: are you making money on this? Like, how do you have this much time to spend on this project?
Thanks so much for reading this beast of a tech article haha! I'm glad you enjoyed it. I'm surprised people are actually reading the whole thing lol. Thank you for the kind words.
All these comments saying merely "S3 has no concept of directories" without an explanation (or at least a link to an explanation) are pretty unhelpful, IMO. I dismissed your comment, but then I came upon this later one explaining why: https://news.ycombinator.com/item?id=39660445
After reading that, I now understand your comment.
I appreciate you sharing that point of view. There's a "curse of knowledge" effect with AWS where its card-carrying proponents (myself included) lose perspective on how complex it actually is.
> Squashing makes the diffs much more painful, such as by burying an important change in a sea of mechanical ones when they were originally in separate commits.
Can you give an example? I don't even think I understand what you're saying. You control your overall summary, so it's up to you to make it useful.
I would cite clarity as my reason for squashing! I think most people are just bad at organizing (& naming) their commits, so they make A LOT of vacuous ones, crowding out the forest for the trees. It's never helpful to see the git blame saying things like "Addressed PR comments" or "Resolved merge conflict", etc.
I do prefer a merge commit when the author has done a good job with their own commits, but that's rare. In all other cases, squashing is greatly preferable to me.
> > Squashing makes the diffs much more painful, such as by burying an important change in a sea of mechanical ones when they were originally in separate commits.
> Can you give an example?
Sure. Here's a common pattern I've used and seen others use:
Commit 1: "Introduce a helper for XYZ", +35,-8, changes 1 file. Introduce a helper for a common operation that appears in various places in the codebase.
Commit 2: "Use the XYZ helper in most places", +60,-260, changes 17 files. Use the helper in all the mechanically easy places.
Commit 3: "Rework ABC to fit with the XYZ helper", +15,-20, changes 1 file. Use the helper in a complicated case that could use some extra scrutiny.
I don't want those squashed together; I want to make it easy, both in the PR and later on, to be able to see each step. Otherwise, the mechanical changes in commit 2 will bury the actual implementation from commit 1 in the middle (wherever the file sorts), and will mask the added complexity in the commit 3 case.
Regarding Python: Really? Obviously v2-to-v3 was an absolute fiasco, but since then, it's been great in my personal experience.
Don't get me wrong: Python hasn't overcome its tooling problem, so there's still that barrier. But once your team agrees on a standardized tool set, you should be able to coast A-OK.
Every time there's a 0.1 Python version increase, it takes months for other libraries to catch up. I still have to install conda envs with Python=3.9 because they are warm-blooded software.
> What else would you do? Play video games, watch tv, “party”?
Sorry, but this is such a sad statement to me. I mean, unless you absolutely love the field you work in, in which case that's amazing, go for it! But if you're like the rest of us, there's so much to see & do in life besides work! As an example, I'm reading, learning to cook, traveling, and trying to get fit. These provide their own satisfaction & meaning in ways that work doesn't.
On the contrary, I feel sort of sad that so many people seem to find their work unfulfilling. I work a job that’s more work than some alternatives could be. I could at any point quit and find easier work that paid better. But I chose to work here, right? I’m privileged enough to not be obligated to stay. I’ll assume most people here have similar flexibility.
I find the “cooking as alternative” suggestion interesting too. I can understand the desire work on a creation for yourself (a meal), but for me that’s balanced by the desire to create something amazing for the world. By the same token, I could take every Friday off and work on a side project, but fundamentally that’s not going to be as fun or productive as working on the main project I’ve chosen to work on: ie, my job.
Now raising a family I can totally see as a competing interest, if I were raising children I would be working less. But I’m not (yet).
Design for manufacturing. It is a focus, in building tooling, on how that tooling fits into the larger workflows around the specific domain of the tool, and the role that thoughtful tool design can play in improving (or damaging) the overall success and harmony of the entire system.
It absolutely boggles my mind that people can be unaware that this world is collapsing. One would have to deliberately avoid the media. Or, I guess, just shut the information out. “Too scary to think about” might be quite literal.
Maybe you're really good at working with uncertainty?
This article focuses on the number of new things overwhelming our working memory, but I'd argue another big problem is the difficulty of leveraging abstractions even if you don't understand them.
In this exercise, both myself and the article get sidetracked in understanding the basis of all the abstractions as well, rather than just letting the abstractions be, with all of their uncertainty. But if I were better at the latter, I could see this approach working.
I did the exercise mentioned and was happily bouncing around between 3 and 6 levels deep in Wikipedia before I thought I should come back to the article to see what else it said, at which point I became very confused.
Perhaps "comfortable with knowing that I don't know things, yet proceeding anyway" is a better description.
I guess I also want to ask: are you making money on this? Like, how do you have this much time to spend on this project?