frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: Boing

https://boing.greg.technology/
494•gregsadetsky•10h ago•91 comments

Show HN: Real-time system that tracks how news spreads across 200k websites

https://yandori.io/news-flow/
84•antiochIst•4d ago•23 comments

Show HN: Mitsuki, a Python web framework as fast as Node or Java

https://github.com/DavidLandup0/mitsuki
3•DavidLandup0•1h ago•0 comments

Show HN: ReadyKit – Superfast SaaS Starter with Multi-Tenant Workspaces

https://readykit.dev/
2•level09•6h ago•0 comments

Show HN: SolveMyPainPoint – A single place to post and discover real problems

https://www.solvemypainpoint.com/
2•Chrizzby•1h ago•0 comments

Show HN: Network Monitor – a GUI to spot anomalous connections on your Linux

140•grigio•6d ago•48 comments

Show HN: Nano PDF – A CLI Tool to Edit PDFs with Gemini's Nano Banana

https://github.com/gavrielc/Nano-PDF
140•GavCo•17h ago•30 comments

Show HN: Best Black Friday Deals [Mega List]

https://www.blackfridaydeals.directory
2•bfdd•2h ago•0 comments

Show HN: Explore what the browser exposes about you

https://neberej.github.io/exposedbydefault/
245•coffeecoders•5d ago•85 comments

Show HN: MTXT – Music Text Format

https://github.com/Daninet/mtxt
4•daninet•3h ago•0 comments

Show HN: Let Claude Code call other LLMs when it runs in circles

https://github.com/raine/consult-llm-mcp
2•rane•4h ago•0 comments

Show HN: Zero-power photonic language model–code

https://zenodo.org/records/17764289
13•damir00•19h ago•5 comments

Show HN: Glasses to detect smart-glasses that have cameras

https://github.com/NullPxl/banrays
495•nullpxl•2d ago•188 comments

Show HN: No Environment Setups Anymore

https://www.gitarsenal.dev/
15•rohan2003•18h ago•12 comments

Show HN: Mu – The Micro Network

https://github.com/asim/mu
61•asim•6d ago•41 comments

Show HN: Choose your own adventure style Presentation

https://github.com/Skarlso/adventure-voter
58•skarlso•1w ago•9 comments

Show HN: An LLM-Powered Tool to Catch PCB Schematic Mistakes

https://netlist.io/
50•wafflesfreak•1d ago•28 comments

Show HN: KiDoom – Running DOOM on PCB Traces

https://www.mikeayles.com/#kidoom
358•mikeayles•4d ago•49 comments

Show HN: Pulse 2.0 – Live co-listening rooms where anyone can be a DJ

https://473999.net/pulse
81•473999•1d ago•30 comments

Show HN: I built an interactive HN Simulator

https://news.ysimulator.run/news
535•johnsillings•5d ago•214 comments

Show HN: I made a free log anonymizer in the browser

https://www.getloglens.com/tools/log-sanitizer
3•wazzaaaa•15h ago•4 comments

Show HN: ClearHearAI-The Essential App for Hearing Impaired and Deaf Communities

https://clearhearai.com/
2•justinos•15h ago•0 comments

Show HN: Rust CLI validates scientific datasets for DOE's Genesis Mission

https://github.com/clay-good/genesis-preflight
2•hireclay•16h ago•0 comments

Show HN: MacGlow – macOS app to sync brightness across Mac and all Monitors

https://www.lovi.sh/macglow
6•lovish888•23h ago•2 comments

Show HN: MkSlides – Markdown to slides with a similar workflow to MkDocs

https://github.com/MartenBE/mkslides
76•MartenBE•3d ago•15 comments

Show HN: Runprompt – run .prompt files from the command line

https://github.com/chr15m/runprompt
131•chr15m•2d ago•48 comments

Show HN: Era – Open-source local sandbox for AI agents

https://github.com/BinSquare/ERA
62•gregTurri•3d ago•18 comments

Show HN: I turned algae into a bio-altimeter and put it on a weather balloon

https://radi8.dev/blog/stratospore/
140•radeeyate•1w ago•13 comments

Show HN: SyncKit – Offline-first sync engine (Rust/WASM and TypeScript)

https://github.com/Dancode-188/synckit
87•danbitengo•2d ago•36 comments

Show HN: Spikelog – A simple metrics service for scripts, cron jobs, and MVPs

https://spikelog.com
35•dsmurrell•3d ago•17 comments
Open in hackernews

Show HN: Boing

https://boing.greg.technology/
492•gregsadetsky•10h ago

Comments

satvikpendem•10h ago
Very fun and nostalgic. The head of the boinger doesn't seem to exactly follow the cursor/finger however, at least on mobile, it always arcs.
prodigycorp•9h ago
i love this. it reminds me of simpler times when we’d have iphone apps/games that would explore a single mechanic and implement it really well.
ethmarks•9h ago
I noticed that the boing sound gets deeper and lower with smaller-magnitude boings. Is the boing audio generated procedurally/realistically in response to the physics of the boing, or is just playing a premade boing sound effect that's dynamically pitch shifted?
junon•9h ago
The original is pretty low, it appears to be sped up. Check the network panel.
catapart•9h ago
fantasitic
junon•9h ago
Love this. Had to cheat, naturally.

    setInterval(()=>{const canvas=document.getElementById('canvas');const startX=266;const startY=198;const rect=canvas.getBoundingClientRect();const startClientX=rect.left+startX;const startClientY=rect.top+startY;let endClientX,endClientY,distance;do{endClientX=Math.random()*window.innerWidth;endClientY=Math.random()*window.innerHeight;const dx=endClientX-startClientX;const dy=endClientY-startClientY;distance=Math.sqrt(dx*dx+dy*dy)}while(distance<25);const dispatchMouseEvent=(type,target,clientX,clientY)=>{const event=new MouseEvent(type,{view:window,bubbles:true,cancelable:true,clientX:clientX,clientY:clientY,screenX:clientX+window.screenX,screenY:clientY+window.screenY,buttons:type==='mouseup'?0:1,button:0});target.dispatchEvent(event)};dispatchMouseEvent('mousedown',canvas,startClientX,startClientY);setTimeout(()=>{dispatchMouseEvent('mousemove',window,endClientX,endClientY);setTimeout(()=>{dispatchMouseEvent('mouseup',window,endClientX,endClientY)},1);},1);},1);
jesse__•7h ago
take my upvote. That's hilarious
ngkw•7h ago
I love this.
meesles•6h ago
BoingBoingBoingBoingBoing
blensor•3h ago
I don't think you need to move the mouse, you just need to click slightly offcenter while still bein inside the ball.
junon•1h ago
I was looking at the source and it appeared there was special handling on the mousemove event. I also had to introduce timeouts, otherwise it wouldn't work (not entirely sure why). So was being safer since I didn't want this to become a time sink :D
InsomniacL•3h ago
Waiting for somebody to write the code to recreate the Star Wars Imperial March: https://www.youtube.com/watch?v=-NDLlWtudpE
Bewelge•2h ago
Almost gave up getting this to work...

(function () { function rateToDistance(rate) { const minR = 0.09; const maxR = 4.65; if (rate < minR) rate = minR; if (rate > maxR) rate = maxR; const t = (rate - minR) / (maxR - minR); return 400 * t; } function dispatchMouseEvent(type, target, clientX, clientY) { const event = new MouseEvent(type, { view: window, bubbles: true, cancelable: true, clientX, clientY, screenX: clientX + window.screenX, screenY: clientY + window.screenY, buttons: type === "mouseup" ? 0 : 1, button: 0, }); target.dispatchEvent(event); } const canvas = document.getElementById("canvas"); function triggerPull(distance) { const rect = canvas.getBoundingClientRect(); const startX = 266; const startY = 198; const startClientX = rect.left + startX; const startClientY = rect.top + startY; const endClientX = startClientX + distance; const endClientY = startClientY; return new Promise(resolve => { dispatchMouseEvent("mousedown", canvas, startClientX, startClientY); setTimeout(() => { dispatchMouseEvent("mousemove", window, endClientX, endClientY); setTimeout(() => { dispatchMouseEvent("mouseup", window, endClientX, endClientY); resolve(); }, 50); }, 50); }); } const semitones = 12; const notes = { G: Math.pow(4, -9 / semitones), A: Math.pow(4, -7 / semitones), B: Math.pow(4, -5 / semitones), C2: Math.pow(4, -4 / semitones), D2: Math.pow(4, -2 / semitones), E2: Math.pow(4, -0 / semitones), F2: Math.pow(4, 2 / semitones), G2: Math.pow(4, 4 / semitones), }; async function playWithPitch(rate) { const r = rateToDistance(rate); await triggerPull(r); } async function playScale() { const qrt = 200; const hlf = 400; const fll = 800; const pause = 15; const playNote = async (note, dur) => { await playWithPitch(note); await new Promise(res => setTimeout(res, dur)); }; const loop = async () => { await playNote(notes.C2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.D2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.G, hlf); await new Promise(res => setTimeout(res, pause)); await playNote(notes.D2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.E2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.G2, qrt); await playNote(notes.F2, qrt); await playNote(notes.E2, qrt); await new Promise(res => setTimeout(res, pause)); await playNote(notes.C2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.D2, fll); await new Promise(res => setTimeout(res, pause)); await playNote(notes.G, fll); await new Promise(res => setTimeout(res, pause)); await new Promise(res => setTimeout(res, pause)); await playNote(notes.G, qrt); await playNote(notes.G, qrt); await playNote(notes.A, qrt); await playNote(notes.C2, qrt); await new Promise(res => setTimeout(res, pause)); await playNote(notes.C2, qrt); await new Promise(res => setTimeout(res, pause)); }; await loop(); await loop(); await loop(); } playScale(); })();

ivanjermakov•10m ago

    while true; do curl -X POST -Ss https://respected-accordion-31461.ondis.co/boing &; sleep 0.1; done
cr125rider•9h ago
Oh random Flash apps, how I miss you
victorbuilds•6h ago
Recreated a kids version on Codorex:

https://codorex.com/shared/Ko4qJfnIKEjxDwqN2NAGueqWxYJFiz1F

modeless•9h ago
I would love to see an accurately simulated version of this, à la https://www.engine-sim.parts/
karanveer•8h ago
so satisfying.
____tom____•8h ago
There seems to be a minor bug. When I switch tabs and come back, sometimes the spring is moving. Some times a small amount, and other times it appears to be streched to the max, and extending off the top and bottom of the screen, until it calms down.

Safari, Mac.

mg•8h ago
I just wanted to write about a similar observation when using it in FireFox on Linux:

When wiggle the spring, keep the mouse inside the white area until it is at rest, press CTRL+u to see the source code, move the mouse to close the source code tab and close it - for some magical reason the spring is moving again for a little bit.

gregsadetsky•5h ago
Yes, good sleuthing, that was one of the last remaining things I wanted to fix before launching.

Just fixed, should be live soon.

qwertytyyuu•8h ago
As a phone user, I hate you, I hate how good this is. That counter is just mocking me.
bitcrshr•8h ago
I needed this. Thank you.
johnwheeler•8h ago
Most excellent.
TheAceOfHearts•8h ago
Any consideration on sharing the unminified code? I was a bit curious to read through the code and it seems like such a shame to keep it obfuscated. From a quick perusal, it seems like the bulk of the code comes from howler.js (a sound library), and the core functionality is conveniently implemented below the mobile template.
sixtyj•7h ago
Online unminifier doesn’t work? E.g. https://www.unminify2.com/
coffeecoders•6h ago
Looks like a simple exponential drag/sprint-return simulation using requestAnimationFrame.

Here is AI's implementation. https://jsfiddle.net/z0or7d2y/1/

lionkor•6h ago
If they wanted an AI answer, surely they would have asked AI
gregsadetsky•5h ago
Of course! https://github.com/gregsadetsky/boing
mmabbq•5h ago
Turns out I was curious too, so I tried to de-minify it myself. Now I get to see how close I was.

https://pastebin.com/FKyz20LG

thenthenthen•8h ago
Can we add accelerometer support? :D
Quizzical4230•8h ago
Love this! It's highly addictive. (No guilt)
dfex•8h ago
Finally!

Time to recreate the classic: https://www.youtube.com/shorts/pTgJaJYHIAs

mavamaarten•5h ago
Heh. I expected it to be this one https://youtube.com/shorts/ocvBI_vtJwA
mhall•39m ago
Or this https://youtu.be/lQ6jZgMaZk4
29athrowaway•8h ago
I noticed that the sound changes depending on how you interact with it. Neat
rezmason•8h ago
There goes my evening.
abhinavsns•7h ago
There seems to be a bug. If I catch it mid boing, the sound doesn't stop.
gregsadetsky•4h ago
very good observation! just fixed and pushed
jesse__•7h ago
boingboingboing
sam-cop-vimes•7h ago
I wasn't hearing the sound initially so I thought it wasn't working in Firefox. Put the sound all the way up and boinged again. Made me jump out of my seat. Hilarious :-)
HelloUsername•6h ago
I have no sound on ff ios, volume 100%
gregsadetsky•5h ago
Make sure to unmute your device - either using the physical mute rocker on older iPhones, or by disabling Silent Mode (tap the bell in the Control Center)
cons0le•7h ago
Finally something I actually want to pay for!! Give us a premium tier with exclusive boingers plz
gnarlouse•7h ago
Is this physics based audio?
zer0tonin•1h ago
I don't think so
aetherspawn•6h ago
The sound is not physics based, the boing sound keeps going if you grab the head, likewise sometimes the sound ends before the vibration finishes.
gregsadetsky•5h ago
Well spotted! I'd love a synthesized version - if anyone has pointers.
OuterVale•6h ago
This is the natural thing to make with this tool: https://youtube.com/watch?v=5VGLPP70Xtw
ramnik10•6h ago
I liked it, would love to code it
coffeecoders•6h ago
Funny thing: this feels "realistic" because it’s not perfect physics. A perfectly simulated Hooke's law spring actually looks fake and too stiff. But if you let the animation wobble a bit more and slow down the damping, our brain reads it as weight and squishiness.

It’s basically controlled sloppiness.

iamflimflam1•6h ago
Same is true in a lot of old platformer games. Real physics feels horrible.
faeyanpiraat•2h ago
Yeah, I really like the low gravity during my dreams
dataflow•4h ago
> this feels "realistic" because it’s not perfect physics. A perfectly simulated Hooke's law spring

Confused. Perfect physics means perfectly simulating reality, not perfectly simulating an unreal idealized formula. Are you saying Hooke's law doesn't feel realistic or are you saying a simulator for a realistic spring doesn't feel realistic?

luanmuniz•15m ago
In reality, nothing is perfect. Materials are never 100% one material. Rustness is imperfection, the weight and material of the ball, and the place it's attached are also consideration points, how firmly it is attached, and with which material. A "perfect" simulation of the spring itself would have to consider all these variables, and they almost never do.
zamadatix•3m ago
And even if you somehow included "everything" with the "perfect" equations, you'll end up with a lot of stuff which does not have a good closed form solution anyways and good luck getting running e.g. the dynamics around the air resistance/sound generation accurate enough that it looks better than "faking it" and fast enough that it's actually usable.
skrebbel•4h ago
Elasto Mania is a great game from decades ago (but still for sale!) that exploits this fact to a hilarious extent. You control a motor bike with excessively wobbly physics making all kinds of stunts possible (and necessary, to complete the levels) that are spectacular and surprising.

https://elastomania.com/

ngcazz•3h ago
Also worth checking out, the FOSS clone X-Moto
finger•3h ago
I spent thousands of hours on that game.. just too good :)
dom96•2h ago
I remember playing this game when I was like 12 years old, good times
nopurpose•5h ago
How many before you stopped? I am at 37.
arbol•5h ago
230
ku1ik•4h ago
103. Was curious if there’s any prize for hitting 100 :)
arbol•4h ago
Same, I thought it might be like cookie clicker
ProllyInfamous•3h ago
>prize for hitting 100 :)

https://www.decisionproblem.com/paperclips/

You can hate me and/or close the window at any point, friend...

texuf•5h ago
TIL I don't know how to “unmute” my device anymore. My new-ish iPhone doesn't have a physical switch on the side and I can’t find it in the settings in the pulldown menu.
gregsadetsky•5h ago
Oh good point sorry. If you open the Control Center (drag down from the top left, typically), there should be a bell icon..?

That, or Settings -> Sounds & Haptics -> Silent Mode ?

gmac•4h ago
I just got an iPhone 17, and presumably because it inherited its Control Centre configuration from the 13 it replaces (which had a physical switch) the silent mode toggle was not present. Tap and hold in an empty space to edit the controls and add it in.
akho•5h ago
when haptics
gregsadetsky•4h ago
I would love to, but iOS support doesn't seem possible - there's a trick [0] to make a hacky haptic vibration in javascript, but it doesn't work with the kinds of events here of drag&release. And (lame excuse, but) I don't have an Android phone to test the haptics to make sure they're semi realistic.

This might have to wait for the native app versions ha.

[0] https://progressier.com/pwa-capabilities/vibration-api

jonplackett•5h ago
Oh it needs a total boings by everyone counter!
dmje•5h ago
Total boing heatmap!
gregsadetsky•3h ago
I considered it for a minute, but then I remembered https://xkcd.com/1138/ .. ha. but let me know if you have other thoughts about this
dmje•1h ago
ha :-)
gregsadetsky•3h ago
alright, I implemented a world boing counter :-) thanks for the great idea
doubleorseven•3h ago
maybe also de-boing the boining now that it's calling the server. i think the js script pasted here will show you it's needed
gregsadetsky•3h ago
there's rate limiting so the script posted in this thread actually mostly hits 429s :-) but yeah, great pointer
kentiko•2h ago
Nice, could you share how you implemented it?
brcmthrowaway•5h ago
AI?
gregsadetsky•4h ago
Yes! I've been toying with this project idea for a few ~months, trying out most of the models out there. The physics and the look of the spring would come out quite crazy looking, so I put it on the back burner.

This is not an ad, there's no affiliate link... but the physics & drawing code were one shot by the recently released Gemini 3 Pro. It was pretty incredible to see. Additional tweaks & boing counter server by Claude Code.

egeres•4h ago
Amazing to see software like this without sign-in requirements or paid subscriptions!
codeulike•4h ago
It doesnt boing rotationally, only in a straight line. Like the spring isn't really there.

If I bend it right round to one side so the spring is curved I expect it to bounce round to the other side.

gregsadetsky•3h ago
you are right - just improved this and I think it looks a lot better (deploying now)

thanks!

mythz•4h ago
This takes me back a few years when the first of my Uni friends had a baby, they spoiled him with so many toys that their lounge room was like an obstacle field where you had to be careful where to step, but despite all his toys the baby spent all his time while I was there playing with the door spring.

There's something therapeutic about door springs, that you just have to stop and play with it.

naich•3h ago
I had to stop at 100 or I would have been there all day.
reactordev•3h ago
That’s got to be one of the most satisfying things ever. The real device was a darling invention and this is a faithful recreation of the experience of being in time out in the 80s.
alex440440•2h ago
If you were Elon you would claim it's an early alpha of a world simulator that in a year will be able to perfectly predict weather and stock market.
tdeck•1h ago
I'm slightly ashamed of how many times I boinged this. Great work!
e1gen-v•1h ago
If you manage to push it all the way down directly in the middle it boings forever
xpe•1h ago
Anyone want to commission an AI to make a sequel called Boing or Krill where you have to choose between boinging the spring or playing a game of snake (drawn as a line of krill)?
analogears•3m ago
This reminds me why simple single-purpose web toys used to be so satisfying. No account, no onboarding, no "upgrade to pro" - just a thing that does one thing well. The world counter is a nice touch without being gamified into oblivion..