40 comments

[ 3.1 ms ] story [ 112 ms ] thread
I'm sure if I took the time to read them all, they'd all be very different as everyone has their own opinions on "things every programmer should know".

IMO what every programmer should know is how to do their job :)

> IMO what every programmer should know is how to do their job :)

That's either a non-answer, or it's setting the bar awfully low.

Storing passwords unhashed may 'get the job done', but every programmer should know better.

Maybe it should be changed to "know how to do their job well"
No, that’s a different list. What every decent programmer should know.
How about the theoretical minimum one should know to be a professional programmer. Basic security principles would be included.
> Storing passwords unhashed may 'get the job done', but every programmer should know better.

Not every programmer has to deal with passwords, though, so the generality is it is limited.

A programmer who has spent his whole career writing computational fluid dynamics simulations doesn’t need to know anything about storing passwords, but probably would have an equally idiosyncratic idea of what all programmers should know.

I would argue that storing passwords insecurely is not "getting the job done". Following minimum industry standards can be considered a requirement of knowing how to do your job.
I reckon there must be a few universal truths in programming. Things like "Write testable code" and "Document why your code works." spring to mind immediately but I bet there's more.
> Things like "Write testable code" and "Document why your code works."

There are many successful companies that didn't do either of those things in their codebase.

Whether or not you consider the people who wrote it good programmers is I suppose up for debate, but objectively, they created code that achieved the stated business purpose.

My point being, I don't think there are any universal truths.

There are many successful companies that didn't do either of those things in their codebase.

Commercial success is a very poor measure of code quality.

Like I said, the ability of the programmer is up for debate, but objectively, they created code that solved the problem.
Code quality is a poor measure of product success, commercial or otherwise.
Very few people are paid to write quality code. Instead people are paid to produce commercial success.
> IMO what every programmer should know is how to do their job :)

In truth, though, we don't. And not "oh, a few good ones do, but the masses we pity and mock don't". All of us. The only difference is if we acknowledge it. We're trying (and that's why articles like this are so common!), and arguably we as an industry are making progress, but we don't yet have it figured out.

https://xkcd.com/2030/

I'd like to know what I should know but unfortunately Cloudflare thinks they have to task me with a captcha I can't even fill out on every HTTP resource this page loads.

Edit I know it's frowned upon to ask but why the downvotes? I'm not making this up and I don't see what's wrong with my statement.

Are you using Tor by chance? Check out https://privacypass.github.io/
Unfortunately, while Privacy Pass on paper may be privacy protecting (though there is very little research into the topic due to it's relative lack of use), just by installing and using it with Tor you have reduced your effective privacy (because it's not installed in the Tor Browser by default).

And the Tor folks aren't willing to include it by default for a variety of reasons (disagreeing with CloudFlare restricting visitor's ability to read pages in the first place, lack of conclusive research into how it will impact the fingerprinting of Tor users, and just general bad blood between the Tor and CloudFlare folks).

Obviously, folks can do whatever they want but I wouldn't recommend using Privacy Pass over Tor for the above reasons.

I'm not using the Tor browser but I can see how your statement could be valid for other browsers as well. TLDR it makes you more unique on the web.
Yep, I am using Tor! Privacy Pass has been suggested to me before and I have tried it but it didn't do anything for me (other than consuming tokens).

It does work after I turn cookies on for the page but that's not something I wanna do for every website I visit (that sits behind Cloudflare).

I understand that there's a limit as to where websites can reasonably be expected to work and I'm not sure if my case is crossing it.

I wouldn't downvote you for this, but probably because the topic of this thread isn't Cloudflare.
Fair point. I was a bit concerned that this might sound like a HN bug report (about the Algolia search site) or off-topic.
Doesn't load with uMatrix enabled.
Is this a joke? Most of the web is deeply broken with uMatrix enabled. If you use uMatrix, you need to know what you are doing.
I use uMatrix. If a site doesn't load with uMatrix then the site is literal garbage.
The main thing that breaks the web is js blocking, or cookie blocking. For those who are downvoting this poster, I snipped this from the documentation:

> Out of the box, uMatrix works in relax block-all/allow-exceptionally mode, meaning web sites which require 3rd-party scripts are likely to be "broken".

Whitelist *-dsn.algolia.net, whitelist Cloudfront, blacklist telemetry.algolia.com, then you're all set. Nothing else is needed for the site's functionality, despite it wanting to load resources from like seven different subdomains, CDNs, and (I think) four different telemetry domains and subdomains.
Very low effort post.
you might be missing the point
clickbait is easy to verify and trivial to generate. I think everyone got it.
There's very little every programmer should know. There's a lot every programmer should be aware of.
I didn't know this, but I'm aware now. Thanks!
1-You will spend WAY more time reading code than writing it.

2- This is a career where you will always learning something new.

3-Impostor syndrome is a real thing.

1. Read a few tutorials and just start using the stuff relying on Stack Overflow, blogs, etc

2. After a couple of months, get a good book on it and read it cover to cover. Make a list of useful things

3. Keep using the stuff, apply the list

4. After another few months, go through all the reference docs, make a new list of useful things

5. In rare cases, continue this process by reading all of the source code

Repeat for all other stuffs until end of career.