Sign in

Erik V

@verdevium.bsky.social
76 followers 93 following 222 posts

Senior Software Engineer @ Cisco · BJJ Black Belt · Dad Links: - verdevium.com - github.com/everduin94 - flotes.app - tomatillotimer.com

PostsRepliesMedia
Erik V @verdevium.bsky.social · 17/09/2026
I use this same PersistedState for virtually every feature. So this is just a small portion of the bloat. This is also an isolated test. Production data, users have significantly bigger arrays with bigger strings / objects. - It's a local first application, everything is saving to client storage.
010
Erik V @verdevium.bsky.social · 17/09/2026
It's cruft / bloat. If I set CPU throttle on 6x on a hot path you can see the application drop below 30fps and INP goes above 200ms periodically. You may say, well who cares about a 6x throttle, but a lot of my users have bad machines or run during a lot of load. - My web vitals are horrible.
111
Erik V @verdevium.bsky.social · 17/09/2026
Oooh I think I see. Using recursive proxies, the array itself could be a proxy that I could derive. And each element in the array is a proxy, so I can still bind individual items to input elements that update the source array.
010
Erik V @verdevium.bsky.social · 17/09/2026
In an e2e test, creating 10 tasks, parses/serializes around 70+ KB of data and reads from storage over 100 times. Or this other test case, I open and close multiple UI panels. I have a bunch of derives for DX. All of those derives read from the .current and you get a large number of reads.
120
Erik V @verdevium.bsky.social · 17/09/2026
Even though the state is in memory, every read goes to storage, parses, and wraps in a proxy. And the reverse for every write. I believe this more-or-less happens on every property I access via current. And if I'm storing an array, for every element.
100
Erik V @verdevium.bsky.social · 17/09/2026
Yeah this is what I'm using today. the "PersistedState" referenced at the end of your article. Not trying to sound like a turd 🤣. I LOVE runed. But, isn't this a performance footgun? This is what I'm trying to refactor away from. May just be a skill issue on my part 🤷‍♂️
200
Erik V @verdevium.bsky.social · 17/09/2026
I think maybe this is the answer for me? Controlling the setter and just doing an optimistic update on my derived in the set function. This way I could sync my state immediately, but also debounce or wait until change event for persistence. And it seems I can still use a derived data source.
		<input
			type="checkbox"
			bind:checked={() => item.complete, (checked) => saveTask({ ...item, complete: checked })} />
		<input
			type="text"
			value={item.label}
			oninput={(e) => saveTask({ ...item, label: e.currentTarget.value })} />
100
Erik V @verdevium.bsky.social · 17/09/2026
In other words, I'm trying to be much more explicit about how I access data and write to local storage. But still have the DX of my state syncing to user interactions.
100
Erik V @verdevium.bsky.social · 17/09/2026
I need a subset of my todos. Yet, I'm pulling all of them into memory all of the time. And it's leaking (largest array 800 items, I have 200 todos). Also, you can update a task title / description. PersistedState is parsing/serializing the whole array on every read/write (every key stroke).
100
Erik V @verdevium.bsky.social · 17/09/2026
Yes, write back to localstorage (and possibly db). I don't totally follow the last part. I am trying to avoid that data living on the heap all the time. (my app is 1 route) For context, today I am using PersistedState from runed library. - I am trying to refactor away from that.
100
Erik V @verdevium.bsky.social · 17/09/2026
Svelte people, please help 😅 How is this supposed to be done. A derived reads from local storage and filters. I bind a task.completed to an input for each element. But, the items are not runes / proxies. I am trying to avoid loading all of what's in local storage into a $state() rune.
let tasks = $derived.by(() => {
	const list = state_task_lists.current_task_list;
	const arr = storageGetItemArray<Task>('task-list');
	return arr.filter((task) => task.tasks_list_id === list.id);
});
110
Erik V @verdevium.bsky.social · 04/09/2026
Ouh, interesting. 👀 noaifridays.com "Can I do more than one day per week?" - "Sure, depending on how and what you do, you may find your balance with up to 7 days without AI." 🤣
noaifridays.com
No AI Fridays
A weekly ritual for software teams to unplug from AI coding assistants, prevent skill atrophy, and rediscover the joy of craftsmanship.
041
Erik V @verdevium.bsky.social · 02/09/2026
Must watch for web devs. I have fought this 100s of times and never realized what the cause was. The moment he typed the "y", I was like "Ooooohhh" 😅. - The examples in the end with the adjusted padding look just perfect. www.youtube.com/watch?v=Tdpo... by @kevinpowell.co #css #webdev
youtube.com
This CSS property fixes a problem as old as CSS
YouTube video by Kevin Powell
091
Erik V @verdevium.bsky.social · 02/09/2026
An introduction to my new tech blog. I'm hoping to load Bluesky discussions in the post directly. For now, each blog post just links to a Bluesky thread and vice versa. verdevium.com/posts/welcom... RSS: verdevium.com/rss.xml
verdevium.com
Welcome to my Blog
A brief introduction to this blog and who I am
000
Erik V @verdevium.bsky.social · 01/09/2026
New course by the threejs goat @bruno-simon.bsky.social. Instant purchase. I don't know that anyone else makes content at this size and quality, that is this affordable. threejs-journey.com/webgpu-tsl #threejsjourney
threejs-journey.com
WebGPU & TSL Course — Three.js Journey
Write shaders in JavaScript with TSL, no GLSL or WGSL required. 21 lessons of WebGPU and Three.js Shading Language.
000
Reposted by Erik V
Ilja @fubits.dev · 15/08/2026
oh this looks lovely github.com/everduin94/b...
github.com
GitHub - Everduin94/better-commits: A CLI for creating better commits following the conventional commits specification
A CLI for creating better commits following the conventional commits specification - Everduin94/better-commits
3193
Erik V @verdevium.bsky.social · 15/08/2026
BTW the knip config / action is from reading your posts / notes 😆
030
Erik V @verdevium.bsky.social · 15/08/2026
Thank you! 🙌
010
Erik V @verdevium.bsky.social · 15/08/2026
Dear gods that's satisfying. @npmx.dev makes wins like this feel like little celebrations.
1384
Erik V @verdevium.bsky.social · 13/08/2026
I can animate the moving of the controls in and out of the way just by giving them their own view-transition-name!? 😱 Whyyyy have I not been using this?
040
Erik V @verdevium.bsky.social · 13/08/2026
First time using view transitions. I always heard about them ion the context of page transitions. This is just a svelte state change. 2 lines of js and 2 lines of css, to get a pretty decent animation, for 2 elements that don't share a parent / layout.
140
Erik V @verdevium.bsky.social · 09/08/2026
30 line svelte fsm. Concept that I was wracking my braining thinking about how to handle all the edge cases, was so simple with a state machine. Shows a cover img to hide youtube iframe branding that flickers on video id change or play / pause.
	const debounce_destroyed = useDebounce(() => {
		f.send('destroyed');
	}, 7000);

	type MyStates = 'show' | 'destroyed' | 'destroying';
	type MyEvents = 'show' | 'destroyed' | 'destroying';
	const f = new FiniteStateMachine<MyStates, MyEvents>('show', {
		show: {
			destroyed: 'destroyed',
			destroying: 'destroying',
			_enter: () => {
				if (debounce_destroyed.pending) debounce_destroyed.cancel();
			}
		},
		destroyed: {
			show: 'show',
			destroying: 'destroying'
		},
		destroying: {
			_enter: async () => {
				debounce_destroyed();
			},
			show: 'show',
			destroyed: 'destroyed',
			destroying: () => {
				debounce_destroyed();
			}
		}
	});
000
Erik V @verdevium.bsky.social · 30/07/2026
runed.dev/docs
runed.dev
Introduction
Runes are magic, but what good is magic if you don't have a wand?
110
Erik V @verdevium.bsky.social · 14/07/2026
I think even more jarring, is how older models get *worse* once the new models come out. Like iphones 🤣. I use the same skills, scripts, templates, etc... every day at work with the same model, same thinking (gpt-5.4 high). 5.6 comes out, my 5.4 agent breaks the intended flow every single time.
010
Erik V @verdevium.bsky.social · 08/07/2026
Great read, thanks for sharing! I too, had no clue 😅.
010
Erik V @verdevium.bsky.social · 12/06/2026
Personal example. I think @joshwcomeau.com has one of the best blogs on the internet (www.joshwcomeau.com) If someone used AI to recreate his blog, and started *generating* posts that read *exactly* like his. Same code, same content; different trust. It's not the same. Because I don't trust it.
010
Erik V @verdevium.bsky.social · 12/06/2026
ConcernedApe, creator of Stardew Valley, references changing as a person throughout the game's 4 years of development The game would not be the same if made in 6 months, because he (the owner) would not have been the same person Go checkout it's community. 10 year old game. Large, vibrant, active.
100
Erik V @verdevium.bsky.social · 12/06/2026
How the owner thinks about the code matters. Code written by AI vs code written by you is fundamentally different. Because the perspective for the code owner is different. Even when the code itself may have produced the same outcome. This also influences community trust in the owner.
100
Erik V @verdevium.bsky.social · 12/06/2026
Neovim is an infamous fork of vim. At one very brief point in time, Vim and Neovim were the exact same *code*. But, they had one major distinction, different owners. That led to different changes, which led to different communities, which led to plugins, which led to an entirely different product.
100
Erik V @verdevium.bsky.social · 12/06/2026
Almost all code has an implicit owner and community. The perspective, opinion, motivation around the owner's view of the code, and the broader community opinion on the outcomes of that code, heavily impacts what that code *will become*. Examples...
200
Erik V @verdevium.bsky.social · 12/06/2026
news.ycombinator.com/item?id=4842... "do people realize that code is just a means to an end?" "Users don’t care whether the code was written by AI or by hand ... They care that the product works." Demonstrably untrue. Fork any project on Github. Same exact code, different adoption. (1/6)
news.ycombinator.com
Ask HN: Why is the HN crowd so anti-AI? | Hacker News
100
Reposted by Erik V
DuckDuckGo @duckduckgo.com · 29/05/2026
Since Google revealed its plans for an AI search overhaul, visits to our "No AI" search page have tripled…and they’re still rising! Want to make it your default on Chrome or Firefox? Grab our No-AI extensions and banish AI-assisted answers, chat, and AI images. (1/3)
316148605239
Erik V @verdevium.bsky.social · 28/05/2026
You can't just vibe code it in rust, slap some agents on it, sprinkle in a dash of tokyonight and call it "better" 💀
010
Erik V @verdevium.bsky.social · 27/05/2026
Maybe authors and maintainers being constrained, is sometimes a good thing? Imagine Sanderson uses agents to write the last books of Stormlight faster. Or Barone just starts vibing tons of features to Stardew Valley. I'd like to think, that those communities don't want any part of that.
020
Erik V @verdevium.bsky.social · 27/05/2026
Code is more than a static asset? It's the community, maintainers, users, the shared experience of knowing how it works and how it's used? Stardew valley without Eric Barone. Stormlight Archive without Brandon Sanderson. Either without their communities. - Same code, same words; different thing.
110
Erik V @verdevium.bsky.social · 27/05/2026
Maybe it's just opportunity cost? I won't use something if there's a better or leaner alternative (and I have the autonomy to do so). I'm not a nay-sayer. I use agents for code at work constantly. But I don't do this on my long-time side projects. It *feels* bad. At most, I use them to assist me.
130
Erik V @verdevium.bsky.social · 27/05/2026
I'm not sure what my takeaway is 😅 Maybe it's that the maintainer, and their understanding of the code (and by proxy, the application) matters? This doesn't affect big companies because their code was already a bloated unknown confusing blob?
110
Erik V @verdevium.bsky.social · 27/05/2026
Been thinking about this a lot lately. An AI generated book looks like a book, reads like a book. But, I for sure ain't reading 1300 pages of an Oathbringer knock-off by Sandon Branderson. In the same way I'll never use a vibed alternative to Obsidian or play a vibed Stardew Valley... (1/5)
110
Erik V @verdevium.bsky.social · 26/05/2026
Going to rewrite my Neovim config for v12. Going for as minimal as I can. Wondering if I should go totally scratch or start with something like MiniMax or Kickstart? github.com/nvim-lua/kic... github.com/nvim-mini/Mi...
github.com
GitHub - nvim-lua/kickstart.nvim: A launch point for your personal nvim configuration
A launch point for your personal nvim configuration - nvim-lua/kickstart.nvim
000
Erik V @verdevium.bsky.social · 21/05/2026
I see. You're saying that what he interpreting as a discount, is more likely something like a pro-rate tied to initial capacity? Pretty interesting 👀.
120
Erik V @verdevium.bsky.social · 21/05/2026
Sweet, thanks! I'll give it a read!
110
Erik V @verdevium.bsky.social · 21/05/2026
I don't totally understand this stuff. What's the discrepancy between Anthropic saying it's 71 cents to every dollar. - Compared to @edzitron.com 's claim that "based on its own affidavit from March... spent $3 to make $1 of revenue on a compute basis" www.wheresyoured.at/ai-is-too-ex...
wheresyoured.at
AI Is Too Expensive
If you liked this piece, you should subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, in...
260
Erik V @verdevium.bsky.social · 15/05/2026
Wait... Today I also learned that <...> embeds a video 🤣. IDK how I never noticed that haha. - I updated it to a video tag, which hides it, but that works for me :)
010
Erik V @verdevium.bsky.social · 15/05/2026
Checking out @npmx.dev for the first time, very fast, and looks very cool 👀 It seems like the video in my readme (that works on Github) breaks everywhere that is not Github (npmx, npm, socket). Anyone know how to get readme videos to work universally? npmx.dev/package/bett...
npmx.dev
npmx
2141
Erik V @verdevium.bsky.social · 15/05/2026
Also, I watched this after posting that, and I'm sold either way haha www.youtube.com/watch?v=Dli5...
youtube.com
I Hated Every Coding Agent, So I Built My Own — Mario Zechner (Pi)
YouTube video by Mastra
120
Erik V @verdevium.bsky.social · 15/05/2026
Oop, wasn't meant to sound like a gotcha or something 😅. I was assuming my-pi is your custom version of pi. And so I was curious what you added to pi that you find uniquely useful compared to the other harnesses / agents.
120
Erik V @verdevium.bsky.social · 14/05/2026
👀 What are some ways you use Pi differently than something like claude code or open code? I'm interested, but not sure where to start! It's kind of hard to tell what it can do that is a big value add, that is better done via pi, than by some combination of CLI / MCP / Sub-Agent / Skill / etc...
140
Reposted by Erik V
Ed Zitron @edzitron.com · 11/05/2026
That’s strange. Why are they booing? Maybe she should try being very condescending
191431105
Erik V @verdevium.bsky.social · 04/05/2026
I learn something new, or a simpler way of doing something I knew, every single lesson. Following courses this good, puts me in a better mood. It's just so fun and refreshing. This quality of content being phased out in favor of telling a robot, "make it cooler", is a bleak future.
171
Erik V @verdevium.bsky.social · 04/05/2026
Currently going through Whimsical Animations in my free-time. If you have the interest and means to buy it, I 100% recommend it. I don't believe that AI can teach you with this kind of depth + simplicity. If it seems like it can, well, it's probably just regurgitating courses like this one.
1123