83 comments

[ 0.29 ms ] story [ 108 ms ] thread
Off-topic but every time I open their site I am blown away by how fast their pages load. It's an absolute delight to navigate their blog.
Looks like all their server-side stuff is coming from Heroku.
Pretty annoying, though, that they hijack users' familiarity with the red dot to deliver the useless notification that "You are not logged in on this device".
It's essentially an ad that gets you to click it by making you think you are somehow logged in on a site you don't have an account on. I emailed them about this because I think it's an awful pattern, and did get a response but not one that indicated they understood the problem with this deceptive marketing technique. It makes me avoid clicking links to dev.to.
On my mobile so I can’t poke around... what did they do to make page loads so speedy? Even images seem to be quick.
They preload everything. They preload a post when you mouse over it, so it's mostly/completely down by the time you click. They also preload the current most popular posts, things like that.
Noticed they start loading content as soon as you hover your mouse over a link. Wonder what their server loads are like because of this.
They use Varnish for pages, and two CDNs (Fastly and Cloudinary) for everything else. Varnish is insanely fast, on my servers I can get page load times down to 1/3 of a second with it.
Author cites the all too relevant XKCD with regards to "automating things".

Curious to hear if anyone else is making IFTTT work for them on a daily basis. My initial experience with IFTTT was buggy, tasks would fire inconsistently, with no clear way to debug.

I don't see why I would even use a middle man service honestly.
Not me (but also curious to hear!).

I tried it but never understood the value they provide for users with basic programming and scripting knowledge.

I either use the API directly, or, if not available or I only need some quick and dirty solution, resort to web browser automation tools like Kantu.

Why would I bother doing that instead of just using an existing recipe? The benefit is laziness.
Because the existing recipes are one-size-fits-all. If you need an sort of customization, you end up rolling your own anyway. Many of us started coding for that kind.of reason to begin with.
Well, yea. But ignoring the existence of the recipes that you do need just because you want a custom one for something else is silly.
I had the same experience. I gave up on it after a couple days.
This was my understanding of the service, but I haven't tried using it in 3+ years. Things may have changed.

It depends on what you're doing. Most users use it as a simple, time independent trigger mechanism. IE: when they post to twitter, IFTTT picks that up and reposts to tumblr.

Most popular use cases are not time sensitive or high throughput. I once heard a fellow programmer say IFTTT was not designed for people like us. Those two caveats are why. Time sensitive use cases, like getting text messages when it's going to rain, don't work well. Neither do high throughput tasks like filtering the HN firehose.

I’ve had IFTTT applets running consistently for years for really only one use case: getting texts/emails when people post specific things I want on my local craigslist.
I'd be curious to know the benefit of IFTTT over the registered search/notify built in to CL. Different options or...?
I use IFTTT to save all my Instagram posts to Dropbox
I use it for a bunch of stuff, like turning off lights when I leave the house, saving internet activity to my calendar for a personal history, etc.
Instead of IFTTT, I've been using node-red for my automation needs. Really enjoying it.
I also use node-red for my automation needs very successfully. I found IFTTT to be unreliable and limited for my purposes, and node-red has also filled the void left by the closure of Yahoo Pipes.
I'm thinking of doing this to better enable work from an iPad. Mostly in terms of things like having push button access to command line tools via api, everything from compilers to pandoc. But the real sticking point is that there's no universal easy way to actually get a file attached to a http request with iOS sandboxing---the best I can come up with is emailing everything in and building the api around reading subject lines. Which seems a little... hassle-full?
Base64 is your friend, friend. Unless they start introspecting text to see if it has escaped binary and then stopping it. Reminds me of the time someone built a P2P file again network using gmail's attachments. Though I can't find a link to an article about it right now.
On Android there's a bunch of apps which will register as a share target and let you configure a bunch of HTTP endpoints of your choosing to send it to, I would be surprised if there isn't an iOS equivalent?
Hmmmm.... I wonder if there's a way to do this with pythonista. It does have a share sheet module. Combine that with the base64 point below...
Laziness ftw! -> [link redacted]

Really not trying to self-promote, but genuinely interested in laziness as a quality of great developers. I talked about it at a javascript meetup [link redacted] (Ignore the David Foster Wallace hair, the math error. Security folks don't worry that address is not valid).

I bought up lzy.io and wanted to make a lazy manifesto, but I don't think we need any more manifestos, So I just collected some examples of programmers taking laziness to new levels good and bad!

Sounds to me like you are making excuses for being too lazy to write a manifesto...your hired.
Funny that you mention laziness, because most programmers I know work harder and are under more stress than most other people.
Yeah I always roll my eyes when I see people touting laziness as a virtue. Time to open eyes.
Yeah well I always roll my eyes when I see people touting hard work for hard work's sake as a virtue. Time to open eyes.
+1

hardwork != productivity.

The idea that "working hard is good" is an outdated notion from a time when manual labor was more closely tied to productivity.

(comment deleted)
Congratulations, you've produced a straw man!
I'm a naturally lazy person and it took me a painful three decades to come to the conclusion that laziness is not a virtue. It's a handicap. I constantly hear "work smart, not hard." Why is it an either or? Why can't you do both? What if you had the work ethic of Steve Jobs and you worked as smart as you possibly could? Imagine what you could achieve.
Strive to work smart, add the "hard" part as you see fit. Not the other way around: working hard but dumb won't leave you time to find smarter ways.
I disagree. Working hard but dumb gets you in the habit of working hard. Now all you have to do is figure out smarter ways of working, which you will have time to figure out because you're a hard worker! That's a much better approach than being lazy and working smart. It's much, much harder to transition from being lazy to being industrious than it is to transition from working dumb to working smart.
And, as a matter of fact, one does not actually know how smart one is being without already having been willing to work hard. It takes work to make real confirmations of what we think we know, and if we are not willing to put in any work, what is going to push us over the obstacles which must be cleared in order to be free from comfortable cognitive traps such as groupthink? Seen in that light, it would be very silly for someone to disagree that working hard is important because it's very literally necessary in order to be able to have the result of being smart.

It's easy for the ignorant to ignore but when they say "lazy" they generally mean something closer to "don't want to know" something or "not courageous enough to ask" because it actually takes more work and is thus harder to change for the better through learning things in actuality than it is not to change for the better. As if they desire it to be true that they can succeed by only having to use their brain, it may be a form of greed.

Hence the title "Working Hard to be Lazy"...

Here's a basic programming example say you're writing some front end javascript to make a call to another site's api... if you have to do it once, you probably will set the headers, and make the call right? Well if you have to do it three or more times, it pays to be lazy and write some sort of function to wrap the fetch call and automatically set the headers for you each time.

This is the laziness that I'm advocating. It's not about people that don't put effort in, it's about maximizing efficiency and taking processes approach. In many cases truly lazy people will work twice as hard now to avoid work in the future.

I know lazy developers. They would just copy and paste the api call three times. And if the api call really only needs to happen three times they might be lauded for taking a pragmatic approach rather than over engineering.
https://en.wikipedia.org/wiki/Rule_of_three_(computer_progra...

Totally agree that if you are only doing something exactly three times, probably not worth it. That being said when was the last time you were absolutely sure the requirements won’t change? Only the Sith deal in absolutes.

Has anybody else noticed that "Only Sith deal in absolutes" is an absolute? Genuinely curious if it's just so obvious that it's never talked about, or if people just don't stop to think abouy it...

(I mean, it's a pretty good piece of advice... we just never talk about the irony)

> Has anybody else noticed that "Only Sith deal in absolutes" is an absolute? Genuinely curious if it's just so obvious that it's never talked about, or if people just don't stop to think abouy it...

I think you're just not usually around the people who talk about it. Here are some example image macros.

http://img.memecdn.com/only-sith-deals-an-absolutes_fb_51269...

https://img.memecdn.com/who-amp-039-s-really-on-the-dark-sid...

https://i.pinimg.com/originals/d9/32/8c/d9328c625f6f47e8d8a9...

https://pics.me.me/only-a-sith-deals-in-absolutes-that-itsel...

https://pics.onsizzle.com/whats-wrong-obi-wan-kenobi-tells-a...

Your example isn't laziness. I'm going to write a script (postman, bash, or another language) so that my progress is better documented than my bash history and I can easily come back to the task later when it needs repeating or derivative work. That's efficiency, not laziness. I can get more work done. A lazy person would use their efficiently acquired extra time to browse dank meme pages instead of additional work, but doing your due diligence in implementing basic efficiency in your work flow isn't laziness.
I love even the website is done in the most lazy way lol.

Great site!

There's a fine line between lazy and efficient. That is to accomplish the most with the leaat amount of effort.
Although a fun activity, do not set high expectations out of personal automation. I think the quoted XKCD [1] (also [2]) strip illustrates the glory and peril of personal automation enough.

Automation makes most sense in the true context where it belongs, "business." Automating a complicated e-mail marketing process with targeting, statistics and all makes sense because you need tens of thousands of instances of that process to be executed to create business value.

Except for rare idiosyncratic use cases, spending time in personal automation is more of a hobbyist and educational activity. Further, if the use case is not "that" rare, there is almost always "an app for that" anyway. Therefore, have no high expectations out of that.

With that disclaimer in mind, if you are into it, check out the open-source project Huginn [3] that can "Create agents that monitor and act on your behalf." for personal automation. Lastly, the industry standard of cloud API integration currently might be Zapier [4], which has more integrations, (business) battle-tested features compared to end-user oriented IFTTT.

----

1: https://xkcd.com/1319/

2: https://xkcd.com/1205/

3: https://github.com/huginn/huginn

4: https://zapier.com

When you indent-quote the postscript links, HN’s parser skips turning them into links. This makes it hard to visit them! Copy-paste is pretty unpleasant on mobile and I can’t imagine how crummy it is in a screen reader…
The comic strip was tough to swallow for me, having spent the last few months automating configuration of my Windows workstation setup I use for 3D/VR. I was doing freelance jobs and had my workstation collapse a few times during aggressive deadline sprints so I figured I would automate the rebuild so that reinstalling the OS becomes more of a Plan A than a Plan B.

Why am I posting this here? I am honestly on the fence about whether this has been a good use of my time. It took longer than expected and I had to use Powershell for some of it, which was just dreadful. It was ‘for business’ but I am still not sure it was a great call. Has anyone else out there found themselves automating something like this? Was it worth it?

Yes, took a week rolling out a new VM system that has no complication of Windows. This way a single use fleet of build nodes.

Main issues were related to RAM amount. It is rock solid since, remaining issues are caused by ancient software running on it which cannot be bumped without reinstalling the server.

The management and ease of deployment made it totally worth it and the system is much simpler than running a "real cluster" like Kubrenetes or especially a Docker setup. Original was a chroot that got messed up on OS updates.

RAM is a critical necessity for offline 3D rendering. I have 256 GB of it in my workstation. I very rarely need that, but it’s not just a speed issue. Rendering particle physics sims requires the whole sim to be in memory. So, it’s not an option when it is needed.

For someone who knows little about cloud computing or VMs but is handy with Python, where would I start? When trying to learn this stuff, I have always come to the conclusion that everybody who uses these technologies is using them for drastically different use cases than what I would use them for. So, I quickly conclude these solutions will involve forcing them to do something they were not designed for.

Set yourself a goal never to do that again.

Learn about modern filesystems with snapshots like ZFS, and PXE. If you don't need native performance, use a VM in preference to PXE.

This is how many cluster/cloud data centers operate.

https://en.wikipedia.org/wiki/Snapshot_(computer_storage)

https://en.wikipedia.org/wiki/ZFS

https://en.wikipedia.org/wiki/Preboot_Execution_Environment

Thanks for the response. I will certainly research these items.

Unfortunately, I do need native performance. My workstation runs a 5960X, 256 GB RAM, x4 GTX 980 Tis, a stack of SSDs and I use all of it regularly.

I’m very curious about this PXE solution. I am googling now. If anyone has pointers on methods that fit my needs, I would be gracious. Thanks!

UPDATE: Reading the Wikipedia on PXE suggests to me I would be using one of the Microsoft deployment solutions. I messed with these a littleand it felt like cutting bread with a chainsaw. It sort of worked but, on top of many known bugs, it it was designed for big deployments, prioritizing hundreds of features and admin relationships that I have no need for. Maybe I’m looking at the wrong thing, but it’s pretty hard to tell.

My general goal in my scripting solution was to automate out the Windows annoyances like UAC, bloatware, registry configs, and software installation. I learned how to do that with scripting and it seems predictable even after OS updates, and I can modify it very easily. It has a few run-all directories for quick mods, and some .jsons with config data. I made an install USP that puts a script on my desktop which installs git, pulls my setup repo down and runs it, downloading files needed from my google drive... just to give a picture of what worked. It takes about the length of a lunch break to run and I’m back in action, with exception of a few licensed softwares that I chose not to automate. I’m still interested in learning better solutions.

With a large storage space, once your installation is done, from a linux:

cat /dev/sde3 > /storage/windows-vr-installation.bin

Then when the install dies for some reason, restore it with:

cat /storage/windows-vr-installation.bin > /dev/sde3

You will say it is inefficient. Maybe. On an optane 900, the burst write speed will be decent enough. Keeping .bin images that are a few Tb is not really a problem with modern setup (zfs, raid, etc.)

I know there are commercial solutions doing that, but I wouldn't bother much with that. A simple free software setup will end up being more efficient if you know some basics.

If I were you, I really wouldn't bother more than that with automation for reinstalls. You are not deploying to N identical devices (in which case the above trick may still work by having sufficiently similar workstations, and a special licensing scheme - I often buy a few similar laptops for the same reason).

Regarding native performance, since being able to reconfigure windows quickly seems very important, if I were you I would do a GPU passthrough. KVM on computers with VT-d etc offers near native performance. That's what gamers do, and I trust them for their insane attention to fps performance :-)

It may take some time for the initial tweaking (recompiling kernels, selecting some hardware etc) but it very possible, and also very stable. And it is more and more common.

(disclamer: I sell such solutions, and do various weird things for my clients -- including supporting Wine when their need for a very stable solution is greater than the costs of the time I will bill them + the specific hardware I will have them buy to guarantee the speed of the results)

Thanks the response!

It makes sense. It sounds like a similar result operationally to using something like Macrium for a master image backup. This is something I wanted to prevent because modifying that master image backup on a regular basis is such a task. With my scripting solution, it's just editing a few json files.

My working environment is constantly changing, especially these days. My preferences also change as I optimize my workflows. My thoughts were to use the approach of For each change in implementation, make a change in code.

The other important thing, to me, is that I am free to install any wacky software I may need to try without worrying what it's doing to my system. Something like intermittent backups will lead to accumulation of garbage files when doing this. And if I choose to adopt the software, I add it to my setup package.

How do I modify the VM on a regular basis?

I trust the input but maybe my understanding is limited by lack of context. I wish I could find a decent training source on this.

If your environment is changing every few day, just do a snapshot when you think the new environment is better. Keep a few snapshots to be able to go back to a previous image - like after installing some wacky software. When you overwrite the image, it will revert to the previous state, that's guaranteed :-)

I also lack the context to recommend you a better solution. I do not like adding complexity unless it is needed. Hard drives are cheap. It may not worth the hassle to do something more complicated.

Honestly, if the above is sufficient, don't even bother with a VM at first. Just reboot to Linux when you need to go back to a given image. It will take a few minutes, half an hour top, and you're good to go.

A VM makes sense if you are short on space for the snapshot AND you would benefit from it -- like if you are doing half your work in Linux anyway, or if you have some specific security constraints. It could also be because you can't even tolerate the minutes it take to restore an image.

Setting a VM with GPU passthrough/eGPU/kvm/Windows hosts/etc. is very tricky, especially when performance matters. I can't point you to a training source because it depends so much on the situation -- and it's evolving quickly too.

If you want training or a dedicated solution, I offer results oriented consulting services. Let me know your email and we can discuss a solution more tailored to your specific situation - I will recommend a specific setup, get it running for you, and train you on how to use and change it, so that you don't end up needing me after that.

Yeah that GPU passthrough sounds pretty awesome.

As for the environment reload solution, your solution sounds like the best one for most people, and probably the best one for me in practice, to be honest. But there is some value the scripted solution serves which snapshots cannot.

Updates to the snapshots require some planning. If a wacky software is tried and uninstalled, it is no longer safe to run updates to the snapshot until implementing another refresh. My scripting solution is just a code mod and git push and I can freely test wacky software and update my configuration in any order I like.

I guess you could say image snapshots have an accumulation cost. A refresh is not a refresh to new but a refresh to old on a certain date.

When I have a failure, I want to isolate issues as soon as possible. Determining whether it's a hardware issue or software issue can cost a lot of time and distraction. The fastest and surest way I know to do this is with an OS reinstall from the distributed source (Original Windows ISO). Image snapshots only theoretically isolate from system changes made since original OS install, and that level of isolation is getting harder to confirm as software deliveries get more common. These probably qualify as edge cases, but edge cases are most of what this is about. Edge cases are notorious for undermining production deadlines in an environment not prepared for them. A funny thing about that is they are also one of the hardest for people to admit or understand. Telling a non-technical client the job won't be done in time because of a software bug carries a burden of understanding hard to put into words. Of course, studios are prepared. But freelancers are generally not.

A particular pain point with GPU rendering has been depending depending on driver/hardware/OS compatibility which has different needs than the priorities of gamers. That is changing, thankfully. But, the value of isolating software issues from the hardware is big to me.

I juggle hard drives like nobody's business as it is, so I'm not opposed to that. And while it's nice, source control might be overkill for something I might not even need for months on end.

The GPU passthrough is awesome.

For the edge cases you describe, including isolating drivers and explaining the precise cause, an itemized diff would make more sense.

I don't know if rsync would work on ntfs, but I would try something like that

Please don't treat UAC as an 'annoyance' or convey to anyone the truly insane idea it should be disabled. UAC should for all intents and purposes just be called 'basic security'. Every other OS does what UAC does, which is creating a basic elevation/isolation for system management functions. It's the equivalent of why a Linux box refuses to do certain things unless you are root.

You should never, ever shut off UAC.

I'm not looking for a fight here, but I plead innocent to your accusations. I would not suggest I am any authority on the subject; quite the contrary. I have found it annoying, but I won't take responsibility for that. If I am ignorant, it's not due to a lack of interest or effort. I have tried researching it on the web and found:

1) No justification for keeping it enabled on my workstation.

2) A myriad of don't ask why beratements like yours which cause one to wonder if the author is more interested in belittling others or helping them.

I never assumed the warnings were wrong, but they were not helpful. The impositions of UAC on my workstation were severe and I never found an explanation that addressed why I need it.

If I obeyed the warnings of every computer safety expert, I would not even have a workstation to begin with. In life, one must choose their battles. I'm doing my best over here.

At risk of being attacked and down-voted again ,I'll ask a few questions if you don't mind:

In my experience using Linux, I could just type 'sudo' and be root. As far as I can tell, this does not protect as much as impose a level of mindfulness. What am I missing?

If Windows UAC serves an equivalent purpose, why are the consequences so much more severe?

Linux was fundamentally well built for one. There's a lot of things that should be protected from even without UAC that aren't. With UAC disabled it is trivially easy for any number of system exploits that are easily preventable. I suspect many 'don't ask why' responses at this point come from the fact that we can probably no longer wrap our heads around all the possible ways you can be screwed with UAC disabled. (If anything, I am mostly still surprised Microsoft permits you to shut it off.)

In Linux you don't just type sudo, you also enter your password. In a best case scenario, you should have a different account for administrative actions as your normal use, but for both Linux and Windows the elevation requirement ensures that a program meant to run on your computer can not silently and suddenly make changes to your computer.

If your computer is not connected to the Internet, or you know the contents of every single block of code on every application your computer runs, this is not a problem, but for most people, this is the bedrock of basic security: That if something wants to make a system level change to your computer you must explicitly permit it to do so.

Thanks for the explanations. I don’t expect it is an easy explanation, but I will propose the lack of one is the reason so many thousands of Windows machines have UAC disabled. And, brunt abstract fear is not going to change that.

In Windows, UAC has 2 effects. One, some softwares cannot be opened or installed. Two, installing software requires an extra permissions window be clicked on. No password is involved. I don’t mind the second at all. The first however is awful. Numerous softwares I depend on are sacrificed if I enable UAC. These are softwares from very reputable companies which I have used for many years and depended on for many projects.

Linux is not an option (hopefully is obvious why) and Windows with UAC isn’t either. So, I’m using Windows with UAC disabled just like probably a million other people. This is a very pervasive issue.

So, one whose career depends on disabled UAC is left to wonder “what is the risk?” And they are left with no useful answer to that question other than ‘too many to wrap heads around’ what can we expect them to do? It feels like a mortal threat at this point. The world is full of disease but you still go to the grocery store because you need food. Some things are out of my control and effectively using my computer for work with UAC is one of them.

I think your spellbound reaction to people disabling UAC lacks some consideration for their situation. Is it a problem? I’m certain it is. But, different people have different goals and priorities in their life. If yours is to enable UAC on other’s computers, the path to accomplishing that will begin with understanding why it is disabled. It sounds like a noble and important cause that I would be happy to help with, because circumstantial claims assert UAC is helpful to protect (me? my computer?) and that sounds good.

My question would be... what programs do you have that don't work with UAC? To give you some idea, I work in an environment with public safety software written in the Windows XP era. While occasionally a burden to troubleshoot, once you figure out which settings work... pretty much everything works fine with UAC. You just may need to use compatibility mode and/or grant permissions to certain folders on your system.
Automating something usually involves a risk from predicting the future: the cost of automation is amortized over the number of repetitions, but you don't always repeat everything.

It's generally cheaper to automate something if you can perform it on a command line. With command history, it's easy enough to copy the commands and turn them into a script with appropriate parameterization.

It doesn't help you a great deal with Windows if you've been doing everything with GUIs. But Powershell itself is an investment that can pay off. If you can automate more everyday tasks, the pain of learning is amortized away.

I generally stick with the Unix-like shell that Cygwin gives me, and use the same commands and idioms on as I do on Linux and on Mac, on the very few occasions I use a Mac.

My setup script starts by making a backup of the registry, then configuring Python. I use Python for most of the rest and Powershell only where necessary. Contrary to what my comment may suggest, I am actually a software minimalist. A large part of my setup involves removing clutter from the desktop environment. I have avoided cygwin partially just so I'm not scared of native windows command line, which I find not quite as bad as Powershell to work with, but more limited in interacting with the OS of course. I am familiar with basic linux Bash already and that's what I'm comparing all of this to. Maybe now is a good time to adopt cygwin because, well, better late than never.
Getting Cygwin set up right takes a little bit of work - it's much easier if you're familiar with configuring a Linux shell and terminal to taste. Out of the box, it's a bit rough; kind of similar to how Emacs is a bit rough.

I am scared of the Windows command line - not because it's scary, but because it's so limited. I feel almost helpless, all my tools are missing, it's just so awful.

In practice, the reason I use Windows is mostly games, but it's rare I fire them up these days - I have to upgrade and/or re-verify my Steam account almost every time I start the client. Outside of that the browser and the terminal are almost all I use, and I can have them just as easily elsewhere.

My point being my experience may not translate to your environment quite as well.

Registry in Cygwin is mounted under /proc/registry:

    ~$ ls -l /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows
    total 0
    dr-xr-x--- 72 SYSTEM  SYSTEM 0 Dec 16 23:57  CurrentVersion
    dr-xr-x---  2 SYSTEM  SYSTEM 0 Dec 13 01:58  DWM
    dr-xr-x---  4 SYSTEM  SYSTEM 0 Dec 13 01:48  PrivacySettingsBeforeCreatorsUpdate
    dr-xr-x---  6 SYSTEM  SYSTEM 0 Dec 13 01:52  Shell
    dr-xr-x---  4 SYSTEM  SYSTEM 0 Dec 13 01:47  TabletPC
    dr-xr-x---  3 SYSTEM  SYSTEM 0 Dec 13 01:47 'Windows Error Reporting'
    dr-xr-----  3 barrkel None   0 Dec 13 01:58  Winlogon
It's read-only however. Cygwin `regtool` lets you poke values in.
(comment deleted)
A lot of these personal automation things(and helpful scripts and aliases) are not so much a timesaver to me but a way to make the time I interact with a computer more pleasant. Like steel toed boots vs. stubbing your toe all the time. Yeah stubbing your toe is unpleasant but ultimately un harmful and does not last long. I'd still prefer to have the boots.

The other aspect of it is that it may help you keep long trains of thought or keep you in the zone longer if there are fewer interruptions.

> Yeah stubbing your toe is unpleasant but ultimately un harmful and does not last long.

As someone with ingrown toenails that has ended up at the podiatrist when I stubbed a toe badly enough, I respectfully disagree with your analogy. :)

I used to think that way about how one automation, but I kind of got into it, and now, I realize how fastidious it was to turn off all the lights and adjust the thermostat when I leave home. Or get out of bed and adjust the thermostat or back up to turn off that light in the kitchen.

It doesn't likely save me tons of time, but I feel like it lowers my stress levels by letting me just sit and relax or work or read for longer periods of time uninterrupted.

I never understood IFTTT.

Every person I asked used it to sync some stuff from A to B, never heard something interesting...

Same story, despite all the praise. It just never had sufficient capabilities to actually do things I wanted to automate. Every time I needed something, when I remember about IFTTT and decide to give them a try, it ends up with "nah, they're as useless as ever". Even webhook channels the article recommends are limited, so e.g. outputs for many APIs are just not possible (for example, no way to pass an auth token in headers, let alone refresh it).

On the other hand, anacron + python + requests + lxml (or beautifulsoup when they've improved) + other nice libraries have never failed me.

It's a gimmick, and gimped when it comes to what you really want to do. E.g. each integration "thing" is superficial and you can't script most of it. You're locked into their crappy UI and "endpoint" data.

You're better off renting a entire VPS and creating code that polls all your data sources and create your own task pipeline.

I mostly use the triggers with the webhook action and call one of my webtasks (webtask.io). The free tier of 1 req/sec is enough for me
I use Zapier for this since you can inject code via Python between tasks if needed. Also filters and such. IFTTT is great for consumer stuff but not having multisteps has been annoying.
Maybe I just tried it at the wrong time, but several years ago I tried IFTTT for a few weeks. Events frequently fired late or not at all. It seemed useless in a situation where you needed some confidence in the timeliness or consistency of events.

Does anyone use IFTTT heavily and have a better experience? Are you able to rely on it?

I moved to a self-hosted Huginn instance instead for the very same reasons... (and the fact that it doesn't allow for any granular control)
For me the hard part is finding what to automate. Automation is not only about saving time but taking away the annoying stuff as well making your efforts more efficient. There is no silly graph to predict how valuable an automation will be. Python started as a simple bash like scripting language and nowadays it grown to epic proportions. Automation needs time to mature. People tend to overestimate the value of their time vs the value of automation. Even the language we speak took thousands of years to develop, talking about huge waste of time. But hey someone has to push human progress forward.
I'm still unable to use cron properly. i'm too lo-tech for this
Significant portion of my days (maybe 30%) is doing repetitive things I do every day. So really thinking about how to improve, automate, or save a few minutes during the morning or evening routine would pay off greatly.

When I think of personal automation api. It would be to help me with my routines

1. Shower 2. Shave 3. Brush teeth. 4. Check email 5. Plan my day 4. Make breakfast 5. Exercise 6. Sleep

Any of the above could be optimized to be excellent.

For example playing my favorite podcast automatically while I go to the bathroom would be nice. But knowing/using the best shampoo, soap, or toothpaste is also of great value. Same with what breakfast to prepare/eat. Or the gym/workout routine to follow. Technology might help a little, but some active thinking about what and how to optimize is needed.

Right click -> Sort Room/Desk/Bookshelf/Bathroom is the feature I want for life.