Losing Metaphors: Zip and Paste
jefftk.com
jefftk.com
That deemphasises the compression aspect though.
I wonder if this influenced 'tarball', or maybe it's just human nature to think of objects in those terms.
>[ZIP] implied speed ("zippy") and sexiness ("zipper")
TIL!
Skeuomorphism, whether visual or linguistic, is just making things more confusing.
If you zip something irl, without context, what are you doing? I can see it being either sealing a bag or merging.
If you merge (or close a zipper) as the essay points out it’s a bit iffier because they interleave constructs, but at the same time a zipper keeps a clear distinction of right and left, so it’s pretty close.
Strictly speaking “buttoning” might be a better match for the semantics, but I don’t think it’d be clearer. Then again I’ve long integrated zipping so I’m way biased.
* zip(sound)<->zip(quick movement) no idea of history
* zipper <- zip(sound)
* zip tie <- zip(sound?)
* zip(function) <- zipper(side by side interleave)
* pkzip <- supposedly from zip(quick movement), although some other sources suggest similarity with opening/closing a container aspect. Which also somewhat makes sense as you can more easily extract or add individual files to a zip archive, which many other archive supports don't support. Seems like some of the early software packaging had illustrations of zipper, so I guess they embraced the multiple meanings of zip.
* zip(general compression) <- pkzip
* zip drive <- quick?
* zipper -> plastic teethless zipper (closer to zipping function) -> Ziploc -> strengthen the open and close meaning without zip sound or interleaving
Does anyone have any sources of origin for computer science use of zip meaning combining multiple lists? All the examples using actual word "zip" in wikipedia are from somewhat modern programming languages no earlier than 1990, lisp is older but it doesn't seem to use the word zip.
I'm not sure what I think zip() should be. pair() ? smooge()?
Kill ring, and the Yank buffer in Emacs are also misnamed. you don't kill things you put in the kill ring, you are doing the opposite of yank when you put things in with ^Y
wed()? mate()? ...or for the fanfic'ionados, ship()?
(from a comment to TFA: imbricate()?)
That'd be Cartesian product.
I personally would be fine with line_up() or side_by_side().
Pair up?
Or if that's too long, int(), or leave()
And if you don’t know how to zipper merge you really need to.
[[1,2,3,4,5],[6,7,8,9,10]]
Becomes
[[1,6],[2,7],[3,8],[4,9],[5,10]]
(I guess that's just the same as "paste", but British English, so maybe not the best idea!)
A zipper also interleaves matching (in order) pairs, not just random items anywhere on each side!
From a mathematical viewpoint, 'zip' is just transpose, and therefore its own inverse. But because of the zipping metaphor, this feels perfectly normal:
pairs = zip(sources, destinations)
While this feels like black magic: sources, destinations = zip(*pairs)I'm surprised drag and drop hasn't been improved, especially since the proliferation of touch devices.
The idea behind drag and drop is that you should be able to grab something like in real life, but the way it's implemented in almost every system is lacking. In real life, I can grab something, start to move it, notice that something else needs to be shifted around, put the first thing down, focus my attention on the second thing and deal with it, then pick the first thing back up and complete my original goal from where I left off. It doesn't work like this on the desktop. If you notice midway through your journey from source to destination that the destination isn't actually ready for the drop, your dragged item goes flying back to the source and the whole thing is canceled. You have to then prepare the destination, return to the source, start dragging it again, and then release it to complete the drop. The modality of dragging leads to anxiety. It's worse on touchpads, because I fear accidental releases and running out of space in the direction my finger is traveling.
I want drag and drop to be completed by an independent mouse click, not on release. You start dragging. That should create an icon of roughly the same size as a desktop icon. If you release it anywhere it'll stay in that position, allowing you to shuffle through windows, sidebars, etc. When you know your destination is in a state that's ready to receive the dropped item, you pick it back up, bring it to its intended drop point, release it from the cursor, and complete the drop with an additional tap/click to actually "approve" it, i.e. "send" it to the destination—otherwise it stays sitting around waiting for you to e.g. pick it back up again, dismiss it, etc. This would also afford programmers the ability to add context menus to drag and drop items, which would lead to people (users and programmers) better modeling them in a truer object-oriented way.
But as the author also printed a newline, it looks very different.
Up until the point of zipping, when they suddenly became misaligned. The outcome of zipper merge isn't pairs of cars, glued by their side doors, going down a single lane. The outcome is cars from both input lanes interleaved, forming a 2x longer line on the output lane.
For early school projects I did the text in a word processor leaving holes for the pictures. My parents worked at a graphic design place so they had a scanner and colour printer to print prictures which were cut and pasted in.