2024-12-03 03:00:00
Which is best?
This list could go on forever. Zoom in to just the JavaScript ecosystem and its overwhelming:
Even here, the list could go on forever: db libraries, task runners, testing libraries, UI metaframeworks, server frameworks, state management libraries, etc.
Module systems — ESM, CJS, AMD, UMD — are a great example: how could we truly understand any of them individually without having had all of them?
We need opposing options. They exist not solely in opposition to one another but as contrast.
We must have a diversity to understand and discuss which is most fit for a given context. The web is big! “It depends”!
How do you understand one thing without the contrast of its opposite? What is white without black? How do you understand salty without sweet? One, by definition, excludes the other, which gives form and shape to the definition of each.
And guess what? Whichever you choose, you’ll likely choose poorly. That’s ok. Choosing poorly is where growth happens — if you let it.
Silver bullets are for killing werewolves not building technology.
2024-11-28 03:00:00
There’s a post on htmx.org about why htmx wasn’t the right fit for a particular project (which is dope, we need more websites that admit their thing might not be the right thing all the time).
The bit on AI being unfamiliar with their tool choice piqued my interest:
It’s worth noting that AI tools are intimately familiar with Next.js and not so much with htmx, due to the lack of open-source training data. This is similar to the issue Rails faces. While not a dealbreaker, it did impact our development speed and the ease of finding solutions to problems. When we encountered issues, the wealth of resources available for React/Next.js made troubleshooting much faster.
That’s an interesting phenomenon: a big part of tool choice is popularity because it shapes your experience finding support. The more popular the tool, the more probable your question has already been answered.
“How to get started with Next.js” likely has tons of search results — and therefore, one can assume, a large set of training data to inform the LLM’s answer.
But that same question for an obscure tool yields far fewer search results (if any) — and therefore, one can assume, a sparse set of training data to inform the LLM’s answer.
The point I’m getting to is this: the experience of asking a question on a niche topic or tool is different with an LLM than it is with a search engine.
With a search engine, fewer quality results means something. But an LLM is going to spit back a response regardless of the quality of training data. When the data is thin, a search engine will give you nothing. An LLM will give you an inaccurate something.
For example, an LLM may have no idea how to generate code for a novel syntax on top of JavaScript, but because it looks a lot like JavaScript and borrows a lot of the same idioms, it’ll go ahead and generate something for you — accuracy be damned.
This seems like a case where nothing is better than something because nothing means something.
LLMs — at least in my experience — haven’t really cued in on this. They’ll try their darnedest to give you something when nothing would be more instructive. (What’s that famous quote? “Better to remain silent and be thought a fool than to speak out and remove all doubt.” LLMs didn’t get the memo on that one.)
Rather than saying “I don’t know, there’s not enough on this subject to formulate a working answer” — which is what you could infer from an empty search results page — an LLM will give you something that looks right. Then you have to go shoot yourself in the foot to learn it’s not right, because you didn’t know enough to know it was wrong.
2024-11-25 03:00:00
I keep a personal collection of beautiful macOS app icons, which might make you ask: “How does he get those icons?”
For apps in the Mac App Store, I have my ways. I don’t necessarily want to write about them because I’m semi-afraid Apple would frown on my doings and close off my ways.
Don’t get me wrong, I’m not being nefarious. If you spent 30 minutes browsing through the publicly-accessible contents of a link from the App Store, you could probably figure out what I’m doing.
I’ll just leave it at that.
For apps that aren’t in the Mac App Store, I’ll show you a few of the ways I grab icon artwork.
First off, you need the app itself. If that means you have to pay for it to download the DMG file, well sorry, I have no magic trick there. You just have to pay for it — or email the developer and ask for it.
But once you get your hands on the DMG, you can open that and do some sleuthing.
Opening a DMG will often get you a standard macOS app install screen, like this:
From there you can right click and “Get Info”:
Then click-to-focus the application icon in the upper-right of the “Get Info” panel and CMD+C:
Beautifully, this will copy the application’s .icns
file to your clipboard. From there, you can open Preview and go “File -> New From Clipboard” and it will open the .icns
file in Preview with all the different icon sizes!
For me, I want the biggest one (1024×1024 pixels), so I find that and then go “File -> Export” to save it as a transparent PNG to disk.
And violá, the app icon in a format I want!
However! Sometimes this won’t get you exactly what you want.
For example, I downloaded the wonderful TablePlus app, opened the DMG, did “Get Info”, and found an app icon that was different from the install app (and the one that shows in your dock).
Sometimes this can happen. Sometimes you won’t be able to find the icon you want using this method.
When I hit this roadblock, I turn to finding the Assets.car
file and plugging it into a tool like Asset Catalog Tinkerer by Guilherme Rambo.
With this method, you can right click the app and instead of “Get Info” do “Show Package Contents” and find .car
files (I’m not a Mac developer, but it seems like the convention is to stick it at “Contents -> Resources -> Assets.car”). Then you can drag them into Asset Catalog Tinkerer and hopefully find what you’re looking for. In my case, with TablePlus, I was able to find the 1024 pixel icon I was looking for.
If you ever find yourself needing to nab the icon for a macOS app, hopefully this little guide is helpful.
And if you’re just reading this because you love poking around at the internals of things, good on you. I love that stuff too!
Reply via: Email :: Mastodon :: Twitter
Tagged in: #iconGalleries
2024-11-21 03:00:00
When my site analytics reported a large number of inbound traffic from Hacker News clones, I got curious and started clicking links.[1]
I like to visit links. I am connoisseur of it. I love the feeling of landing on something you didn’t expect — which is precisely what happened.
I landed on a site that had one of those Cloudflare-esque “prove you're human” captchas. That didn’t seem particularly abnormal. Lots of website owners these days use them for protection against malicious activities like DDoS attacks.
Anyhow, the page had a little graphic that said: “Press ‘Allow' to prove you are not a robot.”
I sat there for a moment looking for a button, but couldn’t find one. “Where’s the “Allow” button?” I thought.
A few seconds later, Safari’s native permission dialog popped up asking for permission to send me notifications!
I immediately thought, “Ah, hell no!” and ran away from that website. That’s sneaky, leveraging tools site owners use to protect themselves — and therefore normalize for their users — as a weapon.
I hate this crap.
But one of the beautiful things about browser security is that a lot of people work really hard to make visiting any website in the world safe. Granted there are caveats to this statement, but it’s cool you can mostly sleep at night doing a GET to any domain. (Whereas, for example, it is very much not safe to install any package in the world from npm.) That’s great news for link hoppers like me.
THANK YOU browser makers!
Reply via: Email :: Mastodon :: Twitter
Tagged in: #grateful
2024-11-19 03:00:00
I think it’s endearing when people name their blog.
I’m not talking about branding, like people do with professional blogs or newsletters.
I’m talking about personal blogs that people name out of care and idiosyncrasy.
It’s endearing, because you brand things you own, you name things you cherish.
We didn’t brand our family cat. And we don’t call him “The Nielsen’s cat” (though that’s probably what our neighbors call him). We named him. We call him “Fluffy”.
Don’t get me wrong, I like how personal it is when a personal blog is just someone’s name (that’s what mine is).
But I also love when folks add a little name or subtitle to communicate their personal feelings about their blog, e.g. “Little nothings: the blog of so-and-so”.
Here’s a few examples out in the wild of people I follow:
My sister had a blog for a long time — though sadly not anymore [insert comment here from old man yelling at cloud about the demise of blogging in the wider public].
I can’t remember the name of her blog, but the subtitle was “tasting life twice; in the moment and in retrospection” which was a nod to Anaïs Nin. I think about that quote probably once a year — I love stuff like that!
Yeah, I know, I’m one to talk. My blog is titled “Jim Nielsen’s Blog” which, hey, at least it’s clear. Maybe I’d name it if I could land on a name I like, but I’m a fickle namer so don’t hold your breath. Perhaps I could start with a subtitle first, something like:
Oooof. Maybe I better leave this art to others.
You have a blog you follow whose name you love? Let me know — or even better, blog about it!
2024-11-16 03:00:00
Why do we write?
We write, in part, because our own reading was given as a gift to us and we want to extend that same magic we received to others. Here’s Mandy Brown (and my notes) in a recent article:
The more compelling and interesting reason that most writers seek out readers is, I think, less utilitarian: we receive our writing as a gift, and so it must be given in turn. We write because something needs to be expressed through us, and only by giving the writing to a reader is that need fulfilled
You write because something needs to be expressed through you, which is something nobody else in the world can do.
(Contrast this with writing that is expressed through an LLM that everyone else in the world has access to.)
By giving our writing to a reader its is purpose fulfilled.
In other words, reading and writing has traditionally been an act that takes place in the context of people. Its purpose is fulfilled through humans. AI bots could read and write to each other all day long, and what is being “fulfilled” in that scenario?
Reading and writing is for expression and connection between humans. Its purpose is fulfilled in that context. Anything other than this and it is purposeless; that is, done in a way that violates the reason for its existence in the first place.
Does that make sense? I’m trying to make sense of it myself. Maybe there’s something here — maybe not. But Mandy’s piece got me thinking.
Reading and writing is a human-centric exercise because it deals with the interpretation, exchange, and expression of consciousness which is an attribute that machines do not possess — “yet” some will say, and to that I say “lol”.