Ask HN: What is your proudest little invention or discovery?
Have you invented or discovered something on your own without any prior knowledge about whether it has already been discovered or not?
It doesn't matter whether it has been already found or not. All that matters is the process through which you found so much joy that you still remember it.
48 comments
[ 4.0 ms ] story [ 105 ms ] threadIn hindsight, it seems super trivial, but back then it felt so satisfying.
Initially, I published progress on the Overclock.net forum. People eventually asked if they could buy it and in time I was laser cutting hundreds a week and shipping with the help of my younger brother.
I basically used the income from this project to pay for college and eventually sold the IP to a well known PC accessories manufacturer. Asetek fortunately waited to dig up a private doc outlining IP claims they they had provisionally patented the notion of "affixing a CLC to a GPU" prior, but fortunately by the time they tried to bother me I'd already sold.
My biggest take away was how powerful building an audience can be - without that none of this would have happened.
Here's a showcase of the mounts from a corsair employee https://forum.corsair.com/blog/system-build-inspiration/the-...
Another more clear image of the mount: https://www.overclock.net/media/no-title.3710949/full
I also invented a set of fuzzy logic functions based on the powers of i, and also invented some "shhh!" things, which might some day become commercially important to me
Years ago I spent a lot of time trying to figure out how to get a Kindle to "Whispersync" sideloaded books. Eventually I figured out it was as simple as having an ASIN included in the books metadata (Calibre does this automatically now, but it was fun figuring it out manually with Python scripts).
Originally I thought the ASIN had to be valid, but eventually realized it didn't even matter, just had to match the pattern.
A few years later when I was in high school, everyone used to have the state-of-the-art 0.3MP-1.3MP cameras on their Moto L7 and Nokia 6600. My high school would frequently stick various notices like people's test scores, examination schedules etc. on the walls and those walls would get swarmed and you'd have to stand for minutes in the swarm getting pushed while you found your name on the many sheets of paper that were stuck, or while you copied the exam schedule etc. I'd get to the front of the swarm and channel all my energy into holding my phone steady pointed at the wall and click a picture and later zoom into it to get the information I needed from the comfort of the librar. I'd hear a chorus of 'aaahs' each time I did this when everyone would realize they could do the same.
Realization that you can click pictures of documents these days of course is almost common sense :)
It was a routine to discover all the ancestors of a category, to create a breadcrumb navigation for a web directory.
I believe it's still in production, although the site has been re-skinned so it's hard to say for sure.
Eg. blinking your eyes when moving them to avoid unnerving “flitting”, avoiding too much head movement, etc
Used it to master sales in a business we started and took our call close rate from 30 to 80% at its peak
I needed to be able to record and play audio at the same time for a product I was making. I was targeting the most popular sound card at the time, the Soundblaster 16.
I had talked with engineers at Creative Labs about what I wanted to do, and they told me that it was impossible. Nonetheless, I dug into the card, hoping to find some way... and I found it.
It turned out that Creative Labs made the SB16 by adding a 16 bit sound system to the original Sound Blaster circuitry, but had kept the original circuitry in place as well (for backward compatibility?). And the two circuits operated independently of each other.
So I whipped up a sound driver that recorded on the 8 bit circuit by bit-banging, and played on the 16 bit circuit using DMA. It worked great, and felt great doing something that the manufacturer declared impossible.
Interestingly, my driver was later ripped off by a now-famous person who I won't name. I saw a post in a forum somewhere where he opined that it's safe for people to pirate because he thought my company was some unknown overseas company who would never find out. Immediately after I sold my company to another, the purchaser sued him for copyright infringement.
My task was to create a launcher, and widget, and no clue how. There were no widgets back then if I remember correctly. But managed to pull it off.
https://law.gmnz.xyz/uploads/2023/169e32e731.png
Long story short, you can't just unmount /somepath, mount it again, and pretend all is well
I learned a lot about mounts, particularly how the kernel tracks these with IDs
Definitely not novel, but the application/consequences of it made me a hero that week
First, some background: we had to pivot from one NFS instance to another. Assume the data was already consistent.
The goal being to minimize observable disruption to the guests. We can pause time, but can't restart the instances -- the services involved should be unaware.
Processes hold onto files they have open. This is pretty well understood - many have heard of file descriptors
These are very sticky -- particularly for things with mounted filesystems. This is where my path to glory appeared
The thinking was... as long as that path was there when the VM process was resumed, we'd be fine...
In reality, we weren't! The kernel isn't really concerned with the fully qualified path.
From the example above, /somepath is really just like "mount ID 2" to the kernel.
In the end we had to renew those file descriptors, consequently picking up the new mount IDs
We ended up pausing the instances, saving the memory state locally, swapping the mounts, and then resuming the VMs.
Time only briefly skipped, and we successfully moved thousands of instances from one NFS 'host' to another
https://peteshadbolt.co.uk/posts/random_measurements/
It's the one result from my academic career that really felt rewarding. It's not a very important or mind-blowing result, but it is vaguely useful, and (to me at least) enlightening, and it is a clean, finished, self-contained piece of work. Makes me happy at least :)
Back in '99 I had a lot of experience with Adobe's SVG plugin, especially around the javascript capabilities. I had been commissioned to build some demos but given free reign. One of them was a 3D molecule structure. SVG doesn't have any real 3D capabilities, so I was effectively using it as a canvas with a ton of javascript to move things around.
Today I know that the "proper" way to do this is with a matrix for camera position and orientation with a bunch of math, but this is back when I was young and dumb. So I ended up writing about 3 full screens of trig calculations to figure out exactly where each atom should be and to track mouse drags to rotate the whole thing. Remember that this was back in the 90's, so my 2-3 frames per second was nothing to sneer at. It worked pretty well, but there was a bit of weirdness with the coordinate systems; dragging up would rotate the top away from you at first, but if you turned the model around to the side it would be backwards.
So I show this off to a coworker of mine. This guy worked on some early Sega Genesis games, and he was like "oh cool, how did you do it" so I pulled up my source. He goes "huh. Try this" and deletes all of my trig code and replaces it with this:
It was glorious.My frame rate shot up to an easy 30 fps and because this calculates the next position iteratively the weird orientation problem I had was gone. This approximates circles, but it was close enough that 48 hours of spinning led to no visible degradation.
For this architecture, the size of a jump depends on the address, which is not known until labels have been converted. Converting a label may trigger a cascade in offsets.
I was working on a compiler where all jumps used the maximum possible size (zero-padding the address) instead of 2-4 bytes in order to avoid solving this problem.
https://github.com/sshine/evm-opcodes/#accounts-for-size-of-...
After getting a high score, i tell the machine my name is SEX. To my surprise it records my name as NAO instead. A couple more playthroughs confirm that this happens every single time.
I contacted the editor of Super Hang On's page on the cutting room floor wiki (which tracks easter eggs and unused content in video games) and confirmed that they were not previously aware of this.
I checked the rom in a disassembler to see if it was a bug; it explicitly checks for SEX and changes it to NAO so it's definitely intentional. It doesn't do this for any other word, either.
Referencing a paragraph by order is very simple, but would not work in this case. It is not common for stories to be edited (correction, or updated as news event information becomes available) after publish - but it can happen. Likewise the inner text of the article could change.
Long-story short, I figured out the JS, learned about the Levenshtein distance for the first time, and built a robust tool that worked. Small things make me happy.
I also launched it without telling anyone. The blog post was retractive.
Source code: https://github.com/nytimes/Emphasis
More information: https://archive.nytimes.com/open.blogs.nytimes.com/2011/01/1...
I am impressed with arbitrary daisy chaining. Mine was limited to 4 per side, but had a shared cable.
That is, for the natural numbers from 1 to n, the sum of the cubes of those numbers is equal to the square of the sum of those numbers.
I patched FreeBSD's ciss driver:
- created a boot-time tunable (hw.ciss.max_logical) that allowed changing the maximum number of logical drives (defaults to CISS_MAX_LOGICAL, which was then 15 according to src/sys/dev/ciss/cissvar.h)
- changed the behavior of another boot-time tunable (hw.ciss.expose_hidden_physical) such that a value of 2 exposed the hidden physical direct access devices as da(4) devices, where a value of 1 retained the original behavior of exposing them only as pass(4) devices
- updated the ciss(4) manual page regarding the above modifications
This let me use a 20-disk storage array as a JBOD, which I then added to a ZFS pool.
Open source kernel development is gatekeeped to hell and back, so this didn't go anywhere. It's also a pretty minor change. Still, I'm pretty proud of figuring out to patch a device driver.
We ended up launching a Docusaurus project for user guides, and it worked perfect!
Flash forward to today and I’m working on a completely baked React based version of Wordpress.
After I launched the initial prototype and got some user feedback and traction, I later learned of some popular web applications that are using the same concept. Funny enough, they are all using the same tech, with the same concept in smaller niches, and even launched here on Hacker News almost 10 years before I started on it.
I’d love some more feedback and support!
Currently looking for open source contributors too :)
https://github.com/elegantframework/elegant-cli https://www.elegantframework.com/
Now I have to figure out how to turn this into a monetized product, in the face of legal threats from my employer.
(I happen to work for one of the entrenched-retrograde "IBMs" of the information retrieval industry.)
So the answer to your question is pretty much yes.
I realized that it's like a queue, but I needed to sort the entries in the queue every time I added a new one.
Thus, I invented priority queues!