Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: My first programming project – userscripts to change forum UIs (github.com/wkrouse)
89 points by willthereader on March 6, 2024 | hide | past | favorite | 31 comments
Hi, I'm Will. I'm 24, autistic, and have OCD tendencies. I'm learning to code and this is my first public project. I’d really appreciate your feedback and encouragement!

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!



This is the best way to get into programming - find something that is bugging you and fix it!

I’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!


Thank you.


This is fantastic. This is why I think non-professional programmers could (and maybe sometimes should) learn to code - to solve little (or larger) problems bugging them.

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)


Thank you. I agree it's definitely useful to learn enough programming to solve personal problems. I'm impressed with how user-friendly Multics Emacs is. I think it's cool how you single-handedly thwarted Symbolic. It shows your strong moral fiber to stand up against them.


Well, not me, of course;-). And Multics Emacs is long dead, the only Emacs that is still alive is GNU Emacs (well, XEmacs is still developed probably, but not many people use it, I guess).


32, late diagnosed autistic. This is how I got into software development back in the day. Opera circa 2007 had a feature where viewing a page's source also let you edit it and update the page live. Neither Firefox or Chrome today have the feature as it existed in Opera. The inspector we have today is probably better overall though.

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).


It's interesting to know how software development changed over time. I see how modernizing an ugly UI is valuable.


Great work, Will! (I'm Will's brother and we've been working on this project for a while.)


Thank you.


Will and Steve! Great work shipping this, very excited for what you build next


Thank you.


I'll tell you what, that's an excellent landing page. that level of clarity is what many developers struggle with. i know exactly what your project does, all in 1 page. kudos to you, and keep at it!


Thank you. I never could have done it without my brother's feedback and an essay from dang he shared with me. It's https://gist.github.com/stevekrouse/22d96b6142fd21a8f9b63500....


If you can't find what you need, make it.

Well done.


Thank you.


I love userscripts, and I'm so happy to see and hear that other are using them and developing them. Well done, Will! I hope you keep making userscripts!


Thank you and I really appreciate userscripts too. While I'm taking a break from userscripts to make my website on Val Town, I only handled the main problems of my two primary forums. I'm sure I'm going to at least make versions of what I have for my other forums and new userscripts to improve their forum searches.


sorry, I'm having a hard time understanding what this thing does? Basically it removes the page numbers that would normally appear at the bottom of forum pages? Could that have been accomplished with dynamically changing display to none on the CSS of those elements? don't mean to sound dismissive of the concept at all here I'm just trying to understand.


I took a look at the scripts, and they’re a bit more involved than that. For instance, in some cases they change the text of certain elements, presumably where the original text contains information OP described not wanting to see. In other cases, nodes are selected for their text content. It’s conceivable that some or even most of what the scripts do would be achievable with CSS, but probably not all of it. And it would probably require a level of CSS sophistication beyond OP’s start with JS (and likely beyond the CSS skillset of many otherwise experienced programmers).

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.


Thank you for the explanation, praise, and social lesson! I wasn't looking forward to researching a different language to answer Solvency's question.

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?


slow down buddy, I asked because the concept intro confused me, not because I think his project is bad.


While I see how other people might’ve taken your question as interrogatory, I personally didn’t even think of that possibility until eyelidlessness pointed that out. I appreciate that eyelidlessness answered your question for me before I got around to researching CSS. It’s good to know for the future I should explain the reasoning behind my design choices in the concept intro.


Immediately invoked function expressions! Takes me back to a simpler time. Nice work.


Thank you. I'm happy to provoke nostalgia.


IIFEs still exist!


OCD tendencies can be good when it comes to programming.


Make sense!


Great stuff. Keep up the good work!


Thank you.


Congrats! I heared this from ur brother Steve.


Thank you.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: