Coding Horror

Coding Horror is a great read written by Jeff Atwood, the co-founder of Stack Overflow. I’ve organized interesting posts into loose categories such as Dev (ie. software engineering), UX, security and other topics.

Dev

https://blog.codinghorror.com/dont-go-dark/
Submit your code regularly in small doses.

https://blog.codinghorror.com/testing-with-the-force/
Testing with real user data.

https://blog.codinghorror.com/code-its-trivial/
“I could code that in a week.”

https://blog.codinghorror.com/the-joy-of-deletion/
Deleting unnecessary code is good.

https://blog.codinghorror.com/the-difficulty-of-dogfooding/
Dogfooding – developers might not be the target audience.

https://blog.codinghorror.com/rubber-duck-problem-solving/
Guide to Rubber duck debugging.

https://blog.codinghorror.com/spartan-programming/
Code minimalism.

https://blog.codinghorror.com/on-managed-code-performance-again/
Managed code performs well.

https://blog.codinghorror.com/the-delusion-of-reuse/
Writing reusable code is difficult.

https://blog.codinghorror.com/good-programmers-get-off-their-butts/
You can’t design everything up front.

https://blog.codinghorror.com/this-is-your-anti-productivity-pod/
Workspace quality matters.

https://blog.codinghorror.com/managing-with-trust/
About trust in software development.

https://blog.codinghorror.com/on-software-engineering/
Iterate.

https://blog.codinghorror.com/visualizing-code-to-fail-faster/
It would be cool to have tools that show the effect of changes as you type.

https://blog.codinghorror.com/new-programming-jargon/
List of funny dev terms.

https://blog.codinghorror.com/department-of-declaration-redundancy-department/
Implicitly typed local variables in C#.

https://blog.codinghorror.com/get-your-database-under-version-control/
Databases need version control.

https://blog.codinghorror.com/the-danger-of-naivete/
Simple algorithms might be not only inefficient but also biased.

https://blog.codinghorror.com/hashtables-pigeonholes-and-birthdays/
Hashtables and collisions explained.

https://blog.codinghorror.com/no-matter-what-they-tell-you-its-a-people-problem/
Do you like your team members?

https://blog.codinghorror.com/sharing-the-customers-pain/
When was the last time you met your users?

https://blog.codinghorror.com/pair-programming-vs-code-reviews/
Pair programming = synchronous real-time code review with a short feedback loop.

https://blog.codinghorror.com/die-you-gravy-sucking-pig-dog/
Garbage collector beats manual (de)allocation.

https://blog.codinghorror.com/the-infinite-version/
A diff based updated.

https://blog.codinghorror.com/working-with-the-chaos-monkey/
Killing instances on purpose to make system more resilient.

https://blog.codinghorror.com/if-you-dont-change-the-ui-nobody-notices/
Visual changes vs changes under the hood.

https://blog.codinghorror.com/my-software-is-being-pirated/
Buying software supports programmers.

https://blog.codinghorror.com/hardware-is-cheap-programmers-are-expensive/
Throw faster hardware at your performance problem first.

https://blog.codinghorror.com/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea/
Naive swearword filters aka Clbuttic.

https://blog.codinghorror.com/the-f5-key-is-not-a-build-process/
How long does it take for a new developer to start working on a project?

https://blog.codinghorror.com/are-features-the-enemy/
Bloating software and hunger for features.

https://blog.codinghorror.com/can-your-team-pass-the-elevator-test/
Design-the-(product)-box activity to clearly explain the product.

https://blog.codinghorror.com/groundhog-day-or-the-problem-with-ab-testing/
Phil was A/B testing his date with Rita.

https://blog.codinghorror.com/software-engineering-dead/
Development is craftsmanship, not engineering.

https://blog.codinghorror.com/performance-is-a-feature/
Optimize your websites.

https://blog.codinghorror.com/the-ugly-american-programmer/
English is the standard language of programming.

https://blog.codinghorror.com/the-infinite-space-between-words/
Storage latency – today we only need to travel to Jupiter.

https://blog.codinghorror.com/complaint-driven-development/
Fix user issues?

https://blog.codinghorror.com/there-aint-no-such-thing-as-the-fastest-code/
Don’t assume the program you wrote and optimized is the fastest possible.

https://blog.codinghorror.com/getting-the-interview-phone-screen-right/
How to interview developers for a job.

https://blog.codinghorror.com/revisiting-the-black-sunday-hack/
Genius anti-piracy strategy.

https://blog.codinghorror.com/oh-yeah-fork-you/
Forking off open-source projects.

https://blog.codinghorror.com/everything-is-fast-for-small-n/
Test with large datasets.

https://blog.codinghorror.com/not-all-bugs-are-worth-fixing/
Does it make sense to fix this bug?

https://blog.codinghorror.com/flattening-arrow-code/
Tips how to improve code that is nested.

https://blog.codinghorror.com/i-was-a-teenage-hacker/
Jeff Atwood’s “illegal” story.

https://blog.codinghorror.com/today-is-goof-off-at-work-day/
Friday afternoons in Palo Alto must’ve been legendary.

https://blog.codinghorror.com/please-dont-learn-to-code/
Coding is not an essential skill like reading and writing.

https://blog.codinghorror.com/the-bad-apple-group-poison/
One bad team member can disrupt the group.

https://blog.codinghorror.com/dealing-with-bad-apples/
Confronting and resolving issues with “bad apples” is a must in team projects.

https://blog.codinghorror.com/its-never-been-built-before/
Software project is something brand new whereas construction can refer existing projects.

https://blog.codinghorror.com/unit-testing-vs-beta-testing/
Unit testing is a cute little bunny that can complement real testing.

UX

https://blog.codinghorror.com/this-is-what-happens-when-you-let-developers-create-ui/
The Dialogue.

https://blog.codinghorror.com/actual-performance-perceived-performance/
UX of performance.

https://blog.codinghorror.com/death-to-the-dialog-box/
Dialog box is #BadUX

https://blog.codinghorror.com/teaching-users-to-read/
Dialog box and reading tech tech info.

https://blog.codinghorror.com/double-click-must-die/
(some) Users don’t understand double click.

https://blog.codinghorror.com/trees-treeviews-and-ui/
UX of treeviews.

https://blog.codinghorror.com/the-god-login/
UX of login dialogue.

https://blog.codinghorror.com/the-end-of-pagination/
UX of pagination

https://blog.codinghorror.com/avoiding-blank-page-syndrome/
Example content instead of a blank page.

https://blog.codinghorror.com/treating-user-myopia/
Users don’t read instructions.

https://blog.codinghorror.com/i-repeat-do-not-listen-to-your-users/
User feedback based on data rather than what they say.

https://blog.codinghorror.com/the-dramatic-password-reveal/
UX of password dialog

https://blog.codinghorror.com/every-user-lies/
People lie (to themselves).

https://blog.codinghorror.com/please-dont-steal-my-focus/
UX of popup windows.

https://blog.codinghorror.com/typography-where-engineers-and-designers-meet/
Helvetica > Arial

https://blog.codinghorror.com/a-lesson-in-control-simplicity/
Microwave UX.

https://blog.codinghorror.com/measuring-font-legibility/
Font for road signs.

https://blog.codinghorror.com/reducing-user-interface-friction/
IM vs email, and number of steps it takes to do something in an app.

https://blog.codinghorror.com/the-software-check-engine-light/
“How do I make this error message go away?”

https://blog.codinghorror.com/unnecessary-dialogs-stopping-the-proceedings-with-idiocy/
Dialogs interrupt users flow.

https://blog.codinghorror.com/removing-the-login-barrier/
Don’t force me to login.

https://blog.codinghorror.com/low-fi-usability-testing/
Not doing any usability testing is a disaster.

Security

https://blog.codinghorror.com/the-perils-of-fui-fake-user-interface/
Sneaky redirection hack.

https://blog.codinghorror.com/speed-hashing/
Password length should be at least 12 characters.

https://blog.codinghorror.com/should-all-web-traffic-be-encrypted/

https://blog.codinghorror.com/breaking-the-webs-cookie-jar/

HTTPS rules.

https://blog.codinghorror.com/make-your-email-hacker-proof/
Secure your email. Now!

https://blog.codinghorror.com/given-enough-money-all-bugs-are-shallow/
Security bugs in open source and incentives to fix them.

https://blog.codinghorror.com/your-password-is-too-damn-short/
Long passwords good & developers please pick hash algorithms carefully.

https://blog.codinghorror.com/dictionary-attacks-101/
Throttle failed logins

https://blog.codinghorror.com/protecting-your-cookies-httponly/
Anyone who loads user profile will send their to an evil remote server!

https://blog.codinghorror.com/phishing-the-forever-hack/
Everyone is vulnerable to phishing.

https://blog.codinghorror.com/cutting-the-gordian-knot-of-web-identity/
https://blog.codinghorror.com/your-internet-drivers-license/
Online identity and reliance on passwords.

Career

https://blog.codinghorror.com/so-you-dont-want-to-be-a-programmer-after-all/
Career options if you don’t like programming anymore.

https://blog.codinghorror.com/learning-on-the-battlefield/
If you’re a student, find internship like your life depends on it.

https://blog.codinghorror.com/do-certifications-matter/
Rather create something than study for certification.

https://blog.codinghorror.com/choosing-your-own-adventure/
Gamebooks and career choices.

Licensing

https://blog.codinghorror.com/youtube-vs-fair-use/
Fair use problematic on Youtube.

https://blog.codinghorror.com/youtube-the-big-copyright-lie/
What is fair use?

https://blog.codinghorror.com/pick-a-license-any-license/
Code without license has implicit copyright. License comparison.

Communication

https://blog.codinghorror.com/the-gamification/
Forums suck.

https://blog.codinghorror.com/suspension-ban-or-hellban/
Various options to deal with bad actors in online communities.

https://blog.codinghorror.com/open-source-software-self-service-software/
Little steps towards healthy open-source community.

https://blog.codinghorror.com/on-escalating-communication/
Choose appropriate channel for communication.

https://blog.codinghorror.com/the-sesame-street-presentation-rule/
No boring presentations.

https://blog.codinghorror.com/maximizing-the-value-of-your-keystrokes/
Private email vs public blog post.

https://blog.codinghorror.com/avoiding-walled-gardens-on-the-internet/
AOL and Facebook, private networking sites.

https://blog.codinghorror.com/users-dont-care-about-you/
It’s not about you. It’s about them.

https://blog.codinghorror.com/the-popularity-tax/
Slashdot effect.

Productivity

https://blog.codinghorror.com/the-multi-tasking-myth/
Multitasking is a lie.

https://blog.codinghorror.com/the-mysterious-cone-of-uncertainty/
Estimates are way off.

https://blog.codinghorror.com/todont/
Declare TODO bankruptcy.

https://blog.codinghorror.com/boyds-law-of-iteration/
Speed of iteration rules.

Tools & Things

https://blog.codinghorror.com/preserving-the-internet-and-everything-else/
Internet archive is awesome.

https://blog.codinghorror.com/in-praise-of-beyond-compare/
Jeff shares my love for Beyond Compare!

https://blog.codinghorror.com/optimizing-your-wallet/
Slim wallet rocks.

Misc

https://blog.codinghorror.com/the-broken-window-theory/
Neglect accelerates the rot.

https://blog.codinghorror.com/worse-is-better/
Complex solution can be the right one. Occasionally.

https://blog.codinghorror.com/for-a-bit-of-colored-ribbon/
Motivation to reduce consumption – a comparison with peers.

https://blog.codinghorror.com/the-pc-is-over/
Is PC really over? I doubt it.

https://blog.codinghorror.com/concluding-the-great-mp3-bitrate-experiment/
192kbps MP3 ftw.

https://blog.codinghorror.com/buying-happiness/
Shopping and happiness.

https://blog.codinghorror.com/meetings-where-work-goes-to-die/
No meeting should ever be more than an hour, under penalty of death.

https://blog.codinghorror.com/bias-lighting/
Bias lighting good for your eyes.

https://blog.codinghorror.com/9-ways-marketing-weasels-will-try-to-manipulate-you/
Don’t get tricked by sale techniques.

https://blog.codinghorror.com/how-not-to-advertise-on-the-internet/
Reduction of advertising to the lowest common denominator.

https://blog.codinghorror.com/quantity-always-trumps-quality/
Practice makes perfect.

https://blog.codinghorror.com/the-software-imprinting-dilemma/
Baby duck syndrome.

https://blog.codinghorror.com/lessons-from-garrys-mod/
Iterative approach to creating mods.

https://blog.codinghorror.com/bill-gates-and-donkey-bas/
Bill Gates made a game!

https://blog.codinghorror.com/the-works-on-my-machine-certification-program/
Works on my machine!

https://blog.codinghorror.com/software-internationalization-sims-style/
Songs in Simlish.

https://blog.codinghorror.com/because-they-all-suck/
Computers sucks!

https://blog.codinghorror.com/whitelist-blacklist-greylist/
Website spam prevention.

https://blog.codinghorror.com/of-spaces-underscores-and-dashes/
Dash as a substitute for space.

https://blog.codinghorror.com/anisotropic-filtering/
Straightforward explanation of AF (anisotropic filtering).

https://blog.codinghorror.com/avoiding-booleans/
Enumerations instead of bool. Radio buttons instead of checkbox.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *