Live data from Hacker News

Ask HN: What are your current programming pet peeves?

news.ycombinator.com

91–100 of 110 posts

Re: Ask HN: What are your current programming pet peeves?

#92

Having used Scala and TypeScript a lot for work over the last ~5 years, I think I'm going to say static typing. It's lunacy. Computers mostly don't work in types, my brain usually doesn't work in types, and only a small subset of the problems I work on really work in types. The amount of modern languages that think they can solve everything in the type system boggles my mind.

I work in PHP, I would say about 90% of all bugs are type errors.

Even if they're not type errors, if I sit back and think about what the root cause is, it's the type system and dynamic typing.

Addressing an array at null? Type error! Referring to a key that doesn't exist? Believe it or not - not a logic error, that's a type error! If we uses objects or structs that's not possible, but arrays are basically structs with dynamic member ;(

Anything around empty()? Type error. Arithmetic errors? Almost always type errors! Using postfix logic operators? Believe it or not, type error! Anything around DateTime? Usually a type error!

Re: Ask HN: What are your current programming pet peeves?

#93
post #65

Earlier quoted context omitted.

It sort of sounds like you want a ~yaml config that's unmarshaled to an object.

LMAO that's exactly the kind of pattern I'm ranting about. I don't know if you're being sarcastic or not.

I don't mean to a hashmap; I meant to a pojo/dataclass/whatever.

Re: Ask HN: What are your current programming pet peeves?

#94
post #81

Earlier quoted context omitted.

> I can't believe that in 2025 it is still hard to find documentation for basic functionality in languages as ubiquitous as, say, Python. That’s why we get familiar with the documentation manual and bookmark the web version. Then there’s offline documentation browsers (dash, devdocs,…). > it is amazing to me that shells still exist in more-or-less the same form Bash and ZSH are quite good for their use cases (running…

In the case of python, it's all built-in. People just don't know their tools. $ python Python 3.13.2 (main, Mar 6 2025, 08:26:01) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> help(os) Same thing happens with so many other things.

Not so great if you don't know the import or it's not intuitive (pathlib, shutil).

Re: Ask HN: What are your current programming pet peeves?

#95

When someone uses an odd number of indentation! That really grinds my gears for some reason.

https://github.com/libretro/RetroArch Nearly a million lines of 3-spaced C89, still in heavy perpetual development.

i tried to submit a patch to retroarch and it was one of the least pleasant experiences i've had in a while. makefile hell, layers and layers of incomprehensible macros, and spaghetti code everywhere. no thank you. i may be a masochist but i still respect my time.

Re: Ask HN: What are your current programming pet peeves?

#96

Earlier quoted context omitted.

https://github.com/libretro/RetroArch Nearly a million lines of 3-spaced C89, still in heavy perpetual development.

i tried to submit a patch to retroarch and it was one of the least pleasant experiences i've had in a while. makefile hell, layers and layers of incomprehensible macros, and spaghetti code everywhere. no thank you. i may be a masochist but i still respect my time.

Same, IMO most of the main devs are extremely toxic, and their turnover rate among contributors is the worst I've ever seen in my 30 years of professional and volunteer/FOSS coding.

Re: Ask HN: What are your current programming pet peeves?

#97
Most documentation sucks - Example: I like Free Pascal/Lazarus, it has much to recommend it, except the documentation sucks, it's an anti-feature. Many functions are documented with a list of arguments, and that's about it... not what those arguments should be, nor examples of usage, etc. The same is true for many languages and libraries. It's part of the reason LLM coding engines enhance productivity (by helping you get around this defect)

Null terminated strings - Really... it's 2025... can't we kill that off already?

Breaking changes to languages/libraries -- Python really caused a ton of unnecessary grief with the breaking changes to strings in their rush to force Unicode into places it didn't belong.

Ambient Authority Operating Systems - Why do I have to trust all of my programs with all of my user privileges? I don't do that in other areas of life... I don't hand over my wallet to buy an ice cream cone. I don't wire everything directly into the 220 feed into my house. Why can't we just use an OS that supports power boxes (dialog boxes for file operations, that enforce the choice, instead of leaving it up to good faith in the application)

Internet "Access" instead of full connectivity - Why are we still forced to "access" the internet, instead of just running our own machines? (If we had better OSs, we could do that safely).

Memex - It's been 80 years... a full human lifespan... and we still don't have a working Memex. We should be able to surf the net, and then recall (offline!) and recreate anything we've seen, link it into our own narratives, and then spool off a copy for our friends.

HTML - HTML is not a language for the markup (annotation) of hypertext. You can't add a separate new layer to an existing resource without copying or editing it. HTML is part of why we still don't have Memex. (That and copyright insanity)

Re: Ask HN: What are your current programming pet peeves?

#98
post #46

Git. Having lived through many cycles of version control systems (VSS, SVN, TFS, Hg), this one has gone on long enough to be replaced with something more intuitive. I think a lot of project complexity is work arounds of inherent Git issues. But I'm just a caveman lawyer.

The main blocker for me was having the wrong mental model of what GIT really is. I thought it was all about deltas, and saving each and every "change" to a file, which was dead nuts wrong.

GIT makes snapshots of everything. The functionality is a bit oddly distributed in terms of the command set, but it's all snapshots. You could make a fully compatible program that just does a full snapshot (without ever looking for merge errors, etc), to make everything easy-peasy.

  I bet there's a command line way to do that already....

Re: Ask HN: What are your current programming pet peeves?

#99
post #94
post #81

Earlier quoted context omitted.

In the case of python, it's all built-in. People just don't know their tools. $ python Python 3.13.2 (main, Mar 6 2025, 08:26:01) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> help(os) Same thing happens with so many other things.

Not so great if you don't know the import or it's not intuitive (pathlib, shutil).

You can search in module names and summaries,

    $ python
    Python 3.13.2 (main, Mar  6 2025, 08:26:01) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> help()
    Welcome to Python 3.13's help utility! If this is your first time using
    Python, you should definitely check out the tutorial at
    https://docs.python.org/3.13/tutorial/.
    
    Enter the name of any module, keyword, or topic to get help on writing
    Python programs and using Python modules.  To get a list of available
    modules, keywords, symbols, or topics, enter "modules", "keywords",
    "symbols", or "topics".
    
    Each module also comes with a one-line summary of what it does; to list
    the modules whose name or summary contain a given string such as "spam",
    enter "modules spam".
    
    To quit this help utility and return to the interpreter,
    enter "q", "quit" or "exit".
    
    help> modules files
    
    Here is a list of modules whose name or summary contains 'files'.
    If there are any, enter a module name to get more help.
    
    compileall - Module/script to byte-compile all .py files to .pyc files.
    filecmp - Utilities for comparing files and directories.
    fileinput - Helper class to quickly write a loop over all standard input files.
    gzip - Functions that read and write gzipped files.
    idlelib.grep - Grep dialog for Find in Files functionality.
    linecache - Cache lines from Python source files.
    netrc - An object-oriented interface to .netrc files.
    pathlib - Object-oriented filesystem paths.
    plistlib - plistlib.py -- a tool to generate and parse MacOSX .plist files.
    shutil - Utility functions for copying and archiving files and directory trees.
    tempfile - Temporary files.
    ...
I know there's search engines and there's use cases. I'm just trying to highlight that some people that work in a language day in and out, don't even know how to get their documentation. I just want people to know their tools better to ask smarter questions. It won't remove questions and that's fine. Just help me help you.

Re: Ask HN: What are your current programming pet peeves?

#100
1. Debugging multiprocessing. I know it's tricky to implement but I'd imagine there would be more tools today for that than your brain, logging and (single process) debugger.

2. Good explanation for build system. I don't know how many time I've ventured out to "aight let's learn cmake once and for all" to just give up and default to "Google when you get stuck, copy paste Stackoverflow solution" when I get some niche error. For programming I can almost always find and understand error, making my knowledge deeper. Build system, not so much

3. (in python) people using dict as config objects. Worst code (that work) I ever read was ML research code using json -> dict as experiment setup configuration. crux was that every object that read this dict ALSO modified to it, including adding function calls that modifies it. It was a horrible mess following it even with debugger. I'd love to have some advanced linter that tracks the dicts thrown around

Post reply on HN