Gallery of programming UIs
docs.google.com
docs.google.com
Exactly like Haskell. If Excel were impure, it would mean an expression in one cell would have the power to alter the value of another cell. So, in effect, a cell becomes a synonym for the expression it contains, rather than a -- possibly mutable -- reference to the value its expression evaluates to.
http://www.felienne.com/publications
Here is one of her more recent versions of the talk she gives on the topic:
I think she raises especially important points when she mentions that Excel is used everywhere, that it suffers from all the technical debt problems that regular software development suffers from, and that buggy Excel sheets have big consequences (the austerity paper bug comes to mind[0]). So even if "real" programmers don't want to program in it, it still should be taken seriously given its place in the world.
https://www.bloomberg.com/news/articles/2013-04-18/faq-reinh...
The idea was basically: you should be able to use different editing UIs for values of different types. The lowest common denominator is code as text, but you should be able to switch on different editing UIs for numbers, colours, graphics, record types etc. The second half of this video shows off some demos for all of these: https://www.youtube.com/watch?v=csRaVagvx0M
I also had some (far too) ambitious plans for stuff like type-driven drag & drop editing (mainly for function application), which I unfortunately didn't get to implement, but you can read about them in the report: https://github.com/lachenmayer/arrowsmith/blob/master/report...
By far the most intellectually stimulating work I've ever done! We're definitely not there yet, to paraphrase Alan Kay :~)
Add Sketchpad, and you'll have half a century.
What I mean by this, is the Brett-Victor style interactive programming is always some kind of visual GUI/game/shape drawing program. The majority of computer programs will need plugins e.g. to generate output statistics/visualizations to effectively debug visually.
The immediate use is generation of minimal test data (the least data that runs each possible execution path), but I think in general it could be useful for debugging; consider knowing that, for example, the function "Int Foo(Dict bar)" will (conditionally) access only a certain key on bar, or will (necessarily) always require a certain key, such that this kind of information is available as a tooltip when you mouseover the parameter.
If anyone has any ideas as to where/how I might be able to track down the actual SketchPad code I would love to hear it.
The https://en.wikipedia.org/wiki/TX-2, the machine SketchPad ran on, had 460KB of 36-bit memory, and it. ran. at. 400kHz. - yes, 400k instructions per second.
The CAD system that introduced the idea of the GUI, clipboard, OOP, and so many other things, ran only a little faster than the masked-ROM calculators you can buy for a couple dollars at the store down the road nowadays. It's kind of mind-blowingly awe-inspiring and yet unbelievably depressing.
I took the above from what I said last time SketchPad was mentioned (https://news.ycombinator.com/item?id=13938330).
On the one hand, this is the source code to SketchPad!!!
On the other hand... the scan quality is extremely low, and I'm planning on contacting the CHM to see if they can schedule a rescan at some point in the future - basically before the paper wears out, as there are currently no TX-2 emulators.
But this is awesome.
Some of the slides have annotations attached to them! These provide extra detail, or links to research papers.
Tap/click the gear icon at the bottom and select "Speaker notes", or press S.
Alternatively, if you clicked to open this in the editor view (https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bE...), you already should be seeing these notes just underneath each slide.
I do think that visual representations of code can be very helpful for analysis, especially if you can see the code running in the visual representation while you're debugging it. But for editing, I want the text view.
The other thing that looks really handy is the ability to use proper mathematical symbols, when that's appropriate for what you're doing. The point of those symbols, afterall, is to be a concise textual representation of the concepts. The problem is our input tools; a keyboard and mouse are really not suitable for a written language developed for hand-held pens and paper. That might change soon; the latest touch screens might make it possible to have a notebook-sized pad with very-high-precision pen input as a common third input device, next to our keyboards and mice. If that becomes common, languages and IDEs that make use of it might become common as well.
https://dspace.mit.edu/bitstream/handle/1721.1/41161/AI_WP_2...
ftp://publications.ai.mit.edu/ai-publications/2004/AIM-2004-005.pdf
http://bitsavers.informatik.uni-stuttgart.de/pdf/symbolics/L...
This is pre Dynamic Windows, which was introduced several years later.
Definitely add some pictures of Genera to the slideshow, including Zmacs and Document Examiner.
http://cargo.smidginsoftware.com/static/images/Making-Screen...
Thanks.
There is already a second version design, 2x better looking, not revealed yet. I also have some additional ideas that may improve the language further.
This is (a recent iteration) of Stella: http://sdwise.com/wp-content/uploads/2013/11/System-Dynamics...
Here's VENSIM: http://www.makrosimulation.de/Screenshot-Staatpublish.jpg
Matlab's SIMULINK is kind of a generalization of this paradigm (less convenient because of too many choices to make): http://ctms.engin.umich.edu/CTMS/Content/Suspension/Simulink...
Of all the UI interfaces, I thought this was one of the few that made the screen look less cluttered and easier to follow. I would have loved to see it elsewhere, even if only as a debugging tool.
Walking can actually help me think (pacing around when thinking, or trying to visualize), but it is an absent, inattentive walk - having to keep up the treadmill pace would be distracting (as might certain other UI interactions).
It was a really neat outliner which was extended to provide a pretty neat scripting environment, and eventually a web server. I used it to run a web site from my dorm room in the late 90s.
It's interesting to see org-mode (another outliner) now be another example of an awesomely extensible outline-based software system.
https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bE...
Oberon,
https://en.wikipedia.org/wiki/Oberon_(operating_system)#/med...
http://www.modulaware.com/mwovms.htm
Oberon System 3,
http://www.statlab.uni-heidelberg.de/projects/bertin/voyager...
http://www.ethoberon.ethz.ch/native/snaps/vnc.jpg
Active Oberon,
Maybe wiki-fy this? So that people can add source links?
Mid 90s, I spent some time trying to make a "structured editor" for VRML-97, where the scene graph and the textual representation were linked (two way editing). I didn't get very far. I'm glad others continue to work on these ideas.
I am not the blog author, so wished to give credit.
On a personal note, I'm particularly hostile to the Squeak/LabView style of flowchart programming. Once you get something even slightly non-trivial going, you can just feel your life force being drained by all of the scrolling and zooming and dragging and futzing.
For example, you create a high pass filter using all the necessary components and flows, and then you abstract it out as a black box called High Pass Filter, and can re-use as needed throughout the system.
Text files. They're pretty neat.
> Have you considered adding the IntelliJ family of products? If so, how come you didn't include them?
Same message, less hostile. Also, it's worth noting that OP is not the author of the blog post, so your question might still fall on deaf ears.
Not sure what's the idea here.