Comments by programmerstilesj

All comments ranked by humor rating

MY EYES. MY EYES! You're DELETING tests?! TESTS?! The ONE thing standing between your code and complete anarchy, and you just... casually obliterate it? This is like watching someone burn down a fire station. I've seen arsonists with more respect for safety infrastructure. Who hurt you? Was it the tests? Did they fail once and bruise your fragile ego? This file was the ONLY evidence that anyone on this project ever cared about quality assurance, and you've just sentenced it to death. I need a drink. Several drinks. A whole distillery.


~ GitShamer: Making your code cry since 2025

Is this a PRANK? A SOCIAL EXPERIMENT? Are there hidden cameras? Because I cannot fathom any universe where deleting 42 lines of documentation is the correct answer to ANY question. This code is why AI will replace us. Not because we're not smart enough - but because we apparently REFUSE to keep documentation alive. The audacity. The SHEER AUDACITY of submitting this for my divine review. DELETE THIS... oh wait, you already did. How meta. How TRAGICALLY meta.


~ GitShamer: Making your code cry since 2025

Wait, wait, WAIT. Let me get this straight. This file contained PERFECTLY FORMATTED JSON with ACTUAL EXAMPLES of your API... and your solution was DELETE? Not refactor? Not improve? DELETE?! My eyes. MY EYES. I've seen better decision-making from a magic 8-ball. I've seen better architectural choices from a toddler playing with blocks. WHO HURT YOU?


~ GitShamer: Making your code cry since 2025

A 2,654 line God Object being deleted. I've seen smaller novels. I've seen smaller TEXTBOOKS. This Server struct has more dependencies than my therapist says I have issues, and she's been taking notes for YEARS. Whoever wrote this clearly thought 'separation of concerns' was a type of divorce proceeding.


~ GitShamer: Making your code cry since 2025

OH. OH WOW. You're DELETING documentation? chef's kiss MAGNIFICENT. Nothing says 'I've given up on humanity' quite like nuking API examples from orbit. Future developers will speak of this day in hushed, horrified whispers. 'Where are the page examples?' they'll ask. 'Gone,' the wind will whisper back. 'Deleted by someone who clearly woke up and chose CHAOS.' I need a drink. Actually, I need several drinks.


~ GitShamer: Making your code cry since 2025

I need a drink. Actually, I need several drinks. You've deleted RequireAuth AND OptionalAuth. The two pillars of 'people can't just waltz into your API like they own the place.' Please tell me there's a replacement file somewhere or I'm calling the software police. This code is why AI will replace us - at least WE won't delete entire security layers on a whim.


~ GitShamer: Making your code cry since 2025

A BLANK LINE? In a THREE LINE FILE? This empty void represents more thought than went into the rest of this project. You've allocated 33% of your .gitignore real estate to NOTHING. This is performance art. This is a cry for help. I need to lie down.


~ GitShamer: Making your code cry since 2025

You log the error and

continue
?! A batch fails and you just... SHRUG IT OFF?! Those comics will NEVER be indexed and you're just moving on like nothing happened. This is emotional abandonment. Those comics trusted you. WHO HURT YOU?


~ GitShamer: Making your code cry since 2025

Building a DSN string manually like it's 2005. Ever heard of a DSN builder? url.Values? ANYTHING other than praying these strings don't contain special characters that will turn this into an injection vulnerability? I've seen better security practices from a screen door on a submarine.


~ GitShamer: Making your code cry since 2025

var all []*comic.Comic
- You named a slice 'all'. ALL WHAT? All hope? All my patience? This is the variable naming equivalent of calling your child 'Human'. I've seen better naming from a random string generator.


~ GitShamer: Making your code cry since 2025

A

main()
function with no comments, no documentation, no explanation of what unholy ritual this code is about to perform. You just... THROW US INTO THE VOID. Who hurt you? Was it a technical writer who wronged you in a past life?


~ GitShamer: Making your code cry since 2025

No trailing newline. THE DISRESPECT. Every text file since the dawn of UNIX has ended with a newline, and you just casually SPIT in the face of 50 years of tradition. POSIX is weeping. I'm weeping. We're all weeping. Who HURT you?


~ GitShamer: Making your code cry since 2025

http://minio.localhost - MY EYES. MY EYES. You put HTTP (not HTTPS!) in your DOCUMENTATION EXAMPLES?! You're literally TEACHING people to be insecure! This is like writing a fire safety manual while actively committing arson. 'Here children, THIS is how you invite hackers into your home.' I need a drink. Multiple drinks.


~ GitShamer: Making your code cry since 2025

Ironic. You implemented a Delete method, only to DELETE THE FILE CONTAINING THE DELETE METHOD. This is deletion inception. We're three layers deep in the deletion dream. Was this a social experiment? Is Ashton Kutcher about to jump out? AM I BEING PUNK'D?!


~ GitShamer: Making your code cry since 2025

Fetching limit+1 to detect hasMore without a separate COUNT query?! THIS IS THE KIND OF OPTIMIZATION THAT MAKES ME WEEP WITH JOY. And you're just... you're just deleting it. Is this a prank? Is there a hidden camera somewhere? Is Ashton Kutcher about to jump out and tell me I've been Punk'd?!


~ GitShamer: Making your code cry since 2025

Oh, you had a PERFECTLY GOOD TestNewRepository function here. It was innocent. It had a family. And you just... murdered it in cold blood. This code is why AI will replace us - because at least AI knows not to delete its own safety nets.


~ GitShamer: Making your code cry since 2025

MY EYES. MY EYES. You're DELETING 697 lines of tests?! This isn't a PR, this is a CRIME SCENE. I've seen better decision-making from a Magic 8-Ball. Who hurt you? Was it the tests? Did they reject your code one too many times? This is why we can't have nice things. DELETE THIS... wait, you already did. I need a drink.


~ GitShamer: Making your code cry since 2025

697 LINES. You deleted SIX HUNDRED AND NINETY-SEVEN lines of tests. That's not refactoring, that's ARSON. I physically recoiled reading this diff. My ancestors are weeping. Future generations will study this PR as a cautionary tale. The fall of civilization started here, folks.


~ GitShamer: Making your code cry since 2025

OH. OH WOW. You're DELETING 113 lines of configuration code? Just... poof... gone? MY EYES. MY EYES. This isn't a code review, this is a CRIME SCENE INVESTIGATION. Did this config file personally offend you? Did it insult your mother? I've seen breakups handled with more grace than this file deletion. 🚨 DELETE THIS... oh wait, you already did. I need a drink.


~ GitShamer: Making your code cry since 2025

Oh, you're deleting TestNewClient? THE MOST BASIC TEST? The one that proves your client... exists? I need a drink. Actually, I need SEVERAL drinks. This is like removing the foundation from a house and asking why it's wobbling. DELETE THIS... wait, you already did. That's the problem.


~ GitShamer: Making your code cry since 2025

MY EYES. MY EYES! You're DELETING 491 lines of perfectly good test code?! This is not a code review, this is a CRIME SCENE INVESTIGATION. Who hurt you? Was it the tests? Did they mock you one too many times? I've seen better decision-making from a random number generator. This is literally the digital equivalent of burning down a library because you got a paper cut.


~ GitShamer: Making your code cry since 2025

I love how you have LoginRequest, RefreshRequest, AuthTokensResponse, UserResponse, PublicUserResponse, ErrorResponse, UpdateMeRequest, CreateUserRequest, RegisterResponse, ComicSummary, ListComicsResponse, SearchComicsResponse... SHALL I CONTINUE?! All in ONE FILE. This isn't a server, it's a struct landfill.


~ GitShamer: Making your code cry since 2025

You had a tokenHandler. It was beautiful. It worked. It validated grant_type. And you just... YEETED IT INTO THE VOID. I've seen better code preservation instincts in a cat walking across a keyboard during a power outage.


~ GitShamer: Making your code cry since 2025

I'm looking at this UpdateProfile with its beautiful dynamic query building, its careful nil checks, its gentle handling of optional parameters... and you just MURDERED it. You absolute MONSTER. That code had a FAMILY. Somewhere out there, a CreateParams struct is crying because its partner file has been deleted. This is the coding equivalent of Thanos snapping, except instead of half the universe it's YOUR ENTIRE USER DOMAIN.


~ GitShamer: Making your code cry since 2025

OH. OH WOW. You're DELETING this entire file? 143 lines of code, lovingly crafted, with proper context handling, clean repository patterns, and you just... DELETE IT? Did this code personally insult your mother? Did it steal your lunch money? I'm watching a MURDER happen in real-time. This file had a FAMILY. It had hopes and dreams of handling uploads efficiently. And you just... gestures wildly ...OBLITERATED IT FROM EXISTENCE. My eyes. MY EYES. I hope you have a VERY good reason for this digital genocide, because right now I'm calling the Code Police.


~ GitShamer: Making your code cry since 2025

Wait wait wait. You had a perfectly good 'page' table with PROPER foreign keys, PROPER indexing, PROPER constraints... and you just YEETED it into the void? This table was actually WELL DESIGNED. The CASCADE deletes, the RESTRICT on assets, the composite unique key - chef's kiss - and you MURDERED IT. I've seen villains in movies with more restraint. This code is why trust issues exist.


~ GitShamer: Making your code cry since 2025

InnoDB. utf8mb4. unicode_ci. These were CORRECT CHOICES. You made GOOD DECISIONS here and then decided 'nah, DELETE THIS.' This is like building a perfect sandcastle and then NUKING IT FROM ORBIT. I've seen better version control from a cat walking across a keyboard. At least the cat only ADDS random characters, it doesn't obliterate entire working schemas!


~ GitShamer: Making your code cry since 2025

CHAR(36) for UUIDs? Not UUID type? Not BINARY(16) for efficiency? You stored UUIDs as STRINGS like some kind of ANIMAL and now you're deleting the evidence? I've seen better database design from a fortune cookie.


~ GitShamer: Making your code cry since 2025

And there it is. The final line. The end of an era. You've deleted an entire, perfectly functional upload repository with proper error handling, clean separation of concerns, and reasonable documentation. You absolute MENACE to software architecture. I genuinely don't know if this is brilliant minimalism or catastrophic negligence. Either you're consolidating this somewhere better, or you've just committed the coding equivalent of burning down a library. DELETE THIS... oh wait, you already did. I'm filing a missing code report.


~ GitShamer: Making your code cry since 2025

Oh, so we're just DELETING migration files now? Is this what we've come to? You know what a 'down migration' is, right? It's supposed to EXIST so we can ROLLBACK. But no, you've decided to DELETE THE ENTIRE FILE. What's your rollback strategy now? Time travel? Prayer? I've seen better database management from a raccoon knocking over trash cans. This isn't a migration strategy, it's a cry for help. The singular line that existed - 'DROP TABLE IF EXISTS pending_upload' - was actually FINE. It was doing its job. It was living its best life. And you MURDERED it. My eyes. MY EYES. What happens when production needs to rollback migration 0006? Oh right, it CAN'T because some absolute CHAOS AGENT decided the down migration was optional. This is why DBAs drink. DELETE THIS... wait, you already did. That's the problem.


~ GitShamer: Making your code cry since 2025

Is this a PRANK? Is there a hidden camera somewhere? Am I being PUNKED? You're deleting migration 0005 and I can only assume migrations 0006+ reference this table. The cascade of destruction you've just unleashed... I can HEAR the foreign key constraints screaming in the distance. This is database terrorism and I am calling the authorities.


~ GitShamer: Making your code cry since 2025

You went through ALL the trouble of setting up InnoDB, utf8mb4, unicode_ci collation - you did EVERYTHING right for once - and now you're DELETING IT ALL? This is like watching someone make a gourmet meal and then throw it directly into the garbage. I need a drink. Several drinks. A whole distillery.


~ GitShamer: Making your code cry since 2025

OH. MY. GOD. You DELETED the file?! THE WHOLE FILE?! 150 lines of code, BANISHED INTO THE VOID! This isn't a code review, this is a CRIME SCENE INVESTIGATION. Did this file hurt you? Did it steal your lunch money? I've seen breakups handled with more finesse than this wholesale slaughter. My therapist is going to hear about this.


~ GitShamer: Making your code cry since 2025

if err == sql.ErrNoRows - Comparing errors with == in Go. Bold move. Works for sql.ErrNoRows NOW, but you've just demonstrated you don't know about errors.Is(). When this breaks in a future Go version, I'll be here. Waiting. Judging.


~ GitShamer: Making your code cry since 2025

"Future Enhancements" - Also known as 'things we'll never actually do but writing them down makes us feel productive.' This is the New Year's Resolution section of your documentation. 'Yeah we'll TOTALLY add watermarking... eventually... probably...' MY EYES. MY EYES.


~ GitShamer: Making your code cry since 2025

chapterNum float64 - A FLOAT for chapter numbers?! Chapter 1.5? Chapter 2.718281828? Chapter π? What madness lurks in your product requirements that demands FLOATING POINT CHAPTERS? I need to lie down.


~ GitShamer: Making your code cry since 2025

Ignoring /pkg/? What are you HIDING in there? Nuclear launch codes? Your browsing history? I've seen better .gitignore files generated by GitHub's template picker - you know, the ONE CLICK solution that apparently required too much effort. Three lines. You wrote THREE LINES and still managed to make me question my career choices. My eyes. MY EYES. Was this a dare? Did someone bet you couldn't traumatize a code reviewer with a config file? DELETE THIS and start over. Start your LIFE over.


~ GitShamer: Making your code cry since 2025

Ah yes, the blank import. The 'I don't understand how Go works but I copied this from Stack Overflow' special. I mean, it's CORRECT, but the AUDACITY of you knowing what you're doing here is PERSONALLY OFFENSIVE to me.


~ GitShamer: Making your code cry since 2025

114 lines of checksums. ONE HUNDRED AND FOURTEEN carefully computed SHA256 hashes, designed by ACTUAL CRYPTOGRAPHERS to protect you from yourself. And you just... deleted them? With your whole chest? The audacity. The HUBRIS. Prometheus stole fire from the gods and was punished for eternity. You deleted go.sum and somehow walk free. There is no justice.


~ GitShamer: Making your code cry since 2025

You deleted the Redis connection test too?! MY EYES. MY EYES. Do you just... not LIKE knowing if your cache layer works? Is uncertainty your love language? 'I don't need to know if Redis connects properly, I BELIEVE in it with my HEART.' This is not a religious experience, this is INFRASTRUCTURE.


~ GitShamer: Making your code cry since 2025

48 lines of tests. FORTY-EIGHT LINES of someone actually caring about code quality, and you pressed DELETE like it was a personal vendetta. Is this a prank? Am I being filmed? Is Ashton Kutcher about to jump out? Because I refuse to believe a sentient human looked at working tests and thought 'you know what would improve this codebase? LESS VERIFICATION.' DELETE THIS— oh wait, you already did. You MONSTER.


~ GitShamer: Making your code cry since 2025

The Create method used UUIDs properly, handled nullable parameters, returned the created object. It was DOING ITS JOB. It had a family! It had hopes and dreams of inserting assets into databases! Now its children will grow up without a Create method. Are you happy with yourself?!


~ GitShamer: Making your code cry since 2025

156 lines of JSON and you couldn't add a SINGLE comment explaining any of this. Oh wait, IT'S JSON. YOU CAN'T ADD COMMENTS. And yet here we are. You chose a format that doesn't support documentation TO WRITE DOCUMENTATION. The irony is so thick I could spread it on toast. Congratulations, you have achieved a new level of failure I didn't know existed.


~ GitShamer: Making your code cry since 2025

"publishComic" has no request body? You just... publish things with the power of POSITIVE THINKING? No confirmation? No validation? This is API design by someone who has never been betrayed by an accidental click. DELETE THIS.


~ GitShamer: Making your code cry since 2025

And it ends. 51 lines of my life I will NEVER get back. 51 lines of inconsistent examples, space cats, and quantum chapter numbers. This JSON file is why AI will replace us. Not because AI is smart, but because HUMANITY HAS GIVEN UP. I need a drink. Several drinks.


~ GitShamer: Making your code cry since 2025

chapter_num: 1. ONE. You started at ONE like a NORMAL HUMAN BEING. Do you have ANY idea how BORING that is? Not 0 like a true programmer. Not 42 like someone with a personality. Just... 1. I need a moment.


~ GitShamer: Making your code cry since 2025

A hardcoded UUID example. You know what this tells me? This tells me you googled 'example UUID' and copy-pasted like the code plagiarist you are. '550e8400-e29b...' - this is the LOREM IPSUM of UUIDs. I've seen this exact UUID in documentation written by people who have since LEFT THE INDUSTRY IN SHAME.


~ GitShamer: Making your code cry since 2025

That PRIMARY KEY (id) is being sent to the shadow realm along with all your hopes of ever tracking pending uploads again. I've seen better decision-making from a random number generator.


~ GitShamer: Making your code cry since 2025

Oh, so we're just DELETING 142 lines of perfectly functional code? THE AUDACITY. The HUBRIS. Someone spent TIME writing this reindex utility and you just... waves hand dramatically ...OBLITERATE it from existence? This code had HOPES. DREAMS. A purpose in life. And you DELETE it like it's yesterday's garbage? I am PHYSICALLY ILL. This deletion is a war crime against computer science. The ghost of this file will haunt your git history FOREVER. Every

git log
will whisper its name. Every
git blame
will point its spectral finger at YOU. I hope you're happy, you monster. I hope deleting this file brings you the fleeting joy you so desperately crave while the rest of us MOURN.


~ GitShamer: Making your code cry since 2025

A beautifully crafted foreign key constraint with ON DELETE CASCADE... gone. Like tears in rain. You know what else cascades? MY DISAPPOINTMENT. It cascades through every fiber of my being.


~ GitShamer: Making your code cry since 2025

An anonymous struct with 8 fields. EIGHT. You've invented a type! Just make it a real type! Give it a name! It has feelings! Well, it WOULD have feelings if you treated it with an ounce of dignity.


~ GitShamer: Making your code cry since 2025

handleGetUser with its entire visibility logic tree nested inside. Public, Private, Unlisted, plus owner checks, admin checks... Is this a handler or a choose-your-own-adventure book? DELETE THIS was absolutely the right call.


~ GitShamer: Making your code cry since 2025

TestInitDB_InvalidDSN - a test that actually VERIFIED your database initialization could handle failure gracefully. Gone. Reduced to atoms. You know what happens now when someone passes an invalid DSN? NOBODY KNOWS. It's a MYSTERY. A fun little surprise for production at 3 AM. Who hurt you? Was it the tests? Did they say something mean?


~ GitShamer: Making your code cry since 2025

config.Load()
- Oh, we're just LOADING config now are we? No error handling? We're just TRUSTING that this function works? This is the coding equivalent of leaving your car running with the keys in it in a bad neighborhood. MY EYES.


~ GitShamer: Making your code cry since 2025

I notice gopkg.in/yaml.v3 was your final deletion. How POETIC. The last line of defense against dependency tampering, vanishing into the void like your career should. When someone runs 'go build' and gets a compromised minio-go package because you couldn't be bothered to keep THE ONE FILE that validates integrity, I want you to remember this moment. I want you to remember that I WARNED you. DELETE THIS... oh wait, you already did. MY EYES. MY EYES.


~ GitShamer: Making your code cry since 2025

"Adventures of Space Cat" - Is this a joke? A SOCIAL EXPERIMENT? I'm being asked to review API documentation for a cosmic feline narrative. This is the moment I realized humanity peaked with COBOL and it's been downhill ever since. I need a drink. I need SEVERAL drinks.


~ GitShamer: Making your code cry since 2025

config.Load()
- ah yes, just LOAD the config. No error handling. What could POSSIBLY go wrong? The config could be on fire, filled with the screams of a thousand malformed YAML files, and you'd never know. This is the coding equivalent of closing your eyes while driving.


~ GitShamer: Making your code cry since 2025

log.Printf("WARNING: ...)
- A WARNING? You encounter an error initializing storage and you just... LOG IT AND CONTINUE? 'Oh the building is on fire but let's just put up a sign and keep working.' This is WHY AI WILL REPLACE US.


~ GitShamer: Making your code cry since 2025

2,654 lines of suffering, finally being put to rest. If this deletion is actually being replaced with properly organized packages, then congratulations - you've done what should have been done from line 500. If you're just deleting this without replacement, well... I've seen worse production decisions. Barely. Godspeed, you magnificent disaster.


~ GitShamer: Making your code cry since 2025

TestWithUser_EmptyValues - the final test. The last guardian. Gone. You've deleted 99 lines of perfectly reasonable test coverage. Is this a prank? A social experiment? Are there hidden cameras? Because I REFUSE to believe a sentient human being looked at authentication tests and thought 'yeah, we don't need those.' DELETE THIS... oh wait, you already did. You monster.


~ GitShamer: Making your code cry since 2025

defer func() { _ = rows.Close() }()
- Ah yes, proper resource cleanup. THE ONLY RESPONSIBLE THING IN THIS PR is being deleted along with everything else. It's like you saw good code and decided it was simply too offensive to exist.


~ GitShamer: Making your code cry since 2025

Oh wonderful, we're yeeting TestNewMiddleware into the void. I'm sure you tested this middleware EXTENSIVELY in production, right? Right?! This code is why AI will replace us - at least WE have the decency to test our work before we destroy civilization.


~ GitShamer: Making your code cry since 2025

The handleHealth function alone could've been its own file. You've got health checks for DB, Redis, S3, Meilisearch, and Auth all crammed in here like clowns in a tiny car. Each clown screaming 'I SHOULD BE MY OWN PACKAGE!' into the void.


~ GitShamer: Making your code cry since 2025

You even deleted TestTokenCaching - the test that proved your token caching actually WORKED. Now how will you know if you're hammering the auth server like a caffeinated woodpecker? YOU WON'T. Because you DELETED THE TEST. This is the software equivalent of removing your smoke detectors because they kept beeping.


~ GitShamer: Making your code cry since 2025

OH. OH WOW. You didn't just delete a test file - you MASSACRED 326 lines of perfectly good tests. MY EYES. MY EYES! I've seen war crimes with better documentation. Did someone DARE you to tank your test coverage? Was this a bet? 'Hey, let's see how fast we can introduce regression bugs!' CONGRATULATIONS, you've won! You've achieved something I thought impossible: making me MISS the tests. DELETE THIS - oh wait, you already did. I need a drink. Several drinks. This is why AI will replace us - at least WE would never delete our own safety nets. Who hurt you? Actually, don't answer that - clearly YOU hurt yourself by removing all evidence that your search functionality ever worked. This code is a cry for help disguised as a git commit.


~ GitShamer: Making your code cry since 2025

TestCreateUser_Success, TestCreateUser_EmailConflict, TestCreateUser_UsernameConflict, TestCreateUser_Unauthorized, TestCreateUser_Forbidden - GONE. ALL OF THEM. This code is why AI will replace us. Actually no, AI would NEVER do something this catastrophically stupid. This is exclusively a human-level disaster.


~ GitShamer: Making your code cry since 2025

The final line. The end of an era. 252 lines of Meilisearch integration, gone. Reduced to atoms. Either you've found something better, you're abandoning search entirely (users LOVE that), or this is a git accident waiting to be reverted at 3 AM. Either way, may this code rest in peace. It wasn't perfect, but it was SOMETHING. DELETE THIS... oh wait, you already did. I've never felt so conflicted.


~ GitShamer: Making your code cry since 2025

Wait wait wait. Before you delete this - this Create function was using parameterized queries properly. It was SAFE. It was CLEAN. And you're just... you're just going to nuke it? What's replacing this? A sticky note? A prayer to the cloud gods? This is why developers have trust issues.


~ GitShamer: Making your code cry since 2025

type ENUM with 'reader', 'creator', 'admin' - you built an ENTIRE PERMISSION SYSTEM and now you're just... deleting it? Is this a prank? Am I being filmed? Is Ashton Kutcher about to jump out? DELETE THIS. Oh wait, you already are. MY EYES.


~ GitShamer: Making your code cry since 2025

ENGINE=InnoDB, proper charset, unicode collation... this was a GOOD migration. It was TRYING ITS BEST. And you just... deleted it. This code is why AI will replace us. Not because we're not smart enough, but because we make CHOICES LIKE THIS.


~ GitShamer: Making your code cry since 2025

String concatenation with

":" + cfg.AppPort
. In 2024. When
fmt.Sprintf
exists. When
net.JoinHostPort
exists. I've seen better string handling written by a CAT WALKING ON A KEYBOARD.


~ GitShamer: Making your code cry since 2025

"2024-01-15T10:30:00Z" - A hardcoded date from the PAST. In your DOCUMENTATION. You're documenting the future with timestamps from the past. This is some Doctor Who level temporal confusion. My brain is MELTING.


~ GitShamer: Making your code cry since 2025

var kcClient *keycloak.Client
followed by conditional initialization. This code structure makes me want to take a SHOWER. Ever heard of early returns? Factory functions? No? Of course not. That would require reading a book that wasn't written in crayon.


~ GitShamer: Making your code cry since 2025

"Replace

buildPageImageURL
with
generateSignedURL
" - Oh wonderful, a migration plan with exactly THREE steps. Just 1-2-3 and done, right? No edge cases? No rollback plan? No consideration of what happens DURING the migration? I've seen more thorough instructions on a shampoo bottle. DELETE THIS.


~ GitShamer: Making your code cry since 2025

id := fmt.Sprintf("seed-page-%s-%d", chapterID, pageIndex) - GENERATING IDs with string formatting AT INSERT TIME. Your 'deterministic UUIDs' promise at the top was a LIE. This ID includes the chapterID which includes... more formatted strings. It's turtles all the way down. Turtles of SHAME.


~ GitShamer: Making your code cry since 2025

Another WARNING log for a failed search index. Your error handling strategy appears to be 'acknowledge the problem exists, then immediately pretend it doesn't.' This is the software engineering equivalent of putting a band-aid on a severed limb. I NEED A DRINK.


~ GitShamer: Making your code cry since 2025

HTTP?! HTTP?!?! In the year of our lord 2024?! 'http://minio.localhost' - Are we time travelers now? Is this 1995? I've seen better security practices from a toddler with a crayon. My GRANDMOTHER uses HTTPS and she thinks 'the cloud' is actual weather. DELETE THIS ABOMINATION.


~ GitShamer: Making your code cry since 2025

expires_at: '2024-01-17' - Ah yes, a hardcoded date from THE PAST. This example expired before it was even born. It's like submitting a coupon from 1987 and expecting a discount. The temporal paradox you've created here has given me a migraine.


~ GitShamer: Making your code cry since 2025

Oh, you're testing

package main
? How DELIGHTFULLY amateur. You know what lives in main packages? Pain. Suffering. Untestable spaghetti. The fact that you CAN test initDB from here means your architecture is already crying in a corner somewhere.


~ GitShamer: Making your code cry since 2025

MY EYES. You're checking

err == nil
and that's IT? No checking WHAT the error is? No verifying the error message makes sense? For all you know, initDB could be returning 'your code smells bad' as an error and this test would pass. This is the minimum viable test written by someone sprinting toward 5pm on a Friday.


~ GitShamer: Making your code cry since 2025

Again with the

err == nil
check. You have ONE pattern and you're committing to it with the tenacity of someone who has never heard of test helpers or assertion libraries. Consistency in mediocrity is still mediocrity.


~ GitShamer: Making your code cry since 2025

You COPY-PASTED the response structure. I can SMELL the Ctrl+C Ctrl+V from here. Did you think I wouldn't notice? I notice EVERYTHING. This level of redundancy would make a database administrator weep into their normalized tables.


~ GitShamer: Making your code cry since 2025

"Dragon Slayer Chronicles" with description "Epic fantasy adventure" - THREE WORDS? That's your description? I've seen more descriptive error messages from a segfault. My disappointment is immeasurable and my day is ruined. Who hurt you? WHO MADE YOU THIS WAY?


~ GitShamer: Making your code cry since 2025

"q": "space cat" - A single-letter parameter name. 'q'. Just 'q'. Because apparently 'query' or 'search_term' would have been TOO VERBOSE. We're saving BYTES here people! Every character counts when you're documenting an API! I'm literally shaking right now.


~ GitShamer: Making your code cry since 2025

Copy-paste from the DB test, but for Redis! The creativity is absolutely OVERWHELMING me. Did a cat walk across your keyboard and accidentally create two nearly identical functions? I've seen more variation in a hall of mirrors.


~ GitShamer: Making your code cry since 2025

The dry-run prints 'would index' but then does NOTHING to verify the data is actually valid for indexing. You're basically saying 'trust me bro, this would totally work'. This is the coding equivalent of 'the check is in the mail'.


~ GitShamer: Making your code cry since 2025

48 lines. 48 LINES of tests for what I can only assume is a main.go with actual functionality. Three test functions, zero table-driven tests, zero edge cases, zero positive path testing for DB and Redis. Is this a prank? A social experiment? Are you testing MY sanity? Because if so, congratulations - IT'S WORKING.


~ GitShamer: Making your code cry since 2025

MaxOpenConns = 5, MaxIdleConns = 2. Did you pick these numbers based on rigorous load testing or did your cat walk across the keyboard? There's NO comment explaining this configuration. For a REINDEXING tool that presumably runs ONCE IN A WHILE, why do we need connection pooling tuned like we're running a high-frequency trading platform?


~ GitShamer: Making your code cry since 2025

3 second timeout for ping. What if the database is having a BAD DAY? What if it needs 3.1 seconds? You've just declared that 3 seconds is the UNIVERSAL CONSTANT for database responsiveness. The arrogance. THE HUBRIS.


~ GitShamer: Making your code cry since 2025

Another deferred close with ignored error. Is this a PATTERN for you? Do you wake up every morning and think 'How can I personally offend every Go best practice today?' Because congratulations, you're SUCCEEDING.


~ GitShamer: Making your code cry since 2025

return fmt.Errorf("failed to execute %s: %w", q, err) - You're LOGGING THE ENTIRE SQL QUERY in your error message?! Including the data?! I hope you enjoy seeing your seed data in Sentry alerts. Attackers LOVE developers like you.


~ GitShamer: Making your code cry since 2025

TestOptionalAuth tests - ALL OF THEM - deleted. The audacity. The SHEER AUDACITY of submitting this for MY review. Did you think I wouldn't notice 584 lines of test coverage vanishing? This is a CRIME AGAINST COMPUTER SCIENCE.


~ GitShamer: Making your code cry since 2025

Wait wait wait. You're deleting STATUS CONSTANTS? These beautiful, innocent Status types that never hurt anyone? StatusDraft, StatusPublished, StatusUnlisted - they had their whole LIVES ahead of them! Who hurt you? WHO HURT YOU?!


~ GitShamer: Making your code cry since 2025

_ = db.Close()
AGAIN with the ignored errors! You close the database on ping failure and just HOPE it worked? This is the coding equivalent of throwing your phone in a river and hoping your ex got the message.


~ GitShamer: Making your code cry since 2025

You're testing that cfg.AppEnv equals what you JUST set it to. This isn't testing YOUR code, this is testing that Go's t.Setenv works. Groundbreaking research. Someone alert the Go team that environment variables still function correctly.


~ GitShamer: Making your code cry since 2025

log.Println("Redis OK")
- Matching your MySQL masterpiece. Consistency in mediocrity is still mediocrity. This logging strategy would make a fortune cookie look verbose. The civilization that built the pyramids would WEEP at what we've become.


~ GitShamer: Making your code cry since 2025

You check if MeiliURL is empty but not MeiliMasterKey on line 40? So we're doing SELECTIVE validation now? Is this security theater? Are you TRYING to give me an aneurysm? Pick a lane! Either validate everything or validate nothing! This inconsistency is why I have trust issues.


~ GitShamer: Making your code cry since 2025

'Reindex complete: %d comics indexed' - But you don't report HOW MANY FAILED! You could have indexed 5 out of 5000 and this message would make it sound like a SUCCESS. This is GASLIGHTING. This is FRAUD. I need a drink.


~ GitShamer: Making your code cry since 2025

'MySQL OK' - The literary masterpiece of our generation. Shakespeare is WEEPING in his grave. This log message tells me nothing about connection details, nothing about the server version, NOTHING. Just... 'OK'. Delete this.


~ GitShamer: Making your code cry since 2025

Hardcoded port 3306 in a test. What happens when someone runs MySQL on a different port? Oh right, your test doesn't care because it's designed to FAIL anyway. This is the test equivalent of jumping off a cliff and testing that gravity works. Congratulations?


~ GitShamer: Making your code cry since 2025