Be Mindful of What You Make Easy

 Carson Gross has a post about vendoring which brought back memories of how I used to build websites in ye olden days, back in the dark times before npm.

“Vendoring” is where you copy dependency source files directly into your project (usually in a folder called /vendor) and then link to them — all of this being a manual process. For example:

  • Find jquery.js or reset.css somewhere on the web (usually from the project’s respective website, in my case I always pulled jQuery from the big download button on jQuery.com and my CSS reset from Eric Meyer’s website).
  • Copy that file into /vendor, e.g. /vendor/jquery@1.2.3.js
  • Pull it in where you need it, e.g. <script src="/vendor/jquery@1.2.3.js">

And don’t get me started on copying your transitive dependencies (the dependencies of your dependencies). That gets complicated when you’re vendoring by hand!

Now-a-days package managers and bundlers automate all of this away: npm i what you want, import x from 'pkg', and you’re on your way! It’s so easy (easy to get all that complexity).

But, as the HTMX article points out, a strength can also be a weakness. It’s not all net gain (emphasis mine):

Because dealing with large numbers of dependencies is difficult, vendoring encourages a culture of independence.

You get more of what you make easy, and if you make dependencies easy, you get more of them.

I like that — you get more of what you make easy. Therefore: be mindful of what you make easy!

As Carson points out, dependency management tools foster a culture of dependence — imagine that!

I know I keep lamenting Deno’s move away from HTTP imports by default, but I think this puts a finger on why I’m sad: it perpetuates the status quo, whereas a stance on aligning imports with how the browser works would not perpetuate this dependence on dependency resolution tooling. There’s no package manager or dependency resolution algorithm for the browser.

I was thinking about all of this the other day when I then came across this thread of thoughts from Dave Rupert on Mastodon. Dave says:

I prefer to use and make simpler, less complex solutions that intentionally do less. But everyone just wants the thing they have now but faster and crammed with more features (which are juxtaposed)

He continues with this lesson from his startup Luro:

One of my biggest takeaways from Luro is that it’s hard-to-impossible to sell a process change. People will bolt stuff onto their existing workflow (ecosystem) all day long, but it takes a religious conversion to change process.

Which really helped me put words to my feelings regarding HTTP imports in Deno:

i'm less sad about the technical nature of the feature, and more about what it represented as a potential “religious revival” in the area of dependency management in JS. package.json & dep management has become such an ecosystem unto itself that it seems only a Great Reawakening™️ will change it.

I don’t have a punchy point to end this article. It’s just me working through my feelings.


Reply via: Email · Mastodon · Bluesky

Jim Nielsen's Blog

16 Apr 2025 at 20:00

Some Love For Interoperable Apps

 I like to try different apps.

What makes trying different apps incredible is a layer of interoperability — standardized protocols, data formats, etc.

When I can bring my data from one app to another, that’s cool. Cool apps are interoperable. They work with my data, rather than own it.

For example, the other day I was itching to try a new RSS reader. I’ve used Reeder (Classic) for ages. But every once in a while I like to try something different.

This is super easy because lots of clients support syncing to Feedbin. It’s worth pointing out: Feedbin has their own app. But they don’t force you to use it. You’re free to use any RSS client you want that supports their service.

So all I have to do is download a new RSS client, login to Feedbin, and boom! An experience of my data in a totally different app from a totally different developer.

Screenshot of two RSS reader clients, both with the same unread articles (one is Reeder and the other is NetNewsWire).

That’s amazing!

And you know how long it took? Seconds. No data export. No account migration.

Doing stuff with my blog is similar. If I want to try a different authoring experience, all my posts are just plain-text markdown files on disk. Any app that can operate on plain-text files is a potential new app to try.

Screenshots of iA Writer and VSCode on macOS, both with the same list of plain-text markdown files.

No shade on them, but this why I personally don’t use apps like Bear. Don’t get me wrong, I love so much about Bear. But it wants to keep your data in its own own proprietary, note-keeping safe. You can’t just open your notes in Bear in another app. Importing is required. But there’s a big difference between apps that import (i.e. copy) your existing data and ones that interoperably work with it.

Email can also be this way. I use Gmail, which supports IMAP, so I can open my mail in lots of different clients — and believe me, I've tried a lot of email clients over the years.

  • Sparrow
  • Mailbox
  • Spark
  • Outlook
  • Gmail (desktop web, mobile app)
  • Apple Mail
  • Airmail

This is why I don’t use un-standardized email features because I know I can’t take them with me.

It’s also why I haven’t tried email providers like HEY! Because they don't support open protocols so I can’t swap clients when I want.

My email is a dataset, and I want to be able to access it with any existing or future client. I don't want to be stuck with the same application for interfacing with my data forever (and have it tied to a company).

I love this way of digital life, where you can easily explore different experiences of your data. I wish it was relevant to other areas of my digital life. I wish I could:

  • Download a different app to view/experience my photos
  • Download a different app to view/experience my music
  • Download a different app to view/read my digital books

In a world like this, applications would compete on an experience of my data, rather than on owning it.

The world’s a big place. The entire world doesn’t need one singular photo experience to Rule Them All.

Let’s have experiences that are as unique and varied as us.


Reply via: Email · Mastodon · Bluesky

Jim Nielsen's Blog

14 Apr 2025 at 20:00



Refresh complete

ReloadX
Home
(134) All feeds

Last 24 hours
Download OPML
A Very Good Blog by Keenan
A Working Library
Alastair Johnston
Anna Havron
*
Annie
*
Annie Mueller
Apple Annie's Weblog
*
Articles – Dan Q
*
Baty.net posts
bgfay
*
Bix Dot Blog
*
Brandon's Journal
Chris Coyier
Chris Lovie-Tyler
Chris McLeod's blog
Colin Devroe
*
Colin Walker – Daily Feed
Content on Kwon.nyc
Crazy Stupid Tech
daverupert.com
Dino's Journal 📖
dispatches
dominikhofer dot me
Excursions
Flashing Palely in the Margins
Floating Flinders
For You
*
Frank Meeuwsen
frittiert.es
Hello! on Alan Ralph
*
Human Stuff from Lisa Olivera
inessential.com
*
jabel
Jake LaCaze
*
James Van Dyne
*
Jan-Lukas Else
*
Jim Nielsen's Blog
Jo's Blog
*
Kev Quirk
lili's musings
*
Live & Learn
Lucy Bellwood
Maggie Appleton
*
Manton Reece
*
Manu's Feed
*
maya.land
*
Meadow
Minutes to Midnight RSS feed
Nicky's Blog
*
Notes – Dan Q
On my Om
Own Your Web
Paul's Dev Notes
*
QC RSS
rebeccatoh.co
reverie v. reality
*
Rhoneisms
ribbonfarm
Robert Birming
*
Robert Birming
Robin Rendle
Robin Rendle
Sara Joy
*
Scripting News for email
Sentiers – Blog
*
Simon Collison | Articles & Stream
strandlines
Tangible Life
the dream machine
*
The Torment Nexus
*
thejaymo
theunderground.blog
Thoughtless Ramblings
tomcritchlow.com
*
Tracy Durnell
Winnie Lim
*
yours, tiramisu
Žan Černe's Blog

About Reader


Reader is a public/private RSS & Atom feed reader.


The page is publicly available but all admin and post actions are gated behind login checks. Anyone is welcome to come and have a look at what feeds are listed — the posts visible will be everything within the last week and be unaffected by my read/unread status.


Reader currently updates every six hours.


Close

Search




x
Colin Walker Colin Walker colin@colinwalker.blog