summaryrefslogtreecommitdiff
path: root/technical/blog-roll.md
blob: 8f60d65cf410cbc5f9ee50494691917a81bec378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
This is a list of blog-ish websites where I found insightful stuff
that I would like not to forget.

# [LispCast]

Eric Normand's musings on programming paradigms and their application,
with a soft spot for functional programming.

[When in doubt, refactor at the bottom]
:   Quoting Sandi Metz:

    > Duplication is far cheaper than the wrong abstraction.

    The point being that blindly following the letter of the DRY law
    can lead developers to add complexity to extracted functions
    because "it almost does what I want; if I could add just one more
    parameter to it…".

    Normand and Metz encourage developers to "mechanically" extract
    small pieces of logic; even if they are not re-usable, bundling
    things together and naming them helps make the potential
    abstractions more visible.

[Programming Paradigms and the Procedural Paradox]
:   A discussion on our tendency to conflate *paradigms* with their
    *features*; for example, when trying to answer "can this language
    express that paradigm?", we often reduce the question to "does
    this language possess those features?".

    Normand wonders whether we do this because the procedural
    paradigm's metaphor (a series of steps that each may contain any
    number of sub-tasks) maps so well to its features (sequential
    statements, subroutines) that it trained us to mix those up.

[LispCast]: https://lispcast.com/category/writing/
[When in doubt, refactor at the bottom]: https://lispcast.com/refactor-bottom/
[Programming Paradigms and the Procedural Paradox]: https://lispcast.com/procedural-paradox/

# [null program]

Chris Wellons's in-depth looks into a fairly wide range of programming
techniques and applications.  The articles often come with
illustrative code samples, which are always broken down into
bite-sized chunks that are easy to grok.

Some recurring topics I enjoy reading about:

- GNU/Linux plumbing
    - [Raw Linux Threads via System Calls]
    - [Appending to a File from Multiple Processes]
    - [A Magnetized Needle and a Steady Hand]

- C programming tricks
    - [Global State: A Tale of Two Bad C APIs]
    - [C Closures as a Library]
    - [How to Write Portable C Without Complicating Your Build]
    - [A Tutorial on Portable Makefiles]

- Algorithmics
    - [Inspecting C's qsort Through Animation]
    - [A Branchless UTF-8 Decoder]
    - [Render Multimedia in Pure C]

- Emacs Lisp plumbing
    - [Some Performance Advantages of Lexical Scope]
    - [What's in an Emacs Lambda]

[null program]: http://nullprogram.com/index/

[Raw Linux Threads via System Calls]: https://nullprogram.com/blog/2015/05/15/
[Appending to a File from Multiple Processes]: https://nullprogram.com/blog/2016/08/03/
[A Magnetized Needle and a Steady Hand]: https://nullprogram.com/blog/2016/11/17/

[Global State: A Tale of Two Bad C APIs]: https://nullprogram.com/blog/2014/10/12/
[C Closures as a Library]: https://nullprogram.com/blog/2017/01/08/
[How to Write Portable C Without Complicating Your Build]: https://nullprogram.com/blog/2017/03/30/
[A Tutorial on Portable Makefiles]: https://nullprogram.com/blog/2017/08/20/

[Inspecting C's qsort Through Animation]: https://nullprogram.com/blog/2016/09/05/
[A Branchless UTF-8 Decoder]: https://nullprogram.com/blog/2017/10/06/
[Render Multimedia in Pure C]: https://nullprogram.com/blog/2017/11/03/


[Some Performance Advantages of Lexical Scope]: https://nullprogram.com/blog/2016/12/22/
[What's in an Emacs Lambda]: https://nullprogram.com/blog/2017/12/14/