Val Town Newsletter 18
Steve Krouseon
In the last month, we shipped HTTP streaming, semantic search, and Townie, an AI chatbot that knows how to write vals. We also released a TypeScript SDK on top of our new OpenAPI spec for the Val Town API, redesigned profile pages, public likes, and nameable API tokens.
We’re currently working on making it easier to navigate and organize vals, improvements to search, the ability to stop a running val, and performance improvements.
You all have been making some amazing vals! We’ve seeing AI apps, streaming demos, personal websites, emojis, authentication middleware, and a hundred others listed at the bottom of this newsletter.
If you enjoy reading these newsletters, join our team at Val Town to help write them! We’re hiring someone to do content-focused devrel to inspire and support the next 100k programmers to build on Val Town.
You can stream from vals!!! Our new open-source deno-http-worker also enables us to increase request size limits from 2mb to 100mb and make response sizes unlimited. Read more in the HTTP Streaming announcement.
Are there any vals related to…? We have a new search mode that uses embeddings to give you a val with the same “vibes” as your search query. It’s currently its own mode labelled “semantic search” – try it out yourself! We’re working on combining it with the exact search to give you a wholistic search experience. Learn more in the Semantic Search announcemenhttps://blog.val.town/_astro/semantic.BfDcIZwi_Z2ntW5L.webpBfDcIZwi_Z2ntW5L.webp" alt="Semantic search for 'wikipedia api'" loading="lazy" decoding="async"> We built a Townie, a chatbot that knows common Val Town patterns. It’s surprisingly good at generating working code. You can see below me asking it for help on a fairly complex task from Pat LaVarre. It doesn’t give me what I ask for – it gives me something better – and it immediately ran, zero-shot (on its first try). It works even better if you give it feedback in a couple iterations. After a herculean effort to port our Express server to Fastify, we were able to generate a good OpenAPI schema, interactive API docs, and a TypeScript SDK. Try it out yourself! Shout-out to our friends at Your profile page is now prettier and a bit more functional. You can view your vals in a list or a grid, as well as the vals you liked. We’re reimagining users’ profile as a jumping off point to https://blog.val.townhttps://blog.val.town/_astro/profile.ChJulCHb_Z1OgMLo.webptering for vals in your profile. You can use tabs instead of spaces and banish trailing semicolons. Customize dprint to your heart’s content in your editor settings. Shout out to David Sherret for creating the wonderful dprint. Thanks Adrian Sieber for the original feature request and Nikita for the final kick to get it done. Livestreams are a great way to learn Val Town by watching others. And if you watch live, you can ask questions and we’ll answer! Or heckle – that’s fun too. Since the last newsletter, I spoke with: Tune into the next episode this Thursday, June 27th at 10am ET with Mary Rose Cook! Our friend Beniamin also is making wonderful Val Town livestreams! I loved this one where he used GPT4 summarization to combine many newsletters into one. Here’s some of the top features we’re planning to work in the coming months. Please make feature requests and vote on what you’d like to see next.
Fixed an extremely annoying bug where the cursor would reset to the beginning of the first line after formatting. Now it stays where you left it.Added the ability to create a val via the API with a specific type (except cron)Improved log streaming & a button to refresh logsAbility to name Val Town API tokensAdded three “getting started” examples for new usersReorganized val logs for better readabilityThe URL box in the Val Preview iframe is now fairlyully selectableLong val READMEs get truncated with a “view more” buttonval.town/newest now has list-view optionsThere’s now a “copy code” button in markdown js, ts, jsx, tsx snippetsMoved the search icon to a better spot in mobile headerImproved observability and usage trackingUpgraded database to high-available clusterMade VIM logo background transparentRefactored the code that runs vals, fixing inconsistencies
Achille stunned us all again with an authentication middleware val so powerful, it just may be the “last login” you’ll ever need. It also comes with a hono adapter.Max made a series of demos to show us all how to stream: hello world for streaming HTTP responses that sends a new message every second, simple server-sent events demo, a clone of robpike.io, streaming OpenAI threads, a mini ChatGPT clone, a GIF that streams frames, multiplayer circles, an endless maze, NYC’s traffic cameras as streaming ASCII imagesThomas made and remade his personal website 8 times (!!!) to show different frontend patterns on Val Town and their relative performance: Client-side React, Client-side React via CDN, Svelte, Preact, Vue, Hono, React, and HTML as StringSteve rebuilt the Date Me Directory (currently in Hono HTML) as client-side React (with React Router), as well as a version that also has server-side rendering. We’ll figure out the frontend patterns if we have to build and rebuild all our vals a million times to do it!Alvi is collecting his Steam playtime history to a SQLite database, so he can analyze his gaming habitsJordan made a val to explode and explore emoji and piped all emoji into a Notion database with backlinks@charlypoly made a bunch of vals with Browserbase: val that watches a blog for changes, a val that checks if a website has changed, a Puppeteer example, and browserbase utilsSteve made an uptime status page built on top of data collected by an uptime monitor cronThomas made a series of vals around JSON ResumeThomas is sending SMS via email!Victor made a Date Me Directory clone but for a man in finance (6’5, blue eyes)@midnightlightning made an endpoint to calculate additional metadata for a Uniswap liquidity positionJon made a bot that ensures a Supabase websocket listener is aliveAchille somehow figured out how to run Astro in Val Town! Here are the Val Town Docs hosted in Val Town 🤯@arrudaricardo changes his GitHub status to a random emoji every dayJan made an awesome new blob admin@jcoleman saves email signups for Deer Spring BakeryAchille brought a taste of Observable Framework to Val TownMax cobbled together some Deno fresh charts as HTML or imagesDomingo created a Python problem exchange backend for a custom GPTJordan made some vals relating to the National Weather Service, including a Bluesky feed generator@kingish gets a weekly email digest of good times to go on a bike rideAchille created middleware that adds handy debug links to get to a val’s code and logSteve made a little clone of Wes Bos’s wonderful fav.farm for when you need a quick little favicon out of an emojiAchille found a clever workaround to set temporary environment variablesJan built an vector search on top of Lunr and Airtable@camajudson built a Discord bot for the Cama communitySteve made a simple OpenAI streaming demo and one that streams back rendered HTML. Why make HTML when ChatGPT will write it for you?Jan made a blurb generator that inputs a link and outputs a blurb and a bunch of tags@tfayyaz demoed search messages with HTMXChet made an HTML formatterSteve demoed how to get geolocation data in a website@nmsilva made a Supabase cache@nerdymomocat syncs to Habitify from Todoist with AIMax showed us how to import a wasm binary manually@l3gacyb3ta wrote a script to calculate the heat at a point on a mapDaniel fetched the most popular Obsidian plugins from GithubThomas made a text to image playground for Fal.ai@banebot made a greeting card generatorJan made a val that gets content from a URL for summerizers. It combines https://r.jina.ai/URL and markdown.download’s Youtube transcription getter to do its best to retrieve content from URLs.Achille got WANIX (a web-native unix) running in a valThomas made a val that backs up his vals to GithubNico demoed Vercel’s AI SDK StreamingAlex made a site to paste & clean Slack messagesJason made a price tracker for the Emma Luxe Cooling MattressSean is tracking their figma plugin statisticsAchille made a val that serves a Github repo@hunty made a Spotify endpoints for play state@bdon made a USD to TWD converterMatthias made a web component exampleSteve made a site to lookup DNS recordsJan made the beginnings of a UI for a Simon Willison’s RAG searchSteve made a streaming demo with Anthropic Claude@ashryan made a QR code generator@zerovox made an RSS feed from his items from Readwise reader to be ingested to WorkflowyJan demoed DuckDBThomas made an HuggingFace API Gateway@ashryan made a random secret generator@gwoods22 made a cron to get updates on the Macdonald Block Reconstruction Project@saolsen made a Codemirror TypeScript Emacs demo on top ofs Max’s Codemirror TypeScript demoBrian is scraping CapFriendlyJan is archiving Sidebar.io to Google SheetsThomas made a 3D emoji generator@triptych made a hit counter you can attach to any website via fetch
Edit this page
