Skip to content

Commit b268cdb

Browse files
committed
Updates
1 parent 17f943d commit b268cdb

13 files changed

+136
-16
lines changed

asset-manifest.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"files": {
3-
"main.css": "/static/css/main.1edf2d75.css",
4-
"main.js": "/static/js/main.f22f2dc4.js",
3+
"main.css": "/static/css/main.88304368.css",
4+
"main.js": "/static/js/main.8dc4c766.js",
55
"static/js/453.f568ff1d.chunk.js": "/static/js/453.f568ff1d.chunk.js",
66
"static/media/border.jpg": "/static/media/border.b7869a9ea7ccd009873c.jpg",
77
"static/media/parchment.png": "/static/media/parchment.c4af92656f29dc66bd67.png",
@@ -10,12 +10,12 @@
1010
"static/media/slick.ttf": "/static/media/slick.c94f7671dcc99dce43e2.ttf",
1111
"static/media/slick.woff": "/static/media/slick.295183786cd8a1389865.woff",
1212
"index.html": "/index.html",
13-
"main.1edf2d75.css.map": "/static/css/main.1edf2d75.css.map",
14-
"main.f22f2dc4.js.map": "/static/js/main.f22f2dc4.js.map",
13+
"main.88304368.css.map": "/static/css/main.88304368.css.map",
14+
"main.8dc4c766.js.map": "/static/js/main.8dc4c766.js.map",
1515
"453.f568ff1d.chunk.js.map": "/static/js/453.f568ff1d.chunk.js.map"
1616
},
1717
"entrypoints": [
18-
"static/css/main.1edf2d75.css",
19-
"static/js/main.f22f2dc4.js"
18+
"static/css/main.88304368.css",
19+
"static/js/main.8dc4c766.js"
2020
]
2121
}

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html lang="en" class="dark"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><link rel="icon" type="image/svg+xml" href="/favicon.svg"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="codex by fezcode..."/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Arvo&family=Inter&family=Playfair+Display&display=swap" rel="stylesheet"><title>fezcodex</title><script defer="defer" src="/static/js/main.f22f2dc4.js"></script><link href="/static/css/main.1edf2d75.css" rel="stylesheet"></head><body class="bg-slate-950"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1+
<!doctype html><html lang="en" class="dark"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><link rel="icon" type="image/svg+xml" href="/favicon.svg"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="codex by fezcode..."/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Space+Mono:wght@400;700&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Arvo&family=Inter&family=Playfair+Display&display=swap" rel="stylesheet"><title>fezcodex</title><script defer="defer" src="/static/js/main.8dc4c766.js"></script><link href="/static/css/main.88304368.css" rel="stylesheet"></head><body class="bg-slate-950"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

logs/frederic-oddloop.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# oddloop
2+
3+
- **Category:** Music
4+
- **Artist:** frederic
5+
- **Album:** Oddloop
6+
- **Release Date:** 2014-09-23
7+
- **Date:** 2025-11-03
8+
- **Rating:** 5/5
9+
- **Link:** [YouTube](https://www.youtube.com/watch?v=PCp2iXA1uLE)
10+
11+
## About
12+
13+
**frederic** is a Japanese rock band that originated in Kobe in 2009. The band's core members are twin brothers Kenji Mihara (vocals, guitar) and Koji Mihara (bass, vocals). The band's name is inspired by Leo Lionni's children's book character, Frederick the mouse, who gathers stories to warm hearts during winter. The band aims to similarly warm people's hearts with their music.
14+
15+
**Name Origin**: The title "Oddloop" is a combination of the Japanese verb "odoru" (踊る), meaning "to dance," and the English phrase "odd loop."
16+
17+
**Music Video Popularity**: The song's music video, known for its distinctive repeating sequences, had garnered over 100 million views on YouTube as of January 2022. The two female dancers featured in the video are Yuho Uchida and Arisu Mukaide.
18+
19+
**Major Debut and Recognition**: "Oddloop" was released as an EP on September 23, 2014, marking Frederic's debut with a major record label. The EP reached number 73 on the Japanese charts and received the Kansai block local award at the 7th CD Shop Awards.
20+
21+
**Anime Connection**: The song "Oddloop" was featured as the ending theme for the *Yamada-kun and the Seven Witches* OVA in 2014.
22+
23+
**Musical Style**: Frederic is recognized for its upbeat, infectious songs with a disco-funk influence, often incorporating elements of jazz rock, light rock, and punk.

logs/logs.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
[
2+
{
3+
"author": "needleful",
4+
"category": "Article",
5+
"date": "2025-11-03",
6+
"link": "https://needleful.net/blog/2024/01/arthur_whitney.html",
7+
"rating": 5,
8+
"slug": "needleful-arthur-whitney-c-smart",
9+
"title": "Learning to read Arthur Whitney's C to become Smart"
10+
},
11+
{
12+
"artist": "frederic",
13+
"category": "Music",
14+
"date": "2025-11-03",
15+
"link": "https://www.youtube.com/watch?v=PCp2iXA1uLE",
16+
"rating": 5,
17+
"slug": "frederic-oddloop",
18+
"title": "oddloop",
19+
"album": "Oddloop",
20+
"releaseDate": "2014-09-23"
21+
},
22+
{
23+
"artist": "Morcheeba",
24+
"category": "Music",
25+
"date": "2025-11-03",
26+
"link": "https://www.youtube.com/watch?v=27lPAUdE1ys",
27+
"rating": 5,
28+
"slug": "morcheeba-easier-said-than-done",
29+
"title": "Easier Said Than Done"
30+
},
231
{
332
"category": "Tools",
433
"date": "2025-11-03",
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Easier Said Than Done
2+
3+
- **Category:** Music
4+
- **Artist:** Morcheeba
5+
- **Album:** Blood Like Lemonade
6+
- **Release Date:** 2010-06-07
7+
- **Date:** 2025-11-03
8+
- **Rating:** 5/5
9+
- **Link:** [YouTube](https://www.youtube.com/watch?v=27lPAUdE1ys)
10+
11+
## About
12+
13+
**Morcheeba** is a British electronic band formed in 1995 with members Skye Edwards, Paul Godfrey, and Ross Godfrey. They blend trip-hop, R&B, and pop influences.
14+
15+
**Skye Edwards' Return**: "Blood Like Lemonade" marked the significant return of lead singer Skye Edwards to Morcheeba, who had previously left the band in 2003. Her distinctive vocals are a prominent feature of the track.
16+
17+
**Lyrical Theme**: The song's lyrics delve into the common human experience of knowing what needs to be done, such as letting go or trusting oneself, but finding it challenging to actually execute those actions. The phrase "It's easier said than done" encapsulates this theme of difficulty in translating intention into action.
18+
19+
**Album Success**: The album "Blood Like Lemonade," which includes "Easier Said Than Done," achieved commercial success, earning a silver certification from the Independent Music Companies Association in 2010 for selling over 30,000 copies in Europe. It was later upgraded to gold certification in 2011 for exceeding 75,000 copies sold across Europe.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Learning to read Arthur Whitney's C to become Smart
2+
3+
- **Category:** Article
4+
- **Author:** needleful
5+
- **Date:** 2025-11-03
6+
- **Rating:** 5/5
7+
- **Link:** [needleful.net](https://needleful.net/blog/2024/01/arthur_whitney.html)
8+
9+
## Abstract
10+
11+
This article explores Arthur Whitney's highly compact C coding style through a detailed analysis of a 50-line interpreter for a simplified K programming language. The author dissects the unconventional use of macros, data types, and implicit arguments, aiming to understand the rationale behind such dense code. The piece concludes by evaluating the strengths and weaknesses of this approach, offering insights into its potential benefits for code comprehension and its challenges for readability and maintainability.
12+
13+
## Summary
14+
15+
The article "Learning to read Arthur Whitney's C to become Smart" by Needleful.net delves into the unique and often perplexing C coding style of Arthur Whitney, known for his work on high-performance programming languages like A, K, and Q, and databases like kdb and Shakti. The author focuses on a publicly available 50-line C interpreter for a simple version of K, which Whitney wrote to demonstrate interpreter basics.
16+
17+
The core of the article is a line-by-line breakdown of the `a.h` header file and the `a.c` source file. The author explains various unconventional C constructs, such as `typedef char*s,c;` where `s` is `char*` and `c` is `char`, and the use of `s Q=(s)128;` where `char*` is treated as an integer for error signaling. Key macros like `_(e...)`, `x(a,e...)`, `$(a,b)`, and `i(n,e)` are demystified, with particular attention paid to GCC's statement expressions `({e;})`. The article also clarifies error handling macros (`Q`, `Qs`, `Qr`, `Qd`, `Qz`), function definition macros (`_s`, `_i`, `f`, `F`), and data type identification (`ax` for "is x an atom?").
18+
19+
In `a.c`, the author explains functions for printing (`w`, `W`, `wi`), error reporting (`err`), memory allocation (`m`), and various array operations like `not`, `sub`, `At`, `_A`, `ind`, `Ind`, `cat`, `rev`, `cnt`, `Tak`, `Sub`, and `Mtn`. A significant portion is dedicated to unraveling the `G(f,o)` macro, which defines binary operations that work uniformly on atoms and vectors, showcasing complex nested ternary operators. The article also details the `v(e)` macro for operator lookup, the `U` and `V` arrays for variables and operators, and the `n(x)` function for parsing numeric and variable characters. The intricate, recursive evaluation function `e` is broken down, revealing the right-to-left, no-operator-precedence execution typical of APL-like languages. Finally, the `main` function, which reads user input and prints evaluated results, is explained.
20+
21+
The author concludes by reflecting on the experience, highlighting both the "good ideas" and "bad ideas" of Whitney's style. Good ideas include well-considered, composable primitives and the resulting code compactness, which reduces scrolling. Bad ideas encompass non-semantic types (e.g., `char*` as an integer), excessive code golf (e.g., ASCII codes instead of character literals, obscure range checks), and non-standard syntax (GCC extensions). The author is ambivalent about implicit arguments and short names, acknowledging their role in density but also their impact on initial readability. The key takeaway for the author is that this style is best suited for "done" code, implying a need for thorough problem understanding before implementation, contrasting with the author's own iterative, refactoring-heavy approach.
22+
23+
## Strong Sides
24+
25+
* **Well-considered Primitives:** The coding style utilizes composable and useful macros that effectively reduce repetition, making common operations like iteration easier to decipher. This approach is akin to using higher-order functions in other languages.
26+
* **Code Compactness:** The dense nature of the code, achieved through macros and short names, allows the entire logic to fit on a single screen, potentially reducing the need for constant scrolling in large codebases.
27+
* **Reduced Bugs (Potentially):** By working with small, well-defined building blocks, the method might lead to fewer bugs once the style is mastered, as the logic for each component is highly focused.
28+
* **Emphasis on Pre-computation/Design:** The style encourages a deep understanding of the problem before writing code, leading to a more "finalized" and mathematically precise implementation rather than iterative refactoring.
29+
30+
## Weak Sides
31+
32+
* **Non-semantic Types:** The unconventional use of types, such as `char*` being treated as an integer, can be highly confusing and non-intuitive, requiring external documentation or prior knowledge to understand.
33+
* **Code Golfing:** Excessive brevity, like using ASCII codes instead of character literals or obscure range checks (e.g., `10u>x-48`), significantly hinders readability for minor gains in line count.
34+
* **Non-standard Syntax:** Reliance on GCC-specific extensions (e.g., statement expressions, `a ?: b` ternary operator) makes the code less portable and can lead to compilation issues with other compilers.
35+
* **Implicit Arguments:** While contributing to compactness, the pervasive use of implicit variables (`x`, `a`, `i`) makes the code harder to parse at first glance, requiring a significant adjustment period.
36+
* **Short Names without Context:** While short names can be efficient, they lack semantic signal, forcing readers to deduce meaning from context rather than explicit naming, especially for complex operations.
37+
* **Nested Ternary Operators:** The deep nesting of ternary operators, particularly in macros like `G`, can be extremely difficult to follow without extensive mental chunking or reformatting.
38+
* **Lack of Error Handling/Robustness:** The interpreter assumes `malloc` will not return pointers below 256 and reserves `128` for invalid results, indicating potential limitations and lack of robust error handling for a production system.
39+
* **Compiler Warnings:** Compiling the code without suppressing warnings generates numerous alerts, which can obscure genuinely useful compiler feedback.
40+
41+
## Review of the Article
42+
43+
The article provides an exceptionally thorough and engaging analysis of Arthur Whitney's C coding style. Its primary strength lies in the meticulous, line-by-line deconstruction of the interpreter code, which effectively demystifies many of the initially "incomprehensible" constructs. The author's personal journey of understanding, including moments of confusion and eventual clarity, makes the explanation relatable and humanizes a topic that could otherwise be dry and overly technical. The inclusion of specific code snippets and their detailed explanations, along with references to annotated versions when the author was stuck, is highly beneficial for readers attempting to follow along.
44+
45+
The article is well-structured, moving logically from an introduction to Whitney's work, through the code analysis, and finally to a thoughtful conclusion. The "Good ideas," "Bad ideas," and "Ambivalent ideas" sections offer a balanced and insightful critique of the coding style, providing concrete examples for each point. The author's personal reflections on how this exercise impacts their own coding philosophy—emphasizing the importance of pre-computation and a clear mental model before coding—add significant value and make the article more than just a technical breakdown.
46+
47+
One minor area for improvement could be a slightly more explicit initial overview of the K language's core paradigms (e.g., array-oriented, tacit programming) before diving into the C implementation, as this context would further illuminate *why* Whitney codes the way he does. However, the article does touch upon these influences later.
48+
49+
Overall, this is an excellent piece for anyone interested in low-level C programming, code optimization, or the unique styles of influential programmers. It serves as both an educational resource for understanding complex C macros and a thought-provoking essay on coding philosophy and readability.

static/css/main.1edf2d75.css

Lines changed: 0 additions & 4 deletions
This file was deleted.

static/css/main.1edf2d75.css.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

static/css/main.88304368.css

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/css/main.88304368.css.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)