Story of the Flash Fill Feature in Excel
blog.sigplan.org
blog.sigplan.org
I started out intending to design fast vector hardware (because autocad was a thing back then), the end though some serious benchmarking of real world usage meant that we zeroed in on simply making solid fills go really gas (Gbytes/sec, faster than any SGI machine of the time) - one of the big surprises was how fast Excel went with just this hardware speedup - turns out that at times excel would clear a window up to 9 times before ever drawing a useful pixel - all those 'important' black pixels I wanted to make hardware for (character rendering and vectors) were just noise in the traces.
Not just MS: Pagemaker? did something stupid that invalidated the font cache many times a page, Quark? put 2 blank spaces at the end of every line that caused ATM to do stupid N*2 clipping behaviour ..... we could make great hardware and the software guys would just piss it away
my #1 annoyance with web dev at-large.
you load any web page and your CPU spends 90% of its capacity rendering inefficient, shitty, injected ad code. (speaking as someone who tries to squeeze the most out of modern JS JITs and web platform APIs)
This is a fantastic framework to pursue when, for instance, joining a new organization. You can quickly have an outsized impact just by looking for common pain points. As a corollary, it’s very useful to spend lots of time using your own product and talking to the users!
Every tool they buy (physical or digital) is always 60% fit, but adding a few bits on top would propel it above 80% and make everybody's days a bliss.
Most applications I've seen are designed for generic tasks, except that workers have a very regular set of tasks, if software could be tailored a bit to this (prefill stuff, save clicks) you cut fatigue and errors buy a huge figure.
This can have a serious social impact, last gig there were thousands of lawsuits waiting in a hall because nobody wants to type them in since the software requires to rewrite everything from scratch even if 80% of the data is identical.
Add an extra menu of common tasks- no problem. Add a datalist dropdown of options to a textbox where the options come from another service dynicamlly? - again no bother but usability of the vendor product went up substantially.
Don't laugh but I had more results scripting mouse/keyboard automation on 90s oracle GUIs [0] than the app I mentioned above.
[0] I could prefill half the stuff and help the rest with powershell, it gave me 70% time reduction on most tasks
<flippant-comment-from-a-random-hn-poster-who-doesnt-know-your-circumstances>
The job market's great right now
</flippant-comment-from-a-random-hn-poster-who-doesnt-know-your-circumstances>
:-)Hopefully more usefully as a comment - browsers are super hackable, you might be able to use a javascript bookmarklet to effect some improvements. Something like this https://caiorss.github.io/bookmarklet-maker/ (there are others) makes life easier for creating these.
bookmarklets don't allow for injections into the app so it wont work
Presumably this has to hack around cross-site restrictions nowadays (it's a couple of years since I did any website JavaScript).
1. Clone that repo
2. Run my fake vendor app - in this case an html page with an empty text box - npx http-server
3. Add the browser extension - tested in firefox - then refresh the page
Now you should see the title fields from https://jsonplaceholder.typicode.com/posts in a dropdown that's now been added to the input field of the fake vendor app page.
The same is true in the article:
"I am indebted in particular to one woman, whose name I will never know". "I also thank the Excel product team for shipping this technology without which this work wouldn’t be as famous."
I wish I knew how to reach out to the author (Sumit Gulwani) or other people in the Excel product team, about a feature that would be really hard to code but really useful to me.
Hierarchical menus of Sheets.
Like bookmarks folders, or Playlist Folders in iTunes, clicking on the Sheet Folder would show every row inside, concatenated into a giant Sheet. Clicking on the Sheet Folder would bring up a menu, which I could then navigate to find a sub-sheet. From a programming perspective I know that it's really hard to do hierarchical nested databases. But from a usability perspective, it would make some of our Excel documents with hundreds of Sheets much easier to navigate.
We might have something for you…
Being able to organise it into a hierarchy, like a file system, with folders and subfolders, is what I'm imagining. Selecting a Sheet Folder would show the concatenated data from all sub-sheets, like iTunes Playlist Folders.
Something like this:
https://support.microsoft.com/en-us/office/save-time-with-fl...
(Key word: "Maruary".)
Also, if you would like to do more than substring extraction, say convert "FirstName LastName" into "f.l." or "lastname, firstname", then Text2Columns won't be sufficient by itself. You would need to do more post-processing or would need a more sophisticated scripting capability.
[1]https://docs.microsoft.com/en-us/powershell/module/microsoft...
It annoys me that they research and apply complex algorithms to analyse the available data, detect the most likely ways to fill the document, build alternative programs to solve the problem and rank which is the most useful; only to then choose one of the inferred options and discard all the rest of the analysis work, getting only a (possibly incorrect) guess of the data completion task.
If, once the work is done, the user were allowed to see what the process was to detect the data, and were allowed to choose between the discarded options or give additional clues as to what the original intention was (the "active-learning session with the user to resolve the ambiguity" that the author of the article discards), the technique could be controlled more precisely and be useful in more situations, not just the ones that work the first time. Giving control to the user would make the technique more robust in my opinion instead of being hit-or-miss.
What I meant to say was that such a rich interactivity should not be the default experience for simple and common cases. For simple and common cases, the technology should just work automatically without requiring much user interaction, thereby promoting usability and discoverability. However, you are absolutely right that for more sophisticated cases, instead of letting the user fall off the cliff, we should invest in a rich interactive experience where the AI can partner with the user to help complete more sophisticated tasks.
The thing is I'm a firm believer in putting the user at the centre of decision-making in automated processes, especially in AI tools that combine multiple sources of data without a clear of model of how they arrive to their solutions.
Too often these process provide their result as a foregone conclusion, and leave the user helpless if it is not the right one. By providing hints on how the process has arrived at that outcome, the user can form a mental model of how it works and learn how to use it more efficiently, or for which situations it is not suitable.
Are there any open source libraries that perform similar tasks? I can think of a few uses for this in data cleanup as long as it can handle the input not being super clean.
That and flash fill has saved countless hours to my team.
You can turn it off if you don't like it. https://superuser.com/questions/766967/how-can-i-turn-off-fl...
You may consider watching this 5-minute video segment starting at 4:30 to get a sense of the current scope of Flash Fill (i.e., when it is expected to work, and when it isn't): <https://www.youtube.com/watch?v=X1YXge3C8RI&t=270s>
"fired up" in this context needs a place in the CS Hall of Fame