witsdev Profile Banner
wits Profile
wits

@witsdev

Followers
3K
Following
5K
Media
99
Statuses
537

senior chef @vercel

Joined May 2010
Don't wanna be here? Send us removal request.
@witsdev
wits
2 years
I haven't released any personal projects for five years. I've built plenty of prototypes, but none of them ever felt ready. Here's what I've been doing, and what I'm going to do next:
7
5
194
@witsdev
wits
10 days
you can see which of your projects are using vulnerable dependencies in the @vercel dashboard and generate patches via the Vercel Agent
2
5
35
@witsdev
wits
6 months
throwback from before @v0 made it easy to build things on your phone
6
0
72
@witsdev
wits
6 months
you can try out Find on any page in the Vercel dashboard https://t.co/mchGbYvblS
@witsdev
wits
6 months
here's how we engineered "Find," the new universal search in the @vercel dashboard
2
0
17
@witsdev
wits
6 months
you can check out Find on any page in the Vercel dashboard https://t.co/5rQMrMlgwH
@witsdev
wits
6 months
here's how we designed "Find," the new universal search in the @vercel dashboard
1
0
22
@witsdev
wits
6 months
we didn't want this feature to feel like a traditional chat or prompting experience. instead of responding with words, the navigation assistant responds with actions it silently thinks about your query and navigates for you
1
0
19
@witsdev
wits
6 months
5. the navigation assistant dead ends are the enemy of search if we can't find what a user is looking for using traditional algorithms, we want to ensure that they still have a way to find what they're looking for. this also allows users to ask more complete, complex questions
1
1
28
@witsdev
wits
6 months
we solve this by only acting upon the pointer event if the pointer moved since the last time the pointerover event was fired we still need to track what we would've focused on even if the pointer hasn't moved though, because as soon as the pointer moves again it should trigger
1
1
28
@witsdev
wits
6 months
4. focus we allow focusing on results via arrow keys or hovering over them with a pointer. we also always focus the first result as the user types this seems easy enough until you try to change the focus while the pointer is still hovering over one of the results a simple
1
0
26
@witsdev
wits
6 months
3. shift prevention because we show some results optimistically and others only after fetching more data, there's a risk that the results could shift as a user goes to select one or rather, there would be, if we didn't implement a system to prevent it when we get new results
6
6
144
@witsdev
wits
6 months
2. simplicity & ambiguity the results are shown in the simplest way possible while disambiguating results that would look similar for instance, matching the "Deployments" page needs to clarify whether it's for the current team, current project, or a completely different scope
1
0
11
@witsdev
wits
6 months
instead, our close animation only transitions from the input at the top of the modal back down to the original trigger element, so it's a more similar shape and size
1
0
16
@witsdev
wits
6 months
normally a close animation can just be the open animation played in reverse. if we did that here, the border would get stretched and malformed
1
0
14
@witsdev
wits
6 months
we isolate the background layer from the foreground content. in other words, the background is really a sibling element to the foreground, instead of containing the foreground elements this allows us to animate the background's size and position with a GPU-accelerated transform
1
0
22
@witsdev
wits
6 months
1. animations let's start with the first thing a user would see. the modal expands and contracts in-place to provide a sense of persistence between the two UI states to make this look and feel just right, we're employing two counter-intuitive techniques: isolation and asymmetry
1
0
16
@witsdev
wits
6 months
here's how we designed "Find," the new universal search in the @vercel dashboard
22
41
726
@witsdev
wits
6 months
5. the navigation assistant the navigation assistant uses ai to extract key information from the user's query into more predictable boxes it determines the best route (from the dash schema) and any words the user used to describe a date range, the name or a team/project, etc.
2
0
43
@witsdev
wits
6 months
4. data fetching the local search also tracks when it needs more information to provide complete results. in cases where it's combined with the name of a page, as in "my-website deployments" in the example above, it knows that it only needs to search for "my-website" as a
1
0
34
@witsdev
wits
6 months
this local search is able to sift through results from several sources and rank them with fuzzy logic and combined inputs not only can it can match "my-wesbite" to the project page for "my-website" and "deply" to the deployments page for the current scope, but also "my-website
1
0
29
@witsdev
wits
6 months
3. search locally we optimistically search through the information that we already have locally to provide near-instant results we always know about every page and setting in the dashboard and the most likely dynamic values
2
0
29
@witsdev
wits
6 months
we also prefetch some information such as the preview deployments and projects that you've most recently engaged with by filtering this down based on the context of what you're currently viewing, we can provide contextual suggestions but more importantly it allows us to…
1
0
31