|Happy birthday to me #41
(30 Sep 2020 at 22:23)
|Hiya! It was my birthday again. This was predictable.|
Projects this month are a continuation of what I talked about before. I finished porting every Aphasia 1 program to Aphasia 2, and retired that thing. Even though it's "open source" I'm pretty sure I'm the only Aphasia programmer (and if this is not true, my condolences!) so it is a bit of a compiler/language luxury to be able to evolve the language by just updating every program in the world. There are a bunch of apps that are incomplete or that I'm pretty sure I will never need to use again (e.g. 20 years ago I made a content management system for my then-girlfriend's The Sims 1 fan site) but once I was on a roll I just did these too so I wouldn't need to agonize over whether or not to do them or delete them. So now I've started fixing various problems with the interpreter (it's running this very blog you see before you), memory leaks and things forbidden since C++'s standardization, performance trainwrecks, and so on. It's basically fun and feels good to not have that maintenance hazard in the back of my mind, like fixing a slightly leaky pipe in the wall.
We moved Destroy FX to github and are continuing to modernize that code and fix bugs, which is along those same lines. I'm making an effort to give git a chance because I know a lot of smart people like it, but mostly finding it really obtuse. And I keep having situations like this: "Hmm, I want to do basic thing X, which surely every programmer must want to do."
1. Search "git do X" on Google-brand search engine
2. Find "Q. How do I do X in git?" on StackExchange-brand Q&A site
3. (I'm like, perfect)
4. Accepted answer has 600 upvotes: "Technically, what you really want to do is Y." (This sounds the same to me but ok). "Type these commands:"
✂ clip 'n save
git reset --hard --delete origin/main
git unstash --interactive -u -a -m --rebase # will drop you into vi shell. follow the instructions
git rebase -i HEAD~3 # do this for each change. do NOT use HEAD
git push --force-with-lease
5. Next answer has 19,000 upvotes: "Since git 2.6 you can use the command:"
✂ clip 'n save
"... but git will issue a warning that you are using git wrong and shall be punished."
6. All comments on this answer are "This is WRONG. It will CORRUPT your precious HASHES" or people arguing about that.
I suppose this is probably what it feels like to many people to use a language like ML (or maybe do anything with computers), so maybe I should be more sympathetic. But when doing version control I guess I'm just not looking for a super opinionated technology that prides itself on solving problems I don't have (like semantic symmetry between my working version and the hosted "main" repository). In comparison, I use Mercurial at work and it seems to do all the same stuff, but somehow managed to be mostly intuitive in a short period of time (although to be fair this may be because of some nice extensions). Maybe git will just take longer to click, or I need to make my own wrapper tools, or something like that.
Anyway! It can't all be computers so I've also been doing a lot of running, including fairly serious efforts at coverage of municipalities neighboring Pittsburgh. Running the whole county is still seeming pretty nuts, but some part of me wants to get deep enough into it that I start taking it seriously because of the sunk costs. For a sense of what's involved, here's where I'm at:
Allegheny County, PA
... with the majority of the red blob being the existing effort towards Pittsburgh. One positive is that the streets are less dense outside the city, but sidewalks are much more rare, and of course everything is much farther to even get to in the first place.
This month I finished Control, which was great. As if for my birthday, Spelunky 2 just came out, so I played that late into the night yesterday and will do so again now! So far it's great, but it's funny how my skillset from Spelunky HD (one of my favorite games of all time, and I 100%ed it) is so far not transferring to this one very much at all, because of all the new surprising ways to die.
|1. Happy Birthday
2. Mercurial is definitely more sensible than git, though the general model of operation is the same. The terminology of git is bizarrely permuted because Linus was friends with the bitkeeper guy and didn't want to directly clone it??
4. You can try https://hg-git.github.io/
|Happy Birthday! I laughed at your description of learning git :D
I preferred Mercurial during the DVCS wars of the late aughts, just as I was first learning software, but after a decade of practice I'm now more proficient in it than hg. I still do the occasional project in hg, wish it "won" (or at least had substantial use), and still harbor dreams that I'll get to use it more than I do.
I just got Control, it's on my list to play soon ^_^
|Look for a talk titled "git for ages 4 and up", it was transformative in my understanding and I ended up getting a version of it hosted internally at the company I worked at.|
|I know we have talked about git a lot recently, but funny thing is that I both agree with you and also perhaps my least favorite thing about git is it not being MORE opinionated about some things. Particularly in the context of working in a larger organizational context, because there are often many different ways to do the same fundamental things, it leads to expending think units on questions I'd rather just have decided by the tool, and in a larger group, can lead to a lot of philosophical debates about which is the "best" or "right" way to do X in git.
example: bringing branches back to their parent (merge? rebase? fast-forward? squash your branch first? what is appropriate squashing (single-commit, or logical pieces?)
It's funny that the idea of "history" is a common talking point about git, but literally your history is not a concrete record at all but can turn out in many different forms depending on those choices you make. Later commits can precede earlier commits. Etc.
|Happy belated, Tom!
It's funny you had managed to avoid Git all these years. Seeing you learn it feels like a time warp, back to a simpler time. I converted my old Darcs repositories to Git around 2012 and felt like a late adopter then.
Possible Aphasia 2 upgrade-related bug: several Scribble games are stuck because pressing the "no words possible" button doesn't work.
I 'bout died when I read
"git push --force-with-lease"
|Happy Belated Birthday!
I think you ran on my street at some point so that's pretty cool. GL with running the whole county :)
|Hi everybody! Thanks for the birthday wishes :)
I'm glad I didn't antagonize any git aficionados (no hard feelings). Honestly I think that I have to be fair(er) to git: hg is maybe a slightly better, but I think most of what I like about it is actually the helpful extensions we have at work. Anybody have a nice curses (or other cross-platform text-mode) UI that they recommend?
Adam: The man pages, omg
Scott: Fixed the bug in Scribble (it was just a reversed condition during the porting), thanks a lot for the report!
CB: If you live in the city limits, it's almost certain at this point! But also if you moved in the last 15 years, there's a chance that I didn't run on your street while you lived there.
|Hey Tom, feel free to hit me up at email@example.com if you could use any help with git. The learning curve is indeed steep (in fact, one of my colleagues in graduate school studied both the fundamental and the stupid reasons why git is so hard to use) and git has some rarely acknowledged fundamental problems that don't yet have satisfactory solutions (that I'm aware of), but there's so much that it _does_ do well that I've found my study has been repaid many times over. Congratulations on the other stuff too!|
|"This is WRONG. It will CORRUPT your precious HASHES"
Accidentally modifying hashes is a mandatory part of learning git. It introduces you to `git reflog`!