Ask HN: What automation tools have you used to replace mundane activities?

408 points by beatthatflight ↗ HN
For my travel site side hustle (beatthatflight.com.au/), I find and publish cheap flights for Australians. Sounds simple, but even if say, someone gave me the flights each day, there's posting the, sometimes to deals sites, as well as then editing it and posting it on my site, and out to social media, and then to specific mailing lists on mailchimp, depending on the source city of the deal, or type of post.

A LOT of that becomes tedious. Mailchimp can auto post to FB/twitter/instagram etc, but even converting the blog post into mailchimp emails gets tiring, as you need to choose a feature photo, the specific mailing list etc.

I'm a selenium guy, so have built some scripts to minimise some of it, but the rush each time of finding a deal still pains me when I think of the tedium ahead of publishing it.

Ideally, my goal would be to submit [to][from][when] to a script and the whole process would be automatic. I can see that selenium could do it, but my goodness, it'd be slow and potentially flaky all via the web UI for those sites.

I'd love suggestions, examples of automation you've done, and tools used?

233 comments

[ 2.7 ms ] story [ 286 ms ] thread
I started with selenium and still use it when I have to but try to just make http requests and parse responses directly whenever possible. Probably my favorite travel-related script was one that watched for an opening at a hard to book hotel and snatched it up when it became available.
and to parse the responses (Assuming they're HTML page sources, not json/xml) - you using scrapy or something else?
I pretty much always use lxml. It has an html method but I typically just use etree.parse(). It's very fast and has excellent XPath query support.
I just commented on something similar: https://news.ycombinator.com/item?id=22345215

Disclaimer, it’s a project of mine, but if the websites you’re watching are compatible that will save you some hassle trying to extract data.

Use a lot of google sheets as well, it’s super helpful to make sense and use of the data you scrape.

You can check it out here [0], and feel free to ask if you need something.

[0]: https://monitoro.xyz

I use Home Assistant to automate a lot of stuff around my house. The one I use at least daily is a trigger based on the light switch in my bedroom. A double click down triggers an automation that turns off all the lights in the rest of the house, makes sure the garage doors are closed, and that the rest of the doors are locked.
One future Home Assistant project that I would love to implement is a whole house lighting system that gradually transitions all the lights from white/blue in the morning, to yellow/orange in the evening to aid natural melatonin production. Such a project would have to be fully automated, otherwise I'd forget to set it each day. Blue LEDs are terrible for sleep and throw off your body's natural sleep pattern. I got the idea from the excellent book "Why We Sleep"[1]. It's possible that a similar HA project already exists.

[1] https://en.wikipedia.org/wiki/Why_We_Sleep

Look into philips hue. You can set the lights so they turn on at a different color temperature depending on time of day. Some of the remotes/switches even come pre-programmed to do that right out of the box.
You can do this with a bunch of any “smart” bulb that supports schedules. It is not very hard.

I used to have a little script running on my computer that changed one bulb’s color based on local weather forecasts and the time, so that I never had a screamingly bright light telling me it was about to rain in the middle of the night. That’s when it starts to get vaguely complicated.

I did this with good results, using warm white and daylight white LED strips, a couple of PWM dimmers, and an arduino, at a former apartment a few years ago. I have a similar setup now but it's a single LED strip featuring both color temps, with its own remote controllable dimmer for brightness/color temp; I haven't bothered to automate it.
I use a lot of automation around my house too. I noticed that my wife and kids tend to leave certain lights on frequently, so I replaced them with motion sensor switches that automatically turn on/off the lights. Having them turn on the lights became a very nice feature.

I also have all the outside lights on wifi light switches that turn on automatically at dusk. There are a few lamps inside that turn on automatically too, so it looks like someone is home and so it automatically creates a nice ambiance when we are home.

The lamps also happen to use RGB Hue bulbs, so they're normally a white shade, but if one of the outside motion sensors (also Hue) is triggered, then they turn red, and if it's late enough that the outdoor lights are off, then it automatically triggers the wifi light switches to turn on all the outside lights.

Amazon echo show is great for checking cameras. Logitech harmony remote is great for starting up the tv/media box/amplifier and configuring them to their correct settings each time someone wants to watch tv. The automatic refill kit for the keurig keeps the water tank full. myQ lets me know if one of my garage doors was left open. A wemo plug turns on my hot water circulator during the hours when we're usually home and off when we're not. Nest camera lets me know when it spots a person on my driveway.

Better Selenium alternatives would be - puppeteer, cypress, testcafe etc.

For Windows automation AutoIt is good. VBScript for MSOffice automation. Python/shell scripts for mostly everything.

We use Jenkins to run .bat files that package our video game, upload to Steam and spool up Gamelift matchmaking servers on AWS every night. Before this I did it by hand, now I wonder how I could ever have operated with that inefficiency!
How do you find Gamelift? I don't know anything at all about the industry but I'm curious how it all hangs together!
Jenkins? .bat? That's some masochism.
Can you elaborate on how that's masochistic? The game likely needs to be built on Windows.
I've used IFTTT a bit, along with Zapier. Biggest issue is trying to do multiple actions when you need to automate tasks for multiple rows of data at a time.
Do you have some examples of what you use them for?
Look at Integromat. I used to use Zapier but have moved mostly over to this instead.
(comment deleted)
Playwright is a new alternative to Selenium, and besides being cross-browser, is focused on performance, developer ergonomics and reliability (death to flakiness!). Might be worth checking out? https://github.com/microsoft/playwright.

Disclaimer: I work with the Playwright team at Microsoft.

Any plans for a visual editor like Kantu?
Low/no-code authoring is definitely something we’re interested to explore. Once we’ve solidified the core Playwright library, we plan to build (and collaborate with the community on) tools that can simplify automation tasks even further, on top of a modern, reliable and performant core.

Are you currently using Kantu? If so, I’d love to hear more about your specific use cases, and which capabilities you’d be interested to see. Thanks!

Ah this looks great. I'm super happy I'm learning about this project. Do you guys have any plans of adding extensions ala puppeteer-extra?
As part of our goal to enable better developer ergonomics, we’re very keen to explore “better”/higher-level APIs and additional extensibility points. For example, we allow you to define custom “selector engines” (https://github.com/microsoft/playwright/blob/master/docs/sel...), which is just one example of the kinds of customizations we want to enable.

Out of curiosity: are there any specific extensions from puppeteer-extra that you’ve used and/or would be interested to see?

Looks great. The ones I use the most are probably: puppeteer-extra-plugin-block-resources puppeteer-extra-plugin-anonymize-ua puppeteer-extra-plugin-adblocker puppeteer-extra-plugin-stealth (this the most heavily)

Cheers!

Hi thanks for mentioning your project. Are there any plans to use it for automated UI testing for desktop apps? Selenium supports it (more or less) with WinAppDriver, which is another project from Microsoft.

https://github.com/microsoft/WinAppDriver

Desktop support is definitely on our long-term roadmap! We’re simply starting web, since it’s an area we think we can make big improvements to, before moving on to the broader developer landscape.

As we build out Playwright, we hope to learn a lot about how to make automation more reliable, ergonomic, and enjoyable for developers. Ideally, we could then apply those principles/learnings to desktop, mobile, etc. automation too. Stay tuned!

Keen to check it out; the flakiness of Webdriver/Selenium I often wonder is more pain than it brings. So many sites I see disabling tests based on it because they sometimes work/sometimes don't, the hours that get plowed into it.

Edit: Missed the Microsoft ref. Not so keen.

Out of curiosity: why does the fact that Playwright is a Microsoft-sponsored OSS project discourage your interest?

The team is working very hard to be open/transparent/available (https://github.com/microsoft/playwright), and we’re very excited to build a better automation stack with the help of the community. I only ask since I’d love to hear any feedback for how we could improve the way we run/position the project. Thanks!

Looks promising ! although most of my problems (but not all) were related to environment and not Selenium itself.

> setTimeout-free automation

How ? you still need an upper limit for operations

Each of the page operations (e.g. click) automatically wait for the specified element to become visible before being performed. That way, your automation code is declarative about what you want to do, and to what element(s), and you can allow the Playwright framework to handle any “waits” on your behalf (without having to rely on time as a pseudo event).

To make the act of selecting elements more resilient to change, Playwright also supports a collection of “selector engines” that allow you to choose the best strategy for selecting elements (via CSS selector, xpath, text content). Additionally, you can author entirely custom selector engines, and compose them together with the built-in types. This is still somewhat experimental, but we think this can enable another level of robustness to test automation: https://github.com/microsoft/playwright/blob/master/docs/sel....

Finally, in addition to waiting for element visibility, Playwright allows you to wait for specific page events to occur (e.g. network request work made). This enables your code to leverage deterministic “signals”, not timeouts (which are the source of a lot of flakiness!). Overall, we want it to be possible to author automation that is entirely event-driven, and includes zero arbitrary timeouts.

What about smart selectors? First run uses defined selector but also saves othe attributes. If in next run element can be found by defined selector then those saved parameters are used to locate element.
Plugging another alternative to the horrible Selenium made by two friends of mine! https://uilicious.com/
Just here to let you know the Selenium developers are human and read HN, too.
Don’t like the tool, didn’t say anything about the Developers. Not the finest choice of words though I agree.
Love the project, just installed it and trying it out now, got some nice results right away.
Awesome! Please don’t hesitate to let us know how we can improve. We want to make web automation not only more reliable, but also more enjoyable. So we’re keen to hear how we can continue to push that goal forward :)

https://github.com/microsoft/playwright

Can you attach it to an existing browser window/session that is already open? Ie. I navigate and authenticate to a site, run code, and it continues from there with what's on screen?
Playwright allows you to connect to existing browser instances, but it currently requires you to get the “debug URL” of the browser instance first: https://github.com/microsoft/playwright/blob/v0.11.1/docs/ap....

I’d love to hear a bit more about the scenario you have in mind, since that might help inform some improvements we can make. Thanks!

The issue I'm having with Selenium (well, Watir with Ruby) is booting up some automated scraping logic for a page that may be in my current session once I've done the whole authentication dance manually (so I don't have to focus on automating that piece initially).
Just tried the examples on our site and it works really well! Amazing project!

PS: I remember interacting with you from the early days of code-push I think :)

Hey! I definitely remember you :) It’s always satisfying to run into the same folks across different projects, over the course of multiple years.

I’m glad to hear the examples worked out of the box! We’ve been iterating on the docs and API quite a bit (based on feedback), so don’t hesitate to let us know if/how they can be improved: https://github.com/microsoft/playwright.

Autohotkey on windows is my goto tool. I don;t know much about it but I can do the basics like move mouse to x.y coordinate and click it, or send a string of keystrokes to a form etc.
It is much easier to do those actions with Python (https://automatetheboringstuff.com/2e/chapter20/)
I would say autohotkey is far superior to python on windows. The runtime comes with everything you need, no need to install/manage external dependencies. For example, I copy-pasted a 324 line snippet from the forums (https://autohotkey.com/board/topic/16400-ahk-regex-tester-v2...) into an .ahk file and I immediately get a full GUI to test my regexes on, 13 years after the snippet was posted.

Additionally you can bundle the interpreter for your scripts into a standalone .exe that can run on anybody's windows machine without needing ahk installed. It's a one-click operation done in a program that was also written in autohotkey (https://github.com/AutoHotkey/Ahk2Exe). I can't imagine anything as resilient as AHK when it comes to scripting automation programs on windows.

Autohotkey is such a beast. I really miss that now that I've started using Linux. i spent nearly 4 years writing scripts to automate all sorts of things in windows but to recreate them on linux might take me much longer since i would have to learn maybe 6 or 7 different programs just to get the same features. but alas Windows was doing my head in so I had to jump ship!
Autohotkey is also a tool I sorely miss since I moved to linux so many years ago. Sadly, there is no linux-equivalent and no one seems keen on porting AHK to linux.
I have a slack workspace that has several bots, some listen for specific keywords and or phrases around the web and post to the relevant channels. Other bots remind me if I'm slacking off (maybe stayed a little too long on youtube), remind me of appointments, to drink water, if a stock price falls and some more. Also have filtered rss feeds for business and finance news etc. All of these bots also have custom identities that make it much more engaging like Axelrod is my bot for finance related news.

Others tell me if my server is getting swamped, forward important emails like renewing a cert, a deploy failed, bug in prod or something else that requires often immediate attention. Chat widgets from sites in production also go directly to Slack so I can reply quickly if needed. (Gmail, Sentry, Freshchat, Ploi etc, integrate them all and filter out what's critical).

Everything generally operates on a 15 min interval or so it's not noisy and I've pretty much tuned it to only receiving specific stuff I want to see. Having a central assistant like hub to go to is very useful and time saving.

Did you build these bots or got them from somewhere?
Some are are custom built from apis but I daresay you can find just about anything to hit a webhook or integrate into slack or elsewhere nowadays. Some examples are https://littlebirdie.io/ I use to filter hackernews, Zapier for RSS & filtering feeds, google calendar etc, nothing complicated, just know what you need from a specific service then figure out a way to get it to yourself in a recurring distraction free manner be it an existing addon or something you can roll yourself.
Wait isn’t having a bot send you notifications all day the opposite of “distraction free”?
Not OP, but I think that the idea is that if a notification makes it through the system, it has been filtered to be worthy of distraction. So, there isn't a cognitive cost to the user of "is the notification worth reading" since it has already been determined to be that way.
You're right. On average I probably get about a dozen spaced out during my working hours, 10am to 4pm. On a busy day I might get a couple dozen but the intervals make these easily manageable and I always have priority. If I see something from Gilfoyle in alerts that's probably more pressing than a company I'm following that just released unaudited financials in news. Setup might sound odd but in reality as said above anything that makes it through has some stake in something I'm invested in and want to keep an eye on.
What does this cost?
Costs me nothing. Some channels eventually reach their lifetime usefulness like a topic I was interested in and amassed some 500+ mentions of it on twitter, business news from 8 months ago about someone getting acquired etc. I can export the messages and delete the channel to avoid history archival. Only real cost would be the one or two times a year maintenance and improving bits and pieces every now and then.
I think the better question is how long did it take you to set this up initially?
Right, I started with RSS initially. It wasn't in one go, it was over a period. If I had to give you a definitive answer however, I haven't spent more than a couple hours total on this and I've been using this close to 2 years now. Did a recap last night and I have a total of 17 bots, some post daily, others I see once a month. I'm also seeing tools being shared here that could make this a lot easier as well such as huginn.
There’s no subscription charges or hosting costs?
None whatsoever. Other than my server which is unrelated (because the same service could run locally) where I have a twitter bot that listens for "save this" from my main account and will unroll a thread and format it nicely for reading later. See https://threadsja.com/ThreadsJa/1214555011289690112 for an example. Used to be personal but I wiped it, got a domain and other people are slowly starting to use it.

So about every service I have connected to it is on a free tier except Ploi (free as well) but I need for actual work and is also too good not to pay for.

Oh cool, I didn't know if others were doing this. I've recently just started going down this path with some zero effort IFTTT triggers but I'm not happy with how infrequent they seem to trigger. My next step is to build my own set of listeners/scrapers.
I posted the same thing on a similar thread yesterday but if you're looking to build some scrapers and listeners and make it easy for yourself I'd highly recommend Huginn (https://github.com/huginn/huginn). I set it up a few months back and I've been using it to scrape all sorts of info and alert me on things. IE:

* A change in GBP -> NOK exchange rate, to indicate if it's a good time to buy ready for my next trip to Norway.

* Alerts on flight prices to help me purchase flights when they're at their cheapest.

* Daily digest email with content I'm interested in from HN and some web comics.

* A summary of new content coming into my RSS reader.

It works really well for this sort of stuff and I found it fairly easy to get up and running.

I found this last night and I'm already looking at replacing/extending my existing setup with it. Thanks for the share!
Nice! It didn't take me too long to setup with docker-compose on a cheap Digital Ocean instance. I'd suggest reading through all the options and toggles provided by environment variables though. There were quite a few I didn't find for a few weeks which proved to be important or useful and they're not explained in the docs all that well. Aside from that, I've not had any teething issues really.
Thanks for the link! huginn looks cool and useful (good combination!). Impressive work by 179 contributors.

I have had numerous simpler projects automating my digital life but I made the (probable) mistake of always starting from scratch and writing stuff all on my own.

I was in a similar boat but refused to build my own system. Huginn was a perfect solution for me and I really enjoy using it. You can write your own agents if you need to but I haven't had to so far.

Since I set it up a few months ago I've been using it a bunch, it's event driven system is great for when you want to trigger off multiple streams half way through a flow. You can also go back through past events if you want which is really powerful.

would love to talk to you more about how you set this up
You can see the discussions under my main comment. Pretty much just make a slack workspace and start finding integrations for services you use. Zapier for one makes it super easy to filter out what can get to you from these but I'm seeing good things about https://github.com/huginn/huginn now.
+1 for having a personal Slack workspace - I think this is an under-appreciated way to host side projects and learn how to develop with Slack. There are so many services which already include Slack integration, you can wire everything up into your personal notification space.
(comment deleted)
I use tasker on android along with a plugin to automate turning down my screen brightness in the evenings, turning off screen rotation in a particular orientation for specific apps (IE I prefer to text in portrait mode since I can see what I'm replying to).

I've semiautomated setting up a new laptop using a private repo with my dot files with some bash scripts. Started with linux, now works with Mac os x (but won't handle linux well and I haven't gone back enough to make it worth case by case stuff).

I still have to generate a public private key pair, and some things on macs aren't perfect, but I have a todo list for the non automated things in the repo. I get going less on new macs nowdays since the keyboards are such crap (fingers crossed this year will bring better 13 inch keyboards), but everytime I do it I add something.

>>my goodness, it'd be slow and potentially flaky all via the web UI for those sites

Generally, I've had better luck using undocumented APIs for this kind of stuff. I was a heavy user of Selenium to automate many a task (I work in wholesale construction goods, tons of automations needed everywhere).

But then discovered that using internal APIs (which surprisingly don't change much) is far easier than trying to exception manage changing UIs.

Open up dev tools on your browser and watch the GETS/POSTS as you complete your daily tedium. I use Python (usually just requests and beautifulsoup is enough) to mimic the calls and I have yet to find a use case where I wasn't able to automate something online.

I'm currently developing an SDK for our 18th-century ERP system, which has no API. I've also automated getting shipping container tracking data from a various shipping lines and railroad company websites, many with complicated login processes.

Happy to chat, email in profile.

Good point, using the APIs directly is the also the corner stone of stable test automation
Yup. I did this with a local Android app, that tells you the gps location of a public bus. I sniffed the http packets, found the requests i needed and made a python script that pinged me at slack when my bus was 5 minutes from my bus stop. Useful when I worked at night.
Nice, that's the next step up.

Man-in-the-middle Android apps to discover (sometimes different API backend).

I did the same with a shipping line which turned out to use a SOAP backend.

I'm familiar with the web dev tools, but no clue about mobile. Can you point me in the right direction on how to do the same?

Were you using an android emulator on desktop or there's some way to easily do this on android?

I use mitmproxy or charles proxy with an android emulator, with an older version of Android so it allows for a man-in-the middle, without being finicky about certificates.
(Facepalm)

I read your post.

Paused.

Opened up debugger on the site I'm currently selenium-ising.

reloaded.

boom. there it is. The request, and beautiful json response.

So...so..so much simpler.

Thank you, my evening is sorted ;)

Haha.. love it, I'm so glad it helped.

I had the same experience a couple years ago after spending months selenium-ing our ERP software.

finally got to it last evening. 20 minutes of playing with json libraries, and I've got a ~10 line script that runs in under a second and produces output that would have taken probably a minute to run in selenium and occasionally been flaky too.

/starts looking at other APIs to use!

Thanks!

Awesome! enjoy the rabbit hole :D
Ha ha, yep. I do this kind of thing all the time.
Ansible!

I’ve been working on a “mail to cloud storage” project on the side for fun, but also as an excuse to learn Rust.

As part of this effort, I decided to try out Ansible. Man, it is one great tool!

For development, I have all of my server “groups” pointing to the same host, so my Ansible playbooks install and setup everything on a single machine. Makes testing much easier tbh.

I'm currently migrating a system at work to using Ansible and I'm absolutely in love with it.

My next project will be creating Ansible Playbooks for my workstation, so I can easily re-setup my Arch workstations on Desktop, Laptop, private and at work.

I used to work at an architecture firm that specialized in design and manufacturing. One of our more popular products was facades made from aluminum panels with "graphic perforation", a pattern of holes made to form an image at a distance. As you can imagine, for larger projects the number of unique pieces to be cut was into the hundreds. This represented a lot of time for our CAM programmers because the (quite mature and industry standard) CAM software we used was incapable of determining the proper cut orientation without manual input. This meant clicking holes a bunch of times per panel to switch which side of the curve was cut. No Bueno.

One of our primary CAD suites was Rhino which is very nice and has a great python API. So I wrote a full-fledged 2.5D CAM processor for that. This allowed us to batch process hundreds of these parts with a single click.

I've started playing with some things with node-red + open hab to control my lights, but more in line with what you're talking about I've also played with Huginn for automating some small daily actions and webscraping. So far it's been going well but I'm not doing anything terribly difficult yet.
Take a look at Huginn [0], it's very powerful with the existing agents for taking input, parsing, and outputting data to different locations.

I use it mainly for when I can't do things in IFTTT or have sensitive things I'd prefer to keep in a self-hosted system.

0. https://github.com/huginn/huginn

Now that you mention IFTTT. I've recently visited their website and found out it has a web hook "if". An http endpoint where you can GET/POST data and trigger actions on it.
Last week I built an automated expense tracking dashboard on Tableau using SendGrid and Google Sheets. I use a Gmail filter to forward my credit card transaction emails to an Inbound Parser setup on SendGrid, which makes a POST call to my home server with the content of the email. A regex then captures the details from the POST body and pushes them to a Google Sheet.

Next I use Tableau Public to read data from Google Sheets and publish a dashboard to Tableau Public Online. Tableau Public automatically refreshes data on the server side from Google Sheets every few hours.

The good part is that all of this can run automatically without any manual intervention whatsoever and I get a beautiful near real-time dashboard for my daily expenses that I can access from anywhere (dashboard is publicly accessible but hidden).

Are you comfortable sharing your personal expenses with so many public sources?
Tableau Public is the one that makes me uncomfortable. If this dashboard continues to work well and be useful I'll look into self-hosted alternatives.
Metabase may be of interest as an alternative
Yeah, I've used it in the past. Problem is my home server is a tiny RPi Zero and Metabase is too heavy for it. I'll look into running it on AWS/DO if I absolutely have to.
I’ve given in and bought an energy efficient homelab server for a few hundred off eBay. Intel makes the nuc, Lenovo has tiny thinkcentres, and HP has the elite desk among others.

The strange thing is how many odd lxc container projects I’ve stood up just to play with. Proxmox is sweet.

Could you use Google Data Studio for it instead?
Thanks for the suggestion. Looks promising. Although it's not as polished as Tableau.
No, but has private dashboards for free and it is hooked into your Google account for easy import from Sheets and such.
How does error-handling in this case happens? Do you get a message if some part of this pipeline fails?
Send grid retires sending the message for 3 days incase it doesn't get a 200 from my server.

To capture errors on my server I use PaperTrail's email alerts.

This is an excellent idea for an expense tracker dashboard. I would like to create something similar for a business process automation course that I am currently working on. And I would use Google Data Studio instead of tableau as Google sheets has a data connector for data studio already.
I use a collection of tools from this repo to automate mundane developer activities such as posting release notes slack messages containing linked pivotal or Jira story titles: https://github.com/sufyanadam/pivotoolz

There's a bunch of stuff in there that saves you seconds each time you have to work with a user story or cut a branch or merge etc... Saved me a bunch of time over the years!

Unfucking the many many ways that banks screw up exporting financial transactions into well-formed OFX files that MoneyDance can consume
Have you tried https://pipedream.com? You can run Node.js (with any npm package) on webhook/http requests, emails and schedules for free. It also manages auth (including oauth token generation and refresh) for popular apps like Google Sheets, Discord, Slack and Airtable -- just use the auths object to reference tokens and keys in code.
Looks very promising! However the pricing is opaque. What will this cost me, if my business becomes successful and hit their free tier rate limits?

https://docs.pipedream.com/pricing/

Hi, I'm a co-founder and engineer at Pipedream.

Paid tiers are coming soon, and if you hit our daily compute limit before that, we're happy to raise your limit to make sure your workflows run without issue.

Let me know if you have any other questions! Feel free to reach out to me directly at dylan [at] pipedream [dot] com.

Make is an incredibly powerful tool for managing any automated process, not just software compilation. It doesn’t know how to do any of the individual steps itself, of course, but it lets you break down a process into indivdual small pieces that can be automated separately.
Probably off initial topic, but:

- FileJuggler on Windows, to automatically clean Desktop, Download folder and archive everything into a date-based folder structure in Drive.

- AutoHotKey to insert text templates into everything (e.g. current date, formatted Jira issues, annoying things to type)

The problem with automation is that one will want to break even quickly [time saved > (time spent finding/setting/maintaining)] otherwise automation is just a glorified delayed action. Time saving is not the only reason for automating but I assume it's n°1's when it comes to personal use.

Perhaps underappreciated aspect of automation is friction reduction. Having a semi-automated process can be what it takes for you to stop avoiding doing some little chore, or what makes you no longer suffer as you do it.
I am really susceptible to friction. It's why my bike is at my front door, and why I don't stack things. Adam Savage has a principle he called First Order Retrievability that helps reduce friction for using tools around his workshop.

This thread made me think about automating my invoicing. If all it did was mail me the completed PDF to then forward to clients, that would definitely make me do it more consistently on the 1st of the month even though it's not completely automated.

https://hackaday.com/2015/02/28/adam-savages-first-order-of-...

Some more items that I've setup in AHK:

- Launching commonly used apps, like Notepad, Windows Explorer or Sublime Text

- Launching commonly used websites in a browser, e.g. gmail

- Paste from the clipboard into a language translation site (languageX to languageY via URL parameters)

- Open a to do list in Excel (hard coded file path)

- Text expansion for personal and work email addresses

- With one keypress, open the train schedule on the website, type in the 'from' and 'to' stations, search

- Text expand to symbols that I always forget, eg. euro symbol, hash sign etc

- Google/Wikipedia search clipboard text

> Text expand to symbols that I always forget, eg. euro symbol, hash sign etc

Yes! That's a big time saver on my end to.

I was also using it to insert emojis, but the new `Windows+.` shortcut is actually useful for that.

Hopefully you are prolific enough in AHK to use it directly, for all other people I suggest Lintalist:

https://lintalist.github.io/

which is a AHK based tool, very easy also for the "casual" user (like I am).

Thanks for linking this, I hadn't heard of this tool before (I've been using AHK for many years).

Another very useful tool that I recommend for automating PixelSearch and the like is Pulover's Macro Creator:

https://www.macrocreator.com/

It spits out AHK code after recording actions (e.g. a long mouse and keyboard sequence), it's a great time saver for more complex scripts.

I used google scripts and google forms for some of my automation like:

1 - Notify me when Movie tickets are available to book. Used google scripts that run every minute and hit a URL to check if tickets are available now.

2 - Book a class when it's available, I have joined a Gym where you have to book a class before going, and the Zumba is very famous there the time it opens it fills up in 30seconds and there are limited seats, so if you are late it's gone. I wrote a script that checks and books the slot for me and then adds the same in my calendar. I extended the same using google forms when I want to book another class at some specific time which is currently not available if somebody cancels it will be available. The script keeps on checking until class start time, if available books and notify me.

3 - In my team, everyone plays Foosball and after lunch, it's everyday discussion who will play first and with whom. I wrote a script which will decide the matches and players in each team. I used the google app engine to deploy it, which is still running and just by hitting the API will sort the things for us.

There are a few other automation I did using IFTTT.

I wonder who else is refreshing the class registration page and filling it up within 30 minutes? Or do the special people get advance notice that registration is about to open?

I remember reading a wild tale of how someone made a program for a used car salesman that would check a particular car auction site to make sure they get a good deal (I wish I could remember the details, or better yet, find the URL)

@netsharc, the class booking opens every day at 10:00PM and everybody knows that. :)
Have the same problem for my own local Zumba class, will have to investigate whether we can automate it vs just setting an alarm for when they release booking (also at 10pm)
I jut begun to do some partial automation of website interaction with the extension Tampermonkey for Google Chrome to inject my own scripts on certain websites, often creating an additional control panel UI for custom actions such as scraping or data input. I use Tampermonkey in such a way that the code managed by Tampermonkey are only loading scripts that load my actual scripts from GitHub and other sources, such that I always get the latest published versions of my scripts.
would be interested to see why you use tampermonkey instead of GreaseMonkey. I tried both but stuck to GreaseMonkey as it was open source.
Not OP, but I decided to switch to Tampermonkey after GM version 4 which broke almost all my scripts due to the GM_## api changes. I no longer remember the exact details but it was poorly executed/communicated, and it’s easier to switch to TM instead of updating all the scripts.

The dashboard interface in TM is a lot nicer than GM too

When Firefox stopped supporting legacy extensions, the Greasmonkey developers saw that as a chance to redesign their API (to use promises).

Tampermonkey used to be open source, but unfortunately isn't any more. I still use it though, as it has better UX (e.g. nicer dashboard, prefills @match when creating new scripts, better editor, etc).

An alternative to Tampermonkey that is open source and still uses the old style of user scripts is Violentmonkey (which also lacks in the UX department, if i recall correctly).