Typo correction in the "about" section

18 views
Skip to first unread message

Egg Syntax

unread,
May 18, 2017, 8:59:40 PM5/18/17
to Augmented Programming
For whoever moderates the group:

The about section links to http://joshondesign.com/2012/03/14/sacred-cows-2 , which is invalid. The corrected link is https://joshondesign.com/2012/04/14/sacred-cows-2

Just wanted to let someone know. Just found the group, and looking forward to reading back through the archives!

Jake Brownson

unread,
May 19, 2017, 3:40:14 AM5/19/17
to Augmented Programming
Updated as requested.

Joshua Marinacci

unread,
May 19, 2017, 11:31:11 AM5/19/17
to augmented-...@googlegroups.com
Oh, hey. I forgot I wrote that. :)

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

Egg Syntax

unread,
May 19, 2017, 11:51:22 AM5/19/17
to augmented-...@googlegroups.com
I really enjoyed that one and the initial open letter. Shame people were so thoughtlessly reactionary on Reddit/HN. Have you written more stuff on the subject?

Incidentally, a couple of years ago a friend and I created some experiments based on really similar ideas. We got interested in whether you could adapt mind maps -- a concept that's usually used for really vague unstructured idea capture -- into an IDE which would be a direct expression of the AST. The idea was that you could start a mind map in the traditional sense, doing informal capture of requirements, architecture, and ideas, gradually building out into more and more detail deeper in the graph, with the outermost layers being actual code. We were after a lot of the same advantages you mentioned, and you also thought of some benefits and use cases that hadn't occurred to us. We ended up dropping it to focus full-time on an unrelated startup, but I still think it's a promising idea. In addition to all the benefits you discuss, doing it as a mindmap (with hiding/expansion of subtrees, of course), lets you leverage all the heavily optimized spatial memory of the human brain, as well as making smart use of color, graphics, etc. My interest in that project is the main thing that made me excited about this group when I ran across it.

On a semi-related note: I've been writing exclusively Clojure/ClojureScript for a couple of years now, and at this point it seems crazy to me to use a programming language that's NOT its own AST. Among other things, 80%+ of the editing I do is moving/changing/creating/deleting s-expressions, not characters or even tokens. Some good animations of two different styles of structural editing for Lisps:


You may be well aware of that stuff by now, I realize that the articles were your thoughts as of half a decade ago, but thought I'd pass it along :)


On Fri, May 19, 2017 at 11:31 AM, Joshua Marinacci <jos...@marinacci.org> wrote:
Oh, hey. I forgot I wrote that. :)
On May 18, 2017, at 5:59 PM, Egg Syntax <eggs...@gmail.com> wrote:

For whoever moderates the group:

The about section links to http://joshondesign.com/2012/03/14/sacred-cows-2 , which is invalid. The corrected link is https://joshondesign.com/2012/04/14/sacred-cows-2

Just wanted to let someone know. Just found the group, and looking forward to reading back through the archives!

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsub...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsub...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.

Ken 'classmaker' Ritchie

unread,
May 20, 2017, 10:45:39 AM5/20/17
to augmented-...@googlegroups.com
If you substitute "object models" for "mind maps" in your notes (below), you'd be driving what was the "Together(TM)" product line, beginning in the 1990's with Together/C++ and evolving into Together/J and Together/CC (Control Center). 

Editing the object model diagrams caused immediate code rewrite, and editing the code made immediate changes in object models. Working in either direction, all visible presentation content (code, diagrams, property sheets, etc.) refreshed automatically. 

Then TogetherSoft Corp became one of the founding partners of the Eclipse Foundation. Some of the developers went on to build the IntelliJ(TM) IDE. 

Cheers,
--Ken ;-)

Ken 'classmaker' Ritchie (Atlanta, GA)


On May 19, 2017, at 11:51, Egg Syntax <e...@novonon.com> wrote:

I really enjoyed that one and the initial open letter. Shame people were so thoughtlessly reactionary on Reddit/HN. Have you written more stuff on the subject?

Incidentally, a couple of years ago a friend and I created some experiments based on really similar ideas.   [*] We got interested in whether you could adapt mind maps -- a concept that's usually used for really vague unstructured idea capture -- into an IDE which would be a direct expression of the AST. The idea was that you could start a mind map in the traditional sense, doing informal capture of requirements, architecture, and ideas, gradually building out into more and more detail deeper in the graph, with the outermost layers being actual code.  []  We were after a lot of the same advantages you mentioned, and you also thought of some benefits and use cases that hadn't occurred to us. We ended up dropping it to focus full-time on an unrelated startup, but I still think it's a promising idea. In addition to all the benefits you discuss, doing it as a mindmap (with hiding/expansion of subtrees, of course), lets you leverage all the heavily optimized spatial memory of the human brain, as well as making smart use of color, graphics, etc. My interest in that project is the main thing that made me excited about this group when I ran across it.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.

Joshua Marinacci

unread,
May 23, 2017, 1:00:00 PM5/23/17
to augmented-...@googlegroups.com
Thanks for the links.  Yeah, I’ve been thinking about ways to get past ASCII text on disk for a while. There is a huge resistance to it. I’d love to devote a year to researching it, but I don’t think it’s possible to create a startup around it. It’s very hard to get people to pay for development tools anymore, or to switch to a new language. *le sigh*

I have written a few more blogs on the topic, and I have some unreleased prototypes. My general goal is to get people to think of programming systems, not just the syntactic language. The debugger, the module repository, the documentation.

Third part of typographic programming

parsing

A better module system

Has software gotten better or worse over the last 40 years

APL and Program Notation


I’ve also got a few unreleased prototypes. One prototype is to render functions and global variables as nodes (rectangles). Inside the function you are still editing text, but outside the function level you can drag them around, group them, subclass them, rename variables, etc. Something that is halfway between a node editor like Quartz Composer and traditional IDE. I figured this would be a level to experiment at.

Another idea is to take a step back and consider what a non-programming professional would want out of a language (like a research scientist or engineer). I’ve started building a simple language using Ohm to do arithmetic. The twist is that complex units are built into the language syntax.  Ex:   How long does it take for Superman to fly around the world if he is as fast as a speeding bullet. The fastest bullet commonly available travels 4000 ft/s on exit from the barrel, so the answer is "earth.radius * 2 * pi / 4000 ft/s as hours”. This is a simple syntax that people understand, but preserves the units and does all of the conversions automatically.   The next step is expanding this to a multi expression document mixed with prose. So it’s not programming, it’s a live reactive document. But secretly, it's programming. :)


I hope you are all having a good week.

- Josh






To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.

Joshua Marinacci

unread,
May 23, 2017, 1:11:46 PM5/23/17
to augmented-...@googlegroups.com
What happened? Why don’t we use these sorts of model <-> code tools anymore?

John Carlson

unread,
May 23, 2017, 1:19:35 PM5/23/17
to augmented-...@googlegroups.com
I think turning the desktop into a programming by demonstration environment is a good idea, but requires buy in from the apps and the toolkits, I believe.   You would have a system recorder as a program, with a reversible debugger (undo for all apps, plus forward cut).   There would be a special desktop object for selectors/ifthenelseifelse

What would it take to do this?  Can one do it with aspects?

I've already done it as a single app, just demonstrating among multiple apps would be interesting.

You might have to have multiple instances of an app, particularly the selectors and calculators apps and a way to manage them (hide/show ops in the recorder).

How far is apple with this?

John

To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsubscri...@googlegroups.com.

To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsubscri...@googlegroups.com.

To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsub...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

John Carlson

unread,
May 23, 2017, 1:41:54 PM5/23/17
to augmented-...@googlegroups.com
Java and the web (web especially) happened.  When you are limited to text and images, it's hard to do much.   Managers went full bore into the web and wouldn't support anything else, largely due to training expense.

Sigh.

John

To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsubscri...@googlegroups.com.

To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsubscri...@googlegroups.com.

To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsub...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Augmented Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-programming+unsub...@googlegroups.com.
To post to this group, send email to augmented-programming@googlegroups.com.
Visit this group at https://groups.google.com/group/augmented-programming.
For more options, visit https://groups.google.com/d/optout.

Joshua Marinacci

unread,
Jun 5, 2017, 12:59:49 PM6/5/17
to augmented-...@googlegroups.com
On May 23, 2017, at 10:19 AM, John Carlson <yott...@gmail.com> wrote:

I think turning the desktop into a programming by demonstration environment is a good idea, but requires buy in from the apps and the toolkits, I believe.   You would have a system recorder as a program, with a reversible debugger (undo for all apps, plus forward cut).   There would be a special desktop object for selectors/ifthenelseifelse

Yeah, it does require buy in from the OS.  Apple got fairly far with AppleScript bindings, but they seem to have lost interest about 5 years ago. They also lost interest in QuartzComposer and any other devtools that aren't a part of XCode.

What would it take to do this?  Can one do it with aspects?

They ideal way would be to build it into the application programming paradigm by structuring all apps around messages, ala Smalltalk.  One of my ideas was this thought experiment. What if you could build an OS from just database queries. Under the hood there would be a filesystem and kernel and the other usual things, but from the application programmer's perspective it would just be database queries with a few headless services. 

Here's an example. Consider an email program.  It has a text editor + input fields for writing new emails, which is bound to attributes of a document. The inbox is a list of email documents whose 'read' property is false. The sidebar is a list of folder documents, or could be the union of all tags added to all emails.  Unread counts for each folder can easily come from the database. The database has live queries so when a new document is added by some other mechanism the email app instantly sees it. The same with sending emails. Putting an email into the sent folder (or adding a 'sent' tag) marks it for sending. Under the hood there are headless processes which handle the actual SMTP, IMAP, GMail connections. They read and write only to the database.

The advantage of such as system is threefold.    First, not only is the email app easy to write, but anyone else can write their own email app reading and writing from the same database. Two: adding more email services is as easy as writing new headless processes which also write to the same database. Want Yahoo email? You don't have to modify the OS or the primary email client, just drop in a new processing module. Three: genuinely new features can be added with new processing modules.  Want to write an AI that will detect and automatically unsubscribe you to mailing lists? You can do it, with your only interface to the system being DB queries, and it will magically work with anything else built on the system (or at least won't cause problems with other systems that aren't built for it).

Finally, if we have this system then building a user programming system on top becomes easy.  Suppose I'm a power user, but non-programmer. I installed a smart thermometer at the boy scout lodge that I support. It's a legacy thermometer without an api, but it will email me the temperature every hour.  With this db based system I could easily write a tiny script, or even some sort of a workflow system that will grab emails from the thermometer, hide them from my inbox (since I never want to see them personally), generate a graph of the data that is emailed out once a week, and send an SMS if the temperature ever goes over a threshold.  Conceptually this is very simple and could be understood by a non-programmer.  The reason no one can build it today is the problem of integrating with the various services.  


Wow. This email has gotten a lot longer than I originally expected.

- J
To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.

Joshua Marinacci

unread,
Jun 5, 2017, 1:06:01 PM6/5/17
to augmented-...@googlegroups.com
In my mind, the thing holding us back is that everything is stored as ascii text on disk. All of our tools assume this, so building new tools is very difficult.  

I worked on the NetBeans GUI builder for a few years. Under the hood the visual editor generated a graph structure describing the GUI. This structure was stored on disk as a graph (XML file) with the expectation that you would never edit it directly, only through the GUI.  

Developers hated this. By storing it as something other than ASCII text they felt we were 'locking them in' and removing the freedom to edit however they wanted. This was despite the fact that it was a graph encoded as XML, thus editable by hand or with other tools if you really wanted to. Plus the schema was documented. It was an open format, just not 'code' in the way developers wrote their Java.

Our compromise was to generate Java along with the XML, and put it into areas of the class code marked 'do not touch'. Even though this was *way* uglier and resulted in code that you couldn't reasonably edit by hand anyway; but developers preferred it.  Ironically: a few years later many Java devs moved to Android where you pretty much *had* to write XML by hand for your layout. 

Moral of the story: developers are irrational humans... just like everyone else. 

Still, I feel like an interoperable graph structure on disk would enable us to explore many new areas of programming that remain untouched.


-j

To unsubscribe from this group and stop receiving emails from it, send an email to augmented-progra...@googlegroups.com.
To post to this group, send email to augmented-...@googlegroups.com.

John Carlson

unread,
Jun 5, 2017, 5:17:37 PM6/5/17
to augmented-...@googlegroups.com
Sure, as long as I could undo commits.

I can't stand SQL however, and prefer bash.   I think you just reinvented bash/MH, albeit with long running processes, so slightly different.

What do people think about writing bash with long running processes and undo?

John

John Carlson

unread,
Jun 5, 2017, 5:39:13 PM6/5/17
to augmented-...@googlegroups.com

David Barbour

unread,
Jun 5, 2017, 11:00:45 PM6/5/17
to augmented-...@googlegroups.com
Chris Granger's Eve project essentially works like you describe. As does functional relational programming in general.

Reply all
Reply to author
Forward
0 new messages