Hawk Ticehurst
@hawkticehurst.com
UX Engineer @vscode.dev. He/Him šøļø hawkticehurst.com š New York, NY
created October 24, 2024
1,552 followers 268 following 446 posts
view profile on Bluesky Posts
Hawk Ticehurst (@hawkticehurst.com) reply parent
Thank you! Happy you enjoyed it! And lol yeah I ultimately decided against HTMX too ā just didnāt quite jive with how I wanted to / like to build apps after trying it out for a bit Also yes I have seen the AHA stack! Was super cool to see someone elseās take/flavor on these ideas!
Hawk Ticehurst (@hawkticehurst.com)
Video is WIP, but wanted to share a side quest I went on adding some of the ideas from @trueadm.dev's Ripple, esp the control flow I've never seen anyone support the execution of inline functions in an `html` tagged template (pls correct me), but this is a *really* cool and powerful primitive y'all
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah hopefully! The only fear Iād have is you could end up in scenarios where whatās useful for humans will represent extra context that leads a model in an undesirable direction ā but itās worth testing in case Iām wrong!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh gosh yeah from my own experience using 4.1 Iād wager this is a *massive* contributor to your poor experience so far. If youāre game, give GPT-5 mini a shot and Iād be really curious to hear what your experience is. Itās free to use and *so* much better than 4.1
Hawk Ticehurst (@hawkticehurst.com) reply parent
Ooh this is a great call out. Iām bringing this one back to the VS Code team
Hawk Ticehurst (@hawkticehurst.com) reply parent
How funny! Youāre the one who snagged the "ripple" NPM package! No joke, I was working on component model I was calling Ripple earlier this summer that has a *shockingly* similar shape to your ripple. I really love how much further you pushed the syntax tho, esp the native JS control flow!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh interesting, seeing this exchange elsewhere in the thread I suppose itās worth mentioning Stellar *does* let you optionally define your data in JS. Itās just not the āidiomaticā way of writing Stellar code github.com/hawkticehurs...
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah Iām not sure that can be fully avoided either (maybe JSON payload?). But I think the ādata in JSā req might be more about JS being the source of truth for the data in your app In Stellar HTML is the source of truth for the data ā stored in element text content / custom attributes
Hawk Ticehurst (@hawkticehurst.com) reply parent
Could you share an example of a use case / the problem(s) youāre trying to solve? Super curious and might help with providing a good recommendation
Hawk Ticehurst (@hawkticehurst.com) reply parent
Alas probably wouldnāt work for @lea.verou.meās needs. Stellar embeds all data in HTML and then letās you manipulate it with JS
Hawk Ticehurst (@hawkticehurst.com) reply parent
I made a thread about how good it was 9 months ago, and itās only got better since ā now itās taken the spot for the best browser Iāve ever used
Hawk Ticehurst (@hawkticehurst.com) reply parent
Very soon. Folders feature work was merged about 2 weeks ago but donāt think itās been officially released yet
Cory LaViska (@cory.laviska.com) reposted
At some point, @vscode.dev made Image Preview the default editor for SVGs. Here's how to change it back to text. š
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh veryyy interesting didnāt know about any of this. Thank for the heads up!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Thanks for sharing! I hadnāt seen this before! Love the ideas Alexander proposed and would argue/push for having even *fewer* dependencies on external tools It should really be vanilla web technologies, Node, SQLite, the code you write and nothing else imo
Hawk Ticehurst (@hawkticehurst.com) reply parent
Almost no apps! This is more of an esoteric exercise building ultra maintainable / long lived software and 100 years happen to be a nice round number that will probably do well in a YT title lol That said @henryzoo.com offered an idea that has the potential for a ton of value 100 years from now :)
Hawk Ticehurst (@hawkticehurst.com) reply parent
Ooh I love this! Not quite sure if itāll be a demo that makes into the video (rather wouldnāt share my personal photos with the internet lol), but straight up might make this for real just to test out the stack itself :)
Hawk Ticehurst (@hawkticehurst.com) reply parent
Interesting! All new stuff to me, although it seems like this is pretty ābespokeā software? Iād rather stick to platform primitives like vanilla HTML, CSS, JS, Node that likely have a stronger chance of still being around 100 years from now
Hawk Ticehurst (@hawkticehurst.com) reply parent
Nice thank you!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oooh TIL about redbean definitely gonna dive into this tomorrow
Hawk Ticehurst (@hawkticehurst.com) reply parent
Agreed! A fully contained client side app has a way better chance of surviving. The inclusion of server is more so an arbitrary challenge for the video ā what would it take to build a full stack app that lasts 100 years?
Hawk Ticehurst (@hawkticehurst.com) reply parent
I actually completely agree with this take! The challenge I set for myself in the video, however, is to try and create a web app with persistent and distributable data So not *as* portable as we could be, but will still try to create extremely portable server code (and also probably use SQLite)
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh I *love* this! Thank you for sharing
Hawk Ticehurst (@hawkticehurst.com) reply parent
Also great call out on providing extensive docs and keeping the total number of files small! I hadn't thought about those
Hawk Ticehurst (@hawkticehurst.com) reply parent
Agreed!! Altho I've given myself a small abstraction budget to fill in the gaps that vanilla leaves - Vanilla HTML, CSS, JS, Node - Custom elements + base class - Declarative markup w/ html tagged template - Small router - Type safety w/ JSDoc - (Maybe) RPC-style server fns a la Svelte remote fns
Hawk Ticehurst (@hawkticehurst.com) reply parent
While youāre here feel free to check out my other 2 (lol) videos
Hawk Ticehurst (@hawkticehurst.com)
I need some help! Iām working on a YouTube video that explores what it would take to build a web app that, if built today, could last 100 years. It covers tech stack, dev strategies, DX, etc but I need help coming up with a demo. Any fun ideas for a full stack app meant to live for a century??
Hawk Ticehurst (@hawkticehurst.com)
Iām moving to New York City tomorrow! (My wife starts grad school in September). Current and previous New Yorkers, have any tips, recommendations, doās/donāts, fun things we should check out as we get settled?
Hawk Ticehurst (@hawkticehurst.com) reply parent
Ahhh I totally understand now. Thank you!
Hawk Ticehurst (@hawkticehurst.com) reply parent
I'm following and agree with the idea that native APIs are conceptually / practically more complex than framework APIs, but not quite following what the connection back to DOM as a source of truth is supposed to be based on that idea. Could you clarify that a bit?
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yes! Very much looking forward to it! The trailer looked promising imo
Hawk Ticehurst (@hawkticehurst.com) reply parent
Without a doubt my favorite book of 2024. Read it front to back in 2 days
Hawk Ticehurst (@hawkticehurst.com) reply parent
No worries at all! Happy they were helpful :)
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah agreed, super interesting to see your motivations explained in the talk. Almost feels like we are coming at signals/CEs from opposite sides If youāre game please do give updates on the project, very curious to see how it evolves *also the interactivity while streaming demo is sick
Hawk Ticehurst (@hawkticehurst.com) reply parent
This is super cool! I was playing around with very similar ideas (i.e. encoding initial state into HTML / signals + custom elements) at the end of last year, but never thought about adding a JSX abstraction on top ā seems like a huge improvement to the overall DX!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Or convincing myself itās possible to do the final option: 3. Build my own stack š
Hawk Ticehurst (@hawkticehurst.com) reply parent
*Iād be picking React Native š
š¬
Hawk Ticehurst (@hawkticehurst.com) reply parent
But real question is what *are* the stacks youāre debating between? š
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh right totally, adding rounded corners to a lot of the UI was another set of updates that David did a few years back that I remember had a major impact on modernizing the feel of the product
Hawk Ticehurst (@hawkticehurst.com) reply parent
The new modern themes were added ~3 years ago (pre-Zed) iirc (you can thank @daviddossett.bsky.social for those!) and agreed they were a huge improvement But certainly always looking around at the rest of the dev tool space and getting inspired (with Zed being a beautifully designed standout imo)
Hawk Ticehurst (@hawkticehurst.com) reply parent
Curious: Are you talking about the warning/error squiggles or something else?
Hawk Ticehurst (@hawkticehurst.com) reply parent
Ooh this is a very clean set up š
Hawk Ticehurst (@hawkticehurst.com) reply parent
Finally, I sometimes will switch to an even simpler format in the Tasks file consisting of a āPriority listā and a āRemember list.ā I move tasks between the two lists by taking stock of what is a priority during any given period of life. As I complete tasks I delete them.
Hawk Ticehurst (@hawkticehurst.com) reply parent
The second file is called āTasksā where I have check lists (i.e. `- [x] list item`) grouped into daily, weekly, monthly, and one off categories. Scratchpad notes/todos often end up in the Tasks file. For recurring tasks I check and uncheck items. I delete items when they are no longer relevant.
Hawk Ticehurst (@hawkticehurst.com) reply parent
The first file is called āScratchpadā where I can quickly toss todos, info to remember, ideas, links, etc throughout my day. I let this file be entirely flexible and messy. No structure or timeline ā notes can live there for hours, days, weeks, or months.
Hawk Ticehurst (@hawkticehurst.com) reply parent
The system that has worked best for me is one that is prioritizes simplicity and flexibility. No plugins. I use a restricted set of markdown syntax ā bold, italics, lists, links, code blocks, and checkboxes, only. I have two core āworkingā files for daily life.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh that's great to hear! Was feeling a bit sad / worried about having that kind of fracture in the ecosystem
Hawk Ticehurst (@hawkticehurst.com)
Super interesting refresh / redirect of Remix š Will now be a @preactjs.com fork with the goal of zero deps, aligned closely with Web APIs, and little-to-no bundling/compiling/typegen Already a big fan of Preact and the work @developit.dev has done on it, so very curious to see how this plays out
Hawk Ticehurst (@hawkticehurst.com) reply parent
Thanks! Not quite looking for folks yet, but I do intend to open source this project eventually, at which point yes would love some help! Still working on the overall architecture and core building blocks. Feel free to keep an eye out tho āā I'll announce when I open source the project
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yep! Although the goal is to have a much lighter weight core editor in terms of feature set
Hawk Ticehurst (@hawkticehurst.com) reply parent
Also VS Code (day job) and learning how to water color / draw
Hawk Ticehurst (@hawkticehurst.com) reply parent
My dream video editor (I was a filmmaker before I got into software) - Built with Electron, WebGL, ffmpeg, and web components - Infinite canvas a la Figma - All the ābasicā features - First class SVG support - HTML / CSS as renderable assets - Plugin API - Shader-based effects - MCP server
Hawk Ticehurst (@hawkticehurst.com) reply parent
On the VS Code side, I think the tools/UX for reviewing generated code and helping programmers build a stronger understanding of their codebase leave something to be desired (or donāt exist) Itās an area Iām hoping to get the chance to focus and work on later this year
Hawk Ticehurst (@hawkticehurst.com) reply parent
For even larger tasks I usually go to Geminiās mobile / web app I find it (esp conversation mode) very helpful for building a mental model of whatever Iām working on and possible approaches to tackle it
Hawk Ticehurst (@hawkticehurst.com) reply parent
Primarily, VS Code agent mode with Claude 3.5 If the task is small or well scoped the result is usually good enough to move on, but with bigger tasks the generated code is usually a āfirst draftā that will need to be carefully reviewed / refined
Hawk Ticehurst (@hawkticehurst.com) reply parent
Rich's channel: www.youtube.com/@rich_harris Dan's channel: www.youtube.com/@danielroe Other Dan's channel: www.youtube.com/@overreacted...
Hawk Ticehurst (@hawkticehurst.com)
First @rich-harris.dev, then @danielroe.dev, then @danabra.mov, and now @ryansolid.bsky.social Loving this theme of the web's experts making dedicated standalone videos about whatever they're interested in or focused on at the moment So much great stuff to glean from these
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah! My personal favorite bit is that we support Ollama as a model provider so if you have a beefy enough computer you can use VS Code's AI features entirely locally
Hawk Ticehurst (@hawkticehurst.com) reply parent
Actually an extremely easy sell! Itās already a thing š Copilot supports multiple models or you can bypass Copilot entirely and bring your own API key from another model provider
Visual Studio Code (@vscode.dev) reposted
Today, we're announcing plans to make VS Code an open source AI editor. We believe AI development should stay true to VS Code's core principles: open, collaborative, and community-driven. Let's build the future of software development together. aka.ms/open-source-...
Hawk Ticehurst (@hawkticehurst.com) reply parent
Definitely have had a similar experience with AI, but itās steadily been getting better as I get more practice with it. Would love to hear more details about what you asked and how it failed ā and/or any other paper cuts you ran into that we can potentially fix on the VS Code side.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh, yes totally! I was referring to HTML, styles, and client scripts ā which can represent of a lot of the code in an Astro component. Thus āplenty of codeā phrasing. Maybe better framing wouldāve been everything except for the templating syntax and component script gets sent to the client?
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah I think adding a separate note/footnote would be totally fine to keep the comparison concise Also, if it helps, I remembered I've written a fairly extensive blog post on some of these client patterns (the Astro specific content is towards the end) hawkticehurst.com/2023/11/a-ye...
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yep +1 to everything Jake said If weāre being pedantic, I might say that ātheir code never gets shipped to the clientā feels off. Plenty of code from an Astro component gets shipped to the client (esp if you follow the client patterns mentioned above) But I understood the spirit of what you meant
Hawk Ticehurst (@hawkticehurst.com) reply parent
Sadly the person who does LSP for VS Code (Dirk BƤumer) isn't on Bluesky as far as I can tell, but @mattbierner.bsky.social or @danr.bsky.social may be able to point you in the right direction (?)
Hawk Ticehurst (@hawkticehurst.com) reply parent
I have a pretty deep background in YT and would be happy to answer any Qs you might have *Worked for a YT channel called Cut several years ago making content thatās amassed 50+ million views *More recently helped a good friend grow his developer channel from 0 to ~110k subs
Hawk Ticehurst (@hawkticehurst.com) reply parent
But to @simonihmig.bsky.socialās point, thereās *also* something really interesting and powerful about Emberās model. For the purposes of building an interactive SPA, being able to write JS with snippets of embedded markup results in some pretty nice flexibility and composability.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Oh yeah of course! I think this one of the things that makes Svelte so special ā itās a beautiful abstraction on top of a highly dynamic SPA web framework. It *feels* like writing HTML and thatās a pretty incredible accomplishment.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Basically the design philosophy might stray far from Ember/JSX/React, but in practice the underlying implementation of Svelte is much closer to those projects than it is to a progressive enhancement architecture
Hawk Ticehurst (@hawkticehurst.com) reply parent
Thanks for clarifying! And yes, Iām aware of/love the Svelte design philosophy! But what I was questioning/trying to point out is that under the hood Svelte doesnāt actually follow its own philosophy If Svelte truly enhanced HTML with JS youād likely end up with something closer to petite-vue
Hawk Ticehurst (@hawkticehurst.com) reply parent
Might be misunderstanding what youāre saying, but doesnāt Svelte also dynamically render markup using JS by default (i.e. client mode)? When writing Svelte, it certainly feels like youāre enhancing the HTML you write. But under the hood, itās all JS
Hawk Ticehurst (@hawkticehurst.com) reply parent
Late to the party, but this so cool! Love this idea so much. Psyched to see this expand to more cities
Hawk Ticehurst (@hawkticehurst.com)
Congrats to @zachleat.com for expanding into the menswear business. Huge!! š„
Chris Hayes (@chrislhayes.bsky.social) reposted
Unidentified men grabbing someone off the street and putting her in a car because she wrote an op-Ed. This as flatly authoritarian as anything weāve seen in this country in a very long time.
Hawk Ticehurst (@hawkticehurst.com)
ICE is a modern-day Gestapo
Hawk Ticehurst (@hawkticehurst.com) reply parent
Also to be clear: VS Code is still being built using imperative vanilla TypeScript. This is just for mocking out/demoing new UI/UX ideas to the rest of the team.
Hawk Ticehurst (@hawkticehurst.com)
Looks Iām officially starting my @vuejs.org arc (š„³). What should I know, learn, read, watch, etc? Tips? Tricks? Lay it on me. *We (UXEs working on VS Code) have decided this will be our tool of choice for building interactive prototypes.
Hawk Ticehurst (@hawkticehurst.com) reply parent
āChromeā or sometimes āShellā
Hawk Ticehurst (@hawkticehurst.com) reply parent
Fluent web components port to Go, when?!
Hawk Ticehurst (@hawkticehurst.com) reply parent
hyped š„š
TypeScript (@typescriptlang.org) reposted
Today we're thrilled to announce our effort to port the TypeScript compiler and language service to native code, gaining a 10x speed boost in build times and editor responsiveness! devblogs.microsoft.com/typescript/t...
Hawk Ticehurst (@hawkticehurst.com) reply parent
> I'm not winning any friends by writing this. People who like me already probably know where I stand on this. True.. but counterpoint: I can like you *even more* after reading this šš
Hawk Ticehurst (@hawkticehurst.com) reply parent
You might be able to safely ignore and see through bullshit nazi propaganda / fake news but it doesn't mean you're following is doing the same You have immense influence to rebuild the same community of ppl over here *AND* not contribute to maintaining the power and influence of a nazi/his platform
Hawk Ticehurst (@hawkticehurst.com) reply parent
It's not that simple and it feels like you're intentionally ignoring that at this point. By contributing to X you: 1. Implicitly encourage your (large) following to stay on X 2. If you're following stays then even more ppl stay 3. This makes money for Elno via ads and keeps his influence very large
Hawk Ticehurst (@hawkticehurst.com) reply parent
bruh wake up www.nbcnews.com/tech/social-... www.wsws.org/en/articles/... www.washingtonpost.com/technology/2... www.disconnect.blog/p/elon-musk-... www.nbcnews.com/tech/interne...
Hawk Ticehurst (@hawkticehurst.com) reply parent
How else are we supposed to interpret your words? You seemed to take great offense to the implied statement that you're "part of a fascism machine" (aka you're still using, posting, replying, *contributing* to X) and in response you called Rich smug and self righteous. Am I missing something here?
Hawk Ticehurst (@hawkticehurst.com) reply parent
Calling someone smug and self righteous for calling out the fact that you're choosing to contribute to a platform that is controlled by *literal* nazi is an even worse look imo š§
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah to come full circle, the position on X is very surprising and frankly this whole exchange is giving the same energy as this
Andy Bell (@bell.bz) reposted
i just donāt think i can be bothered with anyone in tech is sticking out on the nazi site. let alone those who come here to claim itās ābetterā, for some unthinkable reason
Hawk Ticehurst (@hawkticehurst.com) reply parent
They don't *explicitly* call out words like "anti-capitalism" but it's heavily implied Example: "[Progressive Left believes] that most U.S. institutions need to be completely rebuilt to ensure equal rights for all Americans" Talk to most leftists and that sentiment usually entails anti-capitalism
Hawk Ticehurst (@hawkticehurst.com) reply parent
Mostly yes. But like Rich suggested there's some nuance to it. You can read more about each typology below. For example, you'll see there are a lot of places where outsider left are aligned with progressive left. www.pewresearch.org/politics/202... www.pewresearch.org/politics/202...
Hawk Ticehurst (@hawkticehurst.com) reply parent
lmaooo, X pilled behavior is what happened šµāš«
Hawk Ticehurst (@hawkticehurst.com) reply parent
Please take this quiz and I can almost guarantee you will not be categorized as leftist (or "progressive left" as the quiz calls it). www.pewresearch.org/politics/qui...
Hawk Ticehurst (@hawkticehurst.com) reply parent
Rich is saying that you're misusing the commonly understood / adopted meaning of "leftist." Your political views might lean towards to the left, but what you are describing is not "leftist."
Hawk Ticehurst (@hawkticehurst.com)
Hey @castrojo.bsky.social curious if there's any openness to shipping Bluefin with VS Code Insiders? I work on the VS Code team and need to be able to use Insiders on the daily, so would love if Bluefin included this by default. š P.S. Huge fan and happy user of the project!
Hawk Ticehurst (@hawkticehurst.com) reply parent
Ahh scratch that, thought it was more generic but it's scoped to a VS Code extension context. If you don't find anything better perhaps it could be a helpful reference for building your own thing.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Not sure if this is the type of thing you mean, but we have a package called āprompt-tsxā at VS Code that lets you define prompts using TSX
Hawk Ticehurst (@hawkticehurst.com) reply parent
Yeah extending `tr` is definitely not real life, but unfortunately using table HTML elements is a requirement of the benchmark :( Also is setting `innerHTML` in the constructor really a problem tho? The alternative is to use connectedCallback which also gets called after the DOM is loaded no?
Hawk Ticehurst (@hawkticehurst.com) reply parent
ā¦new ways of building WCs enter the fray. These new methods are very much influencing the types of WCs Iām seeing in the wild ā some of which make solid usage of JS DOM APIs. With that said, the use of `new MyElement` is definitely something I see very very very rarely. So again agree/disagree.
Hawk Ticehurst (@hawkticehurst.com) reply parent
Nice, got it. I kind of agree/disagree. For sure, *the* historical idiomatic way of building WCs is with innerHTML. Thereās endless educational materials to prove that. But I also think weāre in the middle of that definition changing or at least expanding. In the last 2 years weāve seen severalā¦