* Blocking, stacking and pulling creep camps in DOTA. Unintended behaviours that became core game mechanics.
* Comments in the tag section of Tumblr posts, to avoid the comments appearing in a reblog ("Why do people use tags on tumblr instead of comments?" [1])
* The appropriation of switching MOSFETs such as the IRF510, designed for low frequencies, in homebrew amateur radio QRP power amplifiers. "In talking to International Rectifier, they were floored to find out QRPers were using them at 7MHz or higher." [2]
I remember early twitter thinking RT was some guys initials and was so impressed at how popular and cool he was. Everyone was tweeting him and he seemed to be everywhere
I found that a really interesting development, and they embraced it. Probably the best example of "go with where your users are going" I can think of.
And it's silly as well, because anyone with a few weeks of software development knowledge could probably hack a Twitter-like together. Not that at that scale, admittedly, but still, prototype-twitter was nothing fancy.
Distortion, overdrive, and the 808 are all examples off the top of my head of folk analog audio.
The former two tend to use the imperfection of diodes leaking to create varying degrees of fuzz (really clipping) based on placement. It fakes pushing an amp past it’s thresholds.
The latter abused chips that failed QA as the source of noise. They can’t make “real” ones anymore, since the chip is out of production. This one’s from my memory and the description may be flawed.
In both cases, abusing electronics’ imperfections is the goal.
Now with pedals, you get magical beliefs about “original” parts, but that’s another story.
So many guitar effects are based on accidents and replication/reduction of them. It’s both technically and historically fascinating to me. “This sucks, but sounds cool. How can I make a smaller box that does it?”
I believe another term related to these phenomena is Elephant Paths. Named after the trails that pedestrians leave behind when they choose a shorter path over grass in favor of the official paved paths.
Since we're talking about DOTA. Defense of the Ancients was a custom map game in Warcraft III. I don't know if this is still a thing, but custom map games on Starcraft and Warcraft III absolutely ruled. There was freeze tag, capture the flag, tower defense, a zombie defense like game based on Starship Troopers. Absolute golden age of gaming for me as a kid.
It goes further back, actually—IIRC there was a DoTA custom map on StarCraft: Brood Wars. It has no resemblance to the DoTA of today, or even the one on Warcraft, but the lineage of that game goes back further than a lot of people are aware of. :)
> Large California-based companies produce monolithic apps and interfaces for a global audience. They're designing for the broadest, generic use cases to make things work for the greatest number of people.
Hah! If only! Actually they often (but not always) seem to design it for an SV audience with the latest-gen phone/computer, fast uninterrupted internet, familiarity with the latest "UX" fads, perfect eyesight, etc. Anybody that falls outside that narrow group can get shafted.
OA here. Loved this piece as well, and it certainly got me thinking about a set of themes that led to this essay. Robin is an exceptional thinker in this space.
Your digital garden intro had a massive impact on me. It finally gave me the vocabulary to express how I build the website I live from, and spurred me into an impromptu redesign of my personal website. It also led to half a dozen hand-drawn illustrations on the commercial one, with more on the way.
I was surprised to see no mention of automation tools like IFTTT and Tasker. These sorts of overarching automation oriented tools let people solve a lot of problems by stitching together things that aren't designed to work together.
I would actually put Excel in this original category. Part of Excel's utility is that it is really good at enabling building of dashboards, applications, whatever. While Excel's builders didn't have D&D character sheets in mind, they definitely expect users to do unanticipated things with the software, just as much as IFTTT or Tasker would.
In some ways this is a "platform" type of perspective. "Here's a bunch of building blocks, go do whatever you think you need" is really powerful once the network effect of building blocks gets big enough. Any tool with a built-in DSL or workflow builder type of UI is probably in this category.
It's funny that you mention IFTTT because one of the inspirations for its creation was the book Thoughtless Acts?, which is full of photos like the ones in this post: https://ifttt.com/explore/ifttt-the-beginning
They used to give a copy to new employees, but it seems to be out of print now.
Orthogonal to the main point of the article, I was interested in the mention of Victor Papanek's tin can radio receiver, which apparently cost 9c to make (presumably the cost of the transistor, since everything else was recycled), and could be fueled by burning wax or dung.
I haven't been able to find a simple guide for how to make one myself.
It sounds similar to a trench radio, in which case it is entirely passive (like a cat's whisker radio), and used a flame source to treat the surface of a razor blade upon which the needle was sat.
Apparently it would only receive one frequency (presumably tuned when made). The target was for developing countries that might have only a single state-run station.
"The radio is, of course, non-directional. This means that it receives all stations simultaneously. But in emerging countries, this is of no importance: only one broadcast (carried by relay towers 50 miles apart) is carried."
I build fictional worlds as a hobby, and sometimes I need to make a map of a globe and find myself in need of a program that can draw vector shapes onto a globe and project it onto a 2D map afterwards. The simplest way I've found to do that which fits my workflow is a program called GPlates. A program that simulates plate tectonics. I've never touched the simulation part, although it might be useful in my worldbuilding at some point. All I use it for is drawing colored shapes.
Honestly, that seems to be a common use case for GPlates (see eg[0][from 1]), and might even be more common than actually using it for plate tectonics work.
Random folk practice that drove me nuts, Outlook "Deleted Items Folder" as storage, never actually deleted, ever.
20+ Gigabyte mailboxes, which were actually a threaded, searchable, rich content database. (Exchange's superpower (when it works) is a almost perfect online/offline sync able database -- You can send an email in your offline client, when you go online it'll get sent, your calendar updates will sync, etc)
Folk interfaces are a natural consequence of the focus on building applications for millions of users and the dearth of situated software [1]. They're also a clever way of claiming no-code or low-code platforms in unexpected places.
This is like the interface version of Hyrum's law:
With a sufficient number of users of an API,
it does not matter what you promise in the contract:
all observable behaviors of your system
will be depended on by somebody.
> No matter how much well-intentioned user research these companies invest in, they'll never be able to produce software that fully meets the needs of individual users and culturally distant communities.
Domain experts being able to solve their own problems sounds is a worthwhile objective for software tools but innovation in this space has been surprisingly sparce.
I've been searching for other examples of end-user programmmable tools beyond spreadsheets for inspiration. Anyone have suggestions of some other places these kinds of "folk interfaces" show up?
Hypercard was this and generated really rich "folk" artefacts. Filemaker (https://www.claris.com) is sort of this still. A modern example is Coda (https://coda.io) which is seeks to be spreadsheet like in terms of inviting folk (end users) to play and create while making database and scripting easy enough to discover and wrangle.
Corel's office suite has a scripting language if I recall. My grandfather in law learned enough of it to develop a few systems for managing family finances, gifting (it's a large family), etc.
Emacs is notable. It requires learning a bit of elisp programming but, like a browser, is basically a development environment that gives you access to a windowing system, input from the user, image rendering, text buffers, etc. Plenty of people write their own tools to manage particular workflows.
This tool scares the hell out of me, as a sysadmin, with end users who have no education re: software engineering (and potentially really wonky mental models about software) developing potentially business-critical tools/processes out of the IT equivalent of "glue and tape".
This is especially scary to me because building on "evergreen" platforms like Office 365 means that critical emergencies and downtime could occur at the whim of platform owners making changes to the underlying platform. Spacebar heating.. all that... >sigh< (And I'll be expected to fix it when it breaks and the user who made it has left...)
Browsers used to be. They used to let the user apply their own CSS sheets to websites, and some extensions still allow tem to manipulate pages ("user scripts").
Web technologies were designed to let the user do what they want with the document they receive. But "the web" then evolved in a different direction.
Case in point: TFA, like many other sites, is unusable without Javascript. And it's not even "because CDN". Why do I have to execute code on a page that could be 1:1 replicated in pure HTML ?
It's very explicitly intended to be reprogrammed, but Tiddlywiki is a pretty good one. It is a great platform since it gives you data storage, advanced queries, and rendering.
As cringey as that looks, what are other options there? Windows' desktop (and neither Linux's IIRC) doesn't have a built-in "stick-it note" functionality — which is kind of a shame if you really think about it.
There are a couple sticky notes programs that appear to be in the Ubuntu repos at least. I guess it isn't "built in" in the sense that it comes pre-installed on install disk, but it would be installed in the same way as any other first-party software.
Visual programming tools, such as Grasshopper 3d, have created a microworld of custom-made plugins and user interfaces, mostly to generate 2d and 3d geometry, but often used to achieve other programming feats.
There are even explicit plugins that let users create UI components to control and visualize program inputs and outputs.
In that case, I'd say Conway's Game of Life evolved into an unintended end-user programmable tool, or folk interface, where people figured out how to build logic circuits, Turing-complete programs, and eventually the Game of Life itself.
These examples seem to show that there's a kind of wisdom and creativity of the crowd, the folk, collective behavior.
The entire Low Code / No Code and RPA / IPA markets exist for this. Airtable, App Smith, etc are a modern, web-based take on Access.
The more generic a tool is, the more creative people get with it. For example, emailing a file or note to yourself is a folk interface. Using a Facebook group to role play is a folk interface.
Nothing has come close to matching spreadsheets though.
One of my favorite creative uses of Excel comes from !!Con 2017, where Kevin Chen used spreadsheet to implement HDR imaging[1]. It’s also just an incredibly well-crafted presentation.
The biggest issue that I come across, is users of my software, developing mental models of the software that I would never, in a million years, have developed, myself.
They often work with the software, based on their "strange" mental model, and can have very weird workflows.
In some cases, this is excellent, and it is worth it for me to learn the new model, and maybe add affordances for it.
One example for me is iMovie on macOS. They dedicate 50% of the screen to a sort of “project media library” where you put all videos and audio you want to use in your project and that also holds all titles, transitions etc. you can add.
Literally everyone I ever see using this software drags videos directly from the finder onto the timeline, then pick a transition once and then just copy/paste it within the timeline. So 50% of the screen is wasted real estate for a lot of the users.
Are you saying that this is wrong because picking "assets" (rushes, transitions) is done once at the beginning of the edit process, so the screen space is wasted the rest of the time?
Not the poster you replied to, but I think I understand.
* instead of using a two step process (add to library, then drag from library to timeline) users just drag media to the timeline. Makes sense. How often do you re-use the same clip?
* instead of dragging in a transition and having to re-set the values from the defaults to the value you want, users drag in once, set the values, and then copy-paste it around.
In both cases the users are doing the most efficient thing. With the real workflow in mind, having the media library take up so much screen space is a huge waste.
Not parent, but here's an example from a past project.
Customer: "Could you make the 'name' field of this entity longer? We need to add longer names."
Me: "Why?"
Customer: "Well, we want to name the entity '2022 - Spring - $500k - Contoso Inc. - Presale stage' so we can find it more easily."
Me: "So what you actually want is to be able to filter/search for entities by all those values, and you're just using the name as a workaround because it's all you have."
This is why listings on Amazon are a million words long. They do an adequate job pulling important attributes into the metadata so you can filter on them, for some categories. For example, the size and type of TVs. But it's not really possible to do that for all product categories. Moreover, users can't easily see the attributes in the search page, so it's best to just put it all in the title. For things like motherboards, they get super dense with jargon.
I worked at Switzerland's biggest online retailer whose USP was that it actually did strongly typed attributes really really well.
To date, it's still incredibly searchable. Want to find a 5.5" phone running Android 10+ and at least a 12MP back-facing camera for below $350? You can filter for it.
It was an absolute nightmare on the (normalized, backend) technical level, but a real pleasure to consume on the denormalized, frontend level.
As someone who worked in the space - there are standards and commercial solutions which all do lots of good work (some are now unfortunately having to break into the AI space, literally because manufacturers are too cheap to use standards).
But they all come at some cost - my employer decided to cheap out slash invest in a highly custom in-house solution instead that relied on lots and lots and lots of data entry.
It doesn't matter that you can add any fields you want in Salesforce, and we do, nobody will use them and continue to encode all the information in the title of the object.
Funnily enough - I was building this application ...to replace Salesforce (for this business process, not company-wide).
Because the person managing Salesforce approved all requests to add any field, there were just 400 instead of the 5 I mentioned, and none had any validation - so no one knew which ones to fill with data, which ones to keep updated, and which ones absolutely to never touch because you would accidentally commit fraud because you falsified sales figures.
Worst part is, even if the fields are there (let’s say in JIRA) there will still be a soulless bureaucrat middle manager who’ll regularly remind everyone by e-mail to use the “JIRA task title template guidelines” so you end up with stories like “[PRD][Feature X][XL][Development][JAVA] Bugfix for calling API Y with empty order ID [Prio 4][Impact 2][2022Q3-sprint5]”
Gimme a bit. I’m going to have to come up with examples that don’t compromise any proprietary information. Most of the examples are from my work for a photography equipment manufacturer, and they wouldn’t want me to talk about it.
I'm not going to follow up on this. The examples I could come up with, outside that experience, would not be accurate recollections.
That company considered exactly that kind of experience to be one of their "trade secrets," and they were fairly well-known for "leaning into" customer mental models.
Even though I could legally discuss it, I won't. I feel they could use all the help they can get, right now, and I won't make things harder for them.
My favourite XKCD "Workflow" [0] is very relevant here.
Unfortunately, because people function that way, there's a lot of pain ahead for those to learn to rely of obscure uses of software. Sooner or later those pathways are dropped, if for no other reason than cutting down on maintenance costs.
On the etymology of "folk", saying that it the word comes from Old English folc is true, although a vast over-simplification. A lot of languages share this word.
This is actually an ancient word, you can trace it back to proto-Germanic "fulka", and further to Proto-Indo-European "plh-gos" (presumably pronounced something like phulgos or pholgos, close enough to folk).
OA here. Thanks for the expanded etymology. I was using https://www.etymonline.com/word/folk as my source which goes into more historical detail. But didn't want to get too carried away in the opener on etymology.
Using Virtual Machines as capability based security is something I've come to accept.
Windows and Linux are vulnerable to the confused deputy problem, so you separate your concerns into separate VMs and give each "machine" a set of resources (capabilities)
IBM and Digital machines have done this since the 1960s.
I found the post interesting. It provoked me to think about the low-code, no-code movements, and of the concept of folk interfaces. It is a nice term and I will try keep it with me in my future thinking. I found the 9c radio particularly appealing. It also made me consider how I ended up where I am now, and one thing that struck me is that when I was learning to program, I tried learning from textbooks about programming and they intimidated me and felt impenetrable. I didn't know how to get into them at all. Then by stroke of fortune I came across the first programming book that really took me. It was called C for Dummies, by Dan Gookin. It was filled with humor and encouraged experimentation, and above all it was empowering. It made me feel good and it inspired me: I sent a couple of busted but well-intentioned input routines off to a friend who was further along in the process than I was and he introduced me to the off-by-one-error. I never became a good C programmer, but I learned how to make the computer do my bidding in small ways, and it wasn't long before I picked up another book, on Perl and CGI.pm, and I wrote my first "web applications". Eventually I went on to do a computer science degree. Today, by HN standards, I'm maybe nothing to write home about, but I make a very comfortable living and I enjoy writing code at work. I enjoy learning about tech in my spare time, even now.
I guess what I'm trying to get at is that I wish to see learning to code, per se, easily accessible for all. I'm not talking about cheap or even free boot camps that promise entry into a lucrative job market. I'm talking about a kid, or a parent, or an auntie or uncle or cousin or sister or brother, about whoever, who just sees something they want to make happen and they literally do because they can. I read through the comments and I re-read the wonderful article by Robin Sloan linked below ("An app can be a home-cooked meal" -- look through this comment thread, and you'll see it, alongside my first observation of the term "OA", one that took me some time to decipher -- another thing that will stick with me).
I believe that programming is and always will be for the masses. I believe in development best practices when they are called for. But for learning, for discovering the beauty of computing and the joy of software, of writing one's first programs, I wish the barriers were less!
I use Hugin[1] to manually align images and combine them into virtual focus.[2] I started doing this after learning of the Stanford Multi-Camera array[3], and wanting to replicate the ability to see through things[4].
I didn't have the budget, so I used one camera and a cluster of photos from slightly varying locations. I got there eventually.[5]
I approve of this, but its hardly novel. Web browsers were originally intended to view flat html documents with hyperlinks between them. The concept of a web app is itself a 'folk' repurposing of technology.
Another might be the way blocks in minecraft are repurposed to make all sorts of elaborate redstone machines such as automatic farms.
This argument is very similar to what I usually, probably inappropriately, refer to “malleability” of a software, interface or system in general: it’s ability to be used way beyond the initial use cases, and hopefully be good at it.
Whenever I need to explain to laypeople what I do as a software designer, I tell them that most of my job is figuring out new ways to visualize and connect outlines and spreadsheets.
along the lines of the d&d spreadsheet, I've developed an entire app for running scrabble tournaments as an elaborate google sheets script. it's a couple of thousand lines of javascript for the logic, but the user interface is entirely a bunch of spreadsheet tabs.
I'm currently rewriting it as a standalone web app just to break the dependence on google, and have a more customisable user experience, but it's really hard to beat the spreadsheet UX, where settings are all done using editable tables and the output shows up in another table.
Wait, there are actual things, called "doorstoppers", that are designed to work exactly as door stoppers and have no other discernible function? Do they by any chance look anything like paperweights?
They are wedge shaped and usually made of rubber. You stick it under the door, hold it in place, then pull the door to get it stuck on the doorstop. Some doors also have built in door stops that are different- more like a kickstand on a bike.
There are, and they'd make fairly poor paperweights because they aren't typically very heavy - the intent is to use friction with the ground to keep the door from moving, rather than just weight. For instance:
Generally they are just a wedge-shape that gives enough friction at the bottom of the door so that the weight of the door or strength of the closing mechanism can't overcome that friction.
I suppose another folk solution is removing the pin in the arm of the device that automatically pulls the door closed. I had a high school teacher who did that.
* Blocking, stacking and pulling creep camps in DOTA. Unintended behaviours that became core game mechanics.
* Comments in the tag section of Tumblr posts, to avoid the comments appearing in a reblog ("Why do people use tags on tumblr instead of comments?" [1])
* The appropriation of switching MOSFETs such as the IRF510, designed for low frequencies, in homebrew amateur radio QRP power amplifiers. "In talking to International Rectifier, they were floored to find out QRPers were using them at 7MHz or higher." [2]
[1] https://www.reddit.com/r/NoStupidQuestions/comments/nu4vpa/w...
[2] http://www.iw3sgt.it/IW3SGT_PRJ/IW3SGT_AMP_LF/ClassDEF1.pdf