---
title: "#programming articles | Hashnode"
description: "A community targeted at posts that are very generic in nature. Read the latest #programming articles and tutorials on Hashnode."
url: "https://hashnode.com/tag/programming"
---

Tag

# #programming

27,700 posts · 777,778 followers

[Powerduck](https://hashnode.com/@powerduck) · [1h ago](https://hashnode.com/posts/testing-cache-invalidation-headers/6af7646922176ef78d9519ef)

### [Testing Cache Invalidation Headers](https://blogs.powerduck.com/testing-cache-invalidation-headers?utm_source=hashnode&utm_medium=feed)

A cache rule is only as good as the stale and revalidation cases.

5 min read · [blogs.powerduck.com](https://blogs.powerduck.com/testing-cache-invalidation-headers?utm_source=hashnode&utm_medium=feed)

[Powerduck](https://hashnode.com/@powerduck) · [5h ago](https://hashnode.com/posts/testing-file-upload-size-boundaries/6af72c894facdfb3d0295804)

### [Testing File Upload Size Boundaries](https://blogs.powerduck.com/testing-file-upload-size-boundaries?utm_source=hashnode&utm_medium=feed)

The file that matters is the one whose byte count sits exactly on the limit.

5 min read · [blogs.powerduck.com](https://blogs.powerduck.com/testing-file-upload-size-boundaries?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/testing-file-upload-size-boundaries/6af72c894facdfb3d0295804)

[Powerduck](https://hashnode.com/@powerduck) · [7h ago](https://hashnode.com/posts/testing-backwards-compatible-additive-changes/6af711064d5fc3575e6b5c42)

### [Testing Backwards-Compatible Additive Changes](https://blogs.powerduck.com/testing-backwards-compatible-additive-changes?utm_source=hashnode&utm_medium=feed)

A field that looks optional can still break a client that parses its responses strictly.

5 min read · [blogs.powerduck.com](https://blogs.powerduck.com/testing-backwards-compatible-additive-changes?utm_source=hashnode&utm_medium=feed)

[Raghav Chamadiya](https://hashnode.com/@RaghavChamadiya) · [8h ago](https://hashnode.com/posts/circular-imports-in-python-why-every-big-python-repo-has-them-and-the-few-that-actually-break/6af70d5e154d5c436f6e9686)

### [Circular imports in Python: why every big Python repo has them, and the few that actually break](https://repowise.hashnode.dev/circular-imports-in-python-why-every-big-python-repo-has-them-and-the-few-that-actually-break?utm_source=hashnode&utm_medium=feed)

TL;DR All 51 popular Python repos I checked (1,000+ GitHub stars each) have circular import chains between files; in the median one, 16.4% of production files sit inside one. A Python circular import

10 min read · [repowise.hashnode.dev](https://repowise.hashnode.dev/circular-imports-in-python-why-every-big-python-repo-has-them-and-the-few-that-actually-break?utm_source=hashnode&utm_medium=feed)

[dafili](https://hashnode.com/@vaultcheck) · [9h ago](https://hashnode.com/posts/twelve-green-tests-one-missing-key/6af6fab07163ab7dc34e34b2)

### [Twelve Green Tests, One Missing Key](https://mediaforge-studio.hashnode.dev/twelve-green-tests-one-missing-key?utm_source=hashnode&utm_medium=feed)

Two of the twelve asserted the broken wire format — so the suite had no way to disagree with the bug.

5 min read · [mediaforge-studio.hashnode.dev](https://mediaforge-studio.hashnode.dev/twelve-green-tests-one-missing-key?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/twelve-green-tests-one-missing-key/6af6fab07163ab7dc34e34b2)

[Powerduck](https://hashnode.com/@powerduck) · [19h ago](https://hashnode.com/posts/testing-client-timeout-behavior/6af6674d56542c2b3ad118a1)

### [Testing Client Timeout Behavior](https://blogs.powerduck.com/testing-client-timeout-behavior?utm_source=hashnode&utm_medium=feed)

A client that gives up at the wrong millisecond either waits forever or drops a request that was about to succeed.

5 min read · [blogs.powerduck.com](https://blogs.powerduck.com/testing-client-timeout-behavior?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/testing-client-timeout-behavior/6af6674d56542c2b3ad118a1)

[Powerduck](https://hashnode.com/@powerduck) · [21h ago](https://hashnode.com/posts/testing-concurrent-requests-and-races/6af64db6f0a55368861b2abc)

### [Testing Concurrent Requests and Race Conditions](https://blogs.powerduck.com/testing-concurrent-requests-and-races?utm_source=hashnode&utm_medium=feed)

A race that appears once a week is a test waiting to be made deterministic.

5 min read · [blogs.powerduck.com](https://blogs.powerduck.com/testing-concurrent-requests-and-races?utm_source=hashnode&utm_medium=feed)

[Abdus Salam](https://hashnode.com/@aheadkit) · [1d ago](https://hashnode.com/posts/what-raising-the-bcrypt-cost-factor-actually-costs-in-milliseconds/6af55e573fc20b6976a473b4)

### [What Raising the bcrypt Cost Factor Actually Costs in Milliseconds](https://aheadkit.hashnode.dev/what-raising-the-bcrypt-cost-factor-actually-costs-in-milliseconds?utm_source=hashnode&utm_medium=feed)

Somewhere in your codebase there is a line that looks like this: const hash = await bcrypt.hash(password, 10); That 10 is the cost factor, and most tutorials tell you to set it to 10, or 12, and move

5 min read · [aheadkit.hashnode.dev](https://aheadkit.hashnode.dev/what-raising-the-bcrypt-cost-factor-actually-costs-in-milliseconds?utm_source=hashnode&utm_medium=feed)

[2](https://hashnode.com/posts/what-raising-the-bcrypt-cost-factor-actually-costs-in-milliseconds/6af55e573fc20b6976a473b4)

[Abdus Salam](https://hashnode.com/@aheadkit) · [1d ago](https://hashnode.com/posts/ten-threads-ten-thousand-increments-and-a-counter-that-came-up-short/6af55f6e4e46d0bbbcb78c6e)

### [Ten Threads, Ten Thousand Increments, and a Counter That Came Up Short](https://aheadkit.hashnode.dev/ten-threads-ten-thousand-increments-and-a-counter-that-came-up-short?utm_source=hashnode&utm_medium=feed)

Every concurrency tutorial has the same demo. Ten threads, each increments a shared counter 1,000 times, the answer should be 10,000, and without a lock it comes up short. I ran it. It came back 10,00

5 min read · [aheadkit.hashnode.dev](https://aheadkit.hashnode.dev/ten-threads-ten-thousand-increments-and-a-counter-that-came-up-short?utm_source=hashnode&utm_medium=feed)

[Abdus Salam](https://hashnode.com/@aheadkit) · [1d ago](https://hashnode.com/posts/a-nested-quantifier-made-my-regex-take-seconds-on-a-30-character-string/6af55ef1ab4ca5f49f2ce02f)

### [A Nested Quantifier Made My Regex Take Seconds on a 30-Character String](https://aheadkit.hashnode.dev/a-nested-quantifier-made-my-regex-take-seconds-on-a-30-character-string?utm_source=hashnode&utm_medium=feed)

I was validating a field that should only contain the letter a. Simple job. I wrote this: import re pat = re.compile(r'^(a+)+$') It looked fine. It matched aaa. It matched thirty a's in a blink. Then

5 min read · [aheadkit.hashnode.dev](https://aheadkit.hashnode.dev/a-nested-quantifier-made-my-regex-take-seconds-on-a-30-character-string?utm_source=hashnode&utm_medium=feed)
