Ask HN: Most interesting tech you built for just yourself?

1901 points by l2silver ↗ HN
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 ] thread
I wrote http://idaweather.com to get a better understanding of the local weather where I have a hobby farm.

It's mostly a toy but it has given me great insight into local weather patterns.

Very cool. Was this to learn about websites and sql, or you just wanted to extremely accessibly data analysis?
I created it for the accessible data analytics. It's nice to be able to answer certain questions about the local weather.
Not all that interesting but I recently built a server for 2FA.

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.

That's pretty nifty. Security first.
I suppose this counts: Although not that interesting, I have one of those AC units in my apartment that sits on the floor with an outlet tube terminating at a window to pipe out hot air. The internal reservoir for this unit is quite small so I hacked together a float valve that triggers a pump to offload the condensation water to a larger bin, that way I don't have to empty the reservoir as often.

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.

> I have one of those AC units in my apartment that sits on the floor with an outlet tube terminating at a window to pipe out hot air

You might want to add an intake tube, to cool the compressor more efficiently: https://imgur.com/gallery/kA4Z0uV

It's the little things in life.
Why not just have it drain into an ordinary condensate pump which is built for this purpose? Those roll around ACs usually have a spigot to attach a hose you can run into a drain.
Curious why not pump it out of the window? It’s only going to be a few dribbles every few hours.
My family is super into games, and as the resident programmer, they often ask me to build things related to them. Favorite two to build were

- 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

Way back in the day before space was a non-issue I bought a used pioneer 720 disk DVD changer. Wrote a frontend to control it and mount the DVDs over iscsi for my media center.

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.

That geolocation messaging sounds brilliant. I guess Pokemon Go stole your idea.
It was neat but I never thought it would go anywhere. The idea was kind of like being able to leave virtual graffiti. So anyone could leave their "Kilroy was here" but without actually defacing anything.
That seems like a cool idea, a bit like web annotations (which never took off) but for real world locations.

Ideally you can subscribe to different databases unlike say Google Maps reviews.

Whoa, that DVD changer is almost as big as a server rack. I'd love to have that in my garage.
broca, a chatgpt powered dictionary + vocabulary book I'm working on.

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.

I might actually use this. Always looking for vocab helpers.
After getting an EV many years ago (not a Tesla) which had a truly terrible phone app for checking charge status, starting charging and turning on the heater remotely, I reverse engineered the API and wrote my own web-based tool to control the car. It worked great until 3G was disabled last year.
I wrote an app to do that with my Tesla.

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.

I wrote an app for reviewing and highlighting websites and most computer documents. I can drag the highlights into a built-in outliner and organize and comment them there. I can drag relevant highlights into a built-in report outliner where I can write the corresponding section of the final report. I knew I wanted it. I thought others would too. I was wrong on that. Sigh! I guess I built it just for myself after all.
I have definitely tried to build something similar after all. People are so particular with these things.
Sounds interesting, do you have a github repo for it?
It's called Epiphany Workflow. It's on the Apple App Store. I charge $20 for it. I'm making absolutely no money on it. Just now I changed the price to Free. I hope it's useful. Feed back in hugely important.
Smart RSS reader that, right now, ingests about 1000 articles a day and picks out 300 for me to skim. Since I helped write this paper

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?)

Do you have public source code for this? Looks great.
It's something I'm thinking about.

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.

> If somebody were interested in contributing some elbow grease that would help the case for open source,

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.

What do you mean by "outperform" in this context?
Area under https://en.wikipedia.org/wiki/Receiver_operating_characteris... curve.

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.

I too have an (private) RSS "laboratory" project!

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.

Interested in your filters, or a link to your results!
On the one hand, "echo chambers bad", on the other hand, I'd be lying if I didn't acknowledge that what floods and outnumbers most other content is a form of signal-to-noise ratio manipulation, and is thus creating an artificial echo chamber by sheer volume.

Would love to know more. I'm a sucker for anything RSS.

Ok, ill tell you some of the funny parts... I've kinda enjoyed keeping the "secret" for long enough.

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...

This commentary is even better than code :) Thanks!
This all reminds me of my friend, who doesn't really have a programming background, but uses Tasker (an Android app programmed through a UI) to automate tons of stuff and is incredibly happy with it. Meanwhile, I've had tons of ideas of things I'd like to automate, but never did, because Tasker is clunky and not "reliable" or "the right way", and a "proper" approach would be "better" or Tasker "might stop working / be unreliable". In the end, he has accomplished a lot more than I have, even though I supposedly have a much better foundation for accomplishing those sorts of things.

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.

Your post resonated with me a lot.

I'm jealous! Experiencing the world with all the garbage filtered out.

Nice approach! I added a very basic keyword filter in my rss reader (https://github.com/lallassu/gorss) to do some sort of "cleaning". But having a section in the reader that would filter out the articles more intelligent would be very nice, and maybe bundled them into clusters.
I do something similar for my personal news reader. [1]. Originally I had done it so I can read my tech news quickly. Now few of my friends also have started using it.

[1] https://embit.ca

Amusing. I, too, wrote my own ML-powered newsreader. (Not linking here because I don't want to de-anonymize my HN handle.)

I guess this is a thing people do. ;)

Does it use naive Bayes powered recommendations?
No. A DNN w/ BERT/nnlm embeddings (I'm between models right now). And a sort of context-based classifier so that it can react to new things you "like" without model retraining.
Cool!

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 also wrote my own feed aggregator (https://mofeed.news) from scratch in Go. It can connect to twitter, reddit, spotify/itunes(podcasts), rss, medium, youtube, etc.It has a good search engine (meilisearch) and also supports newsletter (each user has an inbox).

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 :)

Skimming 300 articles per day sounds exhausting
I agree. I have built a 'new tab' website for me and included a widget with the top 3 from the HN best list. So I am very happy with about 1-2 per day ;-)

Btw. this is the way I found this thread :D

How does the bit that determines if 2 articles are really about the same story work? How did you structure training data for that and get a training set?
I wrote a hearthstone simulator when the game came out.

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).

Malware scanner for anything uploaded to web servers. Was pretty cool at the time learning and identifying things in the wild then creating custom rulesets.
I take it this was a while ago then?
A shortcut on my iPhone, that I can dictate a note to, and it transcribes it and puts it into my GTD inbox in Notion. It helps me not forget things. Lowers the friction and allows me to make note of fleeting ideas, thoughts, and things to get done.
Not very interesting, but used VB script to make Netflix sleep timer for the active tab. (looks for the browser process, makes the windows active,sends a ctrl+W to the window to close the video player, and finally sleeps the display.

This way I can fall asleep to noise that doesn't later wake me up.

I feel like there's a whole suite of tools that we need to be used with netflix to make our lives easier.
A website to see a map of the world's tides, and bidirectional predictions for individual stations (edit: worldwide too, forgot I added that). The UI/UX is... archaic, but that's just how I wanted it. It works fully offline. https://solunar.pages.dev

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

that is cool, but I'm curious when the highest tide vs lowest tide of the year is.
It will change station to station, but if you open the station details page, adjust X Range to something like 28/180 days, then tune low pass to filter out all the high frequency (daily) fluctuations, you might get your answer. Some stations don't have strong Solar contributions, and won't change much on an annual basis, you can enable the Harmonics toggle and see if any show up on the outside in yellow (disable Sun).

I did consider adding a "max finding" mode of some sort, but that's never really been my use case.

That is really cool!
I’ve wanted to do this with Canadian data for years! My wife works for the organization which tracks our national tide data and builds our prediction models. It’s extremely fascinating stuff.

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!

I use MouseGestures so I often get fun surprises on projects like this when I right-click and then drag my cursor to close the tab. Yours might have been the best one yet!
It's a very nice, UI. The "viewing port" concept is very nice. A slider for timescale in the viewing window would be great! Also would be great to see worldwide cities tides :) edit: using the x-range view is an interesting time slider - I found the options toggle
Looks nice, would love something like that for Europe.
Unfortunately while US's NOAA provides all the data needed free of charge (with an API to boot), the UK government's equivalent charges an MSRP of £38.30 and requires finding and contacting an authorized distributor, though the data does seem to be more worldwide. I haven't seen other offerings.

https://www.admiralty.co.uk/publications/publications-and-re...

time machine
I did the same thing, but not for myself, it was to send other people away that I didn't like
Chicken coop auto-door opener so I don't have to get up at 4AM in the summer. It was just a basic Arduino system but I learned that large canning jars make excellent enclosures: waterproof, reusable, easily modified and replacable lid.
I might use that on my kids...
Not advisable to jar your kids
I did something similar, but gave up chasing parasitic electrical losses and didn't want to make the solar panel to power it huge.
A webbapp that helps me remember names by showing them in a graph network. Super simple, use it constantly

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.

Uh, what kind of graph network? That sounds pretty interesting.
@RedGreenBlack : could you share more please ?
MUDs are a great breeding ground for bespoke programs. I've made my own system of triggers and aliases in Rust, which interfaces with Mudlet (very popular MUD client) through JSON over stdio. Being written in Rust, it has enabled a publicly usable web tool (http://seurimas.github.io/topper/explainer/?/topper/explaine...), but the majority of the code is just for me.
The site you linked isn't loading for me. It's just a black page with a favicon
I had the wrong path for the demo file. It ought to work now.
https://hyperscript.org

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.

That's actually pretty cool
I wrote a program in C++ to download massive amounts of stock data from a data provider. The binary itself is 2 MB, memory use rises to over 16 GB and it frees everything at the end, so there are no memory leaks (I'm particularly proud of that). Over the years I've found better and better ways of making it run faster because a daily run will take over 6 hours of downloading and writing to my database.

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.

I should really give c++ a go...
If you're going for multi-threaded and "frees all memory at the end", it's probably going to be way easier to write it in Rust, and you should end up with essentially the same result.
Is the code public?
A tool called "diff modulo base": https://git.sr.ht/~nhaehnle/diff-modulo-base

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.

This sounds very cool! I recently moved from a FAANG company to a smaller one, and I'm _really_ missing the functionality their development tools provided (including this, which I agree is fantastic and sorely missing from the core GitHub experience).
If I understand correctly, this is like normal Git three way diff except you don't need the full source of the original base?
Maybe you can put a small example of code changes that illustrates this. The diagram helps but actual output based on a toy example would drive it home, I think.
I'm the author of DiffLens (https://www.difflens.com/). I initially built it for myself too (and use it everyday) and it's currently free for anyone to try. It's an attempt to use abstract syntax trees to make diffs more readable. Happy to see another diff project here!
i haven't used git range-diff but when local master is behind origin/master and I am trying to diff, I use a `git changes` .gitconfig alias:

    changes = !git diff $(git merge-base HEAD \"$REVIEW_BASE\")
Typically, that's:

    git diff $(git merge-base HEAD origin/master)
a soil moisture sensor using capacitors as the sensor. it's how i learned to code. i found a few different versions of the project online. couldn't get them to work very well but i was able to piece together enough knowledge of basic circuits to get the sensor to work well with my own circuit design.

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

Be nice to hook that up to some kind of watering system to always have the perfect moisture.
yep, that was the goal. my friend had a small organic farm but he lived an hour away and needed a good, cheap watering solution. led me to down a rabbit hole and now i'm a software developer. i'll probably revive it once i have some space to do more serious vegetable growing
Geeky misconception: the wet/dry cycle can be optimal.
https://ppg.report

Shows a nicely formatted weather report for flying my paramotor, pulling data in from many different sources :-)

Alright, i'm buying a paramotor. Thanks a lot.
dang thats nice. good job
Flying a paramotor must be so fun
I bought one of these LED screens (you get 64*32px, so not a lot!), and I wrote an app to view my local surf conditions on it (so I know what I'm missing out on while working). But because it doesn't support a way to run local apps that fetch from APIs, I had to add a way to show the forecast for other spots and make it "official". No idea how many people use it, but I saw it on instagram ads so that was some kind of validation haha. It looks like this: https://pbs.twimg.com/media/FMi996lVIAAQMI3?format=jpg&name=...
wicked, I love these display projects
> But because it doesn't support a way to run local apps that fetch from APIs, I had to add a way to show the forecast for other spots and make it "official".

I’m having difficulty parsing and understanding this sentence: how did this result in your display being posted on instagram without your knowing?