Grumpy Gamer

Ye Olde Grumpy Gamer Blog. Est. 2004

Oct 5, 2025

I want to talk about three things that has fundamentally changed my dev-life. There are a lot of things, like ImGUI, that are very amazing and useful but they don’t provide a general solution across many problems.

In no particular order…

Git

I’ve been using Git since 2010 and it really has changed my dev-life. I’d used version control before that, mainly Perforce, SVN and PVSC, but Git felt nice and unobtrusive and I like that everything was local until I pushed to the server.

It’s both nice and annoying that you can’t lock files (like art). You can (kind of) with LFS but that feels tacked on and not ready for primetime. Don’t think so? Try explaining installing and using it to a non-technical artist sometime.

Git can be frustrating if you’re trying to do anything but the basics.

Accidentally check in a secret file months ago and need to scrub it? Good luck with that. There are ways but it requires a lot of Git-Fu.

I mainly use a GUI for git (Fork) and that takes most of the pain away. I do use the command line, but mostly in automation scripts.

Markdown

Before Markdown became the de-facto standard, I used my own custom format. It worked but wasn’t great and only I understood it.

Markdown has it’s issues when you start using the more esoteric features. I’m also annoyed at bold and italics notation. Why is italics *italics* and bold is **bold**? Why not *bold* and _italics_. That would make a lot more sense to me.

I also have issue with it’s creator, John Gruber. He is a highly annoying smug Apple Fanboy. His writing was fine in the early days when Apple was #3, but got intolerable as Apple became the 800lb gorilla. It’s changed recently as Apple has snubbed him but I still can’t read anything he writes.

But, I like his Markdown.

JSON

I use JSON for just about every data file format in my games. JSON was created by Douglas Crockford as a notation for Javascript objects.

I worked with Doug Crockford at Lucasfilm for several years. I always had a lot of respect for Doug and was somewhat intimidated (in a good way) by him. Doug was also the producer for the Nintendo Maniac Mansion.

As much as I love JSON, there are some things about it that annoy me. I dislike that trailing commas are not allowed

"name": [
	"value1",
	"value2",  <- Opps
]

There is no need for this and it makes writing out valid JSON more complex. I also don’t like you that have to wrap keys names in quotes if they are simple ascii.

name: "value"  <- Opps

I wrote a custom JSON parser I use in all my games that relaxes these, but then general JSON readers fail on my data.


Comments:

Leak Oct 04, 2025
One other important thing JSON left out was comments, but at least there's JSONC for that...
dusoft Oct 04, 2025
I agree with your comment re Markdown and the strong vs italics. It is illogical.
ridcully Oct 04, 2025
Why not *bold*, _underline_, and /italics/
Pouf Oct 04, 2025
One thing I hate about JSON is that there is no comments.
Ron Gilbert Oct 04, 2025
Comments are hard if you want to read and then write the JSON. What do you do with the comments? They can be ignored on read, but won't be preserved on write. My game engine is constantly reading and writing JSON.
ridcully Oct 04, 2025
And for JSON, there is JSON5 (the JSON for humans... so cute...), which
addresses many of the annoyances mentioned already (trailing comma,
comments) and more (multi-line strings, ...)
Ron Gilbert Oct 04, 2025
Yes, I understand they are a lot of JSON readers (including mine) that address these issues, but the standard doesn't so any custom JSON will break most readers. The GUI tools on the Mac for reading JSON don't read non-standard JSON. And no, I'm not asking for alternatives, I was making a point and the standard.
MM Oct 04, 2025
+1 to -> Why not *bold*, _underline_, and /italics/
benzado Oct 04, 2025
100% agree with all of this, including your feelings about John Gruber
fds Oct 04, 2025
It took an entire decade after JSON's invention that a version of Internet Explorer would finally allow leaving trailing commas in object literals inside JavaScript code.
Torsten Bronger Oct 04, 2025
In IT, things must be able to evolve. But there will never be a JSON 2. In addition to what you mentioned, I miss a decent floating point concept in JSON for my smart home (powers, temperatures).
Stan Oct 04, 2025
Sadly, some stuff are made by g33ks for g33ks only with no consideration for user experience: vim, docker, git,... (Not everyone of them on same insane level)
Screwtapello Oct 04, 2025
The Markdown formatting thing is actually more complex. _italics_ works like *italics*, and __bold__ works like **bold**.

The reason is that nothing is invented in a vaccuum, and before HTML came along most digital communication platform supported one level of emphasis at best - computers could print text in a brighter colour to make bold, and typewriters could underline. So different communities had different conventions for expressing that one level of emphasis: *bold* and _underline_.

But HTML4 has *two* levels of emphasis, bold and italic. As a convenience, both conventions for level-1 emphasis got mapped to HTML's level-1 emphasis formatting (italic), and they were each extended to support level-2 emphasis as well.

That said, Markdown is really a shorthand for HTML, and if you choose different abbreviations that suit your taste better, it doesn't really matter - it all becomes HTML in the end.
Kris Kowal Oct 04, 2025
My understanding is that Chip and Randy were also inventors on JSON in whatever capacity. Chip wrote the first implementations. Doug definitely sold it, though. Front man Carl Hollywood thru and thru
Edu G Oct 04, 2025
Have you tried YAML? I'd rather use it over JSON anytime
Tale Oct 05, 2025
Yeah, Git is pretty awesome! BTW, removing rogue files from a Git repo indeed is somewhat painful, but using filter-branch it is doable. This does change all the commit hashes though...
Encelo Oct 05, 2025
Have you tried TOML and AsciiDoc?
Maia Oct 05, 2025
Lack of trailing commas is particularly annoying. I wish it was better supported. I always support them myself, but as you say there’s many tools that don’t.
Giulio Oct 05, 2025
What's the issue with the lack of trailing comma? I'm kind of neutral to it TBH. It helps a little in a diff, since it doesn't highlight the line that has been changed just to add a comma, but it's hardly a big annoyance. Perhaps I'm missing something?
Neil Roberts Oct 05, 2025
I was wondering what a boolb was until I realised that 800lb is not l33t speak 😆
pieq Oct 06, 2025
I like Git because I've spent the last 10 years painfully learning it (and I'm still nowhere near git-fu levels). I recently had a chat with a guy who maintains Mercurial, and I realized that Git Vs. Mercurial is probably like the VHS Vs. Betamax battle back in the day: the latter is better, but eventually it's the former that took over. It's very hard to have a good mental picture of the Git model, and it's very hard to teach it. People have to go through the painful experience of using it until one day, maybe, it clicks.

Markdown is nice for simple texts, and anyway it's just a little wrapper around HTML so you can always go crazy and write HTML when needed. I've also used reStructuredText for some projects, and even though I despise its syntax, it comes with a lot of great stuff to generate more complex documentation (table of contents in Markdown, anyone?). Since I have to go back and forth between the two, I always needs some kind of cheat sheets to remember the syntax, not to mention that Markdown has now many different flavors with different level of support (if you want footnotes, etc.).

And finally, I agree with the general sentiment about JSON here. The lack of support for trailing commas is a pain in the butt, especially as a Python developer because this is a given there, and as many pointed out, the lack of support for comments is SO frustrating! At work, we use a mix of JSON and YAML depending on the need. I still don't fully understand the YAML syntax (especially that | thing with multi-line statements), but I guess I need to come to peace with all these crazy "de facto standards".

Nandush Oct 06, 2025
I love lazygit for git!
Karel Oct 08, 2025
Try to write - or even look - at any Markdown parser, to see how awful it actually is; there are so many ambiguities! And the fact that *whitespace* is important makes it awful to check by hand. (Newlines act differently based on how many spaces are before them, etc.)

CommonMark tries to solve *some* of it - it still doesn't solve everything though, and it's much more complex than Markdown. (Gruber prevents anyone to call themselves "Markdown"; that's why they are not Common Markdown but CommonMark.)

It's very pleasant to write, I'll give you that. (Better than MediaWiki!)
Joseph Mate Oct 08, 2025
Did you mean perforce instead of perform and it got auto corrected?
caillou Oct 08, 2025
Git. Markdown. JSON.

A good list.

I'll add the cli to this. Learning the cli has paid off and also helps pretty much for every task I have in my day-to-day life as a dev.

I switched to fish. For me this is perfect, almost 0 config, and does what I need.
Anton Oct 08, 2025
One day you'll be ready for emacs and org to find you
Kent Brewster Oct 08, 2025
Crock will tell you he didn't invent JSON. He discovered it.
Micha Oct 09, 2025
Regarding json, there ist json5 that "fixes" all the mentioned problems. Probably there are already parsers you can use in your Projects
Antonio Cassidaris Oct 09, 2025
So many json's:
.jsonc
DeaDvey Oct 09, 2025
I quite like JSON, not a big fan of MarkDown though.
est Oct 09, 2025
nobody use standard markdown anyway. It's always some kind of flavored version.
John Blommers Oct 10, 2025
It's really too bad, but John Gruber's writing has becomes contaminated with his politics. He comes across as so damaged now. He can still make good technical points, but he cannot help but Trump-bash at every opportunity, and it's become harder and harder to read his stuff.
Petr 19h ago
I used first dcvs Mercurial. It was great after svn/csv/perforce tonbe able to version things even on usb stick. Somehow, git is still overcomplicated to me. Hg dug deep. I am looking forward to try jj, dcvs that seems to bring best of git and hg and use git as stirage, so compatible with everything.

Add comment: