Live data from Hacker News

Ask HN: Is there any software you only made for your own use but nobody else?

news.ycombinator.com

421–430 of 484 posts

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#421
post #410
post #284

Earlier quoted context omitted.

> Something like that really deserves to be written in C so you don't need to install Ghidra to use it. I think there's the Witchcraft Compiler Collection if you want a freestanding option [1], although I haven't looked into it too closely. The problem is that object files are made up of section bytes, a symbol table and a relocation table. You can't just rip bytes out of a program and call it a day, you need to recr…

It's trivial if you can compile the binary with `cc -static -r` and you don't need to extract dwarf data too. If relocations are stripped, you're fine so long as you can count on st_size being present (i.e. doesn't contain handwritten assembly) and you're able to parse the machine language. If symbols are stripped, then it simply can't be solved. It's just reverse engineering at that point.

If you reduce the problem statement to an ELF x86 program written in C, with a symbol table and a complete relocation table (not just the one you get when dynamically linking), then sure it's trivial, you have almost all the information you need to make an object file (issues like switch jump tables can still crop up in that case). If you don't have that relocation table from `cc -r` however, you'll run into problems.

Without this relocation table on hand, you'll have to recreate it in order to make the section bytes relocatable again. This means analyzing code/data and identifying relocation spots, like you've said. But that `0x00400000` integer constant within an instruction or a word data, is it referring to the function at that address or is it the TOSTOP flag value? Who knows, but each time you get it wrong you'll corrupt four bytes in that object file.

I'm dealing with one rather gnarly scenario, which is a PlayStation video game without any source code, symbols [1] or linker map, just a bag of bytes in an a.out-like format. The MIPS architecture also happens to be an absolute nightmare to delink code from (one of the many pitfalls for example is the interaction between HI16/LO16 relocation pairs, branch delay slots and linkers with a peephole optimizer).

I've been at it for two years and I've only recently managed to pull it off on the entire game code [2]. Writing out the object file when you have the program bytes, the symbol table and the relocation tables is the easy part. Writing an analyzer that recreates a missing relocation table for the 80% of easy cases isn't too difficult. Squashing out the remaining 20% of edge cases is hard. All it takes is one mistake that affects a code path that's taken for some very exotic undefined behavior to occur in the delinked code.

Delinking with a missing relocation table (and without manually annotating the relocation spots yourself) is a thing that looks easy at first glance, but is deceptively hard to nail all of the edge cases. I'd gladly be proven wrong, but if you do have the full, original relocation table on hand then you're cheating with `cc -r` on code you just built yourself. Almost no real-world artifact spotted in the wild one would care about is ever built with that flag.

[1] I did end up recovering lots of data out of a leftover debugging symbols file from an early build later on, but that's a story for another time.

[2] Note that I'm working on top of a Ghidra database that contains symbols, type definitions and references, so the bulk of analysis is actually performed upstream of my tooling. Even then, the MIPS relocation synthesizer is a thousand lines of absolute eldritch horrors, but I do acknowledge that the x86 relocation synthesizer I have is quite tame in comparison.

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#422

Earlier quoted context omitted.

> Using the Spotify API you can find random music, then find random instrumental music from that random music. For this, I made a Spotify playlist with 41 hours of instrumental soundtrack music that helps me focus. It's not random like yours, but with that many hours, there's enough variation if you put it on shuffle. It's mostly epic and uplifting movie scores. Or suspenseful and building up to something... none of…

Since your #1 song on this playlist is a Star Wars track, there's a fun little easter egg in a Spotify client. The progress bar is replaced with a lightsaber and you can change its handle by clicking on it.

Couldn't find it...

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#424
A while back I was using Simple as my bank because their app was the best budgeting tool I'd been able to find. Once it shut down I moved to a spreadsheet, and by comparison it was super painful. I basically replicated the app's functionality as a webapp, with a few tweaks to better fit how I was using it. Currently I'm still entering transactions manually, but I'm slowly building a Plaid integration to automatically import transactions. I'd probably have it done by now, but my current bank made some changes that prevent me from connecting it to Plaid so I'll have to change banks again before the integration will be able to pull in 100% of my transactions. I can't say it'll never be publicly available, but I don't have any current plans to release it.

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#425
post #213

There are many tiny scripts I use at work to manage things. Mostly bookkeeping stuff like utilities to manage Jira, scripts that create text files as per a predefined template for meetings etc. I'm the only one who uses it because these are tailored for my own specific use case, but if anybody from work asks I'm willing to share. If I knew how to use Emacs, then maybe I wouldn't have needed some of these scripts. ---…

Check out trakt.tv

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#426
I love to build things, and it's especially fun to build stuff that solve my own problems, but it's tricky to find enough time for larger pet projects on top of a full-time job, so most of my personal projects tend to be smaller scripts that try to do one thing well, and require little maintenance. I have created a plethora of scripts over the years that help me avoid doing boring and repetitive tasks and save me time in the long run. As I wrote these scripts for myself, these are either too opinionated, or depend on some of my other scripts/libs, and not well documented, so it's problematic to share with others. To name a few:

- A bash script to easily keep track of and manage multiple git repos. There are many similar projects out there, but I couldn't find one that fit my needs exactly.

- Bash scripts that automate most of the periodic backup, update and cleanup process on my various machines. There are many things to backup (e.g. git repos, documents, notes, calendars, and other apps) and update (e.g. OS, packages from various pkg managers, plugins, stuff installed with standalone scripts) and most of these things can be automated to spare a ton of time in the long run.

- Scripts to declutter my downloads folder, which used to be a mess. E.g. automatically rename and neatly organize the downloaded invoices, warranties, movies, series, etc where they belong.

- Bash+pup+jq scripts to generate RSS feeds for websites that don't provide one, or not good enough, so I don't have to scroll through each one every day. E.g. new cinema releases, new products, and some blogs with no/insufficient RSS.

- A web change monitor script that periodically fetches web pages, extracts the relevant content with pup+jq+pandoc, and then commits and pushes it if there were changes. GitHub provides an RSS feed of the repo changes with a link to an excellent diff interface. E.g. product promos, and wall-of-text changelogs.

- A price tracker script, that uses pup and jq to extract the price of various products and notifies me of about price drops using a telegram bot to spare some money.

- Bash scripts to automate the process of setting up various operating systems with the necessary tools I need on a bunch of machines, and to version control the config files, so I can easily set things up again without having to spend a lot of time with the migration, or worrying about losing sth.

- Bash & powershell scripts to debloat Android, Windows, Mac and some Linux distros from the unwanted, performance hogging, and privacy-invading pre-installed crap and "features".

- Userscripts to reduce unnecessary distractions and annoyances on the web. E.g. debloat Google, YouTube, Reddit, re-enable copy-paste, Jira ticket UX improvements.

- Python code and shell scripts to semi-automate double-entry accounting with beancount.

- A ton of small scripts for more efficient work ...

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#427
post #204

I made a small tool that takes a screenshot all 5 minutes and stores it in a password protected zip file, but only if something has changed on screen. Sometimes I go through the old screenshots and get nostalgic as the oldest are 10 years already. I spend so much time of my life on my computer, so why not take photos of it?

Ha, MS has Recall which is like this ... but obviously it's had problems.

There are things you can do with yourself that you’re not OK with strangers doing them for you.

That’s pretty much the issue with privacy. A lot of feature feels invasive because the company don’t want to remove themselves from the operations. People don’t usually care because they either don’t understand the impact or they trust the government and the laws to reign in malpractice.

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#428
post #252

Made a simple app to put all my Apple Watch walks on the same map, so I can walk every street in my city. Surprisingly there wasn't anything available that was free or straightforward, despite it being an easy app to develop. Honestly, it's extremely fun to use something of your own every day, and patch it up when you come up with some other ideas. I did release it on AppStore ( https://apps.apple.com/us/app/mapcut/i…

Wanted to check it out and was surprised that it requires an account.

Yeah, totally fair point. I should probably add a simple guest access. Had to lock it behind auth as I keep adding features for myself that require some backend action, and was too lazy to write different code paths depended on authentication. I guess, that's also one of the drawbacks of writing something for myself, as you just forget about inconveniences that it can cause to others.

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#429
post #272

Earlier quoted context omitted.

This sounds like a great project to reconnect one with growing food… with some perks. Appreciate you sharing, helps share others are thinking about it too. Is there a reason you went with hydroponics vs aeroponics?

I know next to nothing about aeroponics - I did read about aquaponics a bit when I started, but hydroponics seemed the most accessible for me. I've loved making my own crushed red pepper. And there's something fun about growing plants in the middle of a cold snowy winter in the basement.

Thanks, appreciate it. Makes sense to me.

Re: Ask HN: Is there any software you only made for your own use but nobody else?

#430
post #272

Earlier quoted context omitted.

This sounds like a great project to reconnect one with growing food… with some perks. Appreciate you sharing, helps share others are thinking about it too. Is there a reason you went with hydroponics vs aeroponics?

In practice aeroponics is very fragile. All it takes is a failure for a few hours for roots to irrecoverably dry out and kill the plants. Most hydroponic methods give you a safety margin of days or even weeks.

Thanks for the insight, I'll be sure to include hydroponics in my reading :)
Post reply on HN