#463: 2025 is @wrapped
About the show
Sponsored by us! Support our work through:
Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
HEADS UP: We are taking next week off, happy holiday everyone.
Michael #1: Has the cost of building software just dropped 90%?
- by Martin Alderson
- Agentic coding tools are collapsing “implementation time,” so the cost curve of shipping software may be shifting sharply
- Recent programming advancements haven’t been that great of a true benefit: Cloud, TDD, microservices, complex frontends, Kubernetes, etc.
- Agentic AI’s big savings are not just code generation, but coordination overhead reduction (fewer handoffs, fewer meetings, fewer blocks).
- Thinking, product clarity, and domain decisions stay hard, while typing and scaffolding get cheap.
- Is it the end of software dev? Not really, see Jevons paradox: when production gets cheaper, total demand can rise rather than spending simply falling. (Historically: the efficiency of coal use led to the increased consumption of coal)
- Pushes back on “only good for greenfield” by arguing agents also help with legacy code comprehension and bug-fixing. I 100% agree. #Legacy code for the win.
Brian #2: More on Deprecation Warnings
- How are people ignoring them?
- yep, it’s right in the Python docs:
-W ignore::DeprecationWarning - Don’t do that!
- Perhaps the docs should give the example of emitting them only once
-W once::::DeprecationWarning
- yep, it’s right in the Python docs:
- See also <code>-X dev</code> mode , which sets
-W defaultand some other runtime checks - Don’t use
warn, use the <code>@warnings.deprecated</code> decorator instead- Thanks John Hagen for pointing this out
- Emits a warning
- It’s understood by type checkers, so editors visually warn you
- You can pass in your own custom UserWarning with
category
- mypy also has a command line option and setting for this
--enable-error-code deprecated- or in
[tool.mypy]enable_error_code = ["deprecated"]
- My recommendation
- Use
@deprecated - with your own custom warning
- and test with
pytest -W error
- Use
Michael #3: How FOSS Won and Why It Matters
- by Thomas Depierre
- Companies are not cheap, companies optimize cost control. They do this by making purchasing slow and painful.
- FOSS is/was a major unlock hack to skip procurement, legal, etc.
- Example is months to start using a paid “Add to calendar” widget!
- It “works both ways”: the same bypass lowers the barrier for maintainers too, no need for a legal entity, lawyers, liability insurance, or sales motion.
- Proposals that “fix FOSS” by reintroducing supply-chain style controls (he name-checks SBOMs and mandated processes) risk being rejected or gamed, because they restore the very friction FOSS sidesteps.
Brian #4: Should I be looking for a GitHub alternative?
- Pricing changes for GitHub Actions
- The self-hosted runner pricing change caused a kerfuffle.
- It’s has been postponed
- But… if you were to look around, maybe pay attention to
Extras
Brian:
- End of year sale for The Complete pytest Course
- Use code XMAS2025 for 50% off before Dec 31
- Writing work on Lean TDD book on hold for holidays
- Will pick up again in January
Michael:
- PyCharm has better Ruff support now out of the box, via Daniel Molnar
- This is from the release notes of 2025.3: "PyCharm 2025.3 expands its LSP integration with support for Ruff, ty, Pyright, and Pyrefly.”
- If you check out the LSP section it will land you on this page and you can go to Ruff.
- The Ruff doc site was also updated. Previously it was only available external tools and a third party plugin, this feels like a big step.
- Fun quote I saw on ExTwitter: May your bug tracker be forever empty.
Joke:
- Try/Catch/Stack Overflow
- Create a super annoying linkedin profile - From Tim Kellogg, submitted by archtoad
Episode Transcript
Collapse transcript
00:00
00:05
00:10
00:11
00:12
00:14
00:24
00:29
00:34
00:41
00:45
00:50
00:54
00:57
00:58
01:00
01:04
01:11
01:16
01:19
01:24
01:31
01:33
01:37
01:41
01:44
01:51
01:54
01:56
02:02
02:07
02:14
02:20
02:23
02:30
02:34
02:40
02:46
02:48
02:49
02:50
02:57
02:58
02:58
03:02
03:06
03:10
03:23
03:33
03:38
03:43
03:50
03:57
04:02
04:08
04:09
04:13
04:14
04:25
04:26
04:31
04:35
04:37
04:41
04:46
04:49
04:55
04:55
04:57
04:59
05:03
05:06
05:10
05:12
05:13
05:14
05:17
05:20
05:21
05:23
05:24
05:26
05:29
05:33
05:37
05:39
05:45
05:48
05:51
05:56
05:57
05:58
06:02
06:04
06:05
06:07
06:08
06:16
06:21
06:27
06:32
06:37
06:42
06:46
06:47
06:52
06:56
06:59
07:02
07:03
07:04
07:08
07:12
07:17
07:19
07:27
07:33
07:39
07:41
07:50
07:55
08:04
08:06
08:14
08:16
08:17
08:25
08:28
08:32
08:36
08:42
08:47
08:52
08:54
08:56
09:01
09:05
09:09
09:12
09:13
09:15
09:16
09:23
09:26
09:30
09:32
09:34
09:35
09:40
09:44
09:50
09:58
10:05
10:09
10:15
10:20
10:27
10:33
10:37
10:43
10:48
10:55
11:00
11:04
11:08
11:15
11:22
11:28
11:30
11:36
11:38
11:40
11:44
11:46
11:48
11:53
11:56
11:57
11:58
12:03
12:10
12:16
12:23
12:31
12:37
12:43
12:48
12:53
12:59
13:03
13:09
13:16
13:22
13:30
13:39
13:44
13:45
13:47
13:47
13:49
13:50
13:55
13:59
14:01
14:03
14:06
14:12
14:17
14:21
14:21
14:23
14:29
14:35
14:42
14:45
14:52
14:57
15:00
15:05
15:11
15:13
15:16
15:20
15:21
15:25
15:27
15:28
15:33
15:36
15:43
15:47
15:49
15:51
15:51
15:53
15:57
15:58
16:00
16:00
16:01
16:04
16:10
16:15
16:20
16:24
16:31
16:32
16:34
16:36
16:49
16:53
16:55
17:01
17:04
17:13
17:14
17:19
17:25
17:26
17:29
17:30
17:31
17:32
17:36
17:42
17:45
17:47
17:50
17:54
18:02
18:03
18:07
18:10
18:18
18:22
18:24
18:29
18:31
18:34
18:40
18:44
18:48
18:51
18:56
18:59
19:00
19:02
19:05
19:08
19:11
19:13
19:19
19:24
19:25
19:26
19:27
19:29
19:30
19:31
19:36
19:38
19:44
19:46
19:56
20:00
20:02
20:09
20:10
20:10
20:13
20:16
20:19
20:23
20:25
20:30
20:32
20:34
20:35
20:38
20:44
20:47
20:48
20:54
21:00
21:05
21:07
21:08
21:09
21:10
21:13
21:16
21:17
21:21
21:24
21:30
21:32
21:37
21:42
21:47
21:52
21:57
22:01
22:07
22:13
22:19
22:24
22:28
22:33
22:39
22:44
22:49
22:55
23:03
23:06
23:06
23:08
23:09
23:12
23:12
23:16
23:22
23:27
23:30
23:33
23:41
23:45
23:46
23:51
23:54
23:59
24:02
24:07
24:08
24:11
24:13
24:17
24:20
24:24
24:27
24:31
24:37
24:39
24:40
24:51
25:01
25:08
25:10
25:15
25:17
25:19
25:27
25:28
25:30
25:31
25:35
25:36
25:39
25:46
25:47
25:50
25:55
26:02
26:08
26:09
26:13
26:15
26:20
26:24
26:25
26:29
26:30
26:33
26:35
26:38
26:43
26:48
26:49
26:51
26:52
26:55
26:56
26:59
27:09
27:12
27:14
27:16
27:17
27:18
27:19
27:21
27:23
27:25
27:31
27:38
27:42
27:49
27:53
27:59
28:08
28:13
28:17
28:24
28:26
28:31
28:35
28:43
28:46
28:52
28:58
29:03
29:05
29:09
29:09
29:14
29:21
29:23
29:24
29:25
29:29
29:34
29:37
29:41
29:41
29:43
29:49
29:51
29:52
29:53
30:00
30:02
30:04
30:10
30:17
30:17
30:18
30:21
30:26
30:27
30:32
30:33
30:34
30:37
30:40
30:43
30:45
30:47
30:50
30:52
30:53
30:55
30:56
30:57
31:02
31:03
31:05
31:06
31:14
31:19
31:21
31:26
31:28
31:32
31:33
31:34
31:39
31:40
31:44
31:45
31:46
31:53
31:54
31:57
32:03
32:05
32:06
32:09
32:14
32:21
32:28
32:37
32:42
32:48
32:57
33:04
33:09
33:15
33:21
33:28
33:33
33:34
33:37
33:43
33:46
33:48
33:52
33:57
33:59
34:00
34:07
34:09
34:14
34:17
34:24
34:32
34:39
34:42
34:43
34:45
34:50
34:52
34:55
34:55
34:58
35:00
35:01
35:04
35:05
35:08
35:11
35:12
35:13
35:16
35:16
35:19
35:21
35:22
35:26
35:29
35:30
35:31
35:33
35:40
35:44
35:49
35:55
35:57
35:59
36:06
36:09
36:11
36:12
36:15
36:19
36:22
36:24
36:28
36:29
36:31
36:33
36:33
36:38
36:39
36:41
36:42
36:42
36:45
36:45
36:46
36:52
36:55
36:59
37:01
37:03
37:03
37:04
37:07
37:08
37:09
37:15
37:17
37:25
37:30
37:32
37:34
37:37
37:37
37:40
37:41
37:43
37:44
37:46
37:51
37:54
37:56
37:57
37:59
38:04
38:10
38:13
38:19
38:21
38:22
38:28
38:33
38:36
38:39
38:41
38:41
38:42
38:43
38:44
38:46
38:49
38:53
38:57
38:59
39:01
39:02
39:04
39:05
39:06
39:07
39:11
39:12
39:17
39:20
39:25
39:30
39:34
39:35
39:36
39:37
39:37
39:41
39:48
39:49
39:52
39:53
39:58
40:00
40:01
40:02
40:02
40:04
40:10
40:12
40:14
40:18
40:23
40:24
40:25
40:26
40:28
40:30
40:31
40:33
40:35
40:36
40:37
40:37
40:38
40:39
40:40
40:40
40:44
40:47
40:53
40:59
41:02
41:10
41:17
41:19
41:26
41:30
41:33
41:43
41:45
41:51
41:56
41:58
42:01
42:03
42:06
42:08
42:09
42:12
42:13
42:17
42:19
42:22
42:24
42:30
42:31
42:34
42:39
42:40
42:40
42:43
42:49
42:50
42:55
42:58
43:04
43:06
43:07
43:11
43:13
43:14
43:17
43:17
43:17
43:18



