Val Town Newsletter 5

Steve Krouse on

We shipped our new Deno runtime! We launched imports, from npm, esm.sh, deno.land. Our next focus is on quick wins, particularly in social directions. Y’all continue to dazzle us with very cool vals 🤩

Changelog

Deno

Untitled

We embarked on the migration to Deno mostly for security reasons, but also because they have incredibly sexy imports via URL (although it’s ironic to say that today because they finally conceded to adding an optional package.json to deno). I was hoping that the migration would only take 2-4 weeks but it took 6. Looking back on it, we are lucky it only took 6 weeks! It was a grueling migration, because porting a runtime is an incredibly difficult task, particularly when it was built quickly and without many tests. Tom rebuilt it almost entirely from the ground up, for security, and long-term maintainability. His experience working on similar projects at Observable was key here. Now we’re on much more stable and organized footing. And we have lots of tests!

We have almost 200 active user intervals running now, and I migrated over each one by hand to the new runtime, and babysat it for a few runs to make sure we didn’t cause any new bugs. Special thanks to Kartik (@akkartik) for being our volunteer to test the new runtime and for his patience when we ran into a couple snags.

The award for best Val Town user this month clearly goes to Andrew Healey (@healeycodes) for his tireless work trying to outwit our and Deno’s sandboxing. He’s up to maybe 5 exploits so far. So hats off to Andrew for keeping us all secure 🙏 If you’re interested in the challenges of sandboxing JavaScript, I highly recommend his article Sandboxing JavaScript Code.

You can read the full Upgrade to Deno guide here.

Imports

As alluded to, Deno comes with this amazing import syntax that fits so well into the Val Town model. I shudder to think of a full package.json in a val. We may have to do it some day but hopefully not soon! After we launched Deno, it only took Tom about an afternoon to launch the first version of imports 🥳

Untitled

Refreshed Val Header

We didn’t set out to entirely redesign val headers this month, but we kinda did, piece by piece:

Original Val

Original Val

Refreshed Val

Refreshed Val

Public vs private is a lot clearer now, and how to switch between them.

Screenshot 2023-03-21 at 8.47.21 AM.png

We added profile pictures (from GitHub & Gravatar).

Screenshot 2023-03-21 at 8.53.26 AM.png

The Archive button is a simple way to get vals out of your line of sight without deleting them forever.

Screenshot 2023-03-21 at 8.47.48 AM.png

We simplified the API menu, including a URL to express endpoints.

Screenshot 2023-03-21 at 8.53.59 AM.png

In order to make room for all our buttons, we made them icons only, and their description lives in tooltips now.

Screenshot 2023-03-21 at 8.47.38 AM.png

Refreshed Tips Menu

Screenshot 2023-03-20 at 2.07.32 PM.png

  • Bug fixes around moving vals in your workspaces & deleting vals

Refresh to the Tracing UI

A lot of folks probably don’t even know that Val Town comes with tracing built in. We automatically track all evaluations of any val, including every time your function is run, and show you all those evaluations on the val’s page at the bottom. For security concerns, we only show you evaluations on vals that you own and that you were the initiator of the run. So if someone else calls your val, you won’t see the evaluation history for that run. Tom made a number of small UI tweaks to the evaluations UI, including these cute green checkmarks when no errors are thrown.

Screenshot 2023-03-20 at 3.11.27 PM.png

api2.val.town & api3.val.town

You may have noticed that our API URL sometimes is displayed as api.val.town, api2.val.town or api3.val.town. Apologies for the confusion! They all go to the same place. We needed to make a couple different subdomains and we moved our infrastructure around last week. We will soon reconsolidate them back to simply just api.val.town, but continue to support api2 and api3 as symlinks to api.val.town in perpetuity.

Roadmap

We are focused on quick wins, better onboarding, and social features over the next couple weeks. We’re thinking about improved auth, better search, dynamic featured vals, profile page customization & hero stats, comments, liking and mini pull requests on vals, pretty val share URLs, public folders, seeing & getting notifications about your vals’ usage, and much more.

Cool vals

https://twitter.com/stevekrouse/status/1637890851031359517

https://twitter.com/stevekrouse/status/1638937904087982086

https://twitter.com/stevekrouse/status/1638936182838132736?s=20

https://twitter.com/stevekrouse/status/1638158128473600002?s=20

https://twitter.com/dvddkkim/status/1635850605435707392?s=20

https://twitter.com/stevekrouse/status/1638930095585779712

Edit this page