Lars
@webpro.nl
2.3K followers 260 following 1.2K posts
Independent developer/architect. JavaScript/TS, DX, automation, tooling, performance & OSS. Arch/Linux enthusiast. 🏡 https://webpro.nl 🦋 https://webpro.blue ✂️ https://knip.dev 📊 https://try.venz.dev 🔠 https://wooordle.webpro.nl 🔣 https://ansi.tools
Posts Media Videos Starter Packs
Pinned
webpro.nl
Lars @webpro.nl · Aug 28
me, a relentless refactorer

webpro.nl/hire-me

i have 1 or 2 days a week availability to untangle & fresh up any JavaScript or TypeScript codebase ✂️
Reposted by Lars
johnnyreilly.com
"If I Had More Time, I Would Have Written a Shorter Letter" - this is a memo that AI coding tools have yet to to take on board. knip.dev totally has though. I just used it to put an AI generated codebase through the deadwood colander and I'm very happy with the results!
Declutter your JavaScript & TypeScript projects
Project linter to find unused dependencies, exports and files
knip.dev
webpro.nl
Lars @webpro.nl · 17h
Thanks John, very nice to hear and glad it's useful! There's always room for improvement though, feel free to share where we could "write it shorter" ✅
webpro.nl
You certainly have a good point, but so far quality and convenience actually go up. For instance I've installed pi-hole, and navidrome to stream my music
webpro.nl
Recently bought this $100 mini pc (N95) and it's been so great for learning, hacking and trying out things like self-hosting and homelab stuff, linux distros, install scripts and what have you. Whatever works might end up on the actual NAS to further ungoogle, unflix, unspotify, etc.
webpro.nl
Lars @webpro.nl · Jun 30
Ungoogling hard here, got rid of Drive and set DDG as default search engine

Next up are Gmail (personal) and Chrome ✌️
webpro.nl
Thank you, Cyle! And for your significant contribs as well, much appreciated 🙏
Reposted by Lars
tkdodo.eu
🗣️ My talk "Decluttering Sentry - One Knip at a Time" from @react-prague.bsky.social is now available on YouTube

✂️ This is a real-life story (with ups and downs) about how we used knip by @webpro.nl at @sentry.io to delete 20k lines of unused code and now run it in CI so it never happens again 🎉
Decluttering Sentry: One Knip at a Time | Dominik Dorfmeister
YouTube video by React Prague
www.youtube.com
webpro.nl
Fantastic! Enthusiastic people and deleted code 👌 Thanks for spreading the joy ✂️

Tbh it's great to see how Knip handles the Sentry codebase. Just two nits: dynamic imports and auto-fix are supported now.
webpro.nl
Yeah, I guess! That was just the one I've stumbled upon and stuck with. I do like the ability to set hex color codes in PanWriter 🎨
webpro.nl
📝 Digging the distraction-free @calmlywriter.com app

🧘‍♂️ www.calmlywriter.com
webpro.nl
If I can do it you can do it 💯
Reposted by Lars
kojamf.bsky.social
Dr. Jane Goodall filmed an interview with Netflix in March 2025 that she understood would only be released after her death.
webpro.nl
✂️ Knip has the machinery in place to nail all of this

the solution is usually to improve or add a plugin (or a tiny bit of user config if not following conventions)

💯 so please file issues or open pull requests and have knip nail more cases for y'all

from: johnjames.blog/posts/cleani...
excerpt from the linked article, it reads:

what knip nailed, and where it didn’t

Good at common React and server app entry points, and lots of config conventions. Not great when usage is indirect or only happens in scripts or CI. That’s fine. Humans still have jobs.
webpro.nl
Lars @webpro.nl · 10d
so keeping an eye on this
trueadm.dev
RippleJS has improved quite a bit! 🔥

- new reactivity syntax that uses `track` and @
- support for index and keyed for loops
- `clsx` built in to class attributes
- #[] and #{} shorthand for TrackedArray and TrackedObject - <head> support
- many, many bug fixes
export component App() {
  // This is a tracked array using #[] syntax
  let cities = #['London', 'New York', 'Tokyo', 'Sydney'];

  // index and key syntax has shipped
  for (const city of cities; index i) {
    <div>{i + ' - ' + city}</div>
  }

  <button onClick={() => {
    cities.push(randomCity());
  }}>{"Add random city"}</button>

  <head>
    <title>{"You can also update the title!"}</title>
  </head>
}
webpro.nl
Lars @webpro.nl · 10d
That's great. Knip might make you think :)

Seeing tons of PRs where folks end up doing all sorts of refactorings for the better.
webpro.nl
Lars @webpro.nl · 11d
Thanks Ben!
webpro.nl
Lars @webpro.nl · 11d
Good luck! Feel free to yell or AMA :)
webpro.nl
Lars @webpro.nl · 11d
Not bad at all! I'd say even with a few lines added it's still a net win over time and prevent regressions from creeping in. I might be slightly biased, though 😅
Reposted by Lars
43081j.com
another new release 🎉

fast-slice-ansi is a super fast, tiny lib for String#slice but "visually" (based on how it'd render in a term)
GitHub - 43081j/fast-slice-ansi
Contribute to 43081j/fast-slice-ansi development by creating an account on GitHub.
github.com
webpro.nl
Lars @webpro.nl · 11d
thanks again! what a boost 🚀
Reposted by Lars
dubroy.com
oooh, this looks super useful.
A heading reading "JSON with labels and numbers", followed by the following monspace-formatted text:

[
  ["Bananas", 5],
  ["Apples", 4],
  ["Oranges", 3]
] Bar chart comparing fruit quantities across three categories. The chart shows Bananas with the highest value at 5 units (purple bar), Apples with 4 units (pink bar), and Oranges with 3 units (teal bar). The y-axis shows "Units" ranging from 0 to 5.5, and the x-axis shows "Run #". A legend on the right identifies the three fruit types with corresponding colors. Below the chart, there are checkboxes for each fruit type, and statistical comparisons showing that Oranges are 1.33 times lower than the highest value and 1.67 times lower than another reference point
webpro.nl
Lars @webpro.nl · 11d
📊 Fixed a few bugs in Venz this morning ☕

New to Venz? It's the easiest way to create SVG charts from all sorts of data, such as hyperfine or mitata test results or just lists of numbers (and optionally labels). Create shareable URLs. Check out the examples at try.venz.dev/about

try.venz.dev
Venz
Easy and accessible dataviz
try.venz.dev