Skip to content

Commit 6c9ff7d

Browse files
committed
feat: Migrate Notion public portal content to Hugo
1 parent 20734b6 commit 6c9ff7d

22 files changed

+1652
-7
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
*.aac filter=lfs diff=lfs merge=lfs -text
88
*.mp3 filter=lfs diff=lfs merge=lfs -text
99
*.flac filter=lfs diff=lfs merge=lfs -text
10+
*.svg filter=lfs diff=lfs merge=lfs -text

config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ pygmentsCodefencesGuessSyntax = true
9797
[[menu.main]]
9898
parent = "resources"
9999
identifier = "portal"
100-
name = "🔗 Portal"
101-
url = "https://dense-analysis.notion.site/Dense-Analysis-Education-Portal-3bf400d2c185412d8a4ff514207e82d0"
100+
name = "Education Portal"
101+
url = "portal/"
102102
weight = 2
103103

104104
# 4. About Links

content/portal/_index.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: Dense Analysis Education Portal
3+
---
4+
5+
Welcome to Dense Analysis Education Portal. All content within is public and
6+
available to the Internet at large, free for all to read.
7+
Please review the [⚖️ Publishing Rules](publishing-rules/) before contributing
8+
to the Portal.
9+
10+
## Topic Index
11+
12+
- ⚖️ [Publishing Rules](publishing-rules/)
13+
- 🎯 [The PC System](pc-system/)
14+
- 💬 [Dense Analysis Philosophy](dense-analysis-philosophy/)
15+
- 🔗 [Connecting APIs](connecting-apis/)
16+
- 📊 [Spreadsheet Speed](spreadsheet-speed/)

content/portal/connecting-apis.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: 🔗 Connecting APIs
3+
---
4+
5+
This page documents Dense Analysis recommendations for connecting APIs together
6+
and how microservices in general ought to be bridged together.
7+
8+
## Principles
9+
10+
1. You should never write REST client code by hand: generate it.
11+
2. Swagger specs are obsolete: use
12+
[OpenAPI](https://spec.openapis.org/oas/latest.html) specs.
13+
3. Always write async or concurrent code: write for the future.
14+
15+
## How to Make REST Calls
16+
17+
This section lists the best ways to make REST API request calls from code in
18+
different languages.
19+
20+
- Go -- `net/http` standard library calls with
21+
[goroutines](https://go.dev/tour/concurrency/1)
22+
- Python -- [aiohttp](https://docs.aiohttp.org/en/stable/) is the best solution
23+
- TypeScript -- Use
24+
[fetch()](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
25+
26+
## OpenAPI
27+
28+
Use the Dense Analysis down converter for OpenAPI specs where you only have
29+
3.0 spec support. See:
30+
https://denseanalysis.org/blog/post/2025-03-27-openapi-spec-converter/
31+
32+
- Go -- OpenAPI 3.0:
33+
https://github.com/oapi-codegen/oapi-codegen
34+
which uses https://github.com/getkin/kin-openapi
35+
- Python -- OpenAPI 3.0, 3.1:
36+
https://github.com/MarcoMuellner/openapi-python-generator
37+
(Use `aiohttp` mode)
38+
- TypeScript -- OpenAPI 2.0, 3.0, 3.1:
39+
https://github.com/hey-api/openapi-ts
40+
(Generate `fetch` calls)
41+
42+
### How to Export OpenAPI Specs
43+
44+
1. Use CI or CD rules to generate specs from code and publish them.
45+
2. Publish in OpenAPI 3.0 as JSON with the Dense Analysis down-converter.
46+
3. Publish in OpenAPI 3.1 JSON as well, which may not suffer from
47+
down-conversion bugs.
48+
4. `git commit` and use generated spec files and generated code in other repos.
49+
5. Never modify generated code by hand: import and extend it.
50+
51+
## Documentation
52+
53+
Use [Redoc](https://github.com/Redocly/redoc) to take a generated spec and
54+
serve it via the web. You can run it via a Docker image. If you are building a
55+
FastAPI web app, [Redoc support](https://fastapi.tiangolo.com/features/#automatic-docs)
56+
is enabled by default and is available via the `/redoc` endpoint by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: 💬 Dense Analysis Philosophy
3+
---
4+
5+
This page documents important Dense Analysis philosophy used to teach
6+
important concepts to the public. Sections are ordered alphabetically and
7+
represent independent concepts.
8+
9+
## Dense Analysis
10+
11+
An important aspect of Dense Analysis is the phrase itself. Much as one can
12+
"google" something to search, one can apply "dense analysis." To analyze
13+
something densely, apply analysis that is both "dumb" and also "deep." Apply
14+
the [KISS Principle](https://people.apache.org/~fhanik/kiss.html) to analysis,
15+
and remember to not overthink things. Treat your thoughts and process as
16+
time-sensitive, and
17+
[timebox](https://en.wikipedia.org/wiki/Timeboxing) your analysis. Recognize
18+
the [Dunning-Kruger effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect)
19+
as being present in your own mind, and embrace simple ideas. Be smart by being
20+
"dumb."
21+
22+
## Class-oriented Programming (COP)
23+
24+
What most in this world consider to be object-oriented programming (OOP) is on
25+
average nothing but a gigantic mess of classes and inheritance that never
26+
builds towards software that can be maintained or understood over time. A
27+
`struct` or `class` in any language is only designed to be a means of
28+
constructing types, and languages such as Java have poisoned the mind of the
29+
public into thinking that classes solve all problems: they do not. Problems are
30+
solved by implementing procedures. We call this mind poison "Class-oriented
31+
Programming," or "COP" for short.
32+
33+
For more information on how to re-learn the true virtues of object-oriented
34+
programming, please review the following lecture by James Coplien.
35+
36+
[https://www.youtube.com/watch?v=wbuXxB7j260](https://www.youtube.com/watch?v=wbuXxB7j260)
37+
38+
## Esmeralda's Spoon
39+
40+
Concept: When expectations are not perfectly aligned, and things you should not
41+
care about become a problem all of a sudden.
42+
43+
A long time ago in a land near the sea, a colleague of Andrew Wray's was
44+
working as an engineer of burritos. His manager Esmeralda had a routine whereby
45+
she would ask the staff to tidy up the burrito establishment at close. After
46+
the staff had concluded cleaning up the establishment, Esmeralda would ask the
47+
staff to confirm they had finished cleaning the entire establishment from top
48+
to bottom. After staff confirmed they had in fact cleaned everything,
49+
Esmeralda would reach into some unforgettable place in the restaurant and
50+
produce a spoon, and she would say, "You did not clean everything! You did not
51+
find this spoon!"
52+
53+
Esmeralda possessed unrealistic expectations about the cleanliness of the
54+
restaurant and was a poor communicator, and terrible team manager. Her antics
55+
only served to annoy those she managed. This tale is an example of when
56+
managers fail to communicate their expectations accurately to staff,
57+
demonstrate a lack of trust in staff, and where surprises come from out of
58+
nowhere that you, as a member of staff, could not have been prepared for.
59+
60+
An "Esmeralda's Spoon" refers to any situation where some terrible and
61+
unknowable thing is suddenly brought about and emerges as a priority from
62+
seemingly out of nowhere. These incidents can be referred to as "a spoon" for
63+
short. Learn to do additional discovery and learn how to deal with the
64+
emergence of random and unexpected failures.

0 commit comments

Comments
 (0)