Val Town Newsletter 10
Val Town turns one today! In the last two weeks we shipped Val READMEs, the new val.run Express API, a redesigned Val action menu, a dozen new guides, a RFC for an expanded Vals API, a blog post about Public Key Auth, example pages around NPM packages and APIs, more
fetch proxies, and more. I also recorded a new video. A lot has changed since the last one in February!
A year of Val Town
Val Town turns one year old today 🥳
It’s been a fun year! I’m very grateful to all of you for investing your time and creativity in our nascent platform, and our team and advisors for believing in us and working hard this year.
I am happy with our progress and how we iterate quickly. We have built a elegant product that hundreds of people get value from. We have a small group of passionate users. We have revenue.
We are still in search of explosive product-market-fit growth. We want individual vals to go viral, which would bring new users to Val Town, making their own viral vals, which would get more users… and we’re off to the races! I have faith that if we keep listening to users, grinding on the product, and are thoughtful about facilitating creativity and virality, sparks will fly, magic will happen, and things will go up and to the right.
Our ambition is to be the default place code runs, from hobby projects to production code. We have a long way to go, but a good start, a great team, and a plucky can-do attitude.
Here’s to the next year of Val Town!
Add markdown READMEs to your vals.
In response to a security vulnerability, we moved up the launch of our the new val.run Express API. It is entirely subdomain-based to provide an isolated security model and allow for fully-customizable API paths, as required by some webhook specs, such as ChatGPT plugins. Read more in the announcement post.
Val action menu
Val’s new action menu combines four buttons (Share, Logs, Move, Schedule) into one.
The guides section on docs.val.town has been expanded to include more examples of things you do can with vals like creating web hooks, web scraping, saving form data, generating PDFs, and more including more service-specific guides like setting up chat bots, and fetching and storing data.
Expanding the Vals API - RFC
We have a RFC open to enable more programmatic use of Val Town, and to support the pioneers who are building tools that currently use our undocumented, unstable, internal API. It’s only open until Sunday, July 9th, so please get your comments in asap!
We recently instituted hard 100kb limits on val outputs. Now instead of throwing an error and returning nothing, we truncate the outputs at 100kb and try to “repair” the remaining output to be valid JSON. This is meant to be a strict improvement over showing you nothing, but it’s still not an ideal user experience. We have plans to increase these limits in a more scalable way in the medium-term.
Public Key Auth
I prototyped a authentication protocol for Val Town users so Val Town users can authenticate themselves when calling each others’ vals. This work paves the way for per-user rate limiting and billing within Val Town.
One of the biggest requests when folks sign up to Val Town is for us to “inspire” them with potential uses of the product. We are experimenting with having you setup your own inspiration emails about what you can use Val Town for — during the onboarding tutorial! We have you schedule a val that will send you an email of an inspiring val or usecase every day. You can set yours up here. Because it’s just a normal val, you can modify it, improve it, whatever you want.
API & NPM Examples
We want Val Town to be the place you go for examples of how to use an NPM package or use an API. Now you (and Google searchers) can explore Val Town from the perspective of APIs and NPM packages.
You can browse by API:
Or by NPM package:
We proxy all
fetch requests so you aren’t affected by the fetching of other Val Town users. Every request comes from a different IP address. However we used to only have one proxy which didn’t allow .gov URLs and many other limitations. Now we have multiple proxies so we can support many more (hopefully all) URLs now.
Some quality of life upgrades to the Secrets page to let you update existing secrets in-place and check when a secret was last updated.
Link to val version
You can link to a specific val version now, via
?v=version, ie val.town/v/pdebie.publishYoutubeToLemmy?v=25.
Tip: If you share a val URL in a social network, you get a pretty share URL image of the version of your code at that moment in time, but this is a heavily cached image. You can always get the appropriate version of that image by passing a version number.
Trending algorithm updated
Now it’s likes / age^1.5, where having a README counts as 5 likes, and you need at least one like to show up at all (but you can like your own val).
Discord welcome bot
Get welcomed to Val Town, by Val Town, and learn how to build this bot yourself.
Cuter val names
What looked like
untitled_E8W8FGY now is now the friendlier
Mostly for Google to see all our pages, but you may find it useful too.
setTimeoutis back, but not persistent/durable
- Val names are now represented as case insensitive (citext)
- You now can reuse val names after a deletion
- User profiles are now nested under /u/handle
- Cmd-enter to submit the feedback form
- val.town/docs redirects to docs.val.town
- Unreachable code warning
As always we’re quite responsive to feedback and suggestions, so let us know what you want. We’re planning:
- Vals API (to power a VS Code extension & more!)
- Fork Vals (in a first-class, semantic way where we track this in the database)
- Autosave unsaved changes
- Notifications (errors, likes, references, forks, etc)
- Improvements to embedded vals
- OAuth Helpers - get auth tokens to your favorite apps
- Public folders
- Val version pinning
- Comments on vals
- Integrated LLMs (have AI write your vals for you)
- More web-standard and JS compatibility