FartLabs has been crop dusting innovation and collaboration in 2024. Let's reflect on our journey and look ahead to the future.
On this page
FartLabs has been crop dusting innovation and collaboration in 2024. Let’s reflect on our journey and look ahead to the future.
In 2024, FartLabs, as it is known today, was born. Our goals are ambitious, but our vision is clear: walled gardens will fall and make room for a new era of user-centric FOSS (free, open-source shit). Read more about our mission in a previous blog post.
In January, our journey began with a meteoric start at the Deno Subhosting Hackathon where our project, Deno Blocks, won “Ryan Dahl’s Favorite” and “Most Fun”. It was a fateful opportunity to integrate a cloud IDE with the Deno Deploy platform and challenge our problem-solving and technical skills.
In February, we started developing jsonx, a JSX runtime to compose all kinds of JavaScript objects via JSX syntax.
function Cat() {
return { animals: ["🐈"] };
}
function Dog() {
return { animals: ["🐕"] };
}
const data = (
<>
<Cat />
<Dog />
</>
);
console.log(data); // { animals: ["🐈", "🐕"] }
In March, we shipped a jsonx documentation website which includes an in-browser IDE where users can experiment and play with jsonx and see the results in real-time.
In April, we launched rt, a TypeScript library for conveniently handling HTTP requests. We also released rtx, a companion jsonx component library to design HTTP servers via JSX syntax.
In addition, we launched ht, a TypeScript library for rendering HTML elements with type-safe attributes. This library is used in htx to render HTML elements via JSX syntax.
import { A, BODY, H1, P } from "@fartlabs/htx";
import { Get, Router } from "@fartlabs/rtx";
const router = (
<Router default={() => new Response("Not found", { status: 404 })}>
<Get
pattern="/"
handle={() =>
new Response(
<BODY>
<H1>Hello, World!</H1>
<P>This is a paragraph.</P>
<A href="https://jsr.io/@fartlabs/htx">@fartlabs/htx</A>
</BODY>,
)}
/>
</Router>
);
if (import.meta.main) {
Deno.serve((request) => router.fetch(request));
}
rtx and htx play nicely together, allowing for routing and hypertext components to create a full-stack web experience via JSX syntax in the same TypeScript file, all using one (jsonx) JSX runtime.
With htx, we built this website you are currently reading, FartLabs.org. Read the ★Source.
In May, we began prototyping a practical intersection of physical and digital worlds with qr_grid. This project generates customizable, printable QR code grids, enabling seamless transitions between tactile materials and digital resources.
Whether for research or productivity, QR codes in physical formats, like stickers, are a step towards bridging these realms. Inspired by Andrew Sutherland’s talk, we aim to empower thought work with accessible, hybrid interfaces.
In June, we expanded our online presence with a new Twitter/X account and Discord server. We even launched a tool for posting an announcement when a new post is published on our blog. These platforms provide a space for developers and enthusiasts to innovate with us and gives us the ability to announce new projects and updates and reach a broader audience. Connect with us on GitHub, Bluesky, Twitter/X, Discord, Instagram, and LinkedIn.
Additionally, we released a new CSS library, Fart.css, complete with documentation website. Fart.css is designed with minimalism and ease-of-use in mind, providing developers with a flexible foundation for building fart-tastic interfaces.
In July, we studied Alexander Obenaur’s work on itemized operating systems, investigating modular architectures where individual digital resources are treated as movable, self-contained “items.” This approach, exemplified by Obenaur’s lab notes, presents intriguing possibilities for user customization and seamless data integration across applications.
To further explore these concepts, we developed a TypeScript implementation of Obenaur’s item drive and coordinated concepts. This practical implementation allowed us to experiment with real-world applications, gaining valuable insights into the strengths and limitations of the itemized approach.
Our research revealed that Obenaur’s itemized approach to computation carries interdisciplinary relevance. We observed intriguing similarities with existing Semantic Web standards such as RDF. This connection suggests promising avenues for future research and development, intended for interoperable systems which put the user into the development loop, improving experiences for managing and sharing digital information.
In August, we released an auditory memory game titled, Fart Concentration. This is our first game project built with Fart.css, and is available to play for free! See the game in action in the video below.
Read more about games at FartLabs in a previous blog post.
The latter parts of 2024 have been focused on introspection and integration. We identified performance issues caused by prolific libraries like Zod and TypeBox stressing the TypeScript language server in large projects. To address this, we began exploring TypeScript type introspection.
Our initial approach involved synchronous analysis using tree-sitter. While insightful, this proved less than ideal.
In December, we pivoted to a
build-time approach,
leveraging deno doc
for
more robust type information. This shift lays the groundwork for a powerful,
type-driven code generation system, enabling us to build a flexible, Linked
Data application framework on top of familiar TypeScript syntax, intuitively
integrating concepts from
Semantic Web standards.
We are building a future where users take control of their digital experience. By contributing to our project or advocating for open, user-centric software development, you can be a part of this movement. Join us! GitHub Chat↗