End-programmer Programming
Steve Krouseon
The dream of “end-user programming” is still too far away. Let’s set our sightson “end-programmer programming” first.
There is a dream, almost an ancient prophecy, about computers that is as old ascomputers themselves. Like a siren song, the dream has lured thousands of us tochase it. It shimmers like a mirage, tantalizingly just over the horizon, yetremains as elusive now as it ever has been. The road to the dream is litteredwith so many dead prototypes of brilliant minds that many have given up on thedream entirely. Yet in some hearts the dream liveson.
The dream is that the full power of computers be accessible to all, that ourdigital worlds will be as moldable as clay in our hands, shaped fluidly andcontinuously to serve each of our unique and particular needs. The dream is thatthe full expressivity of programming will be accessible to all people, not justthe ~1% who spends years learning to code. The dream is the nothing short ofthe real computer revolution.The dream is end-user programming.
[End-user programming is] a vision for empowered computing pursued bybright-eyed computer science visionaries. Its rich history reaches back to the1960s with programming environments like Smalltalk and Logo. Notable successessince then include Unix, the spreadsheet, Hypercard, and HTML. And today,newcomers like Zapier, Coda, and Siri Shortcuts are trying their ownapproaches to automation and dynamic modeling.
The gulf between end-user software and end-user programming is filled with anocean of thorny problems:
- Understanding basic programming concepts (boolean logic, statements, state,loops, functions)Using formal syntaxSetting up a development environmentRenderingDeployment, hosting, logging, monitoringVersion controlPersistence (databases)
There are many amazing products and research prototypes that solve some of theseproblems. There’s visual programming to make programming concepts moreintuitive, structured editors to help prevent syntax errors, auto-install onlinecoding environments, WYSIWYG rendering tools, and more! (Check out theWhole Code Catalog for a selected list.)
Trying to tackle all of these problems at once is like trying to boil the ocean.Yet only focusing on a sliver of the problem doesn’t come anywhere close to theoriginal dream. The wary dreamer must somehow chart a path from here, the worldof today, that can bring us ever close to the whole dream.
We can shift the audience. Instead of trying to achieve end-user programming,let’s start with end-programmer programming. Today not even professionalprogrammers can control their own software! How can we expect to get from hereto end-user programming, without first achieving end-programmer programming?
At work, the programmer is a magician. She is just keystrokes away from anythingshe can dream up. But at home, using apps made by big companies, programmers aredisenfranchised serfs, just like everyone else.
The task of end-programmer programming is empowering programmers to actuallycontrol the software they use in their lives; not just the software they writefor work.
We already have free & open-source software. So what is stopping us programmersfrom achieving the dream of end-programmer programming?
Imagine if you wanted to change how GitHub works. If you had the source, allyou would need to do would be to reproduce GitHub’s entire infrastructure inyour basement, make your changes, and convince all of your friends to use theresult. Or you could somehow get GitHub to allow you to make the change. Thelatter is generally easier, and points out another failing in the fourfreedoms [offree software]. Freedom 3 isthe right to distribute modified versions to others, but, in this world, it’snot necessarily access to the source that enables this freedom. Instead, it’saccess to the runtime environment.
End-programmers need access to the deployed runtime environment, what Robert“r0ml” Lefkowitz calls “liberal software”.
Liberal software is also a pre-requisite to end-user programming! And that’s thepoint of end-programmer programming: it’s a pit stop that allows us to solvesome of the same problems we’ll have to solve for end-user programming, butwithout having to deal with non-programmers at the same time.
The problems of liberal software are a tarball all on their own:
- Mapping between different data schemas between versions of code(Cambria)Managing code sharing between a Cambrian explosion of branchesPermissions for which users get to control what
We can limit the scope yet again: eschew whole, multiplayer apps in favor ofsmall, personal, folk software,little integrations, and mini-apps, likeSpotify Rediscover,Alert HN, HN Replies, andSmall World.
Because of excellent, free APIs and a sparse core interface, Hacker News hasspawned a whole ecosystem of mini-apps from readers to push-notifiers. Inspiredby our friend Kartik’s use-case, we decided tocontribute our own mini-app to the fray, built in the end-programmer style.
Our mini-app is called HN Follow (hnfollow.com) and itallows you to “follow” authors on Hacker News and get email notificationswhenever they post. Our “app” really isn’t even an app at all: it just walks youthrough creating the scripts to set up this query poll job.
Once setup, you can customize any of the JavaScript: write your own query,choose a different schedule, filter results, format the email alert differently,etc. You can even use the basic polling & email architecture to query any sourcevia its API, not just Hacker News.
Importantly, all this code is hosted and run for you. This is what makes itliberal software: you have access to deploy to the same runtime the code waswritten in.
When you sign up for HN Follow, we create an account for you onVal Town (👋 disclaimer: this is my new startup, acollaborative cloud scripting environment) and install the scripts there.
Val Town is a place to write and run code online. You canthink of it as a “runnable Github Gists” or a “user-friendly AWS Lambda”. Itmakes it incredibly easy to email yourself, persist small pieces of data, exposefunctions and API endpoints, and create recurring jobs.
https://www.loom.com/share/878294970d8e48919c819f35d0cd0da4
It’s a JavaScript editor and runtime built for the cloud: collaborative,persistent, and (eventually)connected to APIs.Use it to keep tabs on Hacker News or your other favorite watering holes,reserve a table at a hot new restaurant, or shuffle data between one SaaS appand another.
But the dream of Val Town is nothing short of end-user programming, with alittle detour through end-programmer programming. Come join as we inch alongtowards the dream!
🙏 Thanks Kartik Agaram, Sam Arbesman, Geoffrey Litt, Dan Levine, Rodrigo Tello,and André Terron for your contributions to this piece, HN Follow, and Val Town!
The easiest way to subscribe to Val Town is to sign up for an account onval.town, and then opting in to receive our newsletteras your set your username. You can also sign upvia this link.
Edit this page