Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread Steve Wart
True. If I'm writing code I probably want to be sitting at a desk to do it.

And I imagine Gauss or Euler sitting at a desk in the middle ages
writing on parchment, not trying to scribble something down on a
notebook while barreling down the streets in their equivalent of a
daily commute.

Still, I think programming needs to be interactive. I don't think we
need to give up text to give up keyboards. 90% of the stuff we type
can be predicted by what we have already written in the past.

Maybe these new devices really are for everyone else. Cubicles are
good enough for programmers :)

On Mon, Dec 20, 2010 at 11:07 AM, Brian Gilman brian.gil...@gmail.com wrote:

 Clearly there are some gaps in the programming models of this new era.
 How can people express themselves in a mathematical notation that
 isn't bound to 19th century keyboard technology?

 I think that the fundamental problem is that keyboards are good for entering 
 text, and text scales very well.

 Artists and musicians tend to heavily favor visual node based programming, 
 which is a better fit for mobile platforms.  Just drag nodes out, and draw 
 connections.  For non-programmers, being able to see the relationships 
 between visual blocks of code is much more intuitive than text.  The problem 
 is, that it doesn't scale very well.  Once a program reaches even a moderate 
 level of complexity, the graph of nodes end up looking like a pile of 
 spaghetti.  If you want to rearrange your program, you end up having to 
 disconnect and reconnect tons of nodes.

 For systems without keyboards, spatial representation of code seems like the 
 intuitive direction to go, and would work regardless of whether the user is 
 using a multitouch tablet, or is wearing a pair of AR glasses.  Getting that 
 to scale however, seems like a very difficult problem.


 ___
 fonc mailing list
 fonc@vpri.org
 http://vpri.org/mailman/listinfo/fonc


___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread David Leibs
To see how far you can scale visual node programming I recommend looking at 
Pure Data, Quartz Composer, and LabView. Also interesting is Little Big Planet.

On Dec 20, 2010, at 11:07 AM, Brian Gilman wrote:

 
 Clearly there are some gaps in the programming models of this new era.
 How can people express themselves in a mathematical notation that
 isn't bound to 19th century keyboard technology?
 
 I think that the fundamental problem is that keyboards are good for entering 
 text, and text scales very well. 
 
 Artists and musicians tend to heavily favor visual node based programming, 
 which is a better fit for mobile platforms.  Just drag nodes out, and draw 
 connections.  For non-programmers, being able to see the relationships 
 between visual blocks of code is much more intuitive than text.  The problem 
 is, that it doesn't scale very well.  Once a program reaches even a moderate 
 level of complexity, the graph of nodes end up looking like a pile of 
 spaghetti.  If you want to rearrange your program, you end up having to 
 disconnect and reconnect tons of nodes. 
 
 For systems without keyboards, spatial representation of code seems like the 
 intuitive direction to go, and would work regardless of whether the user is 
 using a multitouch tablet, or is wearing a pair of AR glasses.  Getting that 
 to scale however, seems like a very difficult problem. 
 
 
 ___
 fonc mailing list
 fonc@vpri.org
 http://vpri.org/mailman/listinfo/fonc


___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread Julian Leviston

On 21/12/2010, at 4:51 AM, Steve Wart wrote:

 So is there anything interesting from a FONC perspective in mobile
 devices? It may be a coincidence that Apple's success with the iPhone
 is to a large extent due to a Smalltalk-derived C dialect, but most
 people who know Smalltalk would agree that it's more like C than it is
 Smalltalk. Apple's certainly made it clear that they've got little
 appetite for dynamic languages on iOS (other than web apps), but the
 reality is that keyboard-less mobile devices are not suitable for
 programming activities at all, from any manufacturer.

I wouldn't really agree with this. Have you used Objective-C? I code in it 
daily, and Apple's frameworks and particularly the design patterns baked 
inherently into those frameworks make it so Smalltalk-like that I'm rather 
surprised you would say something like this. It *is* a dynamic language 
(assuming I know what you mean by dynamic here) - in other words, it uses live 
realtime message-sending.

If you look at what Apple are doing with Grand-Central Dispatch, LLVM and their 
other realtime optimisation-focussed frameworks, you begin to see that they're 
very focussed on getting as much performance as they can from these devices, 
hence the focus on Objective-C (which is as close to smalltalk as we can get 
while being highly portable and optimised at the same time).

I'd wager that just like switching architectures from PowerPC to Intel, if 
there was something better and more efficient, Apple would most likely have no 
issue or difficulty with switching to something else. This is kind of 
irrelevant, though, to FONC, because FONC obviously needs to be pure.

Other interesting things are happening in other places... have you seen what 
Gemstone have done (is doing) with their implementation of their persisted 
distributed Ruby (which sits on top of their Smalltalk implementation). If any 
artefact FONC brings is relevant, it will obviously need to address persistence 
properlly...  (The not-yet-finished ruby implementation is at 
http://www.gemstone.com/products/maglev)

I'm not actually sure how relevant something that doesn't join in the 
conversation rather than try to reinvent EVERYTHING is, though... what I mean 
by that, is Apple have got very very good at layering their architecture with 
replaceable bits... I think this approach is infinitely useful, because it 
means if any single piece needs fixing, replacing or modification, then it can 
be re-tooled relatively easily and quickly. It's proper objected-orientedism. 
(For want of a better word).

The fact that FONC have built O-META as a base artefact brings me immense 
excitement in relation to this, because O-META couldn't be a more functional 
implementable piece in the puzzle to the existing context of coding... the 
potential here is huge... being able to plug in various pieces of code in 
various languages is an amazing idea. (Assuming I'm properly interpreting what 
its potential is, though).

Julian.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread Julian Leviston

On 21/12/2010, at 6:07 AM, Brian Gilman wrote:

 I think that the fundamental problem is that keyboards are good for entering 
 text, and text scales very well. 
 
 Artists and musicians tend to heavily favor visual node based programming, 
 which is a better fit for mobile platforms.  Just drag nodes out, and draw 
 connections.  For non-programmers, being able to see the relationships 
 between visual blocks of code is much more intuitive than text.  The problem 
 is, that it doesn't scale very well.  Once a program reaches even a moderate 
 level of complexity, the graph of nodes end up looking like a pile of 
 spaghetti.  If you want to rearrange your program, you end up having to 
 disconnect and reconnect tons of nodes. 
 
 For systems without keyboards, spatial representation of code seems like the 
 intuitive direction to go, and would work regardless of whether the user is 
 using a multitouch tablet, or is wearing a pair of AR glasses.  Getting that 
 to scale however, seems like a very difficult problem. 

If you're interested in music, you might know bout the Reaktor, Max/MSP and 
Reason programs.

Their method of programming is indeed this. They are missing something (the 
idea of scale), but I very much like this.

Check them out if you haven't already. I personally love writing code with 
words, but I don't think that this approach is revolutionary enough. I quite 
like the Self language approach to objects and programming (to a degree, 
though, it's still keyboard-tied), but the problem with GUI-based coding system 
such as these is that you ALWAYS have to use the mouse.

This doesn't address the power users. They need to be addressed. Having 
keyboard-based coding systems addresses the power users, but doesn't really 
address the n00bs. I think everyone needs to be treated as a n00b, because 
potentially everyone *IS*... we need COMPLETE self-documenting code that 
explains how every part of itself works, in exactly the same attitude that the 
COLA boostrapping attitude exhibits.

Even Apple, arguably the best asset the entire world presently have in terms of 
presenting things simply and easily, in my opinion fail quite hard at trying to 
explain objects to n00bs... their documentation is great, but they miss huge 
chunks out of things when explaining. If documentation was literally baked into 
the objects themselves, then the process of introspection could be used for 
education. Teaching someone how to use the system and learn about it would take 
about the same amount of time as teaching someone the syntax of smalltalk - 
it's a simple, easy grammar.

The powerful ideas are the connecting ones, IMHO.

Julian.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread Steve Wart
On Mon, Dec 20, 2010 at 3:54 PM, Julian Leviston jul...@leviston.net wrote:

 On 21/12/2010, at 4:51 AM, Steve Wart wrote:

 So is there anything interesting from a FONC perspective in mobile
 devices? It may be a coincidence that Apple's success with the iPhone
 is to a large extent due to a Smalltalk-derived C dialect, but most
 people who know Smalltalk would agree that it's more like C than it is
 Smalltalk. Apple's certainly made it clear that they've got little
 appetite for dynamic languages on iOS (other than web apps), but the
 reality is that keyboard-less mobile devices are not suitable for
 programming activities at all, from any manufacturer.

 I wouldn't really agree with this. Have you used Objective-C? I code in it 
 daily, and Apple's frameworks and particularly the design patterns baked 
 inherently into those frameworks make it so Smalltalk-like that I'm rather 
 surprised you would say something like this. It *is* a dynamic language 
 (assuming I know what you mean by dynamic here) - in other words, it uses 
 live realtime message-sending.

I used Objective-C pretty much every day for the past 2 years, but for
the past 6 months I've been coding in Smalltalk (good old
VisualWorks/Envy and GemStone) again. Objective-C has a static
compiler and an interesting runtime (with Smalltalk-like message
sends), but the compiler and the runtime are very distantly separated
in time. You use GDB to debug your code. It's not a dynamic language.

Objective-C is a good language for what it is. I don't think it's a
replacement for C++ or Smalltalk, but it obviously has a strong niche
in iOS, and Apple's done as an amazing job of designing their APIs as
they have in designing the consumer-facing bits. I think the language
has played a big part in the success of both NextStep and the iPhone
and it's clearly suitable for building complex systems.

 I'm not actually sure how relevant something that doesn't join in the 
 conversation rather than try to reinvent EVERYTHING is, though... what I 
 mean by that, is Apple have got very very good at layering their architecture 
 with replaceable bits... I think this approach is infinitely useful, because 
 it means if any single piece needs fixing, replacing or modification, then it 
 can be re-tooled relatively easily and quickly. It's proper 
 objected-orientedism. (For want of a better word).

I agree. I think that FONC shouldn't be tied down to an
implementation, but ultimately we have to deploy to some hardware. I
have been very focused on iOS and have struggled with geting Squeak
and Croquet to expose the low-level bits in a productive way. And in
the end I decided if I'm going to do iOS programming, there's no point
in fighting the platform, and so I do it in Objective C where I can
and C++ where I must.

In fact, I don't really care about platform independence. At all.

But you must know the edit, compile, download loop is not the most
efficient way to be doing things. We do it because the platform
demands it, and it's the best way to deliver quality to the end-user.
The point of Smalltalk to me is that the programmer is the end-user,
and very few of the dynamic languages I've seen really live up to that
standard.

[other interesting stuff snipped]


 The fact that FONC have built O-META as a base artefact brings me immense 
 excitement in relation to this, because O-META couldn't be a more functional 
 implementable piece in the puzzle to the existing context of coding... the 
 potential here is huge... being able to plug in various pieces of code in 
 various languages is an amazing idea. (Assuming I'm properly interpreting 
 what its potential is, though).

I'm excited about the potential too.

I was hoping to build a NodeBox-like environment in Squeak. I
struggled getting an OMeta parser to work in Squeak and getting the
OpenGL context working (thanks Croquet) but it wasn't quite what I had
hoped for. Now I'm thinking maybe it's better to look at WebGL and
OMeta, but my heart's not really in it.

I'm probably too old and unlettered to become a mathematician, but I
love geometry. All I really want to do is instill that in my kids and
give them the tools to explore on their own, without having to be
consumers all the time. Unfortunately the tools that can expose the
really amazing power of modern computing hardware are still too
complicated for us to share, and the productive tools I'm used to
can't get down to the level I want, at least not yet. It seems there
is so much scaffolding we never actually get around to doing the
actual building.

Why can't the scaffolding be made of the same stuff? OMeta showed you
can do that with compilers, Smalltalk showed you can do it with, well
an OS. The stuff I'm trying to do is pretty simple in comparison, but
I'm still not sure I'm asking the right questions.

Cheers,
Steve


 Julian.
 ___
 fonc mailing list
 fonc@vpri.org
 http://vpri.org/mailman/listinfo/fonc



Re: [fonc] What Should The Code Look Like? (was: Show Us The Code!)

2010-12-20 Thread Steve Wart
On Mon, Dec 20, 2010 at 5:07 PM, Julian Leviston jul...@leviston.net wrote:

 On 21/12/2010, at 12:00 PM, Steve Wart wrote:

 I used Objective-C pretty much every day for the past 2 years, but for
 the past 6 months I've been coding in Smalltalk (good old
 VisualWorks/Envy and GemStone) again. Objective-C has a static
 compiler and an interesting runtime (with Smalltalk-like message
 sends), but the compiler and the runtime are very distantly separated
 in time. You use GDB to debug your code. It's not a dynamic language.

 I'm interested in what you mean by dynamic here.

 The fact that I can choose my selectors to send messages with at runtime 
 would make it dynamic in at least one sense, no?

Sure. It's duck typing according to the way most people talk about
it these days. To me a dynamic language has runtime access to the
compiler, at least to the point you can build a REPL.

Objective-C has the potential to take on more of Smalltalk's dynamic
features. The Etoile project has some good ideas for integrating
libclang into the runtime, so you could fake it out. And since
Smalltalk is also faking it at a certain level, it's hard to quibble
with smoke and mirrors.


 It's theoretically not dynamically typed, but the id type kinda makes it 
 fairly dynamically typed.

 This wikipedia entry seems to think Objective-C is dynamic.

 http://en.wikipedia.org/wiki/Dynamic_programming_language

I never read it. But I don't agree with everything I read either :)

The thing about Objective-C is that it's 2 parts, the language and the
runtime. A lot of decisions are deferred until runtime, but there's
nothing stopping you from sticking 0x0BADF00D into an id pointer and
having your program crash. Dynamic languages shouldn't do that.

Cheers
Steve


 Julian.
 ___
 fonc mailing list
 fonc@vpri.org
 http://vpri.org/mailman/listinfo/fonc


___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc