Show HN: My first programming project – userscripts to change forum UIs (github.com)
This project lets me solve some of my OCD problems online. There are a couple of parts of the forums that I visit – Space Battles, Sufficient Velocity, and Questionable Questing – that I want to remove. Specifically, I hate seeing indicators of how much is left in a forum thread, because I keep thinking about how much content is left. It stops me from immersing myself in the story. It stressed me out. Before I learned to code, I'd use my hand to block the total chapter count so I could read the blurb and see the word count. I would do my best to ignore the page navigation bar except for the next page button, but I usually ended up failing. One of the reasons I always read in full-screen Safari is that I didn't have to see the tab name that always had the page number. I learned not to hover my cursor over the window because it would tell me the page number.
This project is a series of userscripts that hide those indicators. I coded the userscripts in JavaScript, and I used https://github.com/quoid/userscripts as the system. Despite the fact I didn't know what a userscript was until I started coding them, AI assistance allowed me to code them with minimal help from my brother, Stevie. Khanmigo helped me plan, write, and debug code. ChatGPT taught me the theory. Part of the reason I coded a lot faster with the later userscripts is I knew enough to realize when AI was talking about something irrelevant and redirect it. One cool moment was when I correctly predicted I didn't need to code different userscripts for SpaceBattles and Sufficient Velocity because Sufficient Velocity used to be part of SpaceBattles.
I find it relaxing not to have to worry about accidentally seeing the chapter count or the final page number. Maybe they’ll help one of you!
31 comments
[ 3.5 ms ] story [ 65.4 ms ] threadI’m also very impressed by how you harnessed AI tools to speed up the process - I think you chose just the right workflow to allow the AI to augment but not replace you, ensuring that it writes good and working code!
Well done.
The first project I ever completed and shared with others was a userstyle that replaced a forum's ugly dithered gif gradients with much more modern pngs (`linear-gradient` didn't exist yet).
You might be interested in Emacs, which is an environment for manipulating text and creating text-based workflows using a pretty nifty language called Emacs Lisp disguised as a text editor. ;-) (Full disclosure: I am an author of an Emacs Lisp textbook, and a long-time user and fan of Emacs.)
And here is a somewhat famous relevant quote from rms:
> Multics Emacs proved to be a great success—programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program. (https://www.gnu.org/gnu/rms-lisp.html)
All of that said, and I mean this kindly… I think there is an aspect of your comment that comes off dismissive, which is an implicit why did you choose X instead of Y? that a novice programmer likely couldn’t be expected to answer meaningfully. OP articulated very clearly what problem they set out to solve (impressively so! much more effectively than many Show HN submissions from seasoned devs). They also explained clearly how they used an existing tool designed for solving similar problems.
It’s certainly possible they will benefit from learning about different techniques to address some aspects of the problem. But an interrogatory introduction to why those alternatives weren’t chosen can be rather intimidating.
One of my challenges when it comes to autism is I accidentally ask interrogatory or aggressive questions when I'm genuinely curious about someone else's reasoning and trust they know what they're doing. Would "I'm wondering why you made design choice x because I thought design choice y would be a better option because I thought y is better for these reasons" be a good way to ask what the reasoning is?