Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Tools you have built for yourself?
27 points by themantri on Jan 23, 2023 | hide | past | favorite | 45 comments
What tools have you built to scratch an itch or quell a regular annoyance? They can be anything from a full blown application to a few commands stringed together.

Thank you.




I built a TLS certificate tool targeted towards my company usecase for internal certificates (developers, OpenVPN, internal certificates): https://github.com/linsomniac/rgca

It's big features are that the cert generation can entirely be controlled from the command line, config, or environment, or any combination of the above, and it has tooling for the situation where I have an existing cert but want to add or remove a name from it. It also has pre/post scripts so I can have it do things like add it to the Ansible repo, vault encrypt it, and commit it. Beats the 10+ year old script that didn't work with Subject Alt Names.


A creativity app that can help people with their iterative creative process.

https://iterations.sprkwd.com/

Iterations is a new way to help you generate ideas.

Creative methodologies usually combine divergent thinking (applying a stimulus to generate potential outcomes) and convergent thinking (bringing facts and data together and applying logic).

Iterations help divergent thinking by giving suggestions on how to process the output. They work as a set of guitar effect pedals to your process. There is an input, a set of ambiguous instructions that can be applied to this input, and an undetermined output created by these effects.

Yes, like Oblique Strategies.


https://www.serieshue.app/ - Search for a TV series and get a heatmap of ups and downs in IMDb ratings for each episode


I translate children’s books in my spare time. One time, I got a little book called “The Wonky Donkey”, in which all the rhymes rhyme exclusively with the word “donkey”. The task here was to find the appropriate rhyme to my native language’s equivalent of “donkey” (gomar), while at the same time retaining the original meaning. So I built a tool to find all the rhymes to a given word.


The PowerShell commands:

    Import-Xlsx and Export-SQL
They do what they sound like. The first command will run even on Windows Server Core and Linux, and doesn't need Excel installed. It's only slightly slower than the 64-bit C++ compiled MS Excel executable at parsing multi-gigabyte files, which it can do in constant memory (streaming mode).

The purpose of this is to enable spreadsheet-driven bulk provisioning tasks where there are a lot of distinct-but-similar parameters. I added some niceties such as the ability to trim off leading or trailing spaces and blank lines to prevent objects being created with names such as "xyz ".

The Export-SQL is the twin, which dynamically adds missing columns to a table and similarly allows streaming input. Simply pipe anything from the command-line to get it into a database for indexing and querying. This will work as expected:

    Get-AzVM | Export-SQL -TableName 'azurevms' -Database 'Reports'
For general purpose queries over medium amounts of data, nothing really beats the performance of SQL Server on an 8-core laptop with modern SSD and 64 GB of memory.

I planned to open-source and publish both utilities, but there remain a couple of bugs that I could never be bothered to fix, and I'm not comfortable publishing tools that could potentially lose or corrupt data. That could make someone else's day very bad.


Few bits and pieces:

- [Track your feelings throughout the day by picking emotions from a colour wheel and annotating](https://huemotions.vercel.app)

- [Monitor public transport in Budapest in real time](https://bkv-dashboard.vercel.app)

- [Plan roast chicken dinners to finish all on time](https://chicken-dinner-timer.vercel.app)

- [Reduce meat consumption by building your own farm](https://csb-fmkth.vercel.app)

- [Use GPT-3 to improve handwriting recognition for Rocketbook notes](https://notesvac.vercel.app) - currently not working because I don't want to pay for GPT-3.

- [Track availability and presence in a distributed team](https://team-are-online.vercel.app) (designed for call centre staff to be able to communicate their break/availability status when the pandemic hit and we didn't have a good solution for sharing dashboards yet)

- [Mostly broken recipe and shopping list preparation app](https://tastine.vercel.app)

- [Family photos app](https://photos.innes.hu) for private photo sharing with magic links etc. for less technically capable family members.


I manage multiple virtual machines, and whilst not coding, it sometimes feels that way, since you're bending a computer to your will, which is my definition of coding. Nothing more exciting than after a fresh install of Windows, and configuring the hell out of it to your liking (hardening it, de-bloating it, making it more performant, as-well as customizing it and installing choice applications to it).


I run a D&D hexcrawler-style campaign and I hate drawing maps for random encounters. So I made this:

https://ajuc.github.io/outdoorsBattlemapGenerator/

It can export to .dd2vtt files that can be imported by Foundry VTT that we use to play online.


Back in my Applescript days I wrote a number of small apps to remove various repetitive burdens (most have been lost to the ages), then carried on to Objective-C and shell scripting.

• "BatchPrint" : Standalone Applescript app with GUI front-end; allowed a designer to perform a query-based batch print of InDesign files. For example, "print all color ads running in tomorrow's New York Post to the 4th floor large-format inkjet"

• "GridMaker" : Applescript for InDesign; had a little bit of business logic in it to take an image frame in InDesign and split into a grid, following certain layout restrictions (specific gutter width, tag the boxes with metadata for FileMakerPro integration reasons, etc)

• "Filewrangler" : a publicly released Objective-C app for the Mac from before the launch of the Mac App Store (though it was on the store day one); batch file renaming using a custom visual filename "builder". Horizontal blocks in a chain combined to form a template for the new file name pattern, where each block represents one discrete chunk of text. Some 15 years later I still get email about it, asking if it will ever be updated for modern systems (no, it won't).

• The real workhorse tool, still in daily production use by my employer, is a shell script that turns Xcode Server into a lightweight CI system. It monitors for Github activity and creates and destroys XCServer bots as needed. With multiple servers, each can be assigned an "ID" which effectively allows them to load-balance. Only one bug report in 6 years. Alas, Xcode Server has been deprecated so we're migrating to CircleCI, which makes sense given the growth of the company.

• "Nuke the Metadata" : simple little shell script to run on files before posting them to public forums

• Various little shell and CMD scripts for Mac and Windows to do git checkout/prune trees/update submodules/etc all in one shot; return a project folder to pristine after running builds (for example)


> Nuke the Metadata

I have the same type of script, but very specific to file types and not just a general "remove all metadata from the input file". I assume yours works the same way? How many file types can you use this on and how?


No, mine's quite brain-dead. I'm sure yours does a better job on specific file types, and I'm sure there's stuff I'm not getting, now that I think about it. But I've downloaded the images (for example) that I uploaded post-nuke and didn't see any obvious references to me or my organization. A more robust nuker might make for a nice project in my coming off-time (post layoff).


I built an HTTP stub application in my spare time. At first, I only built it for myself but at some point open sourced it. I still have a lot of fun building it. You can find it here: https://httplaceholder.org/


Lots of little web apps:

- https://hw.leftium.com/ is HN the way I want to read it (https://github.com/Leftium/hckrweb)

- Unique format for weather forecast (with historical data): https://github.com/Leftium/ultra-weather#readme

- Pretty veneer over Google sheets/forms for my dance club: https://www.modu-blues.com/

- Quick way to view formatted TaskPaper files: https://plaintext-press.leftium.com/https://www.dropbox.com/...

- User-friendly UI for PwdHash: https://ph.leftium.com/

- POC app my real-estate friend keeps asking for: https://hyunwoo.leftium.com/

- Beat-aware video player: https://phrasier.leftium.com/

- Search for images on multiple sites at once: https://is.leftium.com/

- Custom fork of oTranscribe: https://otranscribe.netlify.app/

- CLI tool to convert YouTube transcripts for oTranscribe fork from above: https://github.com/Leftium/otrgen

- Quick converters/calculators: https://cc.leftium.com/

- Update perpetual calendar event with notifications (for a game I used to play): https://ff.leftium.com/

- Visualize some data (for same game): https://orbs.leftium.com/


I made a CLI tool that manages my life and beeps at me to stay on-track: https://taylor.town/nowify

A lot of acquaintances have been begging me to turn this into an app, so I may give it a go later this year :)


I built a LAN pastebin using flask and htmx. I wanted to be able to copy short text, URLS etc. to / from my laptop to / from my smartphone without going to the web. Works great. Didn't even realize that there was such a thing as a pastebin when I started it.


Two recently, one is a state machine specification tool that uses a tableview (like excel) and is an executable specification that can automatically generate code and test cases, plus documentaation, originally aimed at functional safety and burner systems, but applicable a far afield as business processes and UI design. It has an OPC server built in so you can interface the simulation with a HMI, or whatever you want.

The other I just got to useable POC last night - making process control Cause and Effects diagrams 'executable' straight off the PDF's.

Both cases I used a mix of python, PyQt, numpy and OpenCV, primarily.

I am an electrical and control systems engineer that primarily analyses and/or designs and delivers control and safety systems.


After being annoyed by most online json formatters out there, I decided to build a simple keyboard-driven one. One of the main things that I was looking for was to have it easily accessible, without the need to open new browser tabs or programs that I might need later like vscode so I enabled PWA for it.

When I noticed https://jsonformatter.com domain was not used I sent an email to the owner and he actually agreed to host my app since it was open source.

There are other people using it right now, but I enjoy using it every time I need to make a json more readable.


I work in a large monolith that doesn't always have the package and code separation that I'd like.

I built PackageMap to help me visualise the codebase, and see where the natural seams were -- or should be.

https://packagemap.co

I use the tool to build a directed graph of the type and method usages, and to see which code is grouped into which packages. The code is rendered in a graph diagram that I can see, query, and filter. It really helps me when I'm doing code review or working on a part of the code I'm not too familiar with.


This looks very useful! I'm gonna try to give this a shot some time this week.


I'd be very keen to hear your feedback if you do manage to give it a go.

You can mail me hello@ <productname>.co


Not on the App Store anymore, but I built a Japanese-English Dictionary that would give you SRS notifications (a few hours later, a few days later, a few more days later) of words you looked up. I did this because I often looked up words, but forgot them.

https://shirabe.app/

I can re-deploy this if anyone is interested, I just took it down since it's pretty expensive (couple hundred bucks a year) to put an app on the app store I made exclusively for myself.


sca - scaffold a project of the day in a current folder. Only touches files. Content gets added via vim snipmate.

GTA:SA car physics editor gui in pygtk.

Batch upscaler using magick, realesrgan and rembg in node. Pre-resizes to 1mp, converts to webp.

html-to-m - convert html into mithril m() expression indented to my taste. Works as a vim filter.

Few AHK scripts (god forgive the syntax).

Few variants of update-these-vpses via sh/ssh/coreutils. Needed it because had no devops. Trying to learn terraform and ansible instead.

A dashboard for ERP software that made our life much easier when I worked at a warehouse (as a keeper, non-dev). It presented today’s tasks in a detailed list, created multiple cascades of documents with select-and-click, allowed to query qtys through omnisearch and to store cell addresses in unused fields for faster inventory. Our “terminal” was one of the quickest in a company, but nobody up there gave a fuck about some boy’s code. It was actively used by other employees for 17 more years after I left, also they asked to fix it a bunch of times after ERP upgrades. Proud.

A local webapp for doclinks, plans, motivation, remote project control. Sort of a self-launch dashboard. Most procrastinated WIP right now, wish I had it to implement it faster.


I built DailyLauncher[1] to keep track of links I use daily, in a graphical way. Basically a drag and drop GUI for bookmarks with some customization.

I had a grand vision for how it could look with different APIs, and might still pick it up later to work on. For now it scratches my itch.

1) https://www.dailylauncher.com/


https://github.com/dlthomas/diff-kit/blob/master/src/bin/dkl...

A tool for turning diffs into location-prefixed changed lines. Allows me to feed that to grep and then put the results in my vim quick fix buffer.


I am a game dev, so work in Windows for the majority of my time. I wanted something that would show the current working directory of my windows terminal in the title bar of the window so I could see which one was which on the taskbar and during alt-tabs, so I cobbled together a combination of publicly available doskey macros to do it.


I built a tool to conduct agile meetings like standup, sprint planning, and retro asynchronously based on my frustrations sitting through lots of poorly-run meetings: https://www.teaminal.com

Also great if your team is distributed - no more 7am/7pm meetings with your team in India!



A UI for shell commands. It started when a project had so many helper scripts that I kept forgetting how to call them, so I made this dashboard or command-runner. https://github.com/seldomU/dasdashboard



https://www.carpricetracker.com/

Needs some love now I have a fair amount of data! Wanted to see car depreciation and appreciation rates but couldn't find anything.

Old school server side java web app as I'm 47 :S


I built a CDC utility that reads from postgres and automatically syncs incremental table snapshots to BigQuery. https://github.com/loicalleyne/leftshove


http://cortexprog.com/

since all other Cortex debuggers sucked in some way or another (not scriptable, took too long to support new chips, too expensive, pain in the ass to use, etc)


Ruby on Rails starter built using Tabler, mostly use it to quickly build and abandon ideas

https://github.com/tarunvelli/rails-tabler-starter


everything on my github i built via annoyance driven development. life is too short to be annoyed. no excuses.

https://github.com/nathants?tab=repositories


https://github.com/micouy/kn - Like `cd` but with abbreviations. Or like `z` but based on string similarity, not on location history.


A tool for generating windows terminal layout commands, since I could never remember the syntax

https://josh-yates.com/layowt/


https://github.com/bradwood/glsnip

Copy/paste between hosts using Gitlab Snippets as a backend.


https://github.com/openshiporg/openship

Built it to automate my e-commerce ops




a tool to set slack statuses based on tripit trips. extending this to be an ifttt but for status messages

a tool to retrieve specific flight info from scraped flightaware pages

lots of automation around capturing expenses from receipts and bank alerts.

i thought of one just the other day that works kind of like a link unshortener but for sengrid/mailgun/tracking URLs


A chrome extension for showing a preview (summary and screenshot) of a link on hover.

Android app for saving webpages for offline viewing.


Build coinsscreener.com A crypto coin screener.

Also build so many now dead projects, its a cementary :D


Over the years, I've written many apps and utilities for myself or others (that didn't end up get used). These are the interesting ones I remember. Many not quite complete/usable. Other than hackerer.news none of them are 'up' and running. Some have and others haven't been published as opensource.

https://hackerer.news HN viewer (source[0]): I use daily so I can see today's top stories in reverse chronological order with mainstream topics grouped at the bottom, leaving niche/deeper stores at the top.

Qwickly[1] keyboard layout: I use all the time as an easier to learn and more comfortable to type than Colemak/Tarmak. Made macOS and Windows packages. Linux I didn't do as I'd need to do 2 for text and graphical (X11) and didn't learn how. If anyone has simple instructions I can follow, link me.

SafeQL[2]: Java type-safe SQL expression composer that reduces constant expressions and eliminates N+1 queries loading associations by always operating on set relation or array of models.

Moja[3]: Composable computation pipelines for Java: Async, Lazy, Option, Try, Result, Multi (List), Stated, Reader, Logger, Writer.

Gitgrep.com[4] Opensource SaaS version of etsy/houndd (now called hound-search).

StatusPages.me: Status page aggregator with dynamic javascript for scraping each source using selector expressions.

movies to watch aggregator: with links to sources to watch. It was hard at the time to get 3rd party deep links into streaming services so included some torrent magnet hashes. Got a DMCA phone call, so took it down. Combined thumbnails, summaries, actors(?), imdb ratings, links.

Java2cpp: Translate a moderately sized java app with test suite to C++, not 100% required final manual fixups.

Swift2java (or maybe it was java2swift, it's fuzzy now): translate Swift to Java obviously, using ANTLR4. Not 100% required final manual fixups.

Gui2log: Write an ASCII rendition of on-screen GUI widgets into an application log file when form submitted, so users couldn't complain that they saw X, but got Y.

some basic stats/ML algorithms: k-nearest neighbour, RNN back-propagation, etc?

Java in-memory DB: Small SQL-like memory tables with indexing/searching.

wwwsqldesigner: This exists as opensource and I extended it to infer foreign key relationships based on naming conventions used in a MySQL schema. It was great for zooming around a large ERD.

Quicklog: combination of distributed microservices parent/child span logging and generated high level events shown as a sequence diagram. Integrated with Loggly for full/verbose logs of selected high-level events.

Pcl2bmp downscaler: Reduce high resolution HP LaserJet (PCL5) printed to file to lower resolution bitmap pages for screen display (before retina DPI was common). It aimed to shrink same-color areas and preserve black/white transitions while reducing.

[0] https://gitlab.com/karmakaze/hackerer-news

[1] https://github.com/qwickly-org/Qwickly

[2] https://github.com/karmakaze/safeql

[3] https://github.com/karmakaze/moja

[4] https://github.com/gitgrep-com/gitgrep


My backup script, called with ./backup, and will incrementally backup my servers on the local machine using rsync and brtfs snapshots.

The command "list" to find stuff in the current directory, recursively. Basically "find | grep". Works if you have the Python module or Java package name / path, since "." will match any character, including slashes :-)

    #!/usr/bin/env sh

    if [ "$1" = "-h" ]; then
        exec cat << EOF
    Usage: $(basename "$0")^ [--] search_string

    List paths having search_string in them.
    Note: options are passed to grep.
    EOF
    fi

    if [ "$1" = "--" ]; then
        shift
    fi

    find -type f | grep "$@" | grep -v '.pyc' | fgrep -v /target/
And "fkt", which will open the files returned by list with your preferred editor (f for find, kt for kate, because that's my editor and didn't find any fitting name for this command)

    #!/usr/bin/env sh

    editor=kate

    if [ "$FORCE_EDITOR" ]; then
            editor=$FORCE_EDITOR
    fi

    help () {
        exec cat << EOF
    Usage: $(basename "$0")^ [--] search_string

    Open files with paths having search_string in it.
    \$FORCE_EDITOR can be used to give the name of the editor to use

    current default editor: $editor (edit $0 to change)
    Note: options are passed to grep.
    EOF
    }

    if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
        help
    fi

    if [ "$1" = "--" ]; then
        shift
    fi

    if [ "$1" = "" ]; then
        help
    fi

    list -- "$@" | while read line; do
            printf "open with ${editor}? %s [Y/n/q]: " "$line"
            read confirm < /dev/tty
            ok=""
            while [ "$ok" = "" ]; do
                    if [ "$confirm" = "" ] || [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
                            ok=y
                            "$editor" "$line"
                    elif [ "$confirm" = "n" ]; then
                            ok=y
                    elif [ "$confirm" = "q" ]; then
                            echo "bye"
                            exit
                    else
                            echo "wat? "
                    fi
            done
    done
Turns out, I use "list" dozens of time per day, I forgot a bit about fkt but I might get back to it thanks to this post because I often copy-paste results from list to open them. I had forgotten about adding this confirm prompt :-)

I'm sure there are existing, better, tools for this though.

(I've never tested them on non GNU systems, there might be GNUisms in them)




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: