Gamepad steamdeck
Ada rekomen gamepad buat steamdeck?
Saat ini main sendiri, sekarang mau main sama bocil.
Yang sekiranya enak+awet.
Btw bocil SD 8th
Ada rekomen gamepad buat steamdeck?
Saat ini main sendiri, sekarang mau main sama bocil.
Yang sekiranya enak+awet.
Btw bocil SD 8th
This started selfishly: I had a personal project that needed an in-app video editor with a real timeline (multi-track, draggable clips, scrubbing playhead — the CapCut/Premiere kind). I went looking for something in the Svelte ecosystem and… came up empty. Plenty of React stuff, basically nothing for Svelte 5. So I built my own inside the project, and it grew big enough that I pulled it out into a standalone, host-agnostic component to reuse (and hopefully save someone else the same search).
The parts I expected to be easy/hard were completely backwards:
- Ripple / roll / slip edits — getting neighbor clips to react without the timeline feeling janky was the real fight.
- Playhead ↔ playback sync — keeping scrub position, native <video>/<audio>, and requestAnimationFrame all agreeing.
- Undo/redo over deeply nested project state — fiddly to keep snappy.
- DOM preview vs canvas/WebGL — went DOM-first for live scrubbing; still unsure where that ceiling is.
Since I only built what my project needed, I'd love a sanity check from people who actually use or build editors:
- What's the one feature you'd refuse to live without in a timeline editor? And the flip side — what sounds essential but you never actually touch?
One small thing keeps coming back — send an OTP, and the "Resend" button needs a cooldown so people don't spam it. I wanted a small countdown for that and couldn't find one that felt right for Svelte 5. So that little resend timer turned into a reusable component.
Meet @ariefsn/svelte-countdown. The whole idea: the component owns the timer logic, you own the rendering. It hands you the state through a children snippet and stays out of your way — no styles, no layout assumptions.
The exact thing I needed — a resend cooldown:
<Countdown value={30} autoStart>
{#snippet children(time, seconds)}
{seconds > 0 ? `Resend in ${seconds}s` : 'Resend code'}
{/snippet}
</Countdown>
Or count down between two dates (e.g. a launch timer):
<Countdown value={{ from, to }}>
{#snippet children(time, seconds)}
{time.minutes}:{time.seconds}
{/snippet}
</Countdown>
The snippet gives you both the raw remaining seconds and a broken-down time (years → seconds), so you can render anything from a bare number to a full clock. You can bind:this for manual start / stop / reset, plus onStart / onTick / onFinish callbacks.
Svelte 5 only, zero deps.
Repo: https://github.com/ariefsn/svelte-countdown
Playground: https://svelte.dev/playground/cb0696f58c614f7cbb99109544fe0950?version=latest
Open to feedback — especially whether the snippet API feels natural, and edge cases I should think about (pausing mid-count, very large ranges, timezones).
Been spending quite a bit of time with Svelte 5 + runes recently.
One thing I noticed is that I kept rewriting the same small utilities across projects:
So I started putting them into a small reusable collection for myself.
Mainly trying to make them:
Curious what utilities other Svelte developers are missing right now with Svelte 5?
Still figuring out good patterns for reusable runes-based utilities, so I’d love to hear opinions from others building with Svelte 5.
After months of manually deleting things like:
- node_modules
- Docker cache
- Xcode DerivedData
- Playwright/Cypress browsers
- pnpm/yarn/npm/bun caches
- browser caches
- Android/iOS build artifacts
I built a CLI for it in Go, called `dust`.
Features:
- macOS + Linux
- single static binary
- interactive TUI (Bubble Tea)
- dry-run by default
- project scanner for stale build artifacts
- supports cleaners across dev tools, browsers, editors, etc.
I wanted to avoid was blindly `rm -rf`-ing projects, so for some stacks it prefers native clean commands instead, eg:
- `flutter clean`
- `cargo clean`
- `go clean`
- `dotnet clean`
- etc.
Would love feedback from other Go devs.
Repo: