Hawk Ticehurst
UX Engineer @vscode.dev. He/Him
🕸️ hawkticehurst.com
📍 Seattle, WA
- [Not loaded yet]
- [Not loaded yet]
- 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?
- [Not loaded yet]
- 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...
- actually there are some cool client-side patterns w/ astro components. any script tags you use get deduped + bundled so you can e.g. define a custom element and use it in the astro component for client-side interactivity. technically that’s “your own <script>” but it’s more encapsulated + composable
- 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
- VSCode can offer JavaScript refactorings which take additional input from the user (see the first gif, it takes a new name). We want to have similar for Gleam, but we can't work out a way to do this with language server protocol. Is it possible? Help! 💜 code.visualstudio.com/docs/typescr...
- 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 (?)
- [Not loaded yet]
- 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
- [Not loaded yet]
-
View full threadOh 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.
- 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.
- 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
- 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
- [Not loaded yet]
- 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
- [Not loaded yet]
- Late to the party, but this so cool! Love this idea so much. Psyched to see this expand to more cities
- Congrats to @zachleat.com for expanding into the menswear business. Huge!! 🔥
- ICE is a modern-day Gestapo
- Video of the international student at Tufts being arrested by "federal authorities" in Massachusetts has been released and it's terrifying. They're not even uniformed officers. Just secret police thugs in hoodies and masks. From WCVB: youtu.be/PuFIs7OkzYY
- 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.
- 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.
- [Not loaded yet]
- “Chrome” or sometimes “Shell”
- [Not loaded yet]
- [Not loaded yet]
- Fluent web components port to Go, when?!
- [Not loaded yet]
- hyped 🔥👀
- a few words that I think are important to say on diversity, equity and inclusion in open source (and more generally) much love ❤️ roe.dev/blog/diversity
- > 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 😉💚
- PSA for @svelte.dev users: we're planning to change how effect teardowns work to eliminate a common gotcha that affects signal-based frameworks. If the new behaviour would create problems for you, please let us know! github.com/sveltejs/sve...
-
View full threadIt'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
- 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
- [Not loaded yet]
- 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...
- [Not loaded yet]
- 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?
- Yeah to come full circle, the position on X is very surprising and frankly this whole exchange is giving the same energy as this
- 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 🧐
- [Not loaded yet]
- 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
- [Not loaded yet]
- 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...
- [Not loaded yet]
- lmaooo, X pilled behavior is what happened 😵💫
- 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."
- 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...
- 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!
- Has anyone written a JSX -> system prompt library? node-deepresearch would genuinely benefit so much from it. Endless string interpolation, impossible to grok what's going on. A proper component model for system prompts would be pretty convenient.
- 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
- 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.
- [Not loaded yet]
- [Not loaded yet]
- 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?
- 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…
- …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.
- [Not loaded yet]
- Ahh yes okay I’m oriented, thank you. Agreed. Outside of hyper-optimized benchmark code I’d wager the ideal/robust solution is to have both the ability to call some type of fast initialization method *and* props/attrs that do the same thing.
- [Not loaded yet]
- Using `new MyComponent` is definitely the less conventional choice, but otherwise felt pretty good about the WC implementation. Curious what you think is pushing the boundaries of “idiomatic”? And lol me too. Working on a runtime-based solution rn but may end up introducing a compiler — tbd 🤷🏻♂️
- [Not loaded yet]
- Yes @tbroyer.ltgt.net clarified that the spec doesn’t disallow constructor args in a response to this thread! Could you explain your thinking on why this isn’t a good idea a bit more tho? Not quite following what “passed by the parser” means.
- Totally agreed actually. Don’t think I’ll be squeezing extra perf out of custom element prop initialization any time soon 😅 So yes, +1 to the idea that if you want a declarative tool today for building web apps that are performant you should absolutely reach for a Solid or Svelte
- The direction I’m actually interested in heading now is an opinionated declarative abstraction built on top of these faster imperative methods of building WCs I discovered. It’ll be fun to see if I can create something declarative using these methods that still has competitive perf.
- [Not loaded yet]
- Oh amazing! That’s really good to know, thanks for clarifying! I’ll add those implementations back to the repo and rerun the benchmark.
- P.S. Check out this thread to get fully caught up on my recent work benchmarking web component performance.
- P.P.S. @ryansolid.bsky.social @rich-harris.dev If you have the interest and time I’d love a sanity check on the Solid/Svelte implementations in this benchmark. I tried my best to be idiomatic and performant, but want to make sure I didn’t do something bad/unnecessarily less performant.
- All in all, WCs are fast as hell. Even if nested. Even at scale.
- A big caveat: This comparison is still a bit apples to oranges since Solid/Svelte are declarative frameworks while these WCs are imperative JS. Solid/Svelte are doing more stuff and still achieve crazy impressive perf. So perhaps the next test will be to see how far I can push Stellar ;)
- Fun side note: You can technically get *even faster* WCs if you pass args directly into the class constructor like so: ``` const r = new Row(id, label); ``` But sadly this is not allowed by the spec (plus the WC will break if `createElement` is used since there’s no way to pass args with that API)
- I’m also generally pretty happy with the final WC implementations. They are fast but are also pretty dang readable/idiomatic as far as WCs go. There was no need for fancy perf trickery or JS dark magic.
- I’m sure most are very curious about the “fast” WC implementations and it’s wildly simple. Instead of using `document.createElement` to create WCs, use the WC class directly: `new MyComponent()`. The cost of `createElement` is no joke as you get to bigger scales!
- Another discovery for creating fast WCs is to avoid using props/attrs for initialization. This is faster… ``` const r = new Row(); r.render(id, label); ``` Than this… ``` const r = new Row(); r.rowId = id; r.rowLabel = label; ```