Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
1cg committed Jan 30, 2025
2 parents ac03dc5 + b0797be commit 1c3556c
Show file tree
Hide file tree
Showing 48 changed files with 316 additions and 86 deletions.
2 changes: 1 addition & 1 deletion www/content/essays/10-tips-for-SSR-HDA-apps.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ description = """\
architectural advantages."""
date = 2022-06-13
updated = 2023-06-13
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
2 changes: 1 addition & 1 deletion www/content/essays/a-real-world-nextjs-to-htmx-port.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ description = """\
about modern web frameworks."""
date = 2024-11-07
updated = 2024-11-07
authors = ["Pouria Ezzati"]
[taxonomies]
author = ["Pouria Ezzati"]
tag = ["posts"]
+++

Expand Down
4 changes: 2 additions & 2 deletions www/content/essays/a-real-world-react-to-htmx-port.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
+++
title = "A Real World React -> htmx Port"
description = """\
David Guillot at Contexte gave what we are calling "The Mother of All htmx Demos" at DjangoCon 2022. This essay \
David Guillot at Contexte gave what we are calling 'The Mother of All htmx Demos' at DjangoCon 2022. This essay \
summarizes this real-world case study of replacing React with htmx in a SaaS product, demonstrating significant \
improvements in code size, performance, and development team efficiency through the adoption of a hypermedia-driven \
architecture."""
date = 2022-09-29
updated = 2022-10-15
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
2 changes: 1 addition & 1 deletion www/content/essays/a-real-world-wasm-to-htmx-port.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ description = """\
complexity and improved development efficiency."""
date = 2025-01-10
updated = 2025-01-10
authors = ["Joe Fioti"]
[taxonomies]
author = ["Joe Fioti"]
tag = ["posts"]
+++

Expand Down
4 changes: 2 additions & 2 deletions www/content/essays/a-response-to-rich-harris.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
+++
title = "A Response To "Have Single-Page Apps Ruined the Web?""
description = """\
In this essay, Carson Gross gives an analysis of Rich Harris's talk "Have Single-Page Apps Ruined the Web?", \
In this essay, Carson Gross gives an analysis of Rich Harris's talk 'Have Single-Page Apps Ruined the Web?', \
exploring the debate between Single-Page Applications (SPAs) and Multi-Page Applications (MPAs). Carson examines \
Harris's criticisms of both approaches and proposes hypermedia-oriented solutions using htmx, while discussing the \
broader implications for web development architecture and the future role of JavaScript in web applications."""
date = 2021-12-24
updated = 2022-05-27
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
2 changes: 1 addition & 1 deletion www/content/essays/alternatives.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ description = """\
hypermedia-driven application development options beyond htmx."""
date = 2025-01-12
updated = 2024-01-12
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ description = """\
how content-focused web applications can benefit from a hypermedia architectural approach."""
date = 2023-09-20
updated = 2023-09-20
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
12 changes: 9 additions & 3 deletions www/content/essays/architectural-sympathy.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
+++
title = "Architectural Sympathy"
description = """\
In this essay, Carson Gross explores architectural sympathy as a software design principle where new software adopts \
and conforms to the architectural patterns of existing systems. Carson examines the application of architectural \
sympathy in web development through htmx, its advantages and tradeoffs, and drawing parallels with medieval \
cathedral construction to illustrate the balance between innovation and coherent design."""
date = 2023-04-06
updated = 2023-04-06
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++


# Mechanical Sympathy & Architectural Sympathy

> You don’t have to be an engineer to be be a racing driver, but you do have to have Mechanical Sympathy.
> You don’t have to be an engineer to be a racing driver, but you do have to have Mechanical Sympathy.
_-Jackie Stewart, racing driver_

The term "mechanical sympathy" was originally coined by Jackie Steward to capture a characteristic
The term "mechanical sympathy" was originally coined by Jackie Stewart to capture a characteristic
of race car drivers, who needed a deep and intuitive understanding of how a race car worked in order
to get the best possible performance out of the vehicle.

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/codin-dirty.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "Codin' Dirty"
description = """\
In this article, Carson Gross discusses an alternative approach to software development that challenges the \
principles outlined in 'Clean Code.' Carson advocates for allowing larger functions in certain cases, preferring \
integration tests over unit tests, and minimizing the number of classes and interfaces. He shares examples from \
successful software projects that demonstrate these practices can lead to maintainable, high-quality code."""
date = 2024-11-24
updated = 2024-11-24
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
6 changes: 5 additions & 1 deletion www/content/essays/complexity-budget.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
+++
title = "Complexity Budget"
description = """\
In this essay, Carson Gross explores the concept of a complexity budget in software development. He discusses how \
managing complexity across applications is a critical responsibility for architects and developers, while examining \
strategies for effective complexity management and the challenges that arise when attempting to reduce it."""
date = 2020-10-29
updated = 2024-01-21
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
10 changes: 8 additions & 2 deletions www/content/essays/does-hypermedia-scale.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
+++
title = "Does Hypermedia Scale?"
description = """\
In this essay, Carson Gross examines whether Hypermedia-Driven Applications (HDAs) can effectively scale across \
different dimensions of software development, including system nodes, application performance, feature count, \
feature complexity, and team size. The analysis explores both the strengths and limitations of hypermedia in each \
context, ultimately demonstrating that HDAs can scale well in most scenarios while acknowledging specific challenges \
with complex client-side features."""
date = 2023-11-06
updated = 2023-11-06
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand All @@ -20,7 +26,7 @@ First of all, let's define the term "scaling" and then the contexts that word ca
context, scaling typically means the ability of the software to handle "larger" things. Those things can be:

* More nodes in a general [system](https://hypermedia.systems)
* More user requests (scaling your individual applications performance)
* More user requests (scaling your individual application's performance)
* More features (scaling your codebase)
* More _complex_ features
* More developers (scaling your team size)
Expand Down
8 changes: 6 additions & 2 deletions www/content/essays/future.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
+++
title = "The future of htmx"
description = """\
In this essay, Carson Gross and Alex Petros discuss htmx's future direction and philosophy. They explain how the \
project aims to emulate jQuery's success through API stability, minimal feature additions, and quarterly releases \
while continuing to promote hypermedia-driven development and support the broader web development ecosystem."""
date = 2025-01-01
updated = 2024-01-01
updated = 2025-01-01
authors = ["Carson Gross", "Alex Petros"]
[taxonomies]
author = ["Carson Gross", "Alex Petros"]
tag = ["posts"]
+++

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/hateoas.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "HATEOAS"
description = """\
In this essay, Carson Gross explores HATEOAS (Hypermedia as the Engine of Application State), explaining how it \
enables REST APIs through hypermedia responses and contrasting it with modern JSON-based APIs. Using clear HTML \
examples, Carson demonstrates how HATEOAS allows clients to discover available actions dynamically through \
hypermedia rather than requiring prior knowledge of the API interface."""
date = 2021-10-16
updated = 2022-02-06
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
[extra]
show_title = false
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "How Did REST Come To Mean The Opposite of REST?"
description = """\
In this article, Carson Gross explores how the term REST (Representational State Transfer) evolved to mean nearly \
the opposite of its original definition in modern web development. It traces how REST, originally defined by Roy \
Fielding to describe the web's architecture of hypermedia-driven interactions, came to be widely misused as a term \
for JSON-based APIs that lack the key hypermedia constraints that define true REST architectural style."""
date = 2022-07-18
updated = 2022-11-26
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down Expand Up @@ -49,7 +54,7 @@ Only a few obstinate folks grumble: but these JSON APIs aren't RESTful!

In this post, I'd like to give you a [brief, incomplete and mostly wrong](https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html)
history of REST, and how we got to a place where its meaning has been nearly perfectly inverted to mean what REST was
original contrasted with: RPC.
originally contrasted with: RPC.

## Where Did REST Come From?

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/htmx-sucks.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "htmx sucks"
description = """\
This article provides a critical analysis of htmx, a web development library, explaining why the author believes it \
represents a problematic approach to modern web development due to its outdated coding practices, lack of build \
tools, absence of TypeScript support, and reliance on HTML-based architecture, while also questioning the \
professionalism of its creator."""
date = 2024-02-01
updated = 2024-04-01
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/hypermedia-apis-vs-data-apis.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "Hypermedia APIs vs. Data APIs"
description = """\
In this essay, Carson Gross explores the fundamental differences between hypermedia APIs and data APIs, He explains \
how hypermedia APIs, which return HTML over HTTP, can embrace frequent changes due to their self-describing nature, \
while data APIs require more stability and versioning to avoid breaking client code. Carson argues that these \
distinct characteristics should inform different design approaches for each type of API."""
date = 2021-07-17
updated = 2022-04-07
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/hypermedia-clients.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "Hypermedia Clients"
description = """\
In this essay, Carson Gross explores the critical but often overlooked role of hypermedia clients in REST \
architectures. He explains why adding hypermedia controls to JSON APIs is insufficient for true RESTful systems \
without proper client implementation. Carson examines the challenges of building hypermedia clients and argues that \
web browsers remain the most practical choice for hypermedia-driven applications."""
date = 2023-01-28
updated = 2023-01-29
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
6 changes: 5 additions & 1 deletion www/content/essays/hypermedia-driven-applications.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
+++
title = "Hypermedia-Driven Applications"
description = """\
In this essay, Carson Gross explains the Hypermedia-Driven Application (HDA) architecture, which combines the \
simplicity of traditional Multi-Page Applications with the enhanced user experience of Single-Page Applications by \
extending HTML infrastructure through declarative syntax and hypermedia-based server interactions."""
date = 2022-02-06
updated = 2022-10-18
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
8 changes: 7 additions & 1 deletion www/content/essays/hypermedia-friendly-scripting.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
+++
title = "Hypermedia-Friendly Scripting"
description = """\
In this essay, Carson Gross discusses hypermedia-friendly scripting approaches for web applications, explaining how \
to incorporate JavaScript while maintaining REST architectural principles and HATEOAS (Hypermedia as the Engine of \
Application State). Carson outlines key guidelines for using scripting to enhance hypermedia-driven applications \
without undermining their fundamental REST-ful architecture, covering topics like client-side state management, \
event communication, and the islands architecture pattern."""
date = 2022-11-17
updated = 2022-11-29
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
7 changes: 6 additions & 1 deletion www/content/essays/hypermedia-on-whatever-youd-like.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
+++
title = "Hypermedia On Whatever you'd Like"
description = """\
In this essay, Carson Gross explores the concept of 'The HOWL Stack' (Hypermedia On Whatever you'd Like) and argues \
that using a hypermedia-driven approach for web applications allows developers to choose their preferred server-side \
technology, freeing them from the pressure to use JavaScript throughout their entire stack while maintaining modern \
web functionality through HTML and hypermedia enhancements."""
date = 2023-05-23
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
8 changes: 6 additions & 2 deletions www/content/essays/interviews/chris_wanstrath.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
+++
title = "An interview with Chris Wanstrath aka @defunkt, Creator of pjax"
description = """\
This article features an in-depth interview with Chris Wanstrath (defunkt), the co-founder of GitHub and creator of \
pjax, where he discusses his journey from early web development to creating pjax, an innovative JavaScript library \
that helped bridge the gap between traditional web navigation and dynamic content loading."""
date = 2025-01-27
updated = 2025-01-27
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

I'm very excited to be able to interview @defunkt, the author of [pjax](https://github.com/defunkt/jquery-pjax), an
early hypermedia-oriented javascript library that served as an inspiration for intercooler.js, which later became
htmx. He's done a few other things too, like co-founding github, but in this interview I want to focus on pjax, how it
htmx. He's done a few other things too, like co-founding GitHub, but in this interview I want to focus on pjax, how it
came to be, what influenced it and what it in turn influenced.

Thank you for agreeing to an interview @defunkt!
Expand Down
11 changes: 8 additions & 3 deletions www/content/essays/interviews/henning_koch.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
+++
title = "An interview with Henning Koch, Creator of Unpoly"
description = """\
In this interview with Henning Koch, creator of Unpoly, he discusses his journey from managing a Rails consultancy \
to developing this hypermedia-oriented JavaScript library. Koch shares insights on progressive enhancement, the \
challenges of Single Page Applications, and why hypermedia approaches often deliver better results for typical web \
applications."""
date = 2022-06-13
updated = 2023-06-13
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand All @@ -14,7 +19,7 @@ Thank you for agreeing to an interview!

**Q**: To begin with, why don't you give the readers a bit of your background both professionally & technically:

> Sure! I'm currently head of development at [makandra](https://makandra.de/en), a Ruby on Rails consultancy I co-founded back in 2009, after many years of freelancing as a web developer. So my context is working on many different web apps concurrently, and maintaining those for a long time. On a given week we probably touch 10+ projects, for industries ranging from education to automative to cyber security. Unpoly is an extraction from patterns that we saw repeating over and over in client projects.
> Sure! I'm currently head of development at [makandra](https://makandra.de/en), a Ruby on Rails consultancy I co-founded back in 2009, after many years of freelancing as a web developer. So my context is working on many different web apps concurrently, and maintaining those for a long time. On a given week we probably touch 10+ projects, for industries ranging from education to automotive to cybersecurity. Unpoly is an extraction from patterns that we saw repeating over and over in client projects.
**Q**: When I created intercooler.js a big part of it was my unwillingness to deal with the popular SPA libraries of the time
(Angular & ExtJS, for example). Did Unpoly have a similar history?
Expand All @@ -30,7 +35,7 @@ a Rails developer too. Did that influence your approach to Unpoly?
>
> Some recent Rails mottos are "Compress the complexity of modern web apps" and "The one person framework". With my other responsibility at makandra being training young developers, that resonates with me a lot. I really care about maintaining a stack where a single person can be a full-stack developer and deliver good results consistently.
>
> Also, as a Rubyist, I have an excessive obsession with the ergonomics and aesthetics of code *as it is invoked*. I stress a lot over how a feature looks when it is used in client code. When a small ideas takes a disproportionate amount of code, this is something I lose sleep over.
> Also, as a Rubyist, I have an excessive obsession with the ergonomics and aesthetics of code *as it is invoked*. I stress a lot over how a feature looks when it is used in client code. When a small idea takes a disproportionate amount of code, this is something I lose sleep over.
**Q**: Did you think much about hypermedia, REST, etc. when you were building Unpoly? Do you find that stuff useful? Interesting?

Expand Down
6 changes: 5 additions & 1 deletion www/content/essays/interviews/makinde_adeagbo.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
+++
title = "An interview with Makinde Adeagbo, Creator of Primer"
description = """\
In this interview with software engineer Makinde Adeagbo, he discusses his role in creating Primer, a \
hypermedia-oriented JavaScript library used at Facebook in the 2000s, and shares insights about building developer \
tools, Facebook's evolution, and the cyclical nature of web development approaches."""
date = 2025-01-27
updated = 2025-01-27
authors = ["Carson Gross"]
[taxonomies]
author = ["Carson Gross"]
tag = ["posts"]
+++

Expand Down
Loading

0 comments on commit 1c3556c

Please sign in to comment.