Imagine Codea is the first Programming Interface someone has ever seen...

How do you ramp that user up from 0 to 50 out of 10,000? (10,000 being completing and sharing 10 codea projects on the forums.)
3 reasons to imagine this:

  1. Very popular platform (iPad/iPad mini)
  2. First to market.
  3. Very inexpensive but great app.

So a person has some flickering interest in perhaps making something him/her-self, is that flicker strong enough to get $10 in? In 1 out of 1000, it might be. So that one person interested enough to pay, buys Codea. You’d wish that he or she would explore Codea and giddily tell friends how great it is.

Instead, that person quits codea in dismay and regret. Why?

The Getting Started icon opens a page with text and links to the Codea Wiki that has little appeal to a person at level 0.
The second section points to a manual putting an imagined tome of reading in front of that flickering interest.
The third section reminds the reader that examples are readily at hand, the person closes the getting started page and goes to the examples where…
The examples open to a screen full of gibberish to immediately extingish that flickering interest before they even notice the transparent unlabeled ‘play’ triangle hidden at the bottom far-right corner.


I’m not suggesting the price should be any lower. I’m not saying this program should focus on first time programmers. The asthetic choices Two Lives Left made in placing/presenting the ‘play’ element are theirs to make.

But, come on!?.. A getting started page with the first item being a picture with a huge arrow pointing at the ‘PLAY’ button, isn’t too much to ask. Maybe rearranging the examples so an active ‘game’ is first. Or, just putting a comment ‘box’ at the top of the first few examples saying “‘play’ button bottom right… scroll down for code”.

You’re looking into codea lite for the iPhone… so perhaps a free version of codea for the iPad & iPhone that just plays examples or ‘active game demos’ with parameter sliders that work(or not), and a look at the code behind it with out supporting changes…

Things like that might make Codea into the phenomenon it should rightfully be…

I’m with you on all of this. It is a daunting start, and many of the demo projects are either too sparse or too complex to be helpful.

It’s a pity because Codea is ideal for school projects, and a few schools are starting to use it.

I’ve been writing a series of Codea and Lua tutorials to try to bridge the gap, but it is a big job.

You are correct to some degree - the demo projects are fairly complex even for people with some coding experience. Lua is a fantastic language for beginners to pick up, but lets not kid ourselves that learning to code is easy - and requires a lot of time, effort and patience to get good at it no matter what learning resources are available.

I think your post is more about making this transition easier by giving a taster of Codeas potential without sucking the enthusiasm out of people by making their learning experience fun and accessible. Whilst I really love @Reefwing and @Ignatz tutorials, I do think there needs to be a level of ‘Noob’ exercises below this to teach the basics of coding.

All fairness to TLL, theres only 2 or 3 of them working part-time on Codea and I’d imagine they are fairly stretched - but lets not forget how far its developed in very short space of time. The in-app help has improved immensely and this discussion forum is worth its weight in gold - it just needs a few really basic (and short!) examples of different concepts to keep people interested and not over-awed.

@andymac3d @ignatz has been working on into level lua tutorials in the form of an ebook, that should help some newbies out. If TLL moves to a folder structure, it would be great to have some very basic projects that have additional goals for new people to add. It would be a great way to learn. When one tutorial was completed the next could be moved onto. Maybe this is something we could help TLL create for codea and get them included in the release?

Kind of like what @west did with his sidescroller. Explained it in the project and left some goals for people to add.

We could expand the wiki to do some of this. As I’m finding out, it’s really hard to pitch low level tutorials at the right level, when you’re not a beginner yourself (not that I claim to be expert!).

I think the most practical way most people can help is to contribute well commented projects that are suitable for adapting, ie the simpler the better.

I’m totally with arcsine on this, and I’ve written to Simeon a couple of times, but I appreciate he is busy.

If anyone wants to collaborate on this, I’ll pitch in to help. (Anyone? Anyone? Bueller?)

The folks at Two Lives Left have delivered on a spectacular level. I hope they recognize that Codea has unique opportunity.

My post is about capturing the curious & enthusiastic, but only in terms of one UI element…

My gripe is that since TwoLivesLeft chose not to make the ‘running the code’ control the first obvious user interface element, the ‘run’ control should be explicitly and firmly pointed out.

A few still frames from the wonderful codea video in the ‘Getting Started Section’ (or the whole video)…

A comment buffer in the first few examples to point people to running the code…

It’s just a user interface stumbling/road block many of us don’t recognize because we’re older/more experienced and less inclined to give up.

@arcsine I agree that the “Getting started” button should take users to a simple explanation of how to get a program up and running as quickly as possible. Providing links to the reference material is needed (and that’s the way some people learn) but others (particularly younger users) will want to jump right in. Maybe a couple of simple tutorials both as text, but also as a video walk through:

  1. Running your first program in Codea (Select tutorial, click run)
  2. Writing your first program (equivalent of hello world. Click create new project, enter project name. Under “–Do your drawing here” Type the following Text(“Hello World”, 300,300). Click run
  3. The promo video showing you what is possible

@Ignatz - I agree with you on the well commented projects. On another thread I commented about @Zoyt’s competition - maybe a step by step tutorial on creating a lunar lander game. The following steps might be:

  1. Place the ship sprite on the screen at a pre-defined position (use one of the pre-loaded sprite packs)
  2. Add x and y variables to set up and use these to position the sprite. Try different values of x and y (maybe use the iparameter, but this might be distracting)
  3. Set y=HEIGHT-100 and x=WIDTH/2 to position the ship near the top centre of the screen
  4. Add a y=y-1 in the draw loop (ship should move down the screen).
  5. Add in a tap function - if the current touch is BEGAN or MOVING then draw a second “Thruster jet” sprite at the x, y-offset location
  6. Modify 6 to introduce gravity (aside introduce equations of motion - could demonstrate parabola by retaining the previous frame (backing mode) and having an x=x+1 increment
  7. Add thrust when the screen is touched. This should be factored into the equations of motion
  8. Draw a line to represent the ground
  9. Test to see if the ship has gone below the line (this will be a test on the y coordinate plus an offset equal to half the height of the sprite). If it has, test the current speed of the ship - too fast then crash otherwise win
  10. Implement the “Crash” and “Win” screens (and maybe a start screen - introduce finite state machines)
  11. Add a fuel parameter - can only thrust if there is fuel in the tank. Display current fuel on the screen

This could then be expanded - different control methods (tilt for example), better graphics, animations, particle effects, a starfield background, horizontal movements, a landing zone, parallax scrolling background, etc, etc

I don’t have much time at the moment - feel free to make a start or I’ll have a go later. Or maybe, use the above as a guide and run it as a collaborative effort on the forum encouraging newer programmers to post the progress of each step?

@West - Here’s an example of an interactive Codea tutorial: http://twolivesleft.com/Codea/Talk/discussion/1745/planet-simulation-video-teaser%3A-height-and-shadows/p1
Another idea is to use the code over top app by Simeon and add tutorials to that.

@Zoyt - yeah, love that tutorial of @jmv38.

Not aware of the code over the top app - do you have a link?

@West - http://twolivesleft.com/Codea/Talk/discussion/660/codea-written-in-codea#Item_20

@Zoyt - cheers - interesting

I bought Codea just over a year ago cause my Dad told me about it and it looked cool so I got it for $5 and tried some stuff out. I was quite confused for a few days then just stopped using it in the whole. Only in these last few weeks have I actually learned something about Lua thanks to you guys on the forums and a visit to my Dad’s work (programer).

There needs to be an turtorial written in plain written in clean, clear, average joe english that takes you from “Hello World” through a light touch on MOST of the branches of Codea. Then they can learn the more complex details from there through the forums and wiki. For me, the examples don’t do anything but sit there and look pretty.

@Goatboy76 have a look at this - http://www.twolivesleft.com/Codea/Talk/discussion/2941/my-first-game-a-tutorial-for-absolute-beginners#Item_8

I’m aiming it at beginners and would appreciate your feedback on it

A new Getting Started page sounds like a good idea.

Agreed. It really is daunting for beginners.

If it helps, I’ve been writing a Lua ebook for first time users, still in progress, but it’s here

https://www.dropbox.com/s/qh1e7ft4rvhlpt2/Lua%20for%20beginners.pdf

I did this because Lua is the foundation for developing in Codea.

@ignatz i’ve found the ‘perpetual motion machine’: it is callled ‘Ignatz’! Congrats.