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 ✂️
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
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
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
Thanks Ben!
webpro.nl
Good luck! Feel free to yell or AMA :)
webpro.nl
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
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
📊 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
webpro.nl
Lars @webpro.nl · 11d
fantastic piece that you should read as you are reading this

and i wonder, are you running your own PDS?
webpro.nl
Lars @webpro.nl · 11d
No, it went fine agreeing with the v2 changes