Coming up with the right abstraction for a component is no easy work. It takes time. Sidebar took me a week of experimenting. Input-group, several days. Field, more than a week.
I build literally hundreds of examples and keep refining until the abstraction is right, the composition reads well, and it "feels good" to write.
Then you see it used in millions of apps and the same abstractions show up in other libraries, it makes all that work worth it.
Keep going.
Noticing myself adopting a certain rhythm in AI-assisted coding (i.e. code I actually and professionally care about, contrast to vibe code).
1. Stuff everything relevant into context (this can take a while in big projects. If the project is small enough just stuff everything e.g. `files-to-prompt . -e ts -e tsx -e css -e md --cxml --ignore node_modules -o prompt.xml`)
2. Describe the next single, concrete incremental change we're trying to implement. Don't ask for code, ask for a few high-level approaches, pros/cons. There's almost always a few ways to do thing and the LLM's judgement is not always great. Optionally make concrete.
3. Pick one approach, ask for first draft code.
4. Review / learning phase: (Manually...) pull up all the API docs in a side browser of functions I haven't called before or I am less familiar with, ask for explanations, clarifications, changes, wind back and try a different approach.
6. Test.
7. Git commit.
Ask for suggestions on what we could implement next. Repeat.
Something like this feels more along the lines of the inner loop of AI-assisted development. The emphasis is on keeping a very tight leash on this new over-eager junior intern savant with encyclopedic knowledge of software, but who also bullshits you all the time, has an over-abundance of courage and shows little to no taste for good code. And emphasis on being slow, defensive, careful, paranoid, and on always taking the inline learning opportunity, not delegating. Many of these stages are clunky and manual and aren't made explicit or super well supported yet in existing tools. We're still very early and so much can still be done on the UI/UX of AI assisted coding.
@jpschroeder Just wondering if anything new is brewing for FormKit? Love the library, but noticed it’s been a bit quiet lately. Curious if there’s anything in the works! 😊
More devs in a team usually delay a product not speed it up
It's a famous law in software engineering from a book called "The Mythical Man-Month"
Man-month fallacy: You can’t just divide work by people. Software has dependencies and communication overhead
Brooks’s Law: More devs = more coordination = more delays
No silver bullet: There’s no magic tech or process that will suddenly make software 10x faster to build <----- This was written in 1975 but now we have AI that literally does make you 10x faster!
But that means big teams still make you slower
TL;DR personally I think solo founders and very lean teams working with AI will win because of basic economics, but I'm biased
This is the first time I've seen this used in production - really neat technique!
The new Stripe dev site uses a single grid layout of 24 columns and then uses subgrid nested 5-6 levels deep for all its layout.
Font Awesome making some moves right now - I'd be willing to bet we see the next wave of standards based, modern CSS/HTML UI from them
Hired Lea Verou - W3C Member, CSS Spec Author + more
Hired Zach Leat / Aquired 11ty
Hired Shoelace Devs + launching Web Awesome - UI web components
one of the reasons Svelte 5 has a rune called '$effect' (rather than something like 'watch' or 'autorun' or whatever) is to discourage you from actually using it
Check out my latest article "Server-first Web Components with DSD, HTMX, and Islands" where we take an HTML-first approach to rendering Web Components using a common MVC server framework.
* No client rendering
* Declarative HTML behaviors
* Minimal JS via islands
/cc @htmx_org
With all the new web features right on their way (view-transitions, @starting-style, calc-size(), speculation rules, style and container queries, relative color syntax, ... the list goes on and on), it's time to face it... 🫣👇
"design tools continue to fall behind CSS" was a recurring theme at @CSSDayConf
- typography features (so many!)
- scroll animation
- meaningful math tricks
- layout capabilities
- container queries / responsive capabilities
- anchor positioning
- :has() and presence awareness
- quantity queries
- scroll snap
and so much more…
it seems like design tools are competing against each other to be the best Photoshop variant. meanwhile, the web's features are pushing fast into a mega capable future and designers are blissfully unaware. (i'm aware this isn't all teams, but it's def the majority)
web designers, sit with your web developers
web developers, sit with your web designers
also, someone (i wish i could work on this) make a tool that unlocks these features for designers. help them wield these capabilities, they're super fun and very meaningful.
the delta is growing too fast between CSS and design tools, someone or something close this gap!!
If I had to pin it down to only one thing, it would be culture. There is a perfect storm of several factors that has caused the rapid descent over the last 10 or so years. Here are a few recurring themes I've seen as a consultant, trainer, and engineering leader during that time:
1. Maturity - We have an overwhelmingly junior-heavy JS community, and no clear mentorship path for these folks. This leads to over-dependence on frameworks and unhealthy hero worship of social media tech influencers. It also means that innovation is only happening within a small group and most people don't know how to solve problems and create solutions for themselves.
2. Knowledge - There is a broad lack in understanding of fundamental Web Standards, even among many Sr+ engineers. There is also a broad ignorance of the history of web tech and software engineering more broadly. This leads to poor technical decision making, both at the architecture level and the implementation level. This has also led to the adoption of overly complicated solutions to relatively simple problems.
3. Hubris. - While there has been so much talk of imposter syndrome in the industry, ironically, at least on social media, folks seem to be overly confident in their own skills, overly confident in their chosen frameworks, and overly confident in their social media celebrities.
4. Tribalism - Many individuals in our industry associate themselves with a sort of "tribe" surrounding a particular library/framework or social media influencer. This can make it nearly impossible to teach individuals new things, difficult for them to cope with changes happening in the web platform that "threaten" what they have built their career or personal brand around, and nearly impossible for them to handle criticism. Objective evaluation of alternative technologies is right out.
If we could address the culture issues, then the technical challenges would solve themselves.
Lazy-loading is like exercise. Everyone says they are doing it, few are, and those that are rarely know what they are doing.
Frameworks were not designed with lazy loading in mind. It was a late addition to their development life cycle.
We now pay the price of bloated apps.
/1
Introducing #Harmony, a new UI color palette for product designers.
Harmony combines cutting-edge color technology, providing precise UI element contrast control, extremely consistent color shades, and P3 gamut support.
It’s free and available in Figma Community.
“We’ve helped organizations build design systems in a multitude of technologies over the years, but as time goes by we now heartily recommend one specific technology to build a core design system for the web: Web Components.” - Brad Frost
https://t.co/kb8rq1yxlJ
The new W3C Web Sustainability Guidelines (WSG) 1.0 are out!
https://t.co/nFWoMxHfo4
A quick summary WRT components and sustainability can be stated as:
1. Use the native Web Platform components as much as possible.
2. When custom components are needed, prefer Web Components over framework components.
3. Leverage a Design System for consistency and reduction of unnecessary work.
Very cool to see that the report references some documentation I wrote when I was on the FAST team:
https://t.co/0O3Xkb7v5G
It also references a blog that one of my peers at the time wrote when he was researching for MSN's transition to Web Components:
https://t.co/8orKWr5VA2
A critical discipline of web development is staying connected with the evolution of the Web Platform. It's always improving, and some changes can have massive implications.
(Building sites in 2023 based on 2013 browsers is not a great approach, though surprisingly common.)
Shopify deleted 12,000 meetings this year.
Today, they went a step further with a tool that shows the $$$ cost of holding meetings.
I spoke to @nejatian (Shopify's COO) about meeting bloat and protecting craft time.
Here are 6 spicy takes from our interview 👇