Serving Datastar Streams
Datastar leaves the server-side implementation open-ended. Datastar provides SDKs for various languages, but those SDKs only cover the protocol on top of SSE that the Datastar JavaScript client …
Notes are a free-form stream-of-consciousness of thoughts, ideas, and references. Some are more organized than others.
Datastar leaves the server-side implementation open-ended. Datastar provides SDKs for various languages, but those SDKs only cover the protocol on top of SSE that the Datastar JavaScript client …
Datastar is an HTMX-like framework that attempts to minimize the amount of Javascript you write using a few concepts:
ADTs is a fancy term for a type composed from other types. There are two kinds of Algebraic Data Types.
Monads are interfaces for sequencing behaviors related to a data type.
As part of trying out Svelte, I’ve also stepped into the modern web development ecosystem. I previously worked primarily in Clojurescript, so my reference point is based on being away from …
Disclaimer: I didn’t learn Svelte before v5, so this is an experience report on translating Svelte 4 code to 5.
Since migrating this site to Hugo, I felt like it was finally time to avoid learning TOML.
One of the most interesting parts of generative testing (aka QuickCheck) is state machine testing. The original purpose I built Fox was to explore state machine testing. In particular, the talk from …
I’m fascinated by how engineers read and interpret code that they work on a daily basis. It’s no doubt different for everyone, but few explain how they go about and understand an unfamiliar codebase.
When evaluating companies, it’s of utmost importance to learn about the engineering culture. Culture for a company is similar to scope for code – culture provides a context for getting work done.
Trying to concisely describe concepts is an interesting exercise. The ideal goal is to build upon existing concepts, but as you add more concepts you run the risk of being inconsistent.
When someone talks about abstractions, they’re usually trying to make the software more flexible. But that’s usually one of two kinds of abstractions.
What’s the best way to model a solution? In software, there’s several common ways of building solutions that solve specific problems. It’s worth trying to identify their characteristics and the …
The problem seems simple: open, edit, and save text files. This can range from JSON files to source code like every other editor.
The more you learn, the more this skill seems to be necessary. When missing a bug or a refactor opportunity, I wonder how did I miss this? Sure, everyone wants to learn from their mistakes. But …
Let’s mentally build an API for an e-commerce site. Let’s say we’re tasked with building the cart & checkout portion of the API. Building a RESTful API seems like the natural choice. At first, a Cart …
Instead of sounding prescriptive, this article is much more descriptive.
People always ask about how did you learn this or work so quickly doing that? It’s a tough question to answer elegantly. And it’s a cop-out to vaguely say I spent my free time looking into that …
There’s a process behind every result.
As an engineer, one of the most valuable skills you can have is to communicate effectively. This applies both to your fellow engineers as well as non-engineers (PMs, designers, business). Obviously, …
It is difficult to always be improving in the software industry. In creative fields, many artists talk about churn. When starting out, there’s an enormous amount of work to produce to get better. If …
Software is always challenging to explain to non-engineers and having a metaphor is valuable to explain complex concepts. Bridges happen to be a good analogy to software. But the devil is always in …
What is simple?
It’s a bittersweet end to a chapter. I’ve thoroughly enjoyed my time at Pivotal Labs. I met a lot of great friends. I paired and talked with geniuses and newcomers alike. And I’d recommend anyone with …
It’s no secret that I’ve been interested in testing. Most of the work I’ve done are around example-based testing. While useful, it’s interesting to look at other communities for inspiration. I’m …
Note: This previously was on Pivotal Labs blog.
This post was originally written on the Pivotal Labs Blog.
Languages that have dynamic introspection provide powerful meta-programming capabilities. This is generally done at runtime with additional memory used for storing metadata - such as types and method …
It’s great to use classic algorithms to solve problems at hand. Take this problem of ellipsis:
Every time you look at a new (or familiar) technology, you should ask: What are the tradeoffs?
Lazy data structures are a powerful abstraction can increase the readability of your program while encouraging separation of concerns.
Nothing tagged that way yet.