Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
docker-essential-aliases
docker essential aliases (dea) makes working with docker just a little bit easier!
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
my-alternatives
A wrapper for update-alternatives offering user-level customizations with support for Debian, SUSE, and RedHat
-
BotServer
GPT-Powered ready for Bot Framework V4 run-with-F5 in Visual Studio Code, NPM-friendly repository package based bot factory server which includes support for Excel, an React.js bot web application & several features including Whatsapp, sql-firewall-opener and auto-ngrok.
-
SkyRocket.spoon
Resize and move windows using the mouse and modifier keys. A Hammerspoon clone of Zooom/2 functionality.
-
HyperKey.spoon
This library allows you to bind keys to a modifier, and shows you a popup overlay of all your key binds when you hold down the modifier key.
-
GenFortune
A clone of the unix "fortune" utility supporting more advanced features like dynamic generation and modern JSON syntax while still using less than
-
Kiilogger
C# based keylogger for general purpose keyboard logging and computer usage debugging :stuck_out_tongue:
-
zettelkasten
Creating notes with the zettelkasten note taking method and storing all notes on github
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
IDA doesn't have a real headless mode. Instead, you can only run scripts within the TUI and hide the TUI interface, which makes output or errors not visible. So, I made this yesterday just to run IDA headlessly. I guess that still counts as a "small script" since it's roughly 50 lines of code.
I write a lot of extremely simple but handy shell functions.
This one lets me drag/and drop things out of a terminal session (kind of) into applications with https://github.com/mwh/dragon and i use it way too often!
I have a neat Hacker News scraping setup that I'm really pleased with.
The problem: I want to know when content from one of my sites is submitted to Hacker News, and keep track of the points and comments over time. I also want to be alerted when it happens.
Solution: https://github.com/simonw/scrape-hacker-news-by-domain/
This repo does a LOT of things.
It's an implementation of my Git scraping pattern - https://simonwillison.net/2020/Oct/9/git-scraping/ - in that it runs a script once an hour to check for more content.
It scrapes https://news.ycombinator.com/from?site=simonwillison.net (scraping the HTML because this particular feature isn't supported by the Hacker News API) using shot-scraper - a tool I built for command-line browser automation: https://shot-scraper.datasette.io/
The scraper works by running this JavaScript against the page and recording the resulting JSON to the Git repository: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
That solves the "monitor and record any changes" bit.
But... I want alerts when my content shows up.
I solve that using three more tools I built: https://datasette.io/ and https://datasette.io/plugins/datasette-atom and https://datasette.cloud/
This script here runs to push the latest scraped JSON to my SQLite database hosted using my in-development SaaS platform, Datasette Cloud: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
I defined this SQL view https://simon.datasette.cloud/data/hacker_news_posts_atom which shows the latest data in the format required by the datasette-atom plugin.
Which means I can subscribe to the resulting Atom feed (add .atom to that URL) in NetNewsWire and get alerted when my content shows up on Hacker News!
I wrote a bit more about how this all works here: https://simonwillison.net/2022/Dec/2/datasette-write-api/
I have a neat Hacker News scraping setup that I'm really pleased with.
The problem: I want to know when content from one of my sites is submitted to Hacker News, and keep track of the points and comments over time. I also want to be alerted when it happens.
Solution: https://github.com/simonw/scrape-hacker-news-by-domain/
This repo does a LOT of things.
It's an implementation of my Git scraping pattern - https://simonwillison.net/2020/Oct/9/git-scraping/ - in that it runs a script once an hour to check for more content.
It scrapes https://news.ycombinator.com/from?site=simonwillison.net (scraping the HTML because this particular feature isn't supported by the Hacker News API) using shot-scraper - a tool I built for command-line browser automation: https://shot-scraper.datasette.io/
The scraper works by running this JavaScript against the page and recording the resulting JSON to the Git repository: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
That solves the "monitor and record any changes" bit.
But... I want alerts when my content shows up.
I solve that using three more tools I built: https://datasette.io/ and https://datasette.io/plugins/datasette-atom and https://datasette.cloud/
This script here runs to push the latest scraped JSON to my SQLite database hosted using my in-development SaaS platform, Datasette Cloud: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
I defined this SQL view https://simon.datasette.cloud/data/hacker_news_posts_atom which shows the latest data in the format required by the datasette-atom plugin.
Which means I can subscribe to the resulting Atom feed (add .atom to that URL) in NetNewsWire and get alerted when my content shows up on Hacker News!
I wrote a bit more about how this all works here: https://simonwillison.net/2022/Dec/2/datasette-write-api/
I have a neat Hacker News scraping setup that I'm really pleased with.
The problem: I want to know when content from one of my sites is submitted to Hacker News, and keep track of the points and comments over time. I also want to be alerted when it happens.
Solution: https://github.com/simonw/scrape-hacker-news-by-domain/
This repo does a LOT of things.
It's an implementation of my Git scraping pattern - https://simonwillison.net/2020/Oct/9/git-scraping/ - in that it runs a script once an hour to check for more content.
It scrapes https://news.ycombinator.com/from?site=simonwillison.net (scraping the HTML because this particular feature isn't supported by the Hacker News API) using shot-scraper - a tool I built for command-line browser automation: https://shot-scraper.datasette.io/
The scraper works by running this JavaScript against the page and recording the resulting JSON to the Git repository: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
That solves the "monitor and record any changes" bit.
But... I want alerts when my content shows up.
I solve that using three more tools I built: https://datasette.io/ and https://datasette.io/plugins/datasette-atom and https://datasette.cloud/
This script here runs to push the latest scraped JSON to my SQLite database hosted using my in-development SaaS platform, Datasette Cloud: https://github.com/simonw/scrape-hacker-news-by-domain/blob/...
I defined this SQL view https://simon.datasette.cloud/data/hacker_news_posts_atom which shows the latest data in the format required by the datasette-atom plugin.
Which means I can subscribe to the resulting Atom feed (add .atom to that URL) in NetNewsWire and get alerted when my content shows up on Hacker News!
I wrote a bit more about how this all works here: https://simonwillison.net/2022/Dec/2/datasette-write-api/
I actually just opensourced a personal project/tool I've been using often.
https://github.com/robswc/docker-essential-aliases
When deep diving into containers, I got tired of typing/tabbing out container names and docker formatting lol
Nothing revolutionary but it has saved me a ton of combined time.
I write a ton of CSS and could not find a command line stylesheet checker. I did find the NuHTML checker from W3C, cough, which also checks CSS: https://github.com/validator/validator/releases/tag/20.6.30
I wrote a script to convert the inset a CSS file into a dummy one-line HTML file, so that I can pass a CSS file to the script, and when errors are generated from the CSS, they are given using the correct line number.
MyQ Garage Automation had issues with my account and wouldn’t send me notifications when the door is left open for a long time.
So I automated the notification system using IFTTT.
https://github.com/ravivooda/thoughts/blob/main/docs/garage_...
I've created a tool for replaying HTTP archives:
https://github.com/Tade0/emergency-poncho
There are many like it, but this one is mine.
Useful when you're a front-end developer and the backend app is not easily deployable locally and the test environment is down.
Also with it you can make a blazing-fast, browsable snapshot of JIRA.
> I can make the batch file chimeric so it can run in a linux shell as well. Maybe that'll to be my lazy Sunday afternoon?
You may want to draw inspiration from the latest incarnation of JetBrains build bootstrapping script:
https://github.com/JetBrains/intellij-community/blob/idea/22...
I made a fzf-powered tool that makes cd'ing into deep directory trees quite fast and easy. It's somewhat reminiscent of ranger/nnn/broot, but in my mind, it eliminates the mental context switch of entering/exiting those tools.
Some gifs (with speed comparisons) here: https://github.com/dp12/probe
Not a "small" script, but this allows me to painlessly switch proxy configurations in git/npm and windows.
I'm really happy with this script I wrote that is a wrapper over update-alternatives that lets you make user-level (and even per-shell) changes:
I wrote a quick integration to the GPT-3 API to Emacs [0]. Although it's a very simple implementation, it's made many small things I would've previously done manually much quicker (ie - one-off calls to convert a hyperlink in X format to markdown; abbreviate first names of author lists of papers; convert some "text message speak" messages into a paragraph).
Which finds all squash-merged branches in the current Git repo, and warns you before deleting!
https://github.com/benwinding/dotfiles/blob/master/bin/git-d...
I made a CLI tool for quickly starting new branches with draft PRs, asking for reviews, etc: https://github.com/dbalatero/work-cli
Made a bunch of Hammerspoon plugins for macOS:
- https://github.com/dbalatero/SkyRocket.spoon - mod+click to resize/drag windows
- https://github.com/dbalatero/VimMode.spoon - Vim mode everywhere
- https://github.com/dbalatero/HyperKey.spoon - pop-up menu for when you forget your keybinds (like neovim's which-key or spacemacs)
back in the covid period, i wrote a small set of scripts to automatically attend my university lectures on zoom:
https://github.com/WantGuns/auto_meet
it does the bare minimum of:
my favorite is a little command line helper called “o”. it’s a helper for copy and rename commands. If I want to edit a misspelled filename I can just type
o mv mispelled.txt
and it will make an interactive prompt that looks like:
mv mispelled.txt mispelled.txt_
but the last word is editable, so I can use the arrow keys to alter it in place
This tiny script keeps my gmail inbox surprisingly manageable.
It auto-archives any emails older than 2 days (you can change this obviously) unless they're starred - this changes my email experience in two ways:
1) My email inbox ONLY has emails that are either new or that I decided were relevant. I have two days to notice this.
2) When I'm scanning my email, if I see something important that I don't have time to deal with, I can star it and keep moving and know that it'll still be visible and in a manageable-size queue later.
When I travel off-grid it is a bit of a pain since I have to go through a lot of archives, but that can be addressed by just turning it off.
I also ruthlessly unsubscribe to things I've stopped reading to keep everything manageable.
Diary script.
`$ diary` create/open a file for today's diary in vim: https://github.com/Aperocky/diaryman/blob/master/diaryman.sh
Or try `pip install diarycli`: https://github.com/Aperocky/diarycli, for a pip packaged python version that does the exact same thing.
I've actually kept diary and work logs, things I did not know I was capable of.
Diary script.
`$ diary` create/open a file for today's diary in vim: https://github.com/Aperocky/diaryman/blob/master/diaryman.sh
Or try `pip install diarycli`: https://github.com/Aperocky/diarycli, for a pip packaged python version that does the exact same thing.
I've actually kept diary and work logs, things I did not know I was capable of.
I've done three worth mentioning.
One is GenFortune: https://github.com/EternityForest/GenFortune
Project specific Bash history.
https://github.com/harish2704/dotFiles/blob/master/home/.loc...
This script + SpaceFM file manager saving lot of time for me
Ugit (undo git): https://github.com/Bhupesh-V/ugit/blob/master/ugit
I got this idea from a Twitter discussion which eventually blew up a year later after its initial release.
I used to run a site for tutorial screencasts. My "video workflow" involved recording, adding an intro and outro, transcoding to multiple formats and finally uploading the videos to the Internet Archive.
I automated everything except the actual recording using a Makefile that's over here https://gist.github.com/nibrahim/2466292. I think I added some sox commands to clean up audio too in a later version but lost the file.
Another one I did was a small script to create ruling sheets for calligraphy. It's a tedious process by hand and having a script create a PDF based on nib width is a great time saver https://github.com/nibrahim/Calligraphic-Rulings
I've made 2 projects that I use everyday for several years now. Not sure if I'm proud really, but they are such useful tools in my daily life so I guess I should be!
One is a RSS feed reader (GORSS) for the terminal that I use to always be up to date with stuff that interests me. The other is a simple todo-list that I use for work, shopping etc (DoIT).
https://blog.waleson.com/2022/03/the-worlds-first-cowboy-key...
Source code here: https://github.com/jtwaleson/cowboy-bike-remote-ble
I’m currently working on finalizing the PCB version, the first one had some flaws so the battery drained really quickly.
1. List the files in order of last modified or last opened. This way I can list 25 latest files and go to the ones opened by me. (no folders needed, just the last opened ones).
2. With last modified date, tells me when the file was modified last. (useful if you collect data in sheets from forms or other stuff, tells you when you have a new lead). Also tells you when the colleague you share a file with has edited it or not.
I wanted to enhance it with adding more stuff like: show diff, so I know what has changed. And then, show the content from a doc right here in sidebar, because well it's easier to type a mail by looking at that.
Not proud, but useful:
A small copy/paste tool to assess the semantic quality of any webpage:
I was not saying complete truth. It records much more details. I use the my home made https://github.com/XEonAX/Kiilogger
At work I use autohotkey script that dumps clipboard to a text file with a timestamp.
I will see if i can get the code.
I like my web type setter written in Python very much: https://github.com/dkrajzew/degrotesque
It replaces common ASCII characters by their typographic counterpart, e.g. "Hello - I'm back" will get "Hello — I'm back"
Made a watermark tool to watermark images in the browser, using it whenever I send images to third party:
I wrote a bash script to collect demographic information for everyone in the country using the us census. I also created a simple bash script to take notes following the method, you can check it out here: https://github.com/AndrewCopeland/zettelkasten
I use a similar thing that also handles when you forget -rf, with confirmation & stuff; https://github.com/MikeDacre/careful_rm