h a l f b a k e r yYour journey of inspiration and perplexement provides a certain dark frisson.
add, search, annotate, link, view, overview, recent, by name, random
news, help, about, links, report a problem
browse anonymously,
or get an account
and write.
register,
|
|
|
In Word, Excel, Illustrator and half a dozen other
applications, I often end up doing repetitive things.
For example, in Excel, I might take a row of 8 cells and
plot them as a histogram, then modify the histogram to
look how I want it, then move it so it sits just to the
right
of those
cells. Then I do the same thing for the next row
of 8 cells, and the next...
Or in Illustrator, I might select both ends of a nearly-
horizontal, carelessly-drawn line, and make them level
so
the line is perfectly horizontal.
Or a million other things.
I suspect that, if I knew what I was doing, there would
be a
way to create a macro or something in each of these
applications. But this would be tedious, and probably
different for every application.
So, along with the "Cut", "Copy" and "Paste" and other
fairly
universal menu options, I'd like an "Et cetera" option.
The application would look out for a series of repeated
actions and, after a series of actions had been done
three or four
times in a row, it would enable the "Et cetera" menu
item.
Thereafter, selecting "Et cetera" (or Option-E or
whatever)
would apply the "Et cetera" to the next appropriate
thing.
So, in the Excel example I described, Option-E would
take the next row of data, create the
histogram, modify it, and align it to that row of data on
the page.
The software would have to be fairly smart - but then
again I don't pay Adobe £199 just to change the shape of
the cursor. The application would
have
to figure out that a series of actions were being
performed
repetitively, and intelligently select the next target for
that series of actions. It would not always get it right -
but
then a simple "undo" would leave me no worse off.
And yes, I know that many applications include a
"Redo"
option that will repeat the very last action (such as
inserting a row of cells in an Excel table), but this
generally only applies to a single, simple action. I want
something that can tell that I'm doing the same
_sequence_ of actions repeatedly, and effectively create
a
macro on the fly.
Excel has a flash fill feature that does pretty much this in a very limited way
https://i.imgur.com/EprxW31.jpg via /r/coolguides [notexactly, Jan 18 2016]
Undo the last 5 minutes
Undo_20The_20Last_205_20Minutes [theircompetitor, Jan 18 2016]
[link]
|
|
// if I knew what I was doing, there would be a way
to create a macro or something in each of these
applications. But this would be tedious, and probably
different for every application.// |
|
|
//How wide is the detection?// Tricky. |
|
|
This would be completely doable using existing predictive
typing algorithms, like the smartphone kind. Each action is
a "word" and the program
after a while says "oh you're 'typing' that again" and spews
out the desired series of "words" and executes them. |
|
|
It's not tricky to do this if you can reduce your problem entirely to a iterative pattern of key strokes. There are general-macro recording programs that will let you record a sequence of key commands, for which you would typically input the first iteration of whatever task you're doing. After that, you hit the stop button, and then press the repeat button however many times you need. |
|
|
//There are general-macro recording programs// |
|
|
I wonder how intelligent they are? For instance, in
my Excel example, the macro would have to figure
out that I want to move the histogram to line up with
the corresponding row of data on the page - that's
not a simple repetition of keystrokes. That's why I
think that each application would need its own "Et
cetera" functionality. |
|
|
Actually, once you find your way into VBA for Excel (or any
of the rest of the Office suite), then it's just a matter of
figuring out "ok, what word does Microsoft use to describe
the concept I'm thinking of?" (Ok, there's more to it than
that, but it's a much lower level of complexity - like
phonetically converting the Voynich manuscript to Linear-B) |
|
|
In Illustrator, try holding down the shift key while you draw
that horizontal line. |
|
|
+ although I think macros and a macro editor should be a must
for every serious software that has editing capabilities. |
|
|
I wonder what the Et Cetera button on Halfbakery will do. |
|
|
//it's just a matter of figuring out...// that's what
I want to avoid. I have enough figuring out to do
in the rest of my life. If I do a series of actions
which is clearly repetitive, I want the software to
be able to figure out what I'm doing - to extract
the repetitive components of my actions, and
apply them to consecutive instances. |
|
|
Everyone has been there - doing the same actions
over and over, because they're not just the simple,
single steps that the "Redo" option can cover. If I
can see that I'm doing something repetitive, the
software ought to be able to see it too. |
|
|
I don't insist that the Et cetera function be able to
handle every situation, and I don't mind if it
sometimes fails to "get" what I'm doing - as long as
it works quite a lot of the time. |
|
|
I recall Sketchup having something like this. If you extruded a couple of objects to 6.45", it would set the next object to extrude at 6.45" thereby saving you a couple of keystrokes (those keystrokes would instead be expended if you did not want to extrude to 6.45"). If you midpoint snapped a few lines, it would make the midpoint snap easier to find or a higher priority in case of overlying snaps. Etc, etc. It was quite a handy little drawing program. |
|
|
//I wonder what the Et Cetera button on Halfbakery will
do// |
|
|
Probably recreate [travbm]. |
|
|
This is a serious KI problem which Roger Schank tried to solve with scripts which gave the software a clue what to expect in standard situations. For the Etcetera function the software would have to understand the intentions and concepts of the user, like "Extruding a plane to a 3-d corpus" in Sketch-up, or like "Put a black bar over the eyes of any person in this photo" in Photoshop. I doubt that a software implementation will come anytime soon. -- Meanwhile hook your computer up to a 3rd world IT sweatshop, have your personal attendant watch what you are doing and let her take over when you become bored. Then watch her making the same mistakes like you. |
|
|
//the software would have to understand the
intentions and concepts of the
user// |
|
|
Yes, which is why it needs to be implemented on a
per-app basis (rather than,
say, some platform-based function). |
|
|
I still think it's doable, at least to an extent. In
the Excel example I gave, it
should be easy enough (after I've done 3 or 4
iterations) for the software to
realize that I'm selecting each row of 8 cells in
turn; creating a graph of a
certain type from those cells; changing the font on
that graph to a different
one; and moving the graph. The only "subtle" thing
is where I move the graph
to; but the software ought to be able to tell that
the relative positions of the
data cells and the graph end up being the same
every time I manually move the
graph, and therefore infer that I want the graphs
next to the cells. |
|
|
Yes, there will be a thousand different
circumstances in any app, and the Et
Cetera function will be a major piece of
programming, but what else am I
paying Adobe or Microsoft for? I don't think this is
significantly more difficult than, for example,
search engine software that figures out what I
want (fairly successfully) from a vague and ill-
defined query. |
|
|
If your last 25 years have merely been an iteration of
simple sequence of events, then maybe it wouldn't
be such a bad thing... |
|
|
" But this would be tedious " |
|
|
That is to say, if you took this concept far enough, then your app would probably start to develop superstitions and conspiracy theories. That could be quite interesting to watch. |
|
|
//if you took this concept far enough// |
|
|
Yes, it would be nice if the software learned my
foibles, but realistically that's not going to happen.
Just extracting the common elements from a
repeated series of actions would be good enough for
me. |
|
|
From Bruce Sterling " Zeitgeist " : |
|
|
" Many software merchants made the profound mistake of selling the best software they could make. |
|
|
Luckily, a study of strategies for information pricing had made it clear that this was not the best source of revenue in a true Information Economy. |
|
|
People became nervous and unhappy if they were sold decent software at a decent price. Decent software should only be offered at a terrifically high, premium price, and loaded down with extras and unnecessary but psychologically reassuring bells and whistles. |
|
|
Then, the middle tier of the market should be offered a cheaper, but still expensive, crippled version of the original software. |
|
|
And newbies and students and bottom feeders, in their many sorry thousands, were to be sold a barely functional, piece-of-shit, value-subtracted version of the product. " |
|
|
If you can reduce your problem to a pattern of keystrokes, then general macro-recording software such as AutoHotKey can be used to repeat the pattern. Full-featured text editors like Vim and Emacs have this functionality built in. |
|
|
On the other hand, I don't know of any macro-recording software that would let you incorporate mouse movement in that manner. |
|
|
// I don't know of any macro-recording software
that would let you incorporate mouse movement in
that manner.// |
|
|
Exactly, and that's what I want built into Excel,
Illustrator... those things. The app knows where
my mouse movements begin and end, and it knows
where things are. So, if I move three things, and
the only common factor in the movements is that
they (for example) start by grabbing the most
recently-created graph and end at a constant
offset from the location of the graph's data, the
software ought to be able to figure out that I want
the graphs positioned just to the right of the data
they were made from. |
|
|
Put it this way. If someone were watching over my
shoulder, they'd quickly deduce "Ah yes, he's
moving each graph to sit next to the data it was
made from" or "Ah yes, he's stretching each graph
to be the same width". That's what I want the Et
cetera function to do. |
|
|
/// If someone were watching over my shoulder, they'd
quickly deduce "Ah yes, he's moving each graph to sit next to
the data it was made from" or "Ah yes, he's stretching each
graph to be the same width". That's what I want the Et
cetera function to do. // |
|
|
That used to exist. It was called Clippy. |
|
| |