7 ms·
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.
- Hackbraten 3y agoWhen I was fifteen and just getting my feet wet with RDBMS, I figured out on my own how to model an m:n relationship between two tables. In hindsight, it seems super trivial, but back then it felt so satisfying.
- 71a54xd 3y agoIn high school I developed a "C" shaped mount that made it possible to affix closed loop liquid coolers (now pervasive, like those now made by NZXT and Corsair) to graphics cards in a time where the only real option for water cooling a GPU was to spend hundreds of dollars on a water-block, radiator pump etc if you wanted to overclock. With a CLC and my mount you could get nearly identical performance for $80 (circa 2012). 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-obsidian-350d-with-3-hydro-series-coolers/ 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 https://www.overclock.net/media/no-title.3710949/full
- jacknobody 3y agoI sat in the Australian outback with a pencil and a block of paper, and discovered a way of mapping n-dimensional geometries in the permutations of a braid. 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
- lylejantzi3rd 3y agoBack in the PHP 4 days, I discovered that you can put the php extension on any file and apache would parse any php code found inside. It's how I dealt with cross-browser css issues for a while.
- ark4579 3y agoi implemented a simpler version of dijkstra algorithm during second semester of our my electrical engineering degree to navigate the robot through a maze using arduino uno and some sensors, only to be taught about it in next semester. i remember thinking in class, that can't be it. there must be something more to this. of course i couldn't come up with all the related maths but still.
- oaththrowaway 3y agoMaybe not the proudest, but I thought I was pretty clever when I was younger... 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.
- regularfry 3y agoA six instruction triangle/point collision test algorithm on the ARM 2 instruction set. That was fun.
- treeform 3y agoAt 13, I reinvented perspective divide: https://www.khronos.org/opengl/wiki/Vertex_Post-Processing#Perspective_divide https://www.khronos.org/opengl/wiki/Vertex_Post-Processing#P... . I wanted to draw 3D things like in 3D games, but with QBasic. I knew how to draw lines and shapes in 2D, but I couldn't figure out how to do that in 3D. I would ask adults about this and they had no idea. They couldn't even understand the question. Eventually, I figured out that you needed to divide or multiply by the Z-axis with a "zoom" constant to make stuff move in 3D.
- impish19 3y agoAround 2000 when I was little, Cartoon Network in India used to run various contests for which you'd need to mail in an entry to participate. The problem was that the shipping address would be displayed on the TV maybe for 2-3 secs and I could never get it. After a few tries to memorize, I whipped out my solar camera and prepared for the address to appear again and clicked a picture and got it developed to get the address. 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 :)
- hmmdog 3y agoWhen I was learning to code I figured out a difficult problem using recursion without any knowledge of what recursion was, I remember being happy and thought I was a genius for a short time. Whenever something ‘clicks’ and you get that dopamine the best part of coding.
- JohnFen 3y agoI don't know what counts as "genius", but coming up with that on your own, with little development experience, is at least brilliant.
- qup 3y agoThe first recursion I put into production is a good memory for me. I wore a big smile that day. 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.
- shw1n 3y agoAs a non-charismatic SDE, I discovered charisma tactics I haven’t seen anywhere else by studying actors and other charismatic people on YouTube 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
- HeyLaughingBoy 3y agoIn case you haven't seen them, Olivia Fox-Cabane has a number of interesting YouTube videos on the subject of charisma and how to improve your own.
- JohnFen 3y agoThis was forever ago and is a little silly, but for some reason, it ranks as one of my proudest accomplishments. 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.
- lawgimenez 3y agoBack then Android USB was a thing, you can plug it on a TV and you will have the whole Android OS on your TV. This was 2012, Ice Cream Sandwich OS. 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 https://law.gmnz.xyz/uploads/2023/169e32e731.png
- bravetraveler 3y agoFiguring out how to swap NFS mounts behind a massive fleet of KVM instances 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
- Donald 3y agoCould you explain more? Sounds like a fun problem.
- bravetraveler 3y agoI'll do my best! Dodging proprietary bits (and bad term usage) along the way :D 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
- pjs_ 3y agoWhile messing around with numerical models of entangled states, I found a very simple and convenient way to characterize entanglement without a local frame of reference: https://peteshadbolt.co.uk/posts/random_measurements/ 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 :)
- jiffyjeff 3y agoHoly cow, this might be related to a design I had last week. My effort to build optical shaft encoders using simple polarization sheet. LEDs can be be used as bidirectional sensors as they work well as photodiodes. That lends itself to optical ring oscillators. Getting them synchronized across multiple encoders and/or controllers led to a control scheme that was.. interesting.
- shaftway 3y agoI didn't find this, I was given it by a grizzled veteran, but... 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: dZ = 0.001 * mouseDeltaX; dX = 0.001 * mouseDeltaY; for i in atoms { atoms[i].x += dZ * atoms[i].y; atoms[i].y -= dZ * atoms[i].x; atoms[i].y += dX * atoms[i].z; atoms[i].z -= dX * aroms[i].y; } 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.
- sshine 3y agoA fixpoint algorithm for translating labels to absolute addresses. Nothing new, but I’m still proud of it. 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-pushes-when-doing-absolute-jumps https://github.com/sshine/evm-opcodes/#accounts-for-size-of-...
- snickerbockers 3y ago2018: I am playing a SEGA Genesis game from 1988 called Super Hang On, which is itself a port of an arcade game from a couple years earlier. Being an arcade port, this game has a high score screen but it's reset to the defaults every time you turn off your sega. 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.
- qrio2 3y agoThis is probably a holdover from arcade games - many score boards would check for "no no" words like ASS, SEX, DIK, etc and would change it to the initials of a developer or acronym for the company
- snickerbockers 3y agoI tried all the other 3-letter words, SEX is the only one that's not allowed.
- donohoe 3y agoWhen I was working at The New York Times as a front-end developer I wanted to create a system where you could deep-link to any paragraph in a story, and potentially highlight passages of text. 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 https://github.com/nytimes/Emphasis More information: https://archive.nytimes.com/open.blogs.nytimes.com/2011/01/11/emphasis-update-and-source/ https://archive.nytimes.com/open.blogs.nytimes.com/2011/01/1...
- jakedata 3y agoBack in 1986 I was asked to build a set of "game show" buzzers that would allow a number of contestants to hit their button and it would show who pressed first. I ended up creating a system that used relays that would latch the first button pusher's indicator ON and cut power to the other controllers at the same time. I came up with an improved design to allow an arbitrary number of buzzers to be daisy-chained but they didn't want to pay for version 2.0. It was a fun side-hustle for this high school Radio Shack employee.
- projektfu 3y agoCool, I worked on the same quiz bowl apparatus as a pet project around 20 years later. I remember the available commercial options ca. 1998, generally made by small shops. One popular one must have been a similar S-R latch design, and another was probably based on a microcontroller, as it tested the lights and buzzer when it was turned on. I am impressed with arbitrary daisy chaining. Mine was limited to 4 per side, but had a shared cable.
- AnimalMuppet 3y agon 3 n 2 Sum (k ) = (Sum k) k=1 k=1 (Hoping the formatting comes out right...) 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.
- xenophonf 3y agohttps://lists.freebsd.org/pipermail/freebsd-scsi/2012-December/005728.html https://lists.freebsd.org/pipermail/freebsd-scsi/2012-Decemb... 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.
- hoofhearted 3y agoI got contracted to attach a Wordpress instance to a React app a few years ago. It was painful, expensive, and never came to fruition. 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://github.com/elegantframework/elegant-cli https://www.elegantframework.com/ https://www.elegantframework.com/
- dserban 3y agoOn my own time and dime, I came up with a way to glue together a thin-layer open-source LLM and open-source Meilisearch. After initial testing, it works exceedingly well for ecommerce / retail / online shopping, for search, discovery, product recommendation and deep intent recognition. 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.)
- Kerollmops 3y agoThat looks pretty cool. Would you mind explaining a little bit how you did that into more detail? Like, you ask Meilisearch some documents (keyword search) and then ask the LLMs score of those and refine the list a bit?
- dserban 3y agoIt's a two-step prompt-injection process. In the first step, I wrap the raw typed-in input inside of a dynamically-generated prompt template that takes some context into account (for example, the specifics of the product that the person is currently looking at, or the recent history thereof). The prompt generates a list of Meilisearch keyword search queries. I issue all queries and harvest the results. Scoring and ranking happens in the second (also prompt-injection powered) step. So the answer to your question is pretty much yes.
- jasonpeacock 3y agoI was building on oncall scheduling tool for work, and I needed to apply schedule overrides to the default oncall rotation. But I also wanted to support multiple, overlapping overrides, and always pick the correct (latest) override for the given time. 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!
- kleer001 3y agoI "discovered" negative numbers in 2nd grade while reading those top down arithmetic problems incorrectly. Seems RPN was my goto assumption. Like: 4 - 3 = -1
- jwandborg 3y agoI figured out how to FCC-unlock my Lenovo-branded 4G modem to get it working under Linux based on a Lenovo snap with binaries to unlock another model from the same manufacturer, and then I was stupid and generous enough to tell the ModemManager devs and the rest of the world about it[1], but thanks to the devs and Lenovo's Mark Pearson it all ended up benefitting the world. I didn't really know how to reverse engineer C, or even write C, but I was frustrated enough to stick to the task, and lucky enough to have at least some symbols still in the binary. Ghidra is a nice tool, but kind of horrible to learn in a hurry, still easier than r2 if you have no idea what you're doing. [1]: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/402#note_1064882 https://gitlab.freedesktop.org/mobile-broadband/ModemManager...
- gitgud 3y agoCirca 2004 I remember realising the novel idea of slowing down a vehicle with an electric generator, rather than disc brakes… However, I soon discovered that it was known as “regenerative braking” and was being introduced into many modern hybrid vehicles I still remember the incredible feeling of thinking of an invention that I’d never seen or heard of…
- shove 3y agoBack when Flash was still around and well before it peaked, I wanted to do socket-based communication. So I built a bridge from Flash -> JavaScript -> Java Applet -> socket -> Java server (to send messages and vice versa for the receive chain). I was a terrible coder and it crashed under any kind of load (no back pressure and poor browser quality back then). But it worked and caught the attention of a bunch of influential people. XML sockets were added to ActionScript in Flash v5 ;)
- EliRivers 3y agoIn my life, I have invented the holographic lens, bicycles and network cables. Sadly, as I arrived at each invention and contemplated it, I realised it had already been invented.
- deleted 3y ago[deleted]
- ralmidani 3y agoFiguring out a pattern for finding the square of, say, 10, then 11, then 12, etc. In my mind, the formula was: x^2 = (x - 1)^2 + (x - 1) + x. For example, if you know that the square of 10 is 100, the square of 11 is 100 + 10 + 11 = 121. The square of 12 is 121 + 11 + 12 = 144. Another way to think about it is enlarging a grid along both dimensions: first add an extra column (x - 1), then add another full row (x). I "found" the pattern by observing and thinking about the relationships. I never came up with a formal proof - I'm a developer, not a mathematician! Here's a good explanation of why this works with intuitive images rather than just equations and words: https://betterexplained.com/articles/surprising-patterns-in-the-square-numbers-1-4-9-16/ https://betterexplained.com/articles/surprising-patterns-in-...
- cc101 3y agoBack in the early days of HyperCard, I was browsing its scripting language. When I discovered "mouseEntered," I had an epiphany. I could use this feature to make deeply interactive geologic maps. I built my professional reputation doing this. People thought I was an exceptional programmer. Not so. I was just first to use someone at Apple's brilliant work.
- lee101 3y ago[dead]
- defaultcompany 3y agoWhen I was an undergrad learning linked lists I discovered its possible to remove a node from a singly linked list with only a reference to the node to delete. This is cool because much of the point of a doubly-linked list is to enable this but it takes another pointer on every node to allow it. My idea was instead of deleting the node itself, just delete the next one and fix up the data pointers. Like: remove(node) { next = node->next; node->data = next->data; node->next = next->next; free(next); } You need to handle the case of deleting the last element in the list but that can be done by keeping an EOL element at the end just for this purpose. It's surprising the me that this solution is not very well known.