Resources for creating front-end programming languages and frameworks in 2017
Thanks to the tireless work of the open source community, programming has never been better than it is today. However, we can always improve our languages, tools and frameworks. These resources are where I draw inspiration for my work in this domain.
- The Future of Programming is a really fun video that Bret Victor gave at Dropbox in 2013. He dresses up like he’s in 1973 and talks about how the “future of programming” is bright. His talk makes it clear that programming is nowhere near as good as it could be and gives ideas for ways we could improve upon it. My favorite part when he explains that each new jump in abstraction (from binary to assembly, from assembly to Fortran, etc) was met with resistance. Resilience is key for a hopeful programming language creator.
- Inventing on Principle. There’s much inspiration in this talk that you’ll want to get started changing the world right away. While you’re at it, you might as well check out Bret Victor’s entire collection of articles and talks.
- Simple Made Easy. Rich Hickey makes an important distinction between between simple and easy, and explains its consequences for reducing incidental complexity. If you like this talk, you’ll love The Unofficial Guide to Rich Hickey’s Brain.
- Functional programming frameworks like Elm and CycleJS are becoming more commonly accepted as serious contenders. Elm in particular, with its promise of zero-runtime-errors, is a force to be reckoned with. I’m a longtime fan of CycleJS creator Andres’s thinking on these topics and I’m very impressed simplistic approach he’s taken with CycleJS. (Though for both of these tools, I like the idea of them more than I like them in practice.)
- In early 2017, VueJS is fast gaining popularity and is my current framework of choice. I’ve used it in a handful of projects and I have virtually no complaints. I see it as a simplification of ReactJS with some good ideas from AngularJS.
What I hope for the future of coding
- I think functional programming principles, including types and immutability, have a special place in the future of programming. I also believe that the future is web-based and serverless through solutions like Firebase and Amazon Lambda.
- Eve. I have a lot of respect for this team and I follow their blog religiously. I have not been blown away by their recent work, but that might be because I do not fully understand it yet. These guys are smart cookies.
- Bubble. This is currently the best (and really only) way for non-programmers to create complex websites. I am highly impressed by their pragmatic attitude and that they’ve bootstrapped the business to profitability in just a few years. I do think, however, that they could learn a bit about “learnability” from these resources.
- I love MIT’s Scratch project, and although it’s only a beginner’s programming language, I truly believe that it points towards the true future of programming: no syntax errors. In this vein, John Maloney and Jens Monig, from Scratch and a similar project Snap!, respectively, are working on an ambitious such project GP (but it’s not a web tool). I’ve heard rumors that the guys behind MIT’s App Inventor are also working on a commercialized version of it.
- I have recently started working on a block-based programming language that I’m building with Google’s Blockly called Cycle (no relation to CycleJS, but I’ll probably end up changing my name out of respect for Andres). Cycle compiles directly to VueJS code, so you can think of it as at view-layer framework that a 10-year-old could pick up in an hour (as opposed to the weeks it takes most adults to pick up any other comparatively powerful framework). Eventually, I’d like to take a page out of Elm’s book and eliminate runtime errors (as well as the syntax errors already eliminated via blocks) with strict Haskell-like typing, but within the highly intuitive metaphor of types as shapes. The most Cycle can do now is a very simple To Do List, but I hope to be able to scale up to a full version of ToDoMVC within the next few weeks. From there, I’ll build Firebase integrations and other needed functionality to make incremental improvements towards practical usability.
I hope my list was useful to you! If there are other resources that have inspired you in this vein, please share them with me :)