Ask HN: Most interesting tech you built for just yourself?
Maybe you've created your own AR program for wearables that shows the definition of a word when you highlight it IRL, or you've built a personal calendar app for your family to display on a monitor in the kitchen. Whatever it is, I'd love to hear it.
1,824 comments
[ 3.5 ms ] story [ 654 ms ] threadIt's mostly a toy but it has given me great insight into local weather patterns.
It mainly consists of a simple CLI utility that generates TOTP codes using an AES encrypted lookup table of secrets.
I piggybacked access to this off an unrelated web site and it is now readily available from any device if you can provide the decrypt and lookup key and know the URL.
Pretty simple, but saves lots of time and I don't have to worry about the air conditioner turning off in the middle of the night due to it's internal reservoir becoming full.
You might want to add an intake tube, to cool the compressor more efficiently: https://imgur.com/gallery/kA4Z0uV
- an Unolingo solver that we used to figure out if there could ever by more than one solution to the puzzle (there can be!)
- a "killer" solitaire simulator that determined the optimal number of players for a max win rate. IDK if this is even a real game, but my family plays multi-player competitive solitaire with up to 8 people at a time. IIRC the optimal number for win rates is like 5-6(?) according to my simulation
Also many years back when I was traveling all the time I created a thing based off the what 3 words data where I could geo drop messages at a location. My friends and I used it for a while but then just forgot about it.
Ideally you can subscribe to different databases unlike say Google Maps reviews.
https://github.com/shi-yan/broca
on each of the computers I use, I have a open sublime text tab documenting words I don't know.
they are scattering around, unorganized, get lost when the file tab is closed.
I want to synchronize my vocabulary on different devices using git.
broca saves to plain files that are git friendly. And using ChatGPT as a dictionary allows me to search for idioms/slang/phases with unlimited example sentences.
The Tesla app is great, but with one caveat: it won't let you turn on climate controls until the car has "woken up". Upon opening the app, this usually takes 5-15 seconds, but when I first got the car, sometimes took a full minute.
Someone else had already reverse-engineered the Tesla API, and I wrote a quick app that would just let me press a button and it would wait for the car to wake up and turn on the climate controls in the background.
https://arxiv.org/abs/cs/0312018
I was always asking "Why is RSS failing? Why do failing RSS readers keep using the same failing interface that keeps failing?" and thought that text classification was ready in 2004 for content-based recommendation, then I wrote
https://ontology2.com/essays/ClassifyingHackerNewsArticles/
a few years ago, after Twitter went south I felt like I had to do something, so I did. Even though my old logistic regression classifier works well, I have one based on MiniLM that outperforms it, and the same embedding makes short work of classification be it "cluster together articles about Ukraine, sports, deep learning, etc." over the last four months or "cluster together the four articles written about the same event in the last four days".
I am looking towards applying it to: images, sorting 5000+ search results on a topic, workflow systems (would this article be interesting to my wife, my son, hacker news?), and commercially interesting problems (is this person a good sales prospect?)
The system right now is highly reliable, I have no fear of doing a live demo of it, but live demos come off as strange because my feed is a strange mix of arXiv abstracts, Guardian articles about association football, etc. so it comes off as idiosyncratic and personal. (Oddly when I started this project I loved the NFL and hated the Premier League, when I started doing feature engineering as to "Why does it perform so well for arXiv papers and so poorly for sports" I started studying football articles in detail and started thinking "How would I feel if my team got relegated?" and "Wow, that game went 1-0 and it was an own goal" and next thing I knew I was hanging on every goal in every game Arsenal and Man City play -- it changed me.)
It's not even that hard for me to swap algorithms in and out but it should be easier, for instance I like the scikit-learn system for model selection mostly but there are some cases like SVC-P where I want to bypass it and I am not so sure how to comfortably fit fine-tuned transformer models into the system.
Another problem with it is that it depends on AWS Lambda and Suprfeeder for ingestion, it costs me less than $5 a month to run and about 10 cents per feed but (1) that's not cost-effective if I want to add a few hundred blogs like
https://www.righto.com/
and (2) I know many people hate AWS and other cloud services.
If somebody were interested in contributing some elbow grease that would help the case for open source, alternately a hosted demo of some kind would also be possible but I'm not ready to put my time and money into it. Contact me if you're interested in finding out more.
Sent you an email! I've been wanting such an ML powered RSS reader for quite some time. I'd love to help make it open source if possible.
It's by no means perfect. For one thing if I have a choice of 0.78 ROC based on 40 days worth of data and 0.77 based on 10 days worth of data I'd take the later because I know the later one adjusts more quickly to my changing preferences. Also my selection algorithm breaks up the input into (say) 20 clusters and shows me the (say) 15 top results in each cluster and I know I like the results from that better than if I just take the highest ranking results.
It isn't the elegant machinery you describe here as I'm quite unfamiliar with the technique you describe.
If I'm actively using it the feed list grows to about 35-40 000 at which point I find as many new feeds as I lose old ones.
I maintain a dozen categories of badwords, if any of those are in the headline it will be removed.
With many subscriptions things look quite different, higher frequency publishers start dominating the top of the newest list. The faster they publish the higher the standards I hold them to.
What is quite amazing is that some really terrible news websites use long titles that are highly descriptive. I have a good few of those, they get to stay around because the badword filter purges so much I hardly ever see them. For every 2000 bad ones business insider has a great article. It's a terrible website but their use of descriptive words in article titles is the best in the world.
The key insight imho is that the internet is much more of an echo chamber than people think.
As soon as you get rid of Musk and a few hundred other people, a few hundred companies, a dozen countries and a few thousand other topics you are left with a world of infinite other subjects. People are writing about stuff no one else ever thought of.
If everyone in the world is reading and writing about FOO it is absolutely amazing to get rid of FOO. There is no such thing as an important football match. (joking sorry)
Everyone is praising normality but you should really wonder who creates these norms. If they are good of bad people is besides the point. Musk says 1 something interesting per day I'm sure. For every 100 000 topics inserted into the collective we chose 1 then, by the tens of millions, we talk about it. Every day is Musk day.
It doesn't matter how hard you resist participating, eventually you will learn that space x launched a rocket. There is no avoiding it.
Autonomy is something fucking amazing. I imagine millions of articles are published per day. 99% things said before. What part should I want to read? The 1% with the most traffic?
You should get on the train to nowhere just like everyone else - they say. Stop wandering around on your own, you should get on the train just like me!
I'm not usually telling anyone not to get on the train. If people want to discuss "rss is dead" for the ten thousandth time, let them. They think they chose the topic themselves.
There is 13 billion years of history, 6000 sq km of earth, 7.9 billion people alive, 100 billion dead, 8.7 million species of plants and animals, 350 thousand chemical compounds, 130 million books since the printing press, 100 billion stars in the milky way alone. What to spend my time on? The Trump investigations? Really?
I'm sorry for not being very technical.
Would love to know more. I'm a sucker for anything RSS.
My aggregator is actually a giant grease monkey script. Grease monkey can just do xml requests cross domain. HTML is great for creating links that open in the browser and I don't want to be alt tapping from one window to the other. This also makes me uninterested in the <description> element which consumes a huge amount of space. I'm really discarding everything except [the pubDate, the headline, a link to the content chopped into the [sub] domain, and the rest of the path] It's a giant date sorted array of arrays. New entries are pushed into a temp array from which they are pop'ed and spliced into the right spot in the big one. I usually keep 5000 entries (2000 is enough tho) so nr 5001 is removed.
It stays small data that way! I can periodically post it to some simple php script that turns it into a static html document. If the oldest result is newer than the newest from the previous dump it dumps it again.
Every 20 seconds the table on the page is replaced with the updated results. I had it in real time but it moves to much to read and click on things. No need to preserve any dom, dom manipulation is slow, just feed a whole new table into the page as a string.
XHR requests must be async which is a terrible technology. You don't know how many responses you are going to get per second. It has some relationship with the number of requests you make but making a lot of requests there is no way to avoid receiving a lot simultaneously which, if you try do anything with the response text, freezes the browser. There is no time to do more than push them into an array.
Then I use a setInterval to parse them, how many depends on how far behind the parser is. setInterval delays if the browser is busy, parsing can be far behind. If it is to far behind the number of requests per second is dialed down.
Probably the funniest part is the parser
It starts with a regex exec in a do{}while() loop. It looks for things that look like pubDates, it compares up to 3 time stamps with the oldest pubDate in my result set. Most feeds never make it beyond that point.
Then it tries to parse the feed by the rules. It looks for the string <item>, if it finds that it looks for <title> etc
Lots of feeds are hilariously broken and invalid so I have an arsenal of alternative approaches in the correct order of likelyhood.
The funniest moment was when someone deleted their feed and redirected it to the website front page.... but I never noticed it. It tried to parse the "feed" in all ways it could and as a last resort looked for <a href=""> elements. Because it also couldn't find a pubDate of any kind, nothing that looked like a date, it took the /2023/01/03 part of the url and made a time stamp from that, inserted it into the result set and happily continued.
Feeds that are slow get suspended, lvl 1 is 24 hours, level 5 is a week, 5 weeks is the limit. I might try them again after a few more months.
In monitor mode each function has it's own tiny log window. The log() function is normally empty, modern js skips it efficiently regardless what kind of complex params are set.
At times I have benchmarking things inthere so that it choses the fastest approach automatically.
It can consume opml (any number pretty much) but I prefer using flat lists of feed urls.
Apart from the (optional) dumps the backend is just static files.
Because it runs in the browser it can also use credentials. It mixes in my gmail feed too. https://mail.google.com/mail/feed/atom
Not really something I want to share with the world.
I will share this http://salamisushi.go-here.nl
This is a greassemonkey script, it detects feeds linked in the web pag...
That is to say, I admire your approach here. I appreciate that you've just gone with it and did what many people on here would look at and say "that's insane".
There's a lot of power in just doing something, in the environment that's most readily available to you, and not getting hung up on the best way to plan it out and do it and make sure it's reliable and durable. You're exactly where you want to be, and the other person is sitting back at the start still planning.
Thank you for sharing.
I'm jealous! Experiencing the world with all the garbage filtered out.
[1] https://embit.ca
I guess this is a thing people do. ;)
I've been hacking on a related side project -- in my case, I wanted something like this but for Twitter. Right now it's using gpt-3.5-turbo to cluster related Tweets & rank based on my interests.
Source is here: https://github.com/kasrak/feedpaper
I'm currently testing it and have a few test users for feedback. I hope I can open source it sometime this year, after integrating the feedbacks, and polishing the code.
It's not intelligent for now, but that's by choice. Instead, I prefer to have custom rules for filtering (e.g., adding tweets from user X to feed only if the likes are above a threshold). I may use GPT for summarization later, but honestly most of the posts are either short (e.g., tweets), or they come from websites that have description/summary in their meta tags.
Please shoot me an email to `hey@mofeed.news` if you want to test it :)
Btw. this is the way I found this thread :D
https://github.com/jleclanche/fireplace
It was used and referenced by a few scientific papers and phds since. It’s my little pride, even though it would really need a rewrite at this point to work properly with all the additions in the game.
It contains its own little python driven dsl for actions. I could talk about it for hours. All that work led to me starting a company around hearthstone (I have since left it behind but it eventually grew into other games).
https://support.apple.com/guide/shortcuts/welcome/ios
This way I can fall asleep to noise that doesn't later wake me up.
Most fun part was transcribing 70+ year old NOAA tide calculation mathematic/astronomic/hydrologic research papers into modern TypeScript. Approach is semi-documented here: https://github.com/JacksonKearl/solunar
I did consider adding a "max finding" mode of some sort, but that's never really been my use case.
I’m looking forward to digging into your work. I haven’t really known where to start, but I can probably get a lot of inspiration here. Nice work!
Of course, you can download the predictions from DFO too, e.g., https://api-iwls.dfo-mpo.gc.ca/swagger-ui/index.html
https://www.admiralty.co.uk/publications/publications-and-re...
A webapp for sharing files/text between two devices no matter the platform. Use this all the time. No more sending emails, Facebook message, dropbox link to yourself.
I wanted to have a scripting language that was inspired by xTalk for some light front end work alongside htmx. Didn't expect it to go anywhere.
I also wrote a multi-threaded backtester in C++ because the program I was using was only single-threaded. I stopped using that several years ago but the act of writing it was a lot of fun.
Given two version (old and new) of a Git change (i.e., individual commit or patch series from a pull request) it produces a diff that is actually useful for reviewing purposes, assuming you've already reviewed the old version of the change.
It's sort of like `git range-diff`, but where `git range-diff` produces a "diff of diffs" that is very hard to impossible to read, this tool gives you a direct diff between old and new versions, but filters out any irrelevant changes that were introduced because the author rebased on a more recent version of the target branch.
I hope that makes sense - I never know quite how to put it into words for somebody to understand who isn't intimately familiar with Git. It is very powerful though if you combine it with a minimal amount of setup e.g. for fetching all PR branches from a GitHub repository. I use it almost daily as part of my code review workflow.
once i got it to work, i left it on my desk for a few months and then cleaned it up/removed the circuit. only documented the circuit by a couple of bad photographs, so i'm not sure how to recreate it. i might could figure it out again if i spent the time, but i've been focused on other projects.
https://github.com/smcalilly/sensor
Shows a nicely formatted weather report for flying my paramotor, pulling data in from many different sources :-)
I’m having difficulty parsing and understanding this sentence: how did this result in your display being posted on instagram without your knowing?