• Stars
    star
    165
  • Rank 228,906 (Top 5 %)
  • Language
  • Created over 9 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A collection of related articles, experiments and demos about futuristic kinds of programming

A new wave of programming

This page is a collection of links of articles, demos, experiments and more all around the idea of new interfaces and editors to program in.

This list was compiled by Martijn Brekelmans, a Dutch computer engineering student who's getting more and more inspired by "what's out there". I've compiled this list to be as accurate and free of negative judgement as possible.

Index of TLA's (Three Letter Abbreviations)

  • dsl - a domain specific language.

A domain-specific language is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language, which is broadly applicable across domains, and lacks specialized features for a particular domain.

  • ast - an abstract syntax tree. The underlying representation of any programming language.

an abstract syntax tree, or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language.

Quotes from Wikipedia

Articles

Typography in code

An article by Microsoft's research department, showcasing an editor made specifically to greatly enhance the readability of programs by means of typography.

typography

-- Author: Sean McDirmid, Microsoft Research

Domain specific languages

An article about the difference between traditional domain specific languages and notation. It argues that traditional domain specific languages aren't actual dsl's. Examples of real domain specific languages are math, music and chess notation.

emulating the English language—complete with nouns, verbs, and prepositions—is simply the language of the domain, not a truly domain-specific language. A truly domain-specific language is a new language designed for use in a particular domain, with a new vocabulary and grammar suited to the specific problem.

...

A key difference between using the language of the domain and a domain-specific language is that a true DSL—notation—is not only suited for expressing problems and solutions, but also for getting from one to the other.

-- Author: Eric Shull

Why programming languages use only one "view" and how to fix that

An article taking a different look at programming interfaces, discussing the usage of text as the primary interface for programming.

The more I think about 'program models,' the more our treatment of program source code seems bizarre. Why aren't the models of computer programs prior to their source code representations? Shouldn't program models be the basis for generating program views? Shouldn't we store models on disk and build views when using our programming tools? Shouldn't we pass models around the internet instead of views?

On a side note, for people interested in building multiple views on top of code, I made a JavaScript library that synchronizes objects over multiple webpages, an array in your source code can be visualized as an unsorted list on your phone! check it out here

-- Author: Weston Beecroft

Demos

Conspire

Conspire is an editor developed for an incredibly ambitious game by duangle game studios. Conspire is deceivingly simple and best defines the concept of "graphical macros". Similar in ideology and usability as Moonchild. Conspire, unlike most of the other editors shown here is based on a lisp

Conspire

-- Author: Leonard Ritter, Duangle

Moonchild

Moonchild is an experimental editor which is able to replace parts of your source code with alternative graphical representations. A sliding number widget, rendering markdown in your source code, unit tests that run while you're writing functions, and more!

you can check out my fork of Moonchild, which contains a live editing environment in the live branch. If you're interested in using this, you can contact me via [email protected]

Moonchild brings source code to life. It's a toolkit for experimenting with new kinds of programming interfaces. It's based on CodeMirror, a web-based text editor. Moonchild adds a framework which makes it easy to create plugins which modify and extend the source code presentation.

Demo video here

Moonchild

-- Author: Patrick Dubroy, cdglabs

Jetbrains MPS

Jetbrains' MPS is different compared from others, because it's the only one in this list that has a stable release backed by a company! It is by far the most stable editor included in this list.

MPS differs with most other editors in this list because it's not targeting the presentation layer, it's targeting the language itself. Languages defined using Jetbrains' MPS are not textual languages, they're editable structures. This has some advantages, such as not having to deal with a parser at all and of course the embedding of non-textual structures in the source. Unfortunately, it also comes with a disadvantage; MPS Java is not the same as real Java, by rebuilding and then extending the language itself, backwards compatibility with the source language is thrown away.

That said, MPS has many original ideas in editing and presentation of program source files. It has by far the most documentation, and there are even plenty of videos on MPS available on their own website, and YouTube. Because these videos are plentiful, instead of linking to some of them, I'll invite you to visit their website to see for yourself.

With MPS you can design your own extensible DSLs and start using them right away to build end-user applications. Unique technology of projectional editing allows to overcome the limits of language parsers, and build much richer DSL editors, such as ones with tables and diagrams. Along with the editors, you can write comprehensive generators from your DSL to multiple target languages, be it another MPS DSL, or any of the "base" languages such as Java, C, XML, and other.

Be wary however,

-- Authors, developers at Jetbrains

Vogo

An experimental direct manipulation interface for Turtle Graphics.

Vogo adds a direct manipulation user interface to Turtle Graphics. This takes on an entirely new approach to programming. This is programming without even touching text.

-- Author: Matthias Graf

Recursive Drawing

Recursive Drawing is an exploration of user interface ideas towards the development of a spatially-oriented programming environment.

-- Author: Toby Schachman

Shadershop

Shadershop is an editor for directly manipulating mathematical functions to aid in the process of designing of shaders. Shadershop is open source, and you can try it right now inside your browser

Shadershop

-- Author: Toby Schachman

Light table

In a collection like this, Light Table cannot be forgotten. You are likely familiar with Light Table already.

Light table is one of the first non-experimental usable editors that tried to innovate in the area of programming editors. It comes with features like live-editing, showing your data flow through your program, inline evaluation and far more.

-- Authors: Chris Granger, based on amount of Github commits, Gabriel Horner and Jamie Brandon. This is a large open source project with a total of 56 contributors.

Videos

Ken Perlin's student lecture

The first half of this talk is mainly about what inspired Ken Perlin to get into computer graphics. The second half of this talk is about the tool used in this talk. It's a tool inspired by blackboards and childrens' shows. Drawings made in this program will turn to life. Examples of drawings embedded in this editor are movies, diagrams, 3d objects, vases, birds, graphs, butterflies that follow any light source, sound, shaders and much much much more. It is intended to go open source at some point in the future.

People, pages and organizations to watch

Terry Davis

No, I'm not kidding when including Terry Davis. Terry Davis has some very legitimate ideas on how to improve the current state of programming. For those of you who don't know him, he's a controversial software developer. We won't go deeper into any controversies surrounding him or his project, templeOS.

Terry Davis is a dedicated software developer who has spent the last 12 years building his own operating system from scratch. This operating system, templeOS, is inspired by the Commodore 64.

Because templeOS has been built from scratch, Terry is not restrained by any constraints imposed by any other operating system out there. It's built around exploration and experimentation.

Terry Davis has a youtube account on which he frequently posts videos about his operating system. Here is TempleOS's official site

To get started on his work, I recommend checking out this introductory article on TempleOS first.

A constructive look at TempleOS

Chris Granger

Author of Light Table. He's now working on Eve, his next project. He has many ideas, blog posts and videos on innovating inside the area of programming.

Future programming workshop

The future programming workshop is a top-notch workshop for students who want to learn how to cook on a budget. Workshop on the future of programming.

There are many interesting videos demos and talks available on their website.

I wish to go (or even speak) here some day!

Microsoft Research

Microsoft has a large research department, spending lots of time and brainpower on all kinds of areas. Here are a few articles to get you started.

Communication Design Labs

The CDG labs, or communication design labs is a collection of highly intelligent and motivated people working together on a large collection of very interesting projects.

The previously mentioned Moonchild and Shadershop projects come from the CDG labs.

At the moment, their website doesn't have any content on the front page, but you can check out their github repository to get a feel for what they're working on.

Bret victor

Bret Victor has spread many ideas through the internet, touching on the topics of education, interface design, graphical programming languages, game design, art and more.

Whenever you're looking at future programming ideas, you'll find Bret Victor as a cited source.

Bret's site is a huge repository of very well researched ideas and experiments. Out of any people on this site, I recommend watching Bret Victor most.

Bret has published several inspiring talks, as well as a few high-quality essays. I recommend reading and watching them all.

Demos:

Talks:

Essays:

Older related projects

It's paradoxical and ever so ironic how these old projects are a great source of inspiration for editors and interfaces right now. These projects are better implementations of software used today, only this software is at least twice as old as I am.

The mother of all demos, 1968

Anyone reading this has probably already seen the mother of all demos. The mother of all demos is a presentation of Douglas Engelbart's vision turned to reality. It showcases multiple representations for a single type of data. The mother of all demos was way ahead of its time, and still ahead of today in some areas.

MIT's Genesys, 1970.

Sketchpad

Alan Kay's commentary on sketchpad

Sketchpad was developed by Ivan Sutherland.

Programming with on-line graphics

By Bert Sutherland, Ivan's brother.

Smalltalk

Smalltalk is the programming language brought to you by Xerox Parc. I would love to include more about Smalltalk in this compilation, unfortunately, I know barely anything about it.

More Repositories

1

brainstorm

Project-brainstorm is a multi-purpose note-taking application which excells at free writing, prototyping, task lists and cheat sheets
CSS
232
star
2

scrybble

Obsidian sync plugin for scrybble
TypeScript
31
star
3

meteor-friends

A package for meteor that adds the functionality of sending friend requests, accepting/denying requests and removing friends.
JavaScript
24
star
4

nvim-redux

NVim integration for redux using telescope and ripgrep
Lua
17
star
5

Choice.js

Better random library for javascript
JavaScript
16
star
6

infinite-canvas

An infinitely expanding chunked canvas buffer for your infinite drawing needs!
JavaScript
16
star
7

K70-RGB-shader-animations

View shadertoy shaders on your keyboard, save them and use them as your keyboard background animation!
JavaScript
10
star
8

tokiwa-roam-theme

A serene theme for Roam Research
CSS
5
star
9

quippet

A plugin for the atom editor to easily create new snippets
CoffeeScript
5
star
10

scrybble-site

The front and back-end of scrybble.ink
JavaScript
5
star
11

twitch-chat-wordcloud

Generate a real-time wordcloud from any twitch chat channel
Python
4
star
12

paper

Yhe future of wallpaper managers
JavaScript
3
star
13

note-taking-experimentation

A repository for experimenting with different ways of taking notes and representing knowledge
JavaScript
2
star
14

llm-coder-eval

Evaluate an LLM for day-to-day coding assistance fitness
2
star
15

Object.remote

Interacting with JavaScript objects on a remote webpage, such as on a mobile phone, laptop or pc.
JavaScript
2
star
16

onByte

C++ game engine
Makefile
1
star
17

autotest

HTML
1
star
18

screencap

Make quick captures for the web!
JavaScript
1
star
19

OOP-logic-simulator

Task for school, making a logic simulator using OOP-patterns
C++
1
star
20

azeirah.github.io

Repo!
JavaScript
1
star
21

Scrybbling-together

What if we could hand-write websites from a ReMarkable?
1
star