Now Reading
Ask HN: Most fascinating tech you constructed for simply your self?

Ask HN: Most fascinating tech you constructed for simply your self?

2023-04-27 10:04:56

My MIL is 93, and the only tech she can really deal with is turning on the radio and TV and changing channels.

She is fond of music from old classics (from the 60’s and earlier), so I hooked up a Raspberry PI with an FM transmitter and created her own private radio station. She tells me what songs she likes and I create different playlists that get broadcast on her station. It preserves the surprise element of radio, and there is nothing in there she doesn’t like.

The tiny FM transmitter is surprisingly powerful. Her neighbours (of similar vintage) are very happy too, so their requests have also started coming in 🙂

EDIT: I wanted to add that I am the UI … she doesn’t get to choose the playlist. To make my life easier, I just created different playlists for different times of the day … calm/spiritual/slower numbers in the early and late hours, peppy during the late morning and evening etc.

OP seems from India and AFAIK its illegal to transmit on FM frequencies without a license. I understand it might be low powered but theres a chance of Police coming knocking on the door. Whats worse is it might interfere with emergency services. There is a reason we have spoctrum licences.

I hope they don’t know how to use Google and if they do that that is a pseudonym you’re posting under here or you might be in bigger trouble than you started with 😉

Anyway, cool to see you hack this, maybe try to tweak the power levels a bit so the neighbors don’t have a reason to talk about it.

The FCC allows personal FM transmitters to operate with a maximum power output of 250 microvolts per meter at a distance of 3 meters.
Other countries are more permissive, so this is not a problem. As long as you don’t interfere with anyone and emit in a band that’s not used in the area, it’s perfectly fine.

I was curious what kind of range that might have, so I put what you said into chatgpt and asked what the range of a typical car or home stereo would be, and it gave me this (not sure if it’s correct). FWIW, much less than 20 miles, haha.


The maximum power output of a personal FM transmitter allowed by the FCC is 250 microvolts per meter at a distance of 3 meters. The range of the transmitter depends on various factors such as terrain, obstructions, and interference.

Assuming ideal conditions, such as no obstructions or interference, the range of the transmitter can be calculated using the inverse square law. This law states that the strength of a signal decreases with the square of the distance from the source.

At a distance of 3 meters, the signal strength would be 250 microvolts per meter. At a distance of 6 meters, the signal strength would be 62.5 microvolts per meter (250/4). At a distance of 9 meters, the signal strength would be 27.8 microvolts per meter (250/9).

Typical car and household stereos have a sensitivity of about 2 microvolts per meter. Using this sensitivity value, we can calculate the range of the transmitter for these devices.

For a car stereo, the transmitter would have a range of about 26 meters (square root of 250/2). For a household stereo, the transmitter would have a range of about 63 meters (square root of 250/0.5).

However, in reality, the actual range of the transmitter may be shorter due to various factors such as interference and obstructions.

Yes, technically it is illegal. But I’ve seen all kinds of gizmos that would inject a signal into the FM band to allow the use of car stereos that didn’t have an ‘aux’ input. At those power levels the FCC isn’t going to be bothered unless someone lodges a complaint, and even then they’ll have a hard time finding the source unless they’re practically standing on top of it. OP may want to turn down the radiated power until it just works for his MIL but no longer for the neighbors.

Where I live, this is absolutely not the jaywalking of RF violations. In Germany, if it is proven that your signal was potentially interfering with emergency services, you will be liable for any damage to victims in civil courts. And if somebody dies in your area because the emergency services couldn’t get there on time, you will be criminally charged for “negligent manslaughter.”

I wouldn’t play at all with non-approved RF frequencies personally.

Worth noting that there already exists a product in the Indian market by a big music label that addresses this exact issue. I’ve bought my grandfather one of those and he’s very happy with it!

<Dusts off Ham Licence> Anyone can use amateur frequencies in a genuine “no other communication options available” emergency, if I remember the regulations correctly.

Edit: “§ 97.403 Safety of life and protection of property. No provision of these rules prevents the use by an amateur station of any means of radio communication at its disposal to provide essential communication needs in connection with the immediate safety of human life and immediate protection of property when normal communication systems are not available.”

From my MP3 collection. I buy the songs or albums she likes and broadcast them. For some that are not on sale anywhere, I scrape them off youtube, but usually send a note to that channel for original sources where I can pay for it.

Cool! I asked because there are many niche playlists on Spotify you can find for oldies, for example some very specific for the 60s, 50s, 40s, etc. Perhaps it could help her discover similar, but new, music.

I forget. But just search for “kit FM transmitter”. I’d fully intended to build a “proper” transmitter, and was keenly disappointed that you could just buy a cheap single-chip board.

Nowadays you don’t even need that. You can turn the RPi itself into an FM transmitter. Search “how to FM broadcast on raspberry pi”

> You can turn the RPi itself into an FM transmitter.

Never tried it, but given the way it works, you definitely need some output filtering unless you accept to pollute all harmonics of your channel (which might be licensed spectrum too, and interfere with services you don’t want to interfere with in the first point)

Would love to see a blog about this setup. I, not old, always want to dump much of my music & simply want to listen whatever is next (& miss it if I don’t listen) just like radio.

Have you seen Icecast [1]? You create playlists of local music, then play them with something like mpd. Icecast then streams them out and clients like VLC, xmms2, and even older versions of Winamp can stream it.

I set this up for all my music in shuffle mode for my own radio-like always on streaming service via Tailscale.

1. https://icecast.org/faq/

I’ve wanted to try something like this with a Pi or something else running Linux. Is mpd a good choice for that scenario? Does it support being able to use custom events eg a button on the gpio for play/pause?

I have a rail line right under my apartment, so I built a small computer vision app running on a Rasperry Pi which records each train passing, and tries to stitch an image of it.

It has a frontend at https://trains.jo-m.ch/.

Edit: it is at present raining and the rain drops are disturbing the photographs a bit.

Sounds interesting id love to know how you do it. Is the speed calculated based on the noise of the wheels going over a track join? Then you can work out the length/speed based on the time it takes etc. Are the train types/images random or calculated some how?

I built myself an automated hydroponic grow tent.

It measures and corrects pH, electrical conductivity, oxidation reduction potential, temperature of the air and water, water level, and humidity. It also automates pumps, lights, and fans (I know people normally advise against this). None of it is particularly sophisticated, but I’m really proud of it.

I initially used a deep water culture and later moved on to the nutrient film technique. It produces a lot of greens and herbs — way more than I ever expected — and it’s remarkably hands off. I recently left it to do its thing for almost 3 months before I had to intervene, and the problem wasn’t the water, nutrients, or the system failing explicitly. The plants just got too big for their channels and as they became stressed, they developed some pest issues. It was such a cool and empowering experience to see real world automation Just Work.

The whole thing is powered by an Arduino Nano RP2040 Connect. It’s a great little controller.

I’m currently designing my first PCB to consolidate the system onto a single board so my friends can easily build their own. It’s not extremely cheap, but it’s not too expensive either and you get a tremendous amount of food from it. It’s such a fun hobby.

> It produces a lot of greens and herbs

If that were NL at this point your whole audience would be on the floor laughing. ‘Suuuure…’. What some people won’t do to get decent tomatoes.

I’m very interested, is it possible for you to open-source it? Also, what are its absolute dependencies? Does it depend on daylight? Fresh air from outside? Stored chemicals? Is water/air recyled? What is the reason behind you making this? I’m preparing for Collapse and want to do such a thing soon. If you can open-source it, it would be very cool and helpful.

How do you keep water touching sensors working long term? I tried similar sensors but they all get rusted / oxidized to work properly after a certain time.

not OP, but one of the tricks is to activate the sensors only when measuring, so there’s no constant DC applied to the sensor wires/pads. once you have that, reduce measurement frequency, so to mainimise the time when voltage is applied to the sensors. for example once every hour for moisture is sufficient, and 1/sec isn’t really going to help much.

Off-topic but perhaps interesting:

That’s what they do when performing catheter ablation (a medical procedure for curing cardiac fibrilation by destroying minute parts of muscle with electric current).

DC would work just as fine on this procedure, but due to electrolysis of water, oxygen and hydrogen bubbles would form, which could get stuck somewhere. Using a square wave AC quickly reverses the reaction every period, like you suggested for the moisture meter.

https://en.wikipedia.org/wiki/Catheter_ablation#Technique

I do not know the reply to your query, however it could be value making an attempt.

I’ve seen a clever setup with the sensors in a dry container above the water tank. There is a hole in the bottom.
Before testing, a pump fills the container up with the tank water, flooding the sensor probes. When the pump stops, the water drains back out into the tank.

I co-organized a weekly hacknight meetup of 40-70 people.

I wrote a script to make Anki spaced repetition flash card decks with avatars and names pulled from the meetup API. I would use GitHub Actions to run the script a few hours before the event, then drop the importable deck into a Google Drive folder. I’d review the deck before the meetup, and then at the event, I’d not stress about names. I’d pretend to introduce myself to new people like I didn’t already know their names, but I’d be able to make them feel very welcome when I remembered, or introduced them to others.

Why do this arguably creepy thing? Because I am really forgetful with names, and when I forget, I become reluctant to approach people, which comes across as less friendly than I prefer to be. But I believe using people’s names is REALLY important to community organizing. When I know names, I am really great at using them a lot, helping others learn them, generously making introductions, and helping people to feel a sense of belonging.

It was the best community organizer hack I ever came up with, until meetup locked down their API and broke it…!

https://github.com/CivicTechTO/anki-meetup-memorizer

My townhome complex had one of those call boxes at the front gate. When Doordash/FedEx/the cleaners/the in-laws/etc arrived they would have to call me from the call box and I’d have to answer it and listen to garbled audio to figure out who it was and press 9 to open the gate. It was kind of a pain, so I made a Twilio app to answer calls from the call box.

I set up custom entry codes that I could hand out to anyone. Everyone got their own code, and it would text me whenever someone used a code so I’d instantly know who was coming. The text conversation was my timestamped access log. I also put time constraints on some codes so e.g. Doordash couldn’t open the gate in the middle of the night, or I could set up a temporary access code for a party, and I rotated codes too, with text notifications if an outdated code was used.

I thought about making a paid app out of it, but it just didn’t seem worthwhile. I didn’t expect that many people would want to pay for it. For a while I was excited about a YC startup called Doorport that was going to make a hardware device that you’d install inside those dumb call boxes and make them smart with all sorts of cool features, better than my Twilio hack. But I think they pivoted to a much less interesting pure software thing and then got acquihired.

Nice! I built the same thing for a gate at our vacation house at a lake. The home-owners have to register their mobile number so that if you call a certain number the gate opens based on number recognition. Every time new people were at the gate (deliveries, guests, renters) they would need to call the owner, who had to hang up and call the gate’s number.

I use twilio to make outbound calls to that number using my registered phonenumber. I put a Django app in front for home owners so they can add authorized phone numbers with a expiration date.

Whenever someone is a the gate they call a twilio number, my django app checks the validity, opens the gate by calling the gate’s number with my number as ID, plays back some welcome message “hello chris, welcome to…” and sends the owner a push notification that person X is en route.

Todo: add a feature to redirect an unknown number directly to the owner and open the gate after manual verification.

I had a buzzer that was basically a button on the handset of a phone which would
Open the door, I wasn’t allowed to open it up to wire directly into it so I slapped together a node red script on a rpi with a servo that would push the button to buzz open the door anytime I said “open seasame” with Siri via an iOS automation thingy. Never needed to carry keys again while we lived there.

Cool. I did the same thing for my office building except I had Twilio post to our work slack with buttons that we could click to let them in or not. It was a really fun little afternoon project one day.

My related story: we have door phone system in our apartment house and I wanted to get a notification whenever our flat got buzzed. I hacked the phone in our flat – attached a circuit directly to the wires leading to the coil of the buzzer and through arduino to the pc. Then I stitched together some code utilizing firebase to send notifications. Worked like a charm until google began to require credit cards for the free stuff.

You’re right, this looks like almost exactly the product I would have made if I decided to turn it into a product. I think they started around the same time I did. I wonder how much money they’re making on it? Could be a nice little lifestyle business if they get enough users. I bet their Airbnb-focused features would be the real moneymaker, I didn’t consider that as a potential market.

That sounds neat. When you say everyone got their own code, do you mean that each person had a separate code for the call box, and the call box would call one of many separate Twilio phone numbers? Or did the call box always call the same Twilio number, and you instructed each person to then input their special code via the call box? My apartments have always just asked me for a single phone number which they program into the call box, so I’m guessing the latter, although it never occurred to me that the guest might be able to press more buttons after the phone call has been connected.

You’re right, it’s the latter. Yeah, you can still use the keypad after the call is started. But it’s a little clunky. The instructions you have to give people are like “first dial 542, then wait until you hear the prompt, then enter code 867”. Which as it turns out is a little too complex for a lot of people. Another reason why it wouldn’t have been great as a paid product.

You could also have a fallback that forwards the call to your cell phone after a failed attempt at entering the code. But most of the reason I built this was so it would stop calling me at random times, so I didn’t really want that.

Haha, I also built exactly this!

I had mine integrated with Home Assistant and got notifications via a telegram integration.

I also had mine setup so me or my room-mate in our apartment telegram group could register new codes, or generate single-use codes.

I also considered building it into a paid app, but came to the same conclusion 🙂

The product should be a LLM learning from each interaction globally. So you walk up to the door and it says Hello Jim, I see you work for fedex now. Could you please show me the label on the package?

With triggers like: If the cleaner is more than 15 min late 5 times in a period of 3 months and there are more than 5 resumes posted for cleaning positions do not open the door and fire them.

Control your fan speed with your heartbeat.

I created this while setting up a home trainer for bike training in my garage during the lockdown in 2020. One issue with home trainers, unlike biking outdoors, is that you don’t get the benefit of the wind generated by your speed that cools you down. So you sweat a lot, and this creates dehydration. Not cool (pun intended).

The solution is to use a fan. But when you are lazy (and focused on your workout) you don’t want to have to get up and adjust fan speed (and I don’t have a remote for my fan, and it’s much cooler to have it automated instead).

https://github.com/edelans/Heart-Rate-Smart-Fan

My mom digitized many many old family videos, and wanted them online for sharing with family (including elderly & not-super-tech-savvy relatives). She asked me “should I just upload them all to a YouTube channel?”

Thankfully it was a phone call so my mom didn’t see my aghast expression. I prefer that big tech not index this stuff! Better to keep “in the family”

Seriously why does big tech deserve this free & super-private window into me & my ancestors lives?

So I wrote something[1] where:

* it’s fully free & open source

* cloud native

* plays on any device, any bandwidth, even if shitty

* yes my 90+yo Aunt Loretta (w00t to you Aunt Lo!) can use it on her phone & computer

* all data can be always encrypted, both source videos and derived/optimized assets

* and there’s more. please have fun

Basically point it at a source bucket on S3 or B2, and get your own private YouTube.

What I’ve built is very limited in functionality atm, but I believe the foundation is solid and plan to extend media support to photos and audio.

This can be a nice alternative to Plex/Google Photos/YT/etc.

It’s for when you don’t care about “building an audience” and in fact prefer that big tech can only see encrypted bytes from you.

Try it out and lmk!

[1] https://github.com/cobbzilla/yuebing

Hey, sounds like a very cool project.

I’m wondering: have you considered setting up a Peertube instance and what were the reasons for not doing it?

Other question about not giving away your private data to big tech: Why is S3 better than a private YouTube channel?

I like S3/B2 because the vendor only ever sees encrypted bytes. All decryption/plaintext is on the device. YouTube does not get you there. In fact their entire model is predicated on watching your every move.

As far as Peertube, I don’t know enough about it. If I put a massive-bitrate video in some weird format on it, and then try playback on a crappy phone, will it work? If I go through a short tunnel, will it buffer or degrade quality gracefully? I don’t want to worry about it.

> S3/B2 because the vendor only ever sees encrypted bytes

Got it, thanks!

> questions about Peertube

I don’t know either. So far my experience with existing instances has been rather good but I didn’t consciously test the use cases you mentioned. I’ve wanted to publish educational videos for a while but the idea of feeding the big nasty beast just breaks my heart.

nit: The language in the readme is called ‘Marathi’ instead of ‘Maranthi’. It’s my native language, and not a ton of people speak it online. Nice to see it here 🙂

If it’s old pristine video, might be worthwhile for anything without identifiable info on YT. Never know who this helps or brings backs memories.

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 used to be all the time asking “Why is RSS failing? Why do failing RSS readers preserve utilizing the identical failing interface that retains failing?” and thought that textual content classification was prepared in 2004 for content-based suggestion, then I wrote

https://ontology2.com/essays/ClassifyingHackerNewsArticles/

a number of years in the past, after Twitter went south I felt like I needed to do one thing, so I did. Regardless that my previous logistic regression classifier works effectively, I’ve one based mostly on MiniLM that outperforms it, and the identical embedding makes brief work of classification be it “cluster collectively articles about Ukraine, sports activities, deep studying, and so on.” over the past 4 months or “cluster collectively the 4 articles written about the identical occasion within the final 4 days”.

I’m trying in direction of making use of it to: photos, sorting 5000+ search outcomes on a subject, workflow methods (would this text be fascinating to my spouse, my son, hacker information?), and commercially fascinating issues (is that this individual a very good gross sales prospect?)

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 do know many individuals hate AWS and different cloud providers.

If any person had been desirous about contributing some elbow grease that will assist the case for open supply, alternately a hosted demo of some form would even be potential however I am not able to put my money and time into it. Contact me for those who’re desirous about discovering out extra.

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

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.

I’ll share a project I’ve been working on that has greatly improved my meal planning. I created a tool to tell me what and how much to eat from a list of ingredients.

Unlike most existing apps that only track what you eat, my app helps you figure out how much to eat to hit your target macros. Initially, I had created some Python scripts that worked well, but I found them inconvenient to use as I needed to be near a computer, edit the script and manually add ingredients to a dictionary. To make it more user-friendly/faster, I re-wrote it as a web app in Rust for the backend and integrated a free food database.

Now, I can quickly and easily add a list of ingredients I have at home from my phone and hit calculate.

Currently, I’m the only user, and the tool is designed entirely for my needs. However, I think it could be useful for others looking to plan their meals and eat healthier, which is why I host publically. If I were to build it for general public use, I would need to relax the constraints to allow flexibility on how close it can match your targets. I would also want to add more food sources, maybe the USDA database, but since I’m not in the US, a lot of the foods won’t be relevant to me. Maybe if I get the time i’ll work on it but for now it works perfectly for me.

You can check it out at https://www.macrosolver.com/. Let me know what you assume!

I build a “SaaS” wine app, for tracking wines in my cellar and for tasting notes as well.

“SaaS” in quotes since it runs in a small production setup with all the bells and whistles (ie. CI/CD pipelines, continuous releases, user signup etc.), but I’m the only user 🙂

I’m a wine enthusiast, i.e. not a professional but interested enough to do a WSET2 in my spare time (I’ll do a WSET3 when I find time some day). I like to/need to keep track of two things as part of my wine hobby: Wines in my cellar, and tasting notes.

Used to keep the wine registry in excel and notes in Evernote, however especially the excelsheet lacked features, like easy searches from a mobile device, and notes about the wines in my cellar (not tasting notes, as I have plenty bottles I need to taste but havn’t yet, and I still need some notes on those to remember where the heck I got them from and why).

Also, WSET2 tasting notes a much quicker to do with the proper template, but copy/pasting text in Evernote became too annoying (again, phone).

So, I build my own app to have exactly the features and mobile friendly GUI I want. I’m the only user on purpose, because then I can keep building and changing features to be just like I want them.

Yes I know there are some “wine tracking apps” out there, like CellarTracker and Vivino, but they dont fit my needs. CellarTracker is closest to my needs but way too clumpsy GUI and not mobile friendly — I don’t have my laptop with me when I’m in the cellar to find a wine for tonight, I have my phone.

Will I every make up the time I spent building it in time saved compared to my excel/evernote setup? Nope, not even close. But it was a fun side project, and I like fiddling with the hosting/Ops part.

Sure. You can get WSET 1, 2 and 3 for sure in UK (https://www.wsetglobal.com/wset-school-london/wset-courses/).

One other standard wine schooling is CMS (Courtroom Of Grasp Sommerliers) https://www.courtofmastersommeliers.org/current-course-price…

WSET is meant to be extra centered on the manufacturing of wine, the place CMS is supporsed to have extra give attention to service/serving (for waiters). Its particulars and I believe maybe extra of a unique within the decrease ranges.

I can advocate WSET. I had a fairly good information of wine earlier than I began, so I did WSET2 first. WSET1 is brief and fairly primary, however excellent for rookies and/or for those who simply need to have a taske earlier than taking one of many larger ranges. WSET2 continues to be newbie area I believe, since there’s an examination however its not a sensible examination (i.e. no tasting examination). WSET3 will get severe 🙂

I built carefulwords.com simply because I wanted to type a word into the address bar and get a large list of synonyms and some historical quotes using the word quickly. For example:

https://carefulwords.com/solitude

https://carefulwords.com/think

and so on. Additionally in contrast to thesaurus.com, the search bar really focuses so you may simply begin typing!

It is not excellent, I have to do a number of modifying, however nonetheless I take advantage of it virtually each time I write, now.

The location is slightly over 30,000 static HTML pages constructed with numerous TypeScript scripts that compile some sources for synonyms, components of speech, and the quotes.

I don’t particularly care about synonyms (when I consulted a thesaurus too much my writing became too flowery) but the historical quotes feature was just great! I can imagine downloading the full text of several of my favorite authors and index the words from that corpus.

This is wonderful, and fast too (because it’s static I guess)! Thanks for building it. I’ll be checking it when I need some inspirational quotes surrounding a word.

Not sure if this counts:

A lighting desk for my hobby of lighting live music. For reasons I like doing live control along with the music (known as busking). Existing things are either limited and can’t control moving lights, or don’t have the flexibility to busk the way I want. so, having worked a long time ago for a crowd that built what were at the time the best lighting desks in the world, I built my own

It has 36 motorised faders and a bunch of other boards with buttons, that each ave their own AtTiny to run the function, they talk to a BeagleBone Black which runs the main code loop and uses its on board realtime processors to generate DMX, and a raspberry Pi to run the GUI for configuration.

Worked a treat most of the time, and I’ve done hundreds of shows with it, with crowds of up to 400 people, Sadly, I made a dumb decision on the protocol for the fader and button boards to talk to the BeagleBone and every now and then it causes a kernel panic on the Beaglebone, which means at best you lose control of the lights and at worst it goes dark on stage.

I started a redesign using a more sensible protocol but got hit by a double whammy of Covid killing the live music scene for a couple of years, plus the all the supply chain issues, so it’s on hold now.

We were using facebook exclusively for the ‘private group’ feature with a some friends in 2012. We liked the fact that it was private and asynchronous.
But I didn’t like the fact that it was tied to facebook. I decided to put into practice what I’ve learned that year at my informatics school and created forum written in php. It was not much but we liked the fact that it was ours.

Ten years later, I’m still fiddling on it and it has grown to a real open-source project that you can find on github [0]. It’s still primarly here to serve me since I’m the only maintainer but starts to be driven by external propositions. It’s meant to be easy to deploy, easy to use, cheap in resources and reliable.

[0] https://github.com/zusam/zusam

We recently remodelled our kitchen and dining area, and I wanted some art piece on the wall but couldn’t decide what. For months the wall was a little bare and we were having a lot of dinner guests. I realised our WiFi password was too complicated to keep reading out to family and friends so I built a QR code in Lego that automatically connects you to our guest WiFi. It looks good, and it’s Lego so it was a fun project with the kids. It took about 4 hours to build. The only problem was having enough 1×1 tiles to put on a 37×37 matrix.

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 enjoyable half was transcribing 70+ 12 months previous NOAA tide calculation mathematic/astronomic/hydrologic analysis papers into trendy TypeScript. Method is semi-documented right here: https://github.com/JacksonKearl/solunar

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!

The G-Seat as part of my sim-rig. 9 AC Servos, borderline dangerous, beast of a simulator. The G-Seat I decided to do better than commercial offerings (had tried “the best” and it was pretty average). CNC brake folded aluminium seat with moveable flaps controlled by AC Servos – had to ‘de tune’ as they were literally at rib-breaking speed initially. About a year worth of development designed and prototype in Fusion 360, through to this :

https://www.youtube.com/watch?v=STnnqonpcAU

And one other vid at max rpm on the servos…

https://youtu.be/eMZC0ekEXQ8?t=39

I built a website to track the generation of electricity in Spain since I couldn’t find a single page from the official provider that contains all the information I wanted to look at at a glance.
https://energy.antizone.site/
It scrapes completely different items of knowledge at completely different intervals.

A deadman’s switch connected to a manner of things. It basically works by ‘non-existence’ instead of existence and fires a webhook once something stops. For example, if my computer is turned off for a couple of weeks, it will send an email to loved ones. When I go day hiking, something similar happens when my phone loses service/power for more than a couple hours and sends a low-quality gps track. Basically it’s if-this-then-that but more like if-this-stops-then-that. I have it tracking all kinds of things, like git-commits-per-person, server/device health metrics, and things like that.

https://mathb.in/

I wrote this 11 years in the past for my associates and myself who had been going by means of a section in our lives once we used to problem one another with mathematical puzzles.

Using this instrument unfold from my associates to their associates and colleagues, then faculties and universities, after which to IRC channels. Now it’s the oldest arithmetic pastebin that’s nonetheless on-line and serving its neighborhood of customers. Go to https://github.com/susam/mathb for the supply code of this instrument.

A tool called “diff modulo base”: https://git.sr.ht/~nhaehnle/diff-modulo-base

Given two model (previous and new) of a Git change (i.e., particular person commit or patch collection from a pull request) it produces a diff that’s really helpful for reviewing functions, assuming you’ve got already reviewed the previous model of the change.

It is form of like `git range-diff`, however the place `git range-diff` produces a “diff of diffs” that may be very laborious to not possible to learn, this instrument provides you a direct diff between previous and new variations, however filters out any irrelevant modifications that had been launched as a result of the creator rebased on a newer model of the goal department.

I hope that is smart – I by no means know fairly the way to put it into phrases for any person to grasp who is not intimately conversant in Git. It is vitally highly effective although for those who mix it with a minimal quantity of setup e.g. for fetching all PR branches from a GitHub repository. I take advantage of it virtually every day as a part of my code evaluation 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).

My dad wanted a analysis tool for Flight Sim, ended up having to build one himself that tracks flights then generates loads of reports and maps for you. The map shows you landmarks you flew over with short descriptions, a 3D model of the flight, various charts describing things like glidescope, GForces, speed, pitch/yaw and a bunch of other stuff like runway alignment. He spent so much time that he decided to make a product out of it that’s doing quite well: https://myfs.flights

Made a desktop app for homebrew beer recipes.

There are plenty of brewing tools out there, but ito data model and workflow they are all basically descendants of ProMash. I wanted something that approached home brewing with a focus on process instead of ingredients.

My data model of a “recipe” is a DAG of typed process steps each of which can have ingredients attached. Liquid volumes move through the DAG and are modified at each step. Outputs of the recipe are at the leaf nodes. This model can represent any wacky brew day you can dream up – including and not limited to multiple mashes, splitting or combining volumes pre or post mash/sparge/boil/cool/ferment/whenever, packaging wort, etc. The regular tools usually can’t even represent a partigyle batch properly.

Honestly for my regular 20L single-infusion no-sparge brew day it is probably slightly less convenient than say Beersmith. But for unusual situations it shines. For eg this past festive season I found myself needing to stock up quickly. Designing a 40L “one mash, one boil, two different beers [1]” double batch brew day was easy, and hitting all the numbers along the way for such a mad-hatter exercise was incredibly cool.

[1] Scottish Export and Sweet Stout

I made a gender swapping algorithm for my own use only. You put in any text and it outputs the exact same thing with all the genders reversed. Man to woman, he to she, Prince to princess, witch to wizard.

Then got a book deal to create a series of gender swapped illustrated books ‘Gender Swapped Fairy Tales’ and ‘Gender swapped Greek myths’

It seems like a simple enough task but gets complicated in weird ways. For example – his can swap to her or hers depending on the context. And her can swap to his of him depending on context.

The idea is to show the biases in the original stories that you are blind to because you’ve been reading them forever.

My ex used to be pissed when I spent whole day coding and dont wrote her a single message…

It was way back before gpt and twilio, so I bent one IRC bot and wrote collection of warm messages that was send via SMS on a pseudorandom timeframe. We broke up when she finds out … Luckly for both of us I guess.

About 8 years back, I was leading an engineering team which was the escalation path for customer support. We were sitting on a large corpus of support tickets but didn’t have any insights. I was amazed when word2vec came out and blew my mind. So I built a language model that trained on support ticket data. I modeled system logs attached to support tickets as an NLP model to predict what was going to fail next and for which customer.

Never made it to prod but was a great tool for me to see where I want to budget my team’s time.

This is way before all the LLM and Generator models, but it was such a fun project.

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 built my own lay man’s digital signage solution.

I wanted to have a display in my living room, which shows the temperature of all rooms in my apartment. So I used an Android Picture Frame. This is connected via WIFI, and offers FTP access.

A Docker service on my local in-house server grabs a random background image from a folder. Depending if we have day or night time, the picture will show satellite images from earth’s day or night view.

It then connects to my home assistant instance, and pulls all the necessary values. A SVG template is then filled with these values, and they are merged with the background image. The service then uploads the image to the picture frame, and it will refresh the image after some minutes.

The whole thing uses templates and config files, so it’s easy to extend.

Unfortunately, the picture frame broke down since, and I haven’t had the chance to buy another one yet.

To be fair, I’m trying to turn it into a public product since I think the use-case isn’t very niche.

I’ve recently started building https://responsebrain.com the place I can add all my weblog articles and routinely let ChatGPT generate responses to questions on my different product https://webtoapp.design

It is a fairly primary setup with a information base you may feed something you need (your weblog articles, assist heart and so on.). That will get put right into a vector database after which I cross the associated information items to GPT together with the query.

I do know there’s a lot of related merchandise on the market, however none of them appear to permit guide modifying of your information base they usually all appear to be centered on creating chatbots. I’ve adjusted the prompts to work finest for e-mails.

I made
– A screenshot to text copied to clipboard
– Another variant had translation from one of the local languages that I can’t read to english
– Built a keyboard identifier for windows that could know which USB keyboard the keypress came from and then suppress keystroke and then launch the program (differentiating keyboards is unnecessarily hard btw)
– A python app that could pin any app ‘on top’ or change it’s opacity %

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=…

A Random Movie Maker that looks at my 4 TB collection of personal history… digitized journals, email, photos, digitized cassettes, phone messages, and home videos, and creates a random 15 minute movie. Each video will include about 50 clip sources. It’s a crazy trip down memory lane.

I’m a big SNL nerd and have favorite sketches/memories going back over 30 years. I find it very rewatchable, but streaming services don’t have full episodes, and even downloading full episodes wouldn’t make it easy to find individual sketches. So I built a Plex library of over 500 individual sketches using some automation.

I used yt-dlp to download the metadata for over 6,000 videos on the SNL Youtube channel. I put it into a database, parsing out season/episode into fields where possible. Then I wrote a small Flask app to search or browse seasons/episodes, from which I could flag for download the sketches I wanted.

I made a pomodoro timer display using a WiFi-connected ESP32 board with a small OLED display. I put it outside the guest bedroom/home office door during lockdown so my family members could see how long until I could be disturbed.

It talked to my laptop using MQTT and of course it was triggered from emacs using org-pomodoro.

A recipe manager for our family that strips all the SEO text out using the OpenAI API. I built this after someone in our family got diagnosed gluten intolerant and we had to make changes to our usual recipes.

Normal recipe sites tend to be full of irrelevant (SEO optimized) text, ads and tracking, and I wanted something to just get the recipe in a clean form.

It’s a basic web application (mostly in Go) to manage recipes. New recipes are imported from an URL, after which it extracts the plain text from the site and uses GPT to get a markdown formatted recipe and list of ingredients.

This would’ve been much harder pre-GPT, but now was trivial to implement.

Oh for sure. I think Paprika (?) does a decent job. To be fair, it started as a learning project for myself.

As a minor detail I also translate everything to the same language as part of the transformation. Just a bit of prompt experimentation.

I have a bunch of these. They are my favorite things to make. I’ve been making things like this for a long time but I only recently started to appreciate them after discovering this article. https://www.robinsloan.com/notes/home-cooked-app/

– I’ve a incapacity and require every day private care so I made a system for recruiting and hiring caregivers. (https://blakewatson.com/journal/a-home-cooked-app-for-hiring…)

– I want to trace these caregivers’ hours so I can be certain that timesheets are correct, and I wished to do it with minimal effort. So I created a plain textual content syntax readable by an online app I created that takes that syntax and outputs precisely what ought to go on the timesheets.

– Generally the federal government company that runs this system would not ship me sufficient timesheets, so I created a “forgery” of their timesheets in CSS the place all the values are interchangeable by way of JavaScript. Now I can print any timesheet for any one among my caregivers for any time interval on demand.

– I made my very own web-based bookmarking instrument to switch my Pinboard account. It routinely sends each bookmark to the Wayback Machine. (I wrote about that one and a few others https://blakewatson.com/journal/the-joys-of-home-cooked-apps…)

– Sadly I am now not in a position to make use of this one due to lowering power, however I as soon as created a customized mobile-based keyboard for typing on my Mac. https://www.youtube.com/watch?v=Pre6EQGIuKY

– I wished to have the ability to share my plain textual content notes so I made a CLI for selectively publishing notes to the online.

Actually most every part I make exterior of my day job is for me/household initially, however a number of it I find yourself publishing. For instance my predominant aspect undertaking is A Effective Begin (https://afinestart.me/). It really began as an assistive know-how only for me—typing is tough so I wished a brand new tab web page with simply clickable textual content hyperlinks. I used it for some time myself earlier than ultimately turning it right into a browser extension and repair for different individuals.

I like to play Factorio, but too often lose track of time while playing. There’s no clock in the game’s UI, and no way to access the system’s time through the mod API. So I made a script that runs as a process on the host machine that every minute, sends commands to the game’s process to build a clock in the center of the map out of concrete. Its pretty cool because you can also clearly see the time from the mini map.

https://gitlab.com/smew/factorio-clock

I have glued BLE beacons onto my trash cans in the backyard and written a Python program for a Raspberry Pi that uses its Bluetooth interface to detect the beacons and keep track of whether they are present or not. It also downloads the trash collection calendar from the local utility provider responsible for collecting them and produces an overview over all four types of trash cans with info on their whereabouts (in the backyard or next to the street, based on whether the beacons are visible or not) and number of days until they are collected. If collection is imminent (tomorrow) and the location is still “the backyard”, a big flashing warning is shown, requesting whoever reads it to move the trash can to the street so it can be collected.

The Python program produces a regularly updated XML document, which references some XSLT so that when it’s loaded in a browser it’ll render a nice HTML page with styling and images and stuff. The Raspberry Pi serves that over an HTTP server in the local WiFi, and in the kitchen there’s an old Amazon Fire 7 tablet stuck to the wall where a Kiosk browser keeps that page on fullscreen display and regularly updated. The tablet also has all sleep modes deactivated so it is on all the time.

This way we never forget to move out the trash for collection, which we did regularly before I had this solution in place (built it about 5 or 6 years ago). It’s horrible in a family of four if the trash is overflowing just because you forgot to move the trash cans to the street so they can be picked up.

2 years ago the solution (called “Internet of Trash”) was extended by a little Bluetooth label printer located next to the tablet in the kitchen and some UI on the web page allowing to quickly print sticky labels with two lines of text, usually used to label boxes with food leftovers and pre-cooked ingredients (such as sauces for example) with what’s in the box and the date when it was cooked. The UI has easy quick-choice buttons for the common food items we usually have and the last few days for the second line, but also allows free-form entry. It relays all input via the Raspberry Pi which sends it over Bluetooth to the printer. The labels help us immensely to keep track of leftovers stored in the fridge or the freezer – not just to know the exact type of food in the boxes, but also to determine when stuff has to be thrown away or which to use first when multiple boxes contain the same food ingredient.

I don’t know if it qualifies as the “most interesting” but as a travel bug I wrote a little airfare scraper that I got plenty of value out of.

Basically it’s a script that scrapes several places for flight deals and “mistake fares” and notifies my phone if it matches with my city. No searching like other flight apps, you basically just set it up and wait, and various places will pop up. Helps if you’re in a hub city e.g. NYC.

The phone notification was crucial because such deals sold really fast. In case the booking didn’t work out I was usually covered by the 24 hour cancellation rule [0][1].

I started off running it on my own server but later I learned IFTTT handles device notifications without paying the Apple Developer tax, so I migrated things there. Used it more when I was single but nevertheless it’s helped me land some killer deals e.g. NYC-Dublin RT for $300, NYC-Paris RT for ~$400.

Thought about making a paid app out of it but the limited seating and time-sensitive nature of these deals is tricky.

[0] https://www.transportation.gov/airconsumer/notice-24hour-res…

[1] I consider this rule, which isn’t so broadly identified, was imposed on air carriers in response to sure fraudulent on-line advertising practices occurring on the time.

Scott’s cheap flights (going.com now) has basically implemented this in a nice little paid service. I got sub-$400 roundtrip direct from Seattle to Dublin. If you can snag even just a deal a year, it’s well worth the small yearly price!

I really like reading books, non-fiction, fiction, business, everything. But I always tended to have good reading momentum and then life/work happened that derailed the reading habit – and I forgot about it. Took months to pick up again…

To keep reading top of mind I built a Chrome “newtab” extension to show my “Currently Reading” list, and excites me about books I’ve put as “to-read”. It has worked wonders on my reading! And it is pretty small and polished – no tracking, no credentials, just bare-bones.

https://chrome.google.com/webstore/detail/currently-reading/…

Not really interesting per se, but useful when dealing with large recursive and sparse archives:

A python script that recursively searches through zipped files within zip files (within zip files…) to find files by name and content. The goal was not to unzip the recursive structure to the file system, since the unzipped files contained hundreds gigabytes of sparse data each. Instead it works directly on the file stream and keeps the memory requirements constant.

This is basically the same reason why I started with ratarmount (https://github.com/mxmlnkn/ratarmount) however the focus was extra on runtime efficiency and random entry and because the identify suggests it began out with entry to recursive tar archives. The present model also needs to work in your use case with recursive zips. Recursive loading should be enabled with `–recursive`. It will also be used as a Python library with out FUSE.

An automatic fish feeder. I was going on a long trip with my family and needed to feed my fish while we were gone. I remembered I had a servo from an old project. I drilled some holes in a round plastic container, glued it to the servo shaft, hung it off the tank with some wire, and wrote a small Arduino sketch to jiggle the container every 24 hours. It worked better than I thought it would; the fish survived, and in fact seemed so happy that I don’t feed them by hand anymore.

I’ve since built a couple more for my other tanks, and I rewrote the firmware for ESP8266/ESPHome. Now my family can ask Alexa to feed the fish, because of course the world needs that.

I’ve built my own small embeddable functional language with structural record unions and effect types.
By focusing on making the language tiny I have been able to embed it in arduino, web and server projects. The aim is to eventually use it for every side project I make.
https://petersaxton.uk/log/

Most of mine was just automation or analysis-download mp3 rips from a streaming site, scrape parse and analyse jobs so I could see the market prices (span off a web app made a few hundred quid but killed it), a trading system and crypto analysis tool, most recently scraping and analysing housing market data.

I built a simple software that generates immersion of artist studios.
Example (please refresh twice to visit) here:
https://free-visit.net/fr/demo01

– Why ?
As a parisian residing in Belleville (poorest space), the place artistes
construct issues, I used to go to a number of “artists studios”. I’ve all the time liked this locations. “J’aurai voulu être un artiste”, in a manner.
I all the time thought that no images or 360-photo would really feel the
Area, the immersive feeling.

I was playing a MMO with a market. Sometimes people would make mistakes, e.g. selling 100 iron for $1,000,000 instead of selling 1,000,000 iron for $100. I made a little tool that polls the API and sends a notification when someone made a mistake.

Eventually I got bored of grabbing these mistakes and left the tool with my clan. It had the side effect of getting people active on Discord, and making people more actively involved in countering raids. We ended up building one of the most elite clans in the game until some other whiz kid built a better bot.

There was also this little augmented browser tool that calculates the best order and timing to attack in the game, and the statistically likely result.

We’d joke that all the tools we built for that game were probably well worth hundreds of thousands of dollars and that’s around the time I decided to quit and spend my time on something more useful.

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.

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.

Depends what you mean by “for myself”.

For practicality: I wrote a flashcard app to use on the tube to help me learn French. I wanted a couple of things specifically:
– it should be super simple to use on a mobile device
– it should be trivial to add a new flashcard on the fly
– it should prioritise flashcards I’ve got wrong more than I’ve got right
– it should work offline, pushing back to the server once there’s a connection again
Code: https://github.com/alex-moon/clin

For enjoyable: I wrote an app that tied a bunch of machine imaginative and prescient ML repos collectively to generate “explorable dream worlds” within the type of brief HD movies. I wished a easy, enjoyable interface that will let me specify a schema/config for the following video, then hit “go” and watch it generate over the course of nevertheless many hours, together with previewing what we had up to now.
Code: https://github.com/alex-moon/vc

I built a VR environment for making and thinking about music, intuitively playing with alternate tuning systems, building instruments in space and livestreaming.

https://www.youtube.com/live/v4uHqdTr-bs?feature=share&t=426…

There are a number of easy however highly effective constructing blocks. One predominant characteristic is an egg formed “word” which may be positioned, resized, retuned and cloned on the fly. It is performed by physics interactions with a “mallet” or sports activities balls, something with a collider.

One of many devices is a sine wave organ which has drawbars to manage the amplitude of overtones. In contrast to a basic organ, these overtones may be independently retuned and assigned envelopes to supply a spread of timbres. Pitch is constantly mapped to a spiral – an isomorphism of pitch area.

It has a theremin which supplies visible and tactile suggestions and a voice with vocal formants controllable with a thumbstick.

It has a physics based mostly sequencer of kinds which consists of “mallets” on a wheel which spins at a desired ratio of no matter BPM is about in a DAW. These wheels may be cloned and a number of mallets organized across the circle utilizing the Euclidean rhythm algorithm.

Since low latency audio in Unity is hard, the VR app is actually only a controller for synthesizers working in Max/MSP and IEM spatial audio VSTs working in REAPER. Someday I would wish to package deal some portion of it right into a cell VR app for issues like distant jamming or music classes the place fashions of the theoretic concepts are proper there in entrance of us to tinker with. For now, it is only for me.

Building a small quadcopter back in 2012 or so (before cheap toy/consumer drones were everywhere) was a fun project.

Back then, it involved an Arduino, the internals of a Wii MotionPlus (cost effective way to get the gyro sensors), a plywood frame, and the open-source ‘MultiWii’ code.

That first build never flew well, but soon afterwards it started to become much easier to build a very stable quadcopter, as all-in-one flight controller boards started to appear, along with more knowledge of which brushless motors, props, and ESCs worked well together.

See Also

I originally built OnlineOrNot (https://onlineornot.com) to have a handy technique to persuade my contracting shoppers that their internet hosting sucks.

They’d be like “Oh however I pay $5/mo for this wordpress host, it is positive?” and I would ship them a report saying their web site was offline for say 10 hours that week, and to calculate how a lot being offline for 10 hours would value them.

Ultimately a shopper requested to be setup with their very own account, so I took the time to go full-SaaS.

Automatic warning system if I sit too long

I added a pressure sensor to my desk chair (just like the ones built into car seats) and soldered that to a Zigbee door sensor. I now know sitting/not sitting. I then set up push notifications to my watch and desktop if I sit more than one hour to get up and take a walk.
Furthermore I connected it to my hight adjustable desk that if it is in up-position and I sit down, it automatically lowers itself to the perfect sitting position. I had to disable the „if I get up, move the desk up“ function because it was just too much movement on the desk end.

I don’t wanna miss the too-long-sitting warning anymore and it is really useful.

My Raspberry Pis all netboot. I have a bunch of them around the house. Some play music, some play games, some are smart TVs. Because they all boot from the LAN, there’s no card to wear out, and I can change what OS they boot into just by renaming a file. It’s simple, but intensely useful.

I don’t know if it’s interesting, but here it is.

The local branch of the company I work for has recently included a food allowance of 8 eur/day as a perk. I don’t like / have opportunities to eat out most days, so I have built a little utility that fetches via a REST API the offers at the deli / grocery store on the way to my kid’s nursery, and solves a knapsack problem to generate the most optimal shopping basket (i.e., closest to but not exceeding 8 euros). I extracted the API from the deli’s website, as it seems to be something custom. Of course, I might not care about some of the items that the utility includes in the most optimal basket. To mitigate this, the utility iteratively refines the basket by asking me if there is something I want to remove, and then replaces it with the next most optimal items to fill up the remaining budget.

I used to run a hackspace, so quite a lot! But in no particular order these are some of my favourites:

– A tracking airsoft turret that would point at and fire at movement. Was coded in Processing.

– A world clock of digital clocks that synced with NTP and could be set to many regions when working with different timezones.

– A QFH antenna for receiving live satellite images via SSTV from weather satellites

– A core xy assembly with a peristaltic pump that can be placed over a frying pan to make fun designs of pancakes

– A screenshot tool that uploaded to a private site with a short code URL for sharing screenshots without relying on ott SaaS products

A few years ago I traded cryptocurrency extensively. I eventually ended up with a tax nightmare, needing to account for thousands of trades across several exchanges. After months of talking with my accountant and tax office, I eventually built https://github.com/dleber/capitalg

It was nonetheless a number of work aggregating commerce histories from numerous exchanges right into a standardized schema, however I took some consolation in understanding the method. I additionally prevented the necessity to share trade API keys and buying and selling knowledge with third get together accounting instruments.

If you happen to uncover any bugs, please do not inform the tax authorities.

I built an ice cream pail drum machine interface as a kid using cheap piezoelectric speakers (in reverse to generate a signal). This was amplified and brought into a micro-controller to generate a MIDI signal for the drum machine. It actually worked pretty well.

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.

I built this simple website (www.unexploredhq.com) to find interesting (less known) places to travel with my SO and family. Instead of searching for new places by name, one can search for new places in a region with simple attributes.

I have built the database by scraping some data online, and have a database of 60,000+ locations. The attributes are built with some basic ML and text processing, nothing fancy. But this is sufficient for me to do this search: find places in Europe where I can do surfing and hiking with a temperature of less than 25 degrees.

Most useful thing?

Honestly, a lamp that uses a 1W red LED behind a big diffuser. It uses PWM in the MHz range for dimming (so definitely no flicker), and big physical controls. My wife and I both get migraines and being able to set very dim red light seems to be better than sitting in complete darkness. I have insufficient data to tell if this is a real effect, unique to us, or placebo.

Code is in AVR assembly, because that’s easiest for me. Sometimes I feel silly that after all these years working with technology, this is the most useful thing I’ve managed to build for myself. Hey, it’s not nothing though 🙂

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.

It’s a Firefox extension for just me. [0] I’ve posted it here before, and one user said they’d start using it. I hope someone else finds it useful again. The problem: I wanted to be able to mute League of Legends streams in between games with a hotkey, and without changing visibility of any windows in the process of doing so. This is a much harder problem than you’d think, even with the existence of Autohotkey, and NirCmd, and ControlSend, because Firefox is really annoying. [1] It ended up requiring me to write an entire Firefox extension as well as use an AHK that uses ControlSend.

Anyway, yeah, that FF extension. It represents the culmination of about 5 years of me trying to solve this problem with progressively more complex and incrementally better solutions until I finally arrived at a ridiculously over-engineered version that actually works as it should.

[0] https://github.com/RheingoldRiver/MuteTabsMatchingPattern

[1] https://river.me/blog/global-hotkey-mute-firefox-stream/

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.

Mine isn’t particularly advanced or cool but I built this little directory of kaomojis (text-based emoji) with a cat mascot while I was in San Francisco for an interview at Flickr (this was a long time ago). At the time I was a junior designer with very little dev experience, so this project helped get my feet wet.

http://kaomojicat.com/

I initially constructed it for a now-ex-girlfriend, however I take advantage of it on a regular basis myself so as to add slightly spice to issues like tweets or error messages.

Lots of things over the last decade or two. I can count almost one hundred repos on GitHub, but most of them are not very popular with other people, my projects seem to only scratch my own itches..

I have my own lunisolar calendar and decimal time (with centidays and dimidays) so I produced a lot of code for that on various devices. I also wrote two chess engines and a hobby operating system.

And countless web apps, like one to read the daily/monthly top of HN and Reddit, another to host my pictures (on a cool domain hack), one to manage the batch jobs on my chess engine cluster in a rack at home that helps keeping the house warm in winter, and lately my own frontend to Bing API because I was growing dissatisfied with DuckDuckGo.

Something I’ve recently worked on is building an SQLite database of all the dependencies my organisation uses, which makes it possible to write our own queries and reports. The tool is all Open Source (https://dmd.tanna.dev) and has a CLI in addition to the SQLite knowledge.

Ive used it to search for software program that is old-fashioned (by way of https://endoflife.date), to seek out vulnerablilities (by way of https://osv.dev) and get license info (by way of https://deps.dev)

It has been massively helpful for us understanding use of inner and exterior dependencies, and I want I would constructed it earlier in my profession so I may’ve had it for different firms I’ve labored at!

I’ve modified Ghidra in order to unlink pieces of an executable back into relocatable object files.

To keep things simple, source code files are compiled into object files which are linked into an executable. Object files have sections (named array of bytes), symbols (either defined as an offset within a section or undefined) and relocations (a request to patch up an offset within a section with the final address of a symbol) while executable files only have sections. The linker takes all the object files, lays out the sections in memory, fixes up the relocation and writes out an executable file without the symbols or relocations.

With Ghidra I can reverse-engineer an executable and recreate symbols, data types and references between symbols. Then, with my modifications I can recreate relocations with that information and, once a range of addresses has been fully processed, I can select it and export it as a relocatable ELF object file.

Why? This allows me to extract parts of an executable as object files and reuse these by linking them my own source code ; I don’t need to fully-reverse engineer these extracted parts, I just have to basically identify every relocation there was originally in that part. I can also divide and conquer my way to decompiling an executable by splitting an executable into multiple object files and recreate its source code one object file at a time, like the Ship of Theseus.

So far it works with what I’ve tested it with and I’ve been meaning to write a series of articles to explain that process in detail, but writing quality technical articles with illustrations on a topic this esoteric is very hard.

  - My Ghidra fork: https://github.com/boricj/ghidra/tree/feature/elfrelocatebleobjectexporter
  - My initial prototype in Jython (has a readme): https://github.com/boricj/ghidra-unlinker

Note: this works only with 32-bit MIPS, little endian, statically-linked executables. It can be made to work with other architectures by writing a relocation synthesizer for it, but so far I only care about decompiling PlayStation 1 games.

Thanks!

If you want to take a look at the source code, here are some pointers:

  - The relocation synthesizer for MIPS: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Processors/MIPS/src/main/java/ghidra/app/delinker/MipsElfRelocationTableSynthesizer.java
  - The Ghidra analyzer that leverages this synthesizer: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Features/Delinker/src/main/java/ghidra/app/analyzers/RelocationTableSynthesizerAnalyzer.java
  - The classes that implement the ELF object exporter: https://github.com/boricj/ghidra/tree/feature/elfrelocatebleobjectexporter/Ghidra/Features/Base/src/main/java/ghidra/app/util/exporter/elf
  - The Ghidra exporter for ELF object files: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Features/Base/src/main/java/ghidra/app/util/exporter/ElfRelocatableObjectExporter.java

I lived in a family apartment growing up, and we’d lock the door to the entire building at night when everyone was home with a sliding lock so that it could only be opened from the inside. However, that’d mean you need to ensure at least one person from every apartment was home, otherwise you’d need to go downstairs and let the others in in the middle of the night.

All the 3 apartments in the building were sharing the same wi-fi device, therefore I built a simple scanner to find all the devices in the network, connect them to the individuals I knew, and show the devices I found on the network in a simple website, which then I installed on my parents’ devices as a PWA. The scanner would run in a Raspberry Pi I had lying around.

In the end it wasn’t very reliable, the router kept failing occasionally due to nmap, and after a few failures we stopped using it, but it was a fun experiment for me.

Maybe not the most interesting but a CLI utility that would do 2 things (gaming related):

* guess the gameserver tick rate based on network traffic patterns between game client/server (cs:go for example) and display it in grafana

* collect keyboard inputs while playing and display them as a heatmap on grafana

All of this for no real reason.

I made a custom client for the ChatGPT API, so that I can template and chain together prompts to automate content generation. I only just finished off the workflow feature to prompt chain (where one output goes into one of more prompts), but personally think its cool and has lots of applications.

A little rough on the edges so probably not ready for a ShowHN yet.

https://promptpro.tznc.net

* A script that periodically screenscraped booked-up campsite reservation sites for cancellations during dates I wanted and sent me text messages (thanks, Twilio!). We got to stay at a bunch of amazing places at the last minute this way. We’re currently grounded, but I recently ran it again for my parents and was shocked to find it still worked!

* An Alexa app that provides a search interface to Old Time Radio shows on archive.org and saves your place (this was technically for my mother-in-law, the proof-of-concept with arcade sounds for my spouse). We all ended up using it a ton, though, it was kind of magical (the random function was really fun). I also set up an Alexa app to read me recent CVEs, but it’s more of a goofy parlor trick than useful. 😉

* A Rube Goldbergian bunch of terrible scripts that I can feed PDFs to, OCR, poorly-translate (using the expected engines or my own diymodel) and generate epubs from. And a bunch of scripts that convert Markdown to LaTeX and epub for personal book publishing projects.

Thanks for asking this question, it’s so neat to see everyone’s responses! I might ping my spouse on this post, too, who’s developed a crazy amount of personal projects that combine software and hardware to fixup our/our families’ lives.

I built a website that you can bring up in multiple browser windows, or on multiple adjacent monitors attached to independent computers. Each browser displays a unique QR code. A user can navigate to a second webpage, activate their camera, and point their camera at the QR codes. Each QR code will switch to a unique AR code, then the user can project a single continuous image across all the monitors. It mostly works but I’m missing some 3d math to make the image line up perfect when the angles are weird.

Built a compilation of local happy hours, lunch specials, and other cheap eats at https://fullprice.no (as in, “do you need to pay full worth? No.”). The thought is not all that unique however I assumed my format and presentation was slightly distinctive, for instance the 24-hour slider versus a clock interface.

I assumed it could be simpler post-launch to get eating places to take part and add their very own info (nearly-free advertising), however that was a defective assumption. The admin interface can also be fairly cool, quite simple to specify blocks of time when the specials are energetic.

Sadly it hasn’t been up to date in 4 or 5 years. When Covid first began, I launched a sister web site simply to record eating places that had been open, I took that down about 6 months in the past.

I have been working on a note taking app with a fully open API since 2008 on and off. I intended to open it to the public around 2010 but SimpleNote popped up and drank my milkshake. I even switched over myself.

Since then however they’ve closed their formerly open API. This inspired me to pick it back up.

I’ve got a mobile friendly webapp, an official SDK, a basic cli for scripting. Basically everything I wanted.

The UI of the webapp is pretty spartan as I prefer, so I’m scared it doesn’t have mass appeal. It’s super fast however.

I have hundreds of notes in it, use it for all my note keeping. I am it’s only user. My friends have access, but they don’t use regularly.

I want to open up to the public eventually, but these days I’d really want to get e2e encryption working before doing so and just have not found the time.

An app that helps me with shopping at my main supermarket.

I usually go always to the same supermarket twice a week. I was frustrated that every time I changed something in my shopping list I had to mentally recompute the optimal path to pick up everything.

Now with my app I am able to build the graph of the entire supermarket (each node represents a rack with shopping items) and then given my shopping list it computes the optimal path from the entrance to the exit. It’s a version of the classical travelling salesman problem

Not something terribly impressive or useful, but I wrote an image-scrambling (anything-scrambling, really) program which is quite unique.

I was fascinated by the story of David A. Scott, who was obsessed with “bijective compression”. It means compression programs where all files are valid archives, and moreover no two archives decompress to the same file. So no magic number file signatures, no checksums, no redundancy whatsoever. Scott felt that compression algorithms that didn’t have this property were wasteful, and of course, in a narrow technical sense he was right. There are of course a number of practical reasons why we tolerate a little redundancy.

But he wouldn’t let practicality stop him. He made bijective versions of many common compression algorithms. He made a bijective Huffman encoder (one where you’ll never get “unexpected end of file”), a bijective arithmetic encoder, and even a bijective LZ variant. But most impressive of all, he made a bijective BWT version.

The Burrows-Wheeler transform is fascinating on its own, and it’s almost bijective. It sorts letters in a text by their context, so that letters with similar context appear close to each other. In a strange vaguely DFT-like way, it switches long-distance and short-distance patterns around. The result is, in a typical text, long runs of the same letter, which can be easily compressed.

But the traditional BWT technically works only up to rotation. You get a rotation of the original string back when reversing it, but you don’t know if it’s the right rotation. You need to store a tiny piece of extra information, either the index of the rotation, or a single sentinel character known to be the last (or first) letter in the original string. Getting rid of that last piece of information seemed impossible, but Scott figured out a way to do it!

The result is that we have a truly bijective version of the BWT transform. Now I’m no mathematician, but surely that is beautiful? It’s a true permutation now, that still does the weird low-order higher-order swapping thing, that you could surely analyse with many algebraic approaches that wouldn’t work for the original.

Anyway, what I did was implement this transformation on the lines or pixels of an image. So you get an effect similar to the “pixel sort” effect that glitch artists were into for a while, but it’s reversible. I guess it’s not really useful for anything other than making glitch art, but it’s at least a program that does something pretty unique, and which only a very specific kind of weirdo would have the skills and inclination to write (namely me).

I built a Frigate event listener and notifier service for Mobile phones that makes use of Pushover.

The currently supported setup of Frigate alerts using homeassistant seemed to be very profoundly complex and I just thought I could use the Frigate API and wrote a small tool with Nodejs. It has been working flawlessly, including sending photos of events to my Android phone.

RegExTractor – simple java program to search for regex in text, then replaces each string with another one and appends all those results in other text window. VERY useful when you need to extract something from a text dump and present it in another format, like extracting all events from a log and writing them in one line between quotes and comma separated, ready to dump into some db query.

I built a Markdown like text format for writing technical reports. I was fed up with Word and I wanted a plain text language that supports tables, footnotes, auto validated references to any part of the document, syntax highlighting of code blocks, comments, math equations, table of contents, etc… Unfortunately, existing solutions are all slow or written with some bizarre toolchains that are a pain to set up.

I wrote it from scratch in Go with very few dependencies, so I can compile it to a single binary that should work on all platforms. It outputs .html or .tex which is then compiled to a PDF via Xelatex. Since Latex is pain to deal with, I wanted to generate pdf directly, but life got in a way so… it’s not exactly a finished project, but at least I enjoy using it.

You should take a look at the markdown TUI glow (or some of the other projects on charmbracelet) and see if there’s anything you can contribute from your work. It’s all in Go as well iirc.

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

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

– build a tool to easily connect and analyze public datasets. Eg connect dataset for country population with the dataset on international students in the US and get new dataset on international students in the US per capita
– build a tool to publish my personal website from my Apple Notes

Definitely my HN moderation browser extension, which lets me flip through HN super fast and do routine mod tasks without gruntwork.

If I live long enough, I will factor out a general-reader version of this that will bring joy to HN power users everywhere.

It requires a keyboard, though. Do the kids still use those?

Maybe you’re overthinking it? Just push it to GitHub and call it a day. Someone else will turn it into the general-reader version.

Unless it has a bunch of secret stuff in it. Then I guess you’d have to.

Don’t underestimate the tenacity of HN readers though. Lots of us would do that kind of thing just for fun. You don’t have to do it all yourself.

There’s a bunch of secret stuff in it, in the sense of moderator-only.

I don’t think there’s anything sinister, but it wouldn’t be very nice to release in the current form.

Eh, just backspace the mod-only stuff and push it to GitHub. We’ll clean it up.

Easier said than done maybe, but please don’t feel like you need to get it perfect. We’ll do a lot of the legwork for you.

Also don’t underestimate how cool it is to get to see what you use in its current form, even if it’s rough. There’s an archaeological component to this that’s quite gratifying.

Ah, browser extensions and user scripts are so great for improving websites.

Most of my current user scripts:

• Hold z to make a currently-playing audio or video go at 4× (the fastest you can go before Firefox cuts off the audio).

• Auto-admit in Google Meet (wish they’d implement this themselves). There were a couple of browser extensions to do that, but I looked at their source and was appalled at how badly and/or stupidly they implemented it, and so wrote this, which is better (… so long as you use English—one of them supported I think it was Japanese as well) and more efficient: new MutationObserver(() => { document.querySelector(“[aria-modal=’true’][aria-label*=’join’] [data-mdc-dialog-action=’accept’]”)?.click(); }).observe(document.body, { childList: true, subtree: true });

• Retitle a few web apps that have consistently useless document titles, by pulling in actual document contents. I gave this to my sister, who regularly has hundreds of VicFlora tabs open, which used to be all titled “VicFlora”; last year they fixed that but got the endianness wrong, “VicFlora – ‹Page title›”, so I fixed that to “‹Page title› – VicFlora” so you can actually see the useful part in the tab bar. (Document titles should be little-endian.)

• Find <video autoplay> and turn on controls (since I have autoplay blocked—incidentally, this is something disabling autoplay should probably automatically do, at least until you start the video).

• Kill aos-* animations on pages, which stupidly tend to make the page invisible until their JavaScript loads. (This is important for me because I disable JavaScript, but those “fade in when the page loads or as you scroll” animations are really annoying even when they work, killing them makes things better.)

• Fix Cloudflare “[email protected]” stupidity without having to run the page’s arbitrary JavaScript. (Basically: take their deobfuscator script and just run it myself if it gets used. Only people that deliberately block JavaScript are likely to have seen this, but it’s quite common. The filter they use is evidently very dumb, obfuscating quite a few things that are not email addresses, including things like “package-name@1.2.3” (not even valid—IP address hosts have to be in square brackets, and DNS doesn’t use numeric TLDs) and “user@host” in console logs.)

• Put the current weather into the favicon on weather.bom.gov.au (… except that they this shut down last month for no obvious reason, with no equivalent replacement unless you run Google Android 6+ or iOS, which I don’t on any device, let alone my laptop; so I’m stuck with just their old site which completely lacks a lot of the information this other thing had exposed, and is served over HTTP only but their server accepts HTTPS connections in order to 307 redirect to a different path on http: scheme as well in order to say “we don’t support HTTPS”, which interacts horribly with “HTTPS Only” mode (because even when you add an exception for the duration of the session, you lose the path part of the URL), and is the only site I’ve ever encountered doing such a stupid thing, and in all this they have never responded to my enquiries like they claim they will).

It’s a tool that helps me generate code examples for multiple JavaScript frameworks.

Input is a JSON string describing the code, out comes code examples in plain JavaScript, React, Angular, Vue, Svelte, and jQuery.

Helps me generate extensive docs on my own.

mock – language agnostic API mocking and testing utility
https://github.com/dhuan/mock

I constructed it as a result of I wanted a straightforward technique to set-up API endpoints that weren’t carried out but by another crew. After some time I open-sourced it.

wikicmd
https://github.com/dhuan/wikicmd

Navigating by means of mediawiki to get pages edited all time requires a bunch of clicks. I wished to have the ability to shortly edit wiki pages utilizing any editor program as an alternative of the browser.

A Bluetooth dongle for my standing desk that lets me control it from my Mac. I kept bumping the wired remote with my chair when it was mounted under the table and since it had a fat Cat5 cable, it was too ugly to have on the table.

So I hooked the remote up to an oscilloscope, figured out the signals it uses and used a nRF52 dev kit plus a small custom PCB shield to be able to control it over BLE. A small toolbar utility for the Mac and it’s more convenient than it’s ever been.

Reminds me of a prank I pulled with a mate on a colleague. They recently got standing desks and of course a bit of fun ensued with them. Over one weekend we build a remote control for it based on an ESP32, of course fully MQTT compatible. We hid it as best as we could and it was not visible unless you crawled under the desk. Fun was had, because you could just program the behavior via a small python script and override the physical buttons. It also was briefly hooked up to my Home Assistant for voice control.

We used nothing as fancy as an oscilloscope, bought a new RJ11 cable, cut it in half and interposed the connection from the remote to the controller. We also used relays, just for the nice clicking sound 🙂

My plan was to get my setup super fancy to also display the current height and memory functions from within the Mac utility, so it had to read the full protocol that the remote used. Up/down alone was supposed to be the proof of concept, but once I got it working, it was good enough that I didn’t really care about the rest.

A few projects:

– a in car audio system that has physical buttons and text to speech output instead of a distracting display panel. Worked really well for a few months but my soldering wasn’t (then) up to par so it eventually fell apart.

– a Bash replacement shell, which I later open sourced and now have a few users beyond myself. But it started out as a personal project not intended to be used by anyone but myself. like is in my profile (if anyone is interested)

– home automation software which manages everything from internet management through to some physical stuff like lights. At one stage I did also have Alexa skills and an Android app written to interact with it but I rarely ever use them so didn’t bother keeping those Alexa skills nor Android app up to date and just use the web portal (or SSH) the very few times I need to override any default automation.

– back in the Windows 95 / 98 era I wrote a desktop shell to replace the standard one. It was inspired by Linux desktop environments though I probably didn’t realise it at the time.

– currently I’m building a robot with my son. It has object detection, wheels, speakers and will have some rudimentary Alexa-like voice control.

This is intriguing. If you can elaborate more, are you synthesizing something closer to waveshapes found in traditional synths or more towards totally novel sounds?

The project started a few years ago adapting generating functions to Complex waveshaping, with the waveforms correspond to certain constructions in optics, celestial dynamics, etc.

This has since been extended with an algebraic/modular approach to building more complex textures and rhythms. So the aim is to create totally novel sounds, but the traditional waveforms tend to pop-up from time to time!

Source Link

What's Your Reaction?
Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0
View Comments (0)

Leave a Reply

Your email address will not be published.

2022 Blinking Robots.
WordPress by Doejo

Scroll To Top