Live data from Hacker News

Self-reliant programmer manifesto

yobibyte.github.io

11–18 of 18 posts

Re: Self-reliant programmer manifesto

#11
post #2

Those "over complex" code bases like curl handle a lot of edge cases. Your 300 lines of C is starting over and relearning what they already learned.

Also, software is hard to write, and second system syndrome causes loads of loathing and misery even when the goal is to "do it right, aka simple, this time."

That said, sometimes we need to take on the risk and effort of making a second system. I have often thought about the relearning/doomed-to-repeat-history problem, and I wonder if software - especially some open source software - might be uniquely positioned to build a second system due to bug trackers.

The bug trackers in software like Firefox effectively capture a large percentage of a project's history and design decisions. It seems to me that the bug tracker for a projects' predecessor could lay the proper frame for its successor.

Re: Self-reliant programmer manifesto

#12
Until customer Barry chimes in that he wants "this" feature, which they are never going to use, but they are also customer who is making 30% of your whole revenue. You can either say no and give opening to your competitor while keeping your ideals, or do what they want.

Re: Self-reliant programmer manifesto

#13
post #10
post #6

Earlier quoted context omitted.

I agree! However in many cases, these edge cases (I'm not speaking of curl now) are not needed for my personal use. E.g. if I use linux/windows/os, I do not care about how my tool behaves on the other os, I do not want to support all kind of hardware etc. If I am the only users, I can prune these use-cases (and features I mentioned in the post) significantly. E.g. I reimplement a subset of vim at the moment, I do not…

I'm thinking of something like curl specifically where the edge case isn't your machine, it's the machine you're talking to. Can I write my own curl-like downloader in a few hundred lines of code? Yes. Is it going to work first try with a 30 year old apache file server? Probably not. Do I want something that works "good enough" which breaks when I'm in the middle of a time crunch... or do I want something production…

Yeah, I don’t think the curl example was meant as a knock against curl or advice not to use it. I think any command-line user would agree that curl is not bad or bloated software, which is what they criticize.

The point seemed to be that even a rock-solid tool like curl started out tiny — just a few hundred lines — before growing to cover all the edge cases you’re describing. It’s more about showing that you can start with something simple for your own needs and customize it without depending on someone else.

Re: Self-reliant programmer manifesto

#16
This writing mirrors my thoughts exactly.

Have seen too many cases where 10-20 lines of code avoided the need to pull in an external library with multiple dependencies.

Ironically, I also find for anything not extremely mainstream, external libraries tend to appear more complete/functional than they actually are. Often find I end up having to fork and/or rewrite them for my use case.

Sure, some say everything should be fixed with PRs. But my technical goals and timeline constrains don’t necessarily align with the maintainer’s. So fork/rewrite it is!!

Re: Self-reliant programmer manifesto

#17
post #10

Earlier quoted context omitted.

I'm thinking of something like curl specifically where the edge case isn't your machine, it's the machine you're talking to. Can I write my own curl-like downloader in a few hundred lines of code? Yes. Is it going to work first try with a 30 year old apache file server? Probably not. Do I want something that works "good enough" which breaks when I'm in the middle of a time crunch... or do I want something production…

Yeah, I don’t think the curl example was meant as a knock against curl or advice not to use it. I think any command-line user would agree that curl is not bad or bloated software, which is what they criticize. The point seemed to be that even a rock-solid tool like curl started out tiny — just a few hundred lines — before growing to cover all the edge cases you’re describing. It’s more about showing that you can star…

There's the old saying, there are three types of people. Dumb people never learn from their mistakes, smart people learn from their mistakes, and wise people learn from the mistakes of others.

I try to choose wise, even if someone will later throw shade on me for not being "self reliant" or some other insult of the day. If my goal is to write a better libcurl, then that's what I'll work on. But that's basically a solved problem and working on that doesn't seem like the best use of my time.

Post reply on HN