
Learning to code vs. learning to automate - sharacane
https://daedtech.com/dont-learn-to-code-learn-to-automate/
======
rurcliped
The problem often isn't ability to automate. It's that the workers closest to
the problem have an overwhelming disincentive to automate.

Suppose I have a low-level job in Peloton operations. Our Phalange Team must
ensure that, before a bike's in-home delivery date is confirmed, the delivery
technician has placed an internal order for a left phalange. Each of us spends
all day navigating between the Sales app and the Internal Order app.

My daughter tells me how I can automate this. But I never do it. Why?

1\. Even if I were 100% sure the coding would be finished in one day, the
daily metrics for the Phalange Team would still signal a problem.

2\. It introduces uncertainty. I can tell my manager exactly how long the
manual process takes, but I can't tell her how long it takes to write code.

3\. It trades off the mean for the variance. Suppose it handles 99.44% of the
cases but there's a rare bug where it never sends a delivery date if the
Internal Order backend has a timeout error. On average, scheduling is 90%
faster but some customers aren't scheduled at all. Not an acceptable outcome.

4\. If I successfully automate it, all of my coworkers lose their jobs.

~~~
duxup
I worked at a place where coding was not my job (it was technical support) but
I wrote some scripts that automated some stuff. It was handy and everyone
liked it.

Then someone in the process changed things that the scripts did not
understand.

Management came running to me upset that this thing I automated didn't work.
Being technical support managers most didn't understand (not all but most)
that when you change things you need to tell people before the day of and they
were quite upset with me.

I had saved them enormous time over several years ... but the result was I
really just kept doing the same job I always was, not rewarded, and then the
day they changed their processes without telling anyone they got upset with
me.

My incentive to automate anything for them ever again was gone.

~~~
scrapcode
I have had similar experiences. I've taken very tedious tasks that involved a
lot of monotonous paperwork and automated them and that turns everyone's
problems into my problem when they don't work the way the user thinks they
should. I've also had people use the fact that my tool, which just automates a
process that everyone had to do manually in the past anyways, use me and my
tool not functioning correctly for them as an excuse to not having the work
done on time.

~~~
lifeisstillgood
> that turns everyone's problems into my problem

I see software as a new form of literacy, and this argument is, for me, a
clincher.

Imagine a world where, you were the reader/writer in the company. And if there
was a problem with the letters sent from head office, then because you are the
reader/writer guy who does all the writing the problems are all yours

Yes, that is correct, as the only reader writer they are your problems. but
the wider problem is why are you the only one?

~~~
sean2
True, but software is only one such department that this reasoning works for.
Legal, Public Relations, Accounting, HR, facilities, etc, are examples of
other departments that need specialists for fields that everyone really ought
to get some literacy in.

If you're head of human resources at your company, any human resource problem
the company has, is your problem, because you're the human resources guy.

To be fair, most of those departments demand certification to participate in,
but if everyone was able to make spot fixes to the companies software, then
I'd start demanding that only certified software people be allowed to touch
our git repo.

------
nickjj
If you're on Windows, Auto HotKey is the ultimate tool for automating day to
day little things that are hyper specific for your daily work flow. For
everything else there's Bash / some scripting language.

You can end up with really big quality of life improvements from having a
bunch of little things whipped up to solve your problems.

~~~
freetonik
Can Auto HotKey recognize images and click on them? For example, a specific
button in an app or a web page?

This is one of the features that keeps me with Keyboards maestro, which keeps
me from switching away from macOS.

~~~
nickjj
I'm not an AHK wizard but to my understanding, the answer is "yes" to almost
every "but can it do...?" questions.

In your case, from my limited understanding it would be no problem to identify
a specific button in an app and then interact with it because you would be
hooking into the app's low level window title / class / handles.

AHK comes with a "spy" tool where you can just move your mouse around and it
gives you low level details about every window, and then you can write AHK
scripts that interact with those things.

The script would look something like:

    
    
        ControlClick, OK, "My Cool App"
    

That would click the OK button in a window that has a title of "My Cool App".
If you Google around for "auto hotkey, click button in app" you'll find a ton
of examples.

~~~
ibly31
I have limited experience with Keyboard Maestro but I do have some with
AppleScript. It lets you do as you described, get windows, titles, UI
elements. However this only works on native apps, you cant, for example, click
a button on a webpage with a CSS selector or by scanning pixels of the window,
ad far as I know. Can AHK do that? That would be super useful

~~~
nickjj
While I've never done it, AHK seems to have an API for being able to interact
with DOM elements.

Check the marked answer here:
[https://stackoverflow.com/questions/49516638/ahk-web-
element...](https://stackoverflow.com/questions/49516638/ahk-web-element-
button-press)

The above answer shows both navigating to a new page that isn't open yet or
interacting with an already loaded page based on the title of the tab.

~~~
vasili111
You can use Selenium with AHK.
[https://www.autohotkey.com/boards/viewtopic.php?t=32323](https://www.autohotkey.com/boards/viewtopic.php?t=32323)

------
vasili111
I totally agree that learning "just coding" per se should not be a goal. It
should also help to solve some of your real problems and automation is one of
the topic that is very likely you need to solve. When you do something that
you like and at the same time need it pays off twice. In fact I got most of my
programming skills by implementing simple automation task that I needed. I
highly recommend AutoHotkey (
[https://www.autohotkey.com/](https://www.autohotkey.com/) ) if you are
interested in automation. It is programming language with great automation
capabilities and wonderful helpful community (last one is very important if
you are new to programming).

~~~
Noumenon72
I just changed jobs from developing on Windows to developing on a Linux
virtual machine in Windows. I miss AutoHotkey so much. There are so many
things that the command line can't do -- GUI commands, window switchers, and
so on.

It's a great example of how "learn to automate" can beat "learn to code". When
you know how to do something by hand, learning enough about a program's API to
do the same thing is a separate learning curve and may not be possible.
Telling AutoHotkey "Do it like I do by hand, just faster" always works.

~~~
yjftsjthsd-h
I thought there was an AHK clone for Linux? Also, I've had good luck with
xdotool.

~~~
earenndil
Autokey.

------
monkeydust
Just brought print version of
[https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)
(2nd edition just released) - thought it would be a good way to learn some
code in a practical interesting setting of automation

~~~
Zhyl
This is a really good book.

Aside from being a good tutorial for beginners, what makes it unique is the
scope of what the reader is expected to learn to produce: small scripts that
will greatly benefit them in their daily life. It demonstrated the power of
computing, gives the reader agency and it is entirely possible to cover enough
to be actually useful within one book.

I've believed for a while that scripting should be the emphasis for most
primary and secondary education computing courses, and companies should even
invest in training witha wider remit than they currently do. There's been many
times when knowing some VBA or a small amount of Python would have saved hours
or even days worth of effort in repetitive tasks.

------
sigmaprimus
When I was younger I dreamed up an idea of a shock suit, basically it would
have been a set of long underwear top and bottom with electrodes that would
act like a TENS machine to gently(or not so gently) nudge the wearers into
performing a repetitive task with machine accuracy. I figured this would be
great for an assembly line and could provide a cheaper alternative to a very
costly robot while still providing employment. I never pursued the idea after
telling my Dad about it who told me it was an immoral idea.

Personally I would still be willing to wear a suit like that if the pay was
good enough. Put on the suit, turn off my mind and put in a days work.

~~~
TomMarius
I wonder why is it immoral. I understand that mind control would be, but
voluntary external muscle control?

~~~
mmierz
It’s not external muscle control, that’s not what a TENS unit does. OP is
describing using painful electric shocks to punish a worker for mistakes or
for going off-task, i.e. brutalize workers into performing with machine like
efficiency.

~~~
MPetitt
I think he was proposing using the TENS for muscle control similarly to
[https://m.youtube.com/watch?v=5QYpD428hAQ](https://m.youtube.com/watch?v=5QYpD428hAQ)

~~~
jotm
Oh, OK. I also thought it was electroshock motivation.

You still can't just "turn off" your mind, most likely. You'll just be trapped
there thinking

~~~
nitrogen
I have actually met people who vehemently insist that when they "space out"
they aren't deep in thought, they are literally off -- not thinking at all.

It's pretty astonishing how much variation there is in people's inner minds.
Some can imagine spatial relationships in great detail. Some can't even
imagine a simple stick figure, but can instead remember long lists of
information.

------
Noumenon72
> Throughout human history, there’s been a sort of “pain is gain” approach to
> the repetitive. There was value in putting your head down, getting into a
> rhythm, and working hard at menial tasks.

I was surprised when my sister told me, "I don't think everyone has that
instinct to make things better all the time". That's like my fundamental
drive! But she doesn't, and I guess I see why. Things didn't get better for
hundreds of generations at a time while we were evolving, so inventing is not
an instinct.

~~~
swozey
Are you a perfectionist?

~~~
Noumenon72
Sure, but I'm not surprised when people don't want to polish things the way I
do. I'm surprised when they let things go to waste or spend their time doing
boring and pointless things. Like, even Genghis Khan probably spent some time
thinking about ways to take cities without having to fight so much, right?

------
cookie_monsta
I have automated some things both at work and at home. Sometimes the "time
saved doing the thing vs time spent setting it up" calculation looks very
shaky, but I persist because when I'm puzzling out how to automate something
I'm learning and adding to my skillset that may be useful for the next thing
(and is therefore inherently interesting, may lead to greater efficiencies,
etc). If I'm just spinning my wheels clicking arbitrary buttons I'm not really
learning anything (and I guess in stark economic terms, not adding value to
myself as an employee).

DISCLAIMER: I'm not in such a high-paid position that spending an hour or two
down a rabbit hole feels like I'm wasting serious time/money.

~~~
wiseleo
As a field service engineer, I would spend 2-4 hours on a new problem and the
next time I’ll encounter it I will solve it instantly.

I identified several common errors made by other people. They were very
confusing the first time, but now I can solve them at a glance.

------
save_ferris
Any recommendations on a good MacOS GUI automation tool that isnt Automator?
Seems like the windows automation ecosystem has several options, but I’m
struggling to find a good Mac solution that’s capable of automating desktop
apps with fine-grained workflows

~~~
WaltPurvis
Keyboard Maestro is my go-to tool. It's incredibly powerful and I've automated
so many things in so many applications that I really don't even know if I
could use a computer without it anymore.
[https://www.keyboardmaestro.com/main/](https://www.keyboardmaestro.com/main/)

~~~
bobbylarrybobby
Another vote for KBM

------
aj7
The whole nature of coding is that is essentially motivationally self-taught.
As for automation- that’s what better coders do. Perhaps this is being
confused with “Find a good problem that motivates you, and fight a knock-down,
drag-out battle to solve it.”

~~~
ethbro
Programmers drastically underestimate the amount of poor abstractions we've
created.

There's no reason someone should have to learn object oriented programming in
order to be able to do 4 actions across 2 apps.

Fundamentally, that's what this article was getting at for me.

Should we (a) encourage more people to learn to code (in existing languages /
frameworks), so that they might use coding to automate their own work, _or_
(b) identify simplified systems that require less knowledge, but are
sufficient for the automation tasks being asked of them.

I love learning about multi-level cache heirarchies and performance effects
thereof.

But I would rather my company's accountants instead know the accounting-
equivalent of that bit of trivia, and yet gain the benefit of being able to
write simple automation on their computers.

~~~
solinent
To put what you've said more succinctly, even though reductionism is valid for
a computer, there is no reason for us to reduce everyone to transistors.

My mother is an accountant for example, and she could easily pick up SQL or a
programming language, but the issue with teaching her one is that it doesn't
solve any of her immediate problems. Excel already automates most of that work
away, so for her that's all she needs.

Your company's accountants can probably write excel statements that are
equivalent to complex SQL statements, so I wouldn't underestimate them :)

~~~
dsjimi
Excel is the world's most popular IDE ;)

~~~
ethbro
One of my weed out questions in programming interviews is to ask their opinion
on Excel. Specifically, strengths and weaknesses.

If they don't come up with at least one strength or spend the whole answer
bashing it, that's an instant reject for any position touching UX.

~~~
perl4ever
I could bash it in ways you probably haven't heard before...

The clashing paradigms of the Data Model and "vanilla" Excel have really been
aggravating me recently.

I feel like Excel is underutilized for cultural reasons and it seems like it
can do anything I was previously asked to use Qlikview for.

But the fundamental reason I am using Excel these days is because I don't
_want_ to be subjected to a programming interview, ever again.

I got my current job without any particular technical requirements, and the
interview was entirely about how I manage my time and multitask.

------
tyingq
Somewhat related, tools like Quickbase, Google Appmaker, Knack, Zoho Creator
all work pretty well with non tech folks. Especially in areas like Finance,
where they are already familiar with pushing Excel pretty hard. Gets rid of a
lot of manual emailing spreadsheets around and tedious data collection.

------
AndrewKemendo
I really like the breakdown sequence of "Automation in real life" because it
nearly perfectly describes the process I go through to evaluate if something
is worth trying to build.

Introducing the "would someone pay for this" is a key step because it tells me
if it's worth pursuing even if I didn't need it myself. The answer is almost
always no.

Further, the majority of these small automations increasingly look like they
are feature improvements on existing products. This example is also perfect
because it was a feature within Powerpoint that would probably take the
Microsoft Office team a day to prototype [1] and a few months to build into
the next update with backward compatibility etc...

So to me the value at the outset isn't in the code, which is fairly trivial,
but the value is in knowing what to code and how to integrate the new
automation.

Here's where this breaks down though...you can't evaluate what you should be
building and how it would be built, if you have no idea how to build
something. So it is important to learn to code, if only to understand how hard
it is to do different things. That holds true for everything though, from
making a meal to fixing a carburetor or doing braids. You need experience
doing things before you can know how to estimate whether they are worth doing
in a new context.

[1]Something like...

#Compute centroid of rectangle:

>self = (coord[0]+(coord[2]/2), coord[1]+(coord[3]/2))

#Compute centroid of background rectangle

>other = same formula

>#Align

>def add(self, other): self.x = self.x + other.x self.y = self.y + other.y

------
based2
[https://www.autoitscript.com/site/](https://www.autoitscript.com/site/)

~~~
ethbro
That's still coding.

The intent here is to build on a better, Excel-user-accessible set of
abstractions.

Which generally means:

1) Graphical IDE

2) Automation activities which map directly to their existing manual
activities

3) High-level support for highly-used application-specific activities

------
ethbro
Obligatory RPA: GUI-based automation to mimic user interactions, leveraging
existing application and web GUIs as an API to automate against.

Not something I'd recommend to backend developers / data crews. But it's
pretty awesome stuff for non-developer, front-line business users.

What is RPA? - [https://www.uipath.com/rpa/robotic-process-
automation](https://www.uipath.com/rpa/robotic-process-automation)

UiPath free, "unlimited time for non commercial use" trial -
[https://www.uipath.com/product/studio](https://www.uipath.com/product/studio)
(you're looking for "Community Edition")

Disclaimer: I have no financial interest in UiPath as a product, past running
a business user-focused automation enablement team that is currently using it.
I've been in the space about a decade, and just happen to think they do it
"better" than anyone else currently (YMMV. Pegasystems' RPA offering is also
great, but they don't talk to non-Fortune 500s or advertise it)

~~~
carapace
So, this looks to me like a marketing layer ("Robots!") over a macro-recorder
on steroids.

I'm not complaining, I bet you can make a lot of money doing this, and it's
arguably helpful to the clients, but am I missing something?

Like, there are no actual robots involved, yeah?

~~~
ethbro
"Macro-recorder on steroids" is a surprisingly tricky thing to do well.

Think supporting 30+ years of different UI frameworks, over process variants
that may be dissimilar (e.g. when code = 5, the "OK" button is actually a
different class).

All while hiding enough of the underlying complexity that a business user
ignorant of all the above can write 95%+ of the automation.

So yes, I'd say it's one of those things that seems easy, but is difficult to
actually get working for compatibility reasons.

There are no physical robots involved. ;)

------
pcmaffey
Automation is the how, but not the why. We automate things that have become
trivial, so that we can do something more meaningful.

It’s important to understand the functional value of programming (ie.
automation), but what really inspires learning is the underlying purpose. What
are we achieving through automation? What have we unlocked? That process of
discovery is what’s most exciting, to me at least, about coding. It’s what I
seek to learn.

------
hjorthjort
I fully agree, but I still think it's good that people learn how to code. Why?
Because it's good to know a little bit -- just a wee little bit -- about how
computers work. And while you could just get a good description from a book,
nothing beats hands-on experience, which is easy (and mostly fun, initially)
to get when it comes to coding.

I think of it as learning a little bit of math or science -- good for your
general understanding of the world, and how the thing that is your interface
to most of the world operates, it's basic functions and limitations. It's even
a bit like learning civics or economics -- as code makes more important
decisions every day, a naive yet fundamental understanding of omgow these
things work among the general population helps a lot. Everyone should learn
how to code a little bit as part of a general education. If you want to do it
professionally, then yes, learning problem solving and automation is the way
to go.

And it would be nice if people practiced a tiny bit of debugging, so we could
see fewer horror tales from tech support.

------
DonHopkins
What's the modern-day equivalent of DeBabelizer?

[https://en.wikipedia.org/wiki/DeBabelizer](https://en.wikipedia.org/wiki/DeBabelizer)

[https://creativepro.com/debabelizer-pro-5-the-ultimate-
image...](https://creativepro.com/debabelizer-pro-5-the-ultimate-image-
translator/)

~~~
chongli
ImageMagick [1]. You can do all kinds of really cool tasks with it and a
little shell script. It’s a free software hidden gem, for sure.

[1]
[https://imagemagick.org/script/index.php](https://imagemagick.org/script/index.php)

~~~
ajot
Not willing to start a flamewar, but there is also Graphics Magick [0], a fork
that, for example, adds multi-threading.

[0] [http://www.graphicsmagick.org/](http://www.graphicsmagick.org/)

~~~
chongli
ImageMagick has multi-threading, OpenCL support, and even heterogeneous
distributed computing support.

------
rkudeshi
I haven’t seen anyone else mention it, so FYI: Keynote on macOS defaults to
exactly your preferred behavior: pasting images exactly in the middle of your
slide.

I have to use both Keynote and PowerPoint for work and this is one of those
small things I've come to appreciate.

------
vandal_at_your
For me automation was learned behavior in lockstep with my ability to solve
problems via programming. It eventually became automatic: to the point that my
own patience with manual repetition and documentation of manual processes is
minimal. This latter attitude does not do me any good in the enterprise
infotech world. Especially in heterogeneous environments or where I don't have
front to back visibility. I'd argue that while being able to automate is a
great good understanding the business constraints and making good decisions
about where you work becomes critical if you must trade toil for time.

------
chiefalchemist
The skills are:

1) Problem identification. Get the target wrong and it doesn't matter how
wonderful your code is. 2) Problem solving. 3) Creative thinking. Most code is
science, but occasionally it takes art. You have to be willing and able to be
an artist.

With these in hand, coding is a means not an ends. The obcession with code as
an ends is fool's errand.

Automation? You're gonna need these base skills as well.

Certainly, these things can be taught. But some of us are wired better than
others for this skills stack. We don't need more people who write code. We
need more problem solvers with an occasional flare for rule breaking,
creativity, etc.

------
surfsvammel
I agree. But I am still going to tell my kids to learn to code. Programming is
more than automating stuff. It’s even more than solving problems.

Programming is a process, a way of thinking about things, it is entertaining,
it’s creative, it’s beautiful in many ways, in and of itself.

Learning to program sharpens so many parts of once mind, I want everyone to
get a glimpse of that.

~~~
criddell
I'm reading Charles Petzold's book _Code_ right now and I would highly
recommend it if your kids are interested in computers. I'm about 1/3 of the
way through it and even though I'm not learning a lot, it's a great read.

Actually, I learned how Braille works and that's something I always wondered
about.

------
luord
Or maybe we should encourage users to be users and provide valuable feedback.
As in, actually asking about the possibility of new features and reporting
bugs.

It'd make engineering a bit easier without trying to encourage people who
might not really be interested into wasting their time and everyone else's.

------
Nursie
> “avoid thinking of writing code as the goal and learn to solve problems.”

Hasn't this been done to death now? Are there still developers out there whose
primary focus is writing code rathet than solving problems?

~~~
kgwxd
Every programmer that isn't given the opportunity to refute design choices or
question the domain knowledge handed down from above. There's still plenty of
programming jobs intentionally structured to be like that.

Edit: Also, this article is from June 10th... 2015.

------
ozfive
Select object, select format tab, select align, select align center/align
middle?

------
wiseleo
How to motivate someone to learn a programming language.

1\. Assign a repeatable task.

2\. Incentivize to complete higher number of tasks. This can be a flat rate
per task or flat number of tasks per day or something similar.

3\. Let them work for a while to understand the process.

4\. Now the idea to automate gradually appears in their head.

5\. First automation appears. I usually start with command line loops and
encoding strings into barcodes.

6\. GUI automation appears and the user starts running into limitations of
easy tools.

7\. User makes the decision to invest time into learning a programming
language.

8\. User automates their entire job.

Smarter companies would offer to assign her the role of an internal software
tool maker to identify processes and automate them.

Some of these toolmakers might be like me and perfectly happy to simply do a
lot less and get paid the same or more.

Other companies will make her realize she might be valued higher elsewhere.

Learning a programming language without a concrete goal to solve is not as
being able to completely automate your job.

I once identified a great opportunity as a field service engineer. The company
unknowingly offered me an incentive. After arriving on-site, I can identify
additional broken equipment that’s not in my original scope and add it to my
scope. I negotiated flat rate compensation per unit fixed rather than per
location or per hour. My marginal cost to fix additional equipment is a few
extra minutes.

The company sending me that work creates additional scope on their end after I
am finished and so we all get paid more money. The service call gets closed in
a single visit. I call that a textbook example of all incentives aligned.

So, after identifying this opportunity, I explored all bottlenecks inhibiting
me from working faster. A single additional service call per day results in
significant extra money.

Bottlenecks:

1\. Talking to dispatch to verbally relay serial numbers, shipping numbers,
and other phonetically spelled data. Solution: start transmitting data as
structured text dispatch can copy/paste. Result: most loved vendor, no more
waste of time. ;)

2\. Verify equipment is properly configured. Solution: if it can be pinged, it
will work, else redo the previous task. Result: knowing the arp and ping
commands lets me test equipment without walking to it.

3\. Verify output integrity. Solution: (currently implementing this) use a
personal IP KVM with a WiFi AP to remotely operate the on-premises server
while standing next to equipment. Motivation: running upstairs at least 30
times at one troublesome location not long ago.

4\. Repetitive entry of text strings into multiple contexts. Solution: encode
those strings, like passwords, into barcodes on my iPad and scan them while
also scanning serial numbers and such. Result: this saved a ton of time.

My first automation was to write a script to ping all devices as part of a
health check.

Now that I reached the limit of easy automation, we enter software
engineering. I am working on a tool to automatically generate my paperwork
based on OCR-ed screenshots. I am also working on a tool for the dispatch to
have better visibility into what their techs are doing.

At the same time, I have a huge incentive not to share my shortcuts with other
techs.

By the way, the next generation of our control equipment runs Linux. I was
constrained by archaic tools running on Windows, but we all know to which
extent we can automate Linux. ;)

~~~
perl4ever
"Smarter companies would offer to assign her the role of an internal software
tool maker to identify processes and automate them."

Ah, but should she take that? Isn't a job as a developer/programmer really
just a subterfuge by management to extract all the value produced by
automation and not pay for it?

------
imvetri
Learning alphabets vs learning to speak

------
jajag
To paraphrase a famous quote on regular expressions:

"Some people, when confronted with a problem, think 'I know, I'll automate.'
Now they have two problems."

~~~
yjftsjthsd-h
What would you prefer? Manual is hardly an option.

~~~
diffeomorphism
Forest, trees...

There are problems one should automate but there are many problems where
automating is not worth the effort.

[https://xkcd.com/1319/](https://xkcd.com/1319/)

[https://xkcd.com/1205/](https://xkcd.com/1205/)

~~~
yjftsjthsd-h
I'm willing to agree that some problems aren't worth automating, especially
when they have nasty or absent API surface, or when the task changes too much.
On the other hand, looking only at time spent is also a very incomplete
picture; I've written scripts for tasks that I was fine doing manually just
because it allowed me to add free sanity checks and cut down on human error.
(Story time: We had a regular process to clean up dev environment data.
Coworker ran rm on _prod_ data. We now have a script that sanity-checks the
environment parameter and does the rm commands for you.) There's also value in
speed beyond the pure time saved; as an extreme case, consider deploying a fix
for a 0-day with ansible vs by hand to hundreds of hosts.

~~~
satyrnein
This a good companion to my sibling comment. Despite what I said about other
departments, I do believe in automating all of our own (tech) stuff, basically
for the reasons above: decreased error rate on sensitive tasks, ability to
execute emergency tasks quickly, etc. But perhaps those are good targets for
the type of task that should be automated generally.

