Stats

4
Projects
54
Devlogs
60
Votes
4
Ships

Coding Time

All Time: 247h 6m
Today: 1h 3m

Member Since

June 18, 2025

Badges

1
🚢
Maiden Voyage
you shipped your first project! the journey begins...

Projects

4
monoserve

monoserve

Shipped
7 devlogs • 26 days ago
tinyentities
11 devlogs • about 1 month ago
Does Prime Intellect Have The Best Price?
12 devlogs • about 2 months ago
Tangent

Tangent

Shipped
24 devlogs • 3 months ago

Activity

Anirudh
Anirudh Shipwright gave you feedback
18d ago

monoserve

try adding more functions to the demo or some other way to experience the full project

from Anirudh
Kendell
Kendell worked on monoserve
2h 32m • 19 days ago

some final fixes:
- allowed customizing rolldown's io settings
- started bundling to temporary files in dev instead of base 64 urls, and allowed customizing the location (eg if you made a library external so you need to run functions from the same directory)
- allowed sending back a custom Response, even a streaming one
- improved the dev and (example) prod servers
- worked around a bug where necessary types weren't being bundled
- allowed using (fully typed!) environment variables

Update attachment
PianoMan0
PianoMan0 Shipwright gave you feedback
24d ago

Tangent

Maybe add more features to the chat section!

from PianoMan0
Kendell
Kendell worked on monoserve
50m • 25 days ago

one more thing: i made a demo so you can test my monoserver (and feel either the blazing speed or a cold start). i also improved the readme and fixed a few bugs in the typing and in character encoding handling.

Update attachment
Kendell
Kendell worked on monoserve
16m • 25 days ago

made a few minor improvements (allow setting a working directory in the github action, improve docs for consistency+helpfulness) but yeah at this point it works during dev and in prod and i'm completely satisfied

Update attachment
Kendell
Kendell worked on monoserve
26m • 25 days ago

monoserve now works during development. compat with Connect and getting the exports of arbitrary code were hard to get going, but they were interesting and i now know how.

Update attachment
Kendell
Kendell worked on monoserve
8m • 26 days ago

it's working! after fixing a 500 and a cors error (and a hashing typo), it works and it works faster.

Update attachment
Kendell
Kendell worked on monoserve
1h 26m • 26 days ago

i've gotten an initial version of the package going. it's complicated, i need to provide a wrapping function for schema/typing purposes and add a bunch of stubs and emit a bunch of js, but i'm getting there. it's really close to actually working in prod.

Update attachment
Kendell
Kendell worked on monoserve
36m • 26 days ago

monoserve is about using one monoserver that runs all your functions, and we've gotten there already, with an action to deploy, code to serve, and docs to help. it's very fast (see image)! bundling is the next step.

Update attachment
Kendell
Kendell created a project
25d ago

monoserve

Monoserve lets you run all your backends on one efficient "monoserver" so you can host your frontend wherever you want.

monoserve
7 devlogs 0 followers Shipped
Kendell
Kendell worked on Tangent
16m • 28 days ago

new day, why not write a readme? shipwrights suggested it and i can see why, it could be a waste to ship a large project without a solid readme

Update attachment
Kendell
Kendell worked on Tangent
1h 22m • 29 days ago

more fixes:
- i made sure that themes are reapplied even after refresh (eg if you send a chat message)
- i updated web to actually work with most pages by adding a rewriter
- i fixed some linting issues
- i switched to r2 instead of storing the assets within the val since r2 allows storing >80kb files
- i tweaked some copy
i've lost 99% of my motivation by now so i hope this version ships

Update attachment
Kendell
Kendell worked on Tangent
13m • 30 days ago

oh, one more thing: discord was giving me 429 too many requests errors when deployed, so i had to switch to a proxied fetch to prevent that from happening.

Update attachment
Kendell
Kendell worked on Tangent
1h 8m • 30 days ago

i've decided to ship Tangent as a computer. this means dropping any TODO apps and adding mock data or implementations when needed. i'm not sure if i'll continue with the computer framework for future projects, but i'm glad i made it; it was satisfying to make, i learned a lot, it's decent code for llms to learn from, and i filed a few bug reports along the way.

Update attachment

you can now filter by architecture if you'd like to do that

Update attachment

settings pane! i switched the old switches/selects to button groups because they look better. they internally use radio buttons which, surprisingly, also work for booleans. i also added a ram slider: this uses a logarithmic scale to make it comfortable to go from the minimum of 1gb to the maximum of 2,256gb (although we track gpu setups with as much as 20,480gb total ram).

Update attachment

i added some more gpus and improved data processing. menial but important work. bigger changes soon.

on the lium side: i added manual support for some new GPUs (lium is crazy cheap, like an A4000 for $0.08/hour!)
and for vast, i added more from the infinite selection of gpus, like the 5000Ada (powerful Ada Lovelace-based one) and the B200 (surprisingly blackwells are on vast), and improved the checking of ram to use a unified function: entry.gpu_ram >= gib * 1024 * 0.9.

Update attachment

and now that the core work is done, i worked a little on the documentation: updated the package.json to include some relevant fields and added example usage to the readme. the example for the tryReads uses a TransformStream which i think is neat.

Update attachment

when you make something in a day, the last parts usually end up a bit unfinished. this happened with tinyentities, where stream decoding took 2.5x the time of entities. but note the past tense: i fixed that by not using regex (as much) and now it's neck and neck!

Update attachment

i've added something that would be useful if you need to stream in entities - it basically lets you keep trying to read something that looks like an entity until you figure out whether it is (and you can emit it as its encoding) or it isn't (and you can emit it as text)

Update attachment

i updated the benchmarks to separate init and runtime and from there i just got optimizing. i was able to speed up data unpacking, switch how the map used for encoding purposes is stored for speed, convert xml encoding into one call for speed, switch to regexes more optimized for my purposes (more importantly faster), and fix multiple bugs multiple times... streaming parser next i guess

Update attachment

i set up some benchmarks (well it was a group effort with ai). now we can group functions into:

  • absolute best: escapeHTML, escapeXML, escapeXMLAttribute, decodeHTML, decodeXML
  • best only through bundle size: escapeHTMLAttribute, encodeXML
  • absolutely beat by entities: encodeHTML

so room for growth

Update attachment

and now decoding. decoding can be more complicated once i add streaming, but i've gotten a REALLY simple implementation that works going. (also optimized/restructured map.ts a little to add support for decoding and better tree shaking)

Update attachment

i set up the encoding functions. details:
- i read through code in entities and dom-serializer to figure out the services i need to provide at the end of the day
- i implemented the lighter escapeHTML, escapeHTMLAttribute, escapeXML, and escapeXMLAttribute, which escape just enough to not have problems
- then i implemented the more complex encodeHTML and encodeXML, which encode almost everything, with the former even encoding punctuation and multi character entities when possible.
- i also signalled to bundlers that the mapping can be dropped if unused by wrapping the process of loading it in a pure IIFE (the (() => { code })() things)

Update attachment

i offset the bundle size increase a little: based on any time an entity exists without a semicolon, it also exists with a semicolon, i can only include the semicolonless version and it's implied that the semicolon version also exists. 7742 bytes -> 7520 bytes

Update attachment

i'm now actually generating the map. the map is a bit bigger now so it can include special cases like &amp (note how there's no ;, so my script packs that as !).

Update attachment

i got the initial version of the mapper going. the idea is to convert the 145.8kb entities.json into a highly optimized map by making some optimizations (for example, we assume there's always an increment of one between codepoints) and restructuring (like separating each first character level with a newline and each second character level with the > character). it's only 7.1kB gzipped (half the size of a naive mapper) and should work for both encoding and decoding.

Update attachment

i set up the project. i'm not used to making libraries - i usually make web apps - but i'm using tsdown for compilation/transpilation, which i hope will make things easy.

Update attachment
Kendell
Kendell created a project
41d ago

tinyentities

You know HTML entities - like how > is the greater than sign, and how © is ©? Most JS libraries to encode/decode them are very bloated. I'm making a more lightweight one.

tinyentities
11 devlogs 0 followers Shipped

i added support for more gpus from vast and salad. (i probably shouldn't be hardcoding this, but true standardization is better than fake standardization...)

Update attachment

i added lium (a bittensor/crypto-based gpu provider), and since the list was getting a little long, i also implemented a grid view. isn't it glorious?

Update attachment

i realized i wanted to add sf compute, but they only provide gpus in clusters, so i implemented support for clusters from prime intellect, vast ai, deepinfra, salad, and sf compute. (prime intellect's clusters are typically not the cheapest)

Update attachment

so about that data... i've added some for salad. i also updated the ui a little (allow filtering for more useful comparison of prime intellect).

Update attachment

the ui was in fact next. back to data.

Update attachment

worked on data extraction, the ui's next i guess?

Update attachment

i'm now fetching prime intellect's reference prices.

Update attachment
Kendell
Kendell created a project
54d ago

Does Prime Intellect Have The Best Price?

There are many sites where you can rent GPUs. Prime Intellect tries to aggregate them, but it doesn't always have the best price - after all, it doesn't have all the GPU providers of the world - so this app tracks when.

Does Prime Intellect Have The Best Price?
12 devlogs 0 followers Shipped
Kendell
Kendell worked on Tangent
59m • 3 months ago

i did some other minor workflow optimizations and updated the github actions to check types and run eslint. it'll make new development faster trust

Update attachment
Kendell
Kendell worked on Tangent
2h 29m • 3 months ago

i optimized how the site was served - sveltekit is definitely not a natural fit for val town, but i made it work, and this update (a full custom adapter instead of rigging something w/ adapter node) makes it go even faster

Update attachment
Kendell
Kendell worked on Tangent
55m • 3 months ago

turns out the original authentication system was a little halfbaked. i made a new one that flows a lot better, and it handles authentication at the top level instead of in each app.

Update attachment
Kendell
Kendell worked on Tangent
43m • 3 months ago

prerendering now works on the home page and it's so much faster than ssr

Update attachment
Kendell
Kendell worked on Tangent
3h 9m • 3 months ago

i started with auth, and i'm returning to auth! students at my current school district can now log in to open School (Tangent's version of the home page) which currently just has a grades panel based on some old code. soon: send your auth to the backend to verify yourself and gain a jwt

Update attachment
Kendell
Kendell worked on Tangent
1h • 3 months ago

among other things (improving discord integration and adding a feedback page), i've been working on storage. this means EVERYTHING is now persisted to localStorage by default. i also added a devtools for viewing storage.

Update attachment
Kendell
Kendell worked on Tangent
7h • 3 months ago

google messages... even though i had some old code, because i refactored a lot of things (including switching to devalue) and hit a LOT of friction in other places, it's taken a while. it's done now though.

Update attachment
Kendell
Kendell worked on Tangent
48m • 3 months ago

i value atomic devlogs, but none of these changes were large enough to warrant their own one, so they all get in one big devlog! mainly just minor ui appearance tweaks and adding placeholder apps to the dock

Update attachment
Kendell
Kendell worked on Tangent
56m • 3 months ago

i added a dock. dock logic is hard and i'm probably missing a lot.

Kendell
Kendell worked on Tangent
1h 31m • 3 months ago

i've known from the start that i wanted to base tangent around storage. i've made a first step towards it: a storage object synchronized across the apps. the whole thing goes down, although only incremental changes go up for efficiency's sake. also had to use a syncing variable to prevent infinite loops

Update attachment
Kendell
Kendell worked on Tangent
56m • 3 months ago

more poor choices: i hosted tangent on a platform where files are 80kb max, but the theme page includes material color utilities which is more than 80kb, so i had to do some hardcoding and tree shaking to reduce its bundle size

Update attachment
Kendell
Kendell worked on Tangent
1h 55m • 3 months ago

i'm starting on the hard task of connecting and sharing data across the iframe boundary. i got something working though! see: theme works both inside and outside of iframe

Update attachment
Kendell
Kendell worked on Tangent
10m • 3 months ago

decided i didn't want the website or brand to use plain inter, so turned on cv11, which makes the a look like É‘

Update attachment
Kendell
Kendell worked on Tangent
1h 3m • 3 months ago

i refined windowing: tweaked the colors used, made the hot corner more reliable (and added using alt as another option), made windows maximal (overlay the essentials instead of adding a chonky bar), and implemented hover tooltips for windows. it's almost time to start building the actual apps

Update attachment
Kendell
Kendell worked on Tangent
1h 45m • 3 months ago

i implemented windowing! heavily inspired by gnome (in fact i even adapted some of its layout code)

Kendell
Kendell worked on Tangent
1h 4m • 3 months ago

i made a hot corner! i encountered a svelte bug along the way

Kendell
Kendell worked on Tangent
13m • 3 months ago

i think i burned out or something. i didn't really feel the motivation to work on it this weekend, or much energy at all. i thought reflecting on the decisions that led me might help - and it did actually, i decided that i need to be a bit more local first and that my current implementation was flawed. this should give me more space to make without worrying about the specifics or foundation tomorrow.

Update attachment
Kendell
Kendell worked on Tangent
18m • 3 months ago

trying something new, documenting architectural decisions, for this project. it was originally just to get credit for time spent thinking, but having to explain things to yourself is clarifying my thoughts in the moment and will help me in the future. that's also one of the things i hope tangent will help people do.

Update attachment
Kendell
Kendell worked on Tangent
3h 33m • 3 months ago

you'll see more on identity once i finish up the last part (face verification), but first: i finished switching the S3-compatible endpoint you use for storage to another one (in case you don't trust tangent)

Update attachment
Kendell
Kendell worked on Tangent
59m • 3 months ago

set up the foundations: sveltekit, uploading script, css reset + theming, and a little eye candy on the login page

Update attachment
Kendell
Kendell created a project
99d ago

Tangent

If the computer is a bicycle for the mind, Tangent is a computer for school. It's experimental, unifying a few of the most interesting and useful apps I've created in one environment with shared windowing and storage.

Tangent
24 devlogs 1 follower Shipped
Kendell
Kendell joined Summer of Making
100d ago

This was widely regarded as a great move by everyone.