167 comments

[ 3.2 ms ] story [ 114 ms ] thread
I thought Apple would never approve any type of simulator, virtual machine, or app creation platform for iOS itself, since it could be used to generate apps that might not conform with their guidelines. How did they get around this?
They don't explicitly mention this in the video, but perhaps the games cannot be exported? So they only work within the simulated environment.

Also it looks to be just for games.

I think if there's no way to grab the code off a website (or whatever) then it might be OK. I don't think that you'd be precluded from exporting the project and turning it into a standalone.

However, you don't appear to be able to do much (not even run full screen) so it's a neat program but probably more for introducing children to coding than doing anything serious.

Lua is pretty popular in graphics. When Apple tightened restrictions on APIs and programming languages that developers were allowed to use in the app store, one that got a pass was Lua. It's used in most games, so companies like EA would have immediately been pushed out of the app store and forced to refactor all their code sans Lua. This app is just allowing users to write Lua that interfaces with a rendering engine they've written, that's included with the app. So I doubt that projects are very portable. That's not to say that they couldn't be made more portable, but as of right now this isn't a publishing platform, just a neat tool.
That looks pretty cool. Real programs tend to require an awful lot of input and tweaking though. I wonder what the development cycle is like? How fast do things compile on an iPad?
I would assume compile is very quick, as the only thing happening is the Lua the user writes is being added to the game logic and interpreted. Everything else, the rendering engine and such, comes already done with the app. Lua has very fast execution.
I can hear a Keyboard in the background... So I guess is not that easy to type code on iPad soft keyboard. It's very interesting though.
Not at the speed you're seeing there. Also, obviously you're not seeing the keyboard come up blocking the environment :-)
Just downloaded it, and it's fine with the software keyboard (even has a row of custom keys at the top for it's code editor, so in context it's a more featured keyboard for this specific app).
Some gorgeous work there on making a native code-structure editor rather than a text editor. But it's still text in the end. Baby steps!
This could effectively be a programming sketchbook - which is not a new idea (see the Processing IDE), but this integrates within a device that's basically the digital equivalent of a notebook. This is such an amazing and beautiful concept.

Say hello to the future. We don't have hoverboards, but we have codebooks - where sketches come to interactive life within its pages!

Reminds me of Klick & Play back in the early 90's: http://en.wikipedia.org/wiki/Klik

This app looks like the perfect thing for prospective obj-c devs to get that "I gotta make something cool now" monkey off my back.

This is fantastic. How lovely would it be if Apple bought this up for iOS Xcode. I have a feeling some day there will be a way to write iOS apps on iOS, provided by Apple.
<aside> Diehard VI/Emacs fans are still getting over their aversion to IDEs - now you're going to make them TOUCH! That'll make their heads explode! </aside>
I'm a diehard vi fan and I loved what I saw. That IDE makes me want to get an iPad.
Don't. iPad is kinda useless gadget for developers, unless you develop for iPad and use it as test target.

Am getting back to my linux netbook.

Emacs already supports touch gestures: https://github.com/greboide/emacs-gestures. As ever, we have it all ;)

While it's actually completely different from this, the way it worked on Emacs was neat too. Unfortunately, the video of somebody demonstrating the gestures seems to have been removed.

The one neat trick from there I remember is that you could touch a list function name, draw a question mark and get the documentation of the selected function. When I get a tablet (one of these days...) I'll have to try it out.

Why not go all the way and create a graphical programming environment? I've felt that this is long overdue.
This was a popular trend in the 90s e.g. http://en.wikipedia.org/wiki/Prograph

Check out the Mactech articles in the references.

I even wrote a decent size app in prograph. While I really liked it a large code base was really hard to navigate and maintain. Also you couldn't email code snippets around easily.

The problem with graphical programming is that it is inefficient when it comes to using a large API. There are only so many icons and graphical objects you can fit on a screen, while still making it easy for users to find them.

That's why they are restrictive, they have to choose only a narrow set of methods to expose to the users. By narrowing their available functionality they also become useful for a smaller domain of problems.

Codify does not try to replace text-based programming, but instead to make it easier and sometimes more efficient for graphics-intensive programming. For example, the easy to reach color selector is much faster than having to use a separate tool to get the numbers for the color you want. Same thing for the image selector.

The Max/MSP environment gets around this problem by representing most of its rich library of objects as simple rectangles with descriptive names. People do manage to build some pretty sophisticated programs with it.

http://www.cycling74.com

you might want to take a look at stencyl as well, it isn't for ipad, but it is a pretty fully featured game dev tool that uses the scratch style programming.
Beautiful work. Seems like this would be great for teaching kids to program.
My thoughts exactly. I've been trying to figure out the best way to introduce my kid to programming, when it becomes relevant. Games are probably the most engaging type of software for children.

This app is just what I've been looking for. On a PC, even the best educational programming environment can't get rid of all the PC-related overhead. You can't beat an iPad for simplicity; no need to learn about filesystems, your app runs full screen by default so there are no distractions, etc. You can just pick it up, dive right in and make a game.

Notably, this fits into YC's "Request for Startups #5: Development on Handlhelds":

http://ycombinator.com/rfs5.html

Only partially. This code isn't portable. This is more analogous to a game engine, it's a development engine. Along with not being portable, the code can't be distributed. If the developer offered some package with their rendering engine for purchase outside the app store, then other devs could publish games using this development engine.
It's pretty obvious that is the something that will come in another release.

Edit: Also, plenty of value is created by programs that had thick "runtimes". Think of anything from Visual Basic to Hypercard to things like Excel spreadsheets.

It looks like this is something that the developer is already thinking about. https://twitter.com/twolivesleft/status/129304975623995395
Oh no I am speaking of licensing the graphics engine underneath to devs so they can distribute their own standalone games in the app store, without users having to download this app.
Is there a particular reason why you think this won't happen at some point in the future, too?
Any particular reason? I'm not working on this particular project, I have no idea what the dev has planned. I like imagination, but I don't like speculation. So I'm just not in the mood to speculate on it.
It seems like it'd be pretty easy to have do "something" on a server, and then just mail you the package you need to submit to Apple, given a few extra bits of data.

To the point where I've been thinking about doing it for a long while, but clearly someone was way ahead of me. :)

Seeing that this is basically writing an app on top of an engine that isn't portable or sharable it's not exactly in line with: "There seems a reasonable chance that handheld devices will displace laptops as development machines in the same way that laptops displaced desktops."

Why hasn't anyone pointed out that if you wanted to program for fun on the run you could bring your graphing calculator with you. Was I the only one here that did that?

Honestly, having experimented with various devices, I'm not sure there's a productive development environment out there with a keyboard. A tablet in a keyboard dock may well do the job, but if the keyboard is required for useful work don't we then have a de facto netbook?

Which is what I use, incidentally. Currently 10" but has been 9" before. Running Visual Studio 2010 for the zoomable IDE, and I find it makes a very nice development platform. Highly recommended for such use.

Because the tablet is a variable geometry device. You can develop on the device with keyboard, take the device away without the keyboard and play your game. Then hit a bug and fix it on the spot with the OSK.

Besides developing NUI apps straight on the device is interesting, instead of developing on a machine then upload and test on a tethered device.

Somebody forgot to tell these guys that iPads are for content consumption, not creation.
I'm just curious, do you feel like this was a meaningful contribution to this discussion? 0 added value, and virtually no insight in your post. Your post has nothing to do with what they've created.
It has a huge amount of insight.

When the iPad came out it was (naively) decried as a device that segmented computing into "content consumption" and "content creation". Apps like this continue to prove that wrong.

If Apple doesn't ban this app, it will be a dramatic about-face from the offensive "no code other than what we permit" policy they've held since day one. I don't think it's naïve to be surprised they might actually cave after so many years of criticism by makers went nowhere. Hell, if they're going to start treating me like a human being and actually mean it, I might even buy one.
Actually it's true. Apple removed Scratch from their app-store because "Apple wants to focus on consuming media using these devices, not producing media."[1]

[1] http://computinged.wordpress.com/2010/04/15/apple-removes-sc...

That's Scratch users speculating on the reason, not an Apple statement. At the time Apple policies were very restrictive about non-approved languages (Flash, etc), but they have since been relaxed.

Ironically I just posted asking if Apple would allow it now: http://news.ycombinator.com/item?id=3161245

also, it wasn't really scratch that they didn't approve, it was a scratch player. The player downloaded and played scratch programs from the website. This continues to be something that is not allowed. I would like to see apple reverse this decision though.
With more apps like this, hopefully that will change.

Until then, more angry birds!

Somebody forgot to tell you that the created content can only be used by you and not others. This is because the app is prohibited by Apple from downloading and running code. Want to run a cool program you wrote on your mom's iPad? Gotta type it all over again. This is because Apple prohibits apps from running downloaded code. How useful is that? Not to mention the banning of similar apps that don't use Lua or JS and even prototyping apps. This prototyping app was in limbo in the app store for 3 months before the developer just gave up in disgust. http://blog.robrhyne.com/post/1015614125/google-voice-says-h...

http://blog.robrhyne.com/post/659211315/almost-on-the-app-st...

Now THAT is(or could've been) a useful content creation app, but you can't have it.

In contrast, even MS with a similarly closed ecosystem, provides a development system on Windows Phone with a tool from Microsoft Research that allows users to write, share and run code from the cloud directly on the phone. http://research.microsoft.com/en-us/projects/touchdevelop/

Apple doesn't think so.

Their own iPad apps - the iWork suite, iMovie and Garageband are very capable in producing some pretty neat content.

iWork and iMovie are available not just for the iPad but for the iPhone as well. I've found the iPhone version of iMovie to be very competent for casual movie editing - proving that content creation can be form-factor agnostic.

  "A lot of times, people don't know what 
   they want until you show it to them."

  - Steve Jobs
Take another look at the Music section of the Appstore. All-too-many content creation tools in there, you know ..
How long until Apple shuts it down for using a language other than Objective-C?
Apple already allows JS (and other) interpreters to be embedded as used in projects such as Titanium and Impact game engine.
My #1 feature request- support sprite sheets for animated sprites!
As a side note. Is Lua as a language any good? Will it continue to be used in the future?
Lua is pretty well established in the gaming world as a lightweight but fast scripting engine. It seems to be gaining some momentum in other domains lately too. It's somewhat similar to Python but without the extensive standard library.

It's not going away but it's hard to say how much bigger it will grow. It seems like a good fit for mobile devices. It's used in Corona, for example.

Edit: corrected Cocos2D -> Corona. Thanks!

I think you mean Corona, not Cocos2D. The last time I used cocos, it was strictly an objc library to make opengl dev easy.
Yes, Lua is an excellent language and used very heavily in the games industry - a LOT of AAA games use Lua for scripting. I don't see it dying out in the foreseeable future.

Furthermore, on platforms where it is supported, LuaJIT provides a blazing fast implementation (and includes a very very simple to use FFI to make embedding in C even easier) which has shown to be competitive with C in some benchmarks.

Have a look at moai: http://getmoai.com/

I've been using it the last few weeks and I think its a bloody brilliant approach to game development. I can't recommend it highly enough for those wanting to build a cross-platform (Android/iOS/Chrome) 2D game .. its already being used to make big pro games (see Crimson Tides for example) and I see it having a big future as it takes on more and more features..

I wonder if Squeak will be allowed back in the AppStore now?
Could someone explain the downvotes?
It's great to see tools like this start to emerge on iOS but the new 11" MBA is only slightly more trouble to lug around but is infinitely more useful as a development tool than I suspect a tablet will ever be.
(comment deleted)
Classic sign of disruption. Feels like a toy, looks like a toy. Just not good enough.
I bought the iPad 2 the day it came out and was thrilled to use it for about two months.

But over the last four, I've realized: the reason I keep coming back to computers is that I enjoy computers. Learning more about their internals, harnessing that for my own ends, creating solutions to real problems I have, without frameworks or IDEs or buzzwords. I don't so much care for anything about the iPad but iBooks.

I bought the Macbook Air when Apple upgraded it, and now I carry it with me everywhere. There's plenty I can do on it, even without a network connection (i.e., all my coding), and I really feel attached to my featherweight computer.

Mobile coding is really fulfilling, yes. But I will never want to code by touch typing. Since buying the MBA, I haven't once thought about touching the iPad. And I don't see that changing.

I jumped into iOS development earlier this year but I feel like a cheat when I almost always go back to my MBA to do anything other than read in Kindle/iBooks. To be honest I'd much rather be writing native Mac OS X apps but the bulk of new development work seems to be on iOS these days.

As the other responder said, Apple has kind of disrupted its own market by making such polished and portable laptops.

Good for your adult self. If I was an upper-middle-class 10 year old kid who couldn't afford a nice computer, but could coax my parents into buying an iPad over a game console, I'd be so thrilled to have something that guided me into developing fun little games.

When I was 10-12, I had a freaking AIX PowerPC machine because my dad could get one easily. Did I learn programming with such a fancy machine? absolutely not, I ended up just installing windows NT on it so I could record and play with sounds.

A very good point, and I don't disagree with you. I used RPGEditor and GameEditor when I was a kid and couldn't figure out how to use plain C++ to build a game.

The authors of this software have done a really amazing job, that's undeniable.

But I'm thinking here about two things:

- There is a notion that the only thing stopping tablets from overtaking computers is the fact that you can't develop software on tablets. Under that model of the world, this is a major breakthrough for tablets. But I'm not sure it actually solves the problem of high-quality development.

- There is also a notion that the iPad is a distillation of the best parts of a computer, the things that give people joy, and it removes "cruft" that people don't want to think about: filesystems, command line access, and the like. I wanted to take this opportunity to say that this isn't the case for a lot of people and that the ability to code on an iPad doesn't mean the iPad can give as much joy to a developer as a real computer can.

My comment was less manifesto, more musing about why I can't get rid of real computers.

true. I haven't bought a tablet yet, but the two main uses I as an adult have when I get one will be :

1) let me read books (i've been getting rid of most/all the physical books i own because of tablets, and reading them on a laptop doesn't feel the same). 2) act as a second 'travel' monitor for my laptop.

the biggest issue with tablets is the lack of a compiler and the processing power. With cloud computing and technologies like dropbox, developers can queue their apps and get it to compile on machine with grunt, package it and upload it to testflight and then download it to the mobile devices again... and test it.

True development on a mobile platform.

I think the bigger issues are the coarse resolution of the touch interface and lack of usable keyboard. The former prevents the kind of dense, widget-rich UIs you need for a tool as complex as a real IDE. The latter can be ameliorated with an external keyboard but then you've got a combination that's actually more awkward and less portable than a laptop.

To try replace a laptop with a tablet (or vice-versa) is to misunderstand the strengths and limitations of each, IMO.

Hm, maybe if you are so poor, you should consider buying a 300$ netbook rather than an 500$ iPad? At least if you are interested in programming.
I'm sticking to my keyboard for near-future development as well, but I hope some more people explore in this direction. It'd be really cool to see this program or similar ones evolve. Maybe one day, I might be able to code high level programming structures with gestures.
It's all part of progress. Your MBA wasn't around too long ago.

I have big hopes for touch-enabled development on tablets. I see a world where we can use conventional dev tools with tablets that augment the experience.

I would love to just have the ability to navigate my project files with the codify-like nav and have my desktop IDE take notice.

I think tablets can be very useful as accessories. For instance, an iPad makes a great, general purpose MIDI controller for making music, but is currently a long, long way from threatening a laptop as a serious music production tool.
For sure. It's going to take time. I'm more excited about the short term where we can actually use them as development accessories. For me, that'd be enough.
One iPad may be a long way from threatening a laptop for music-making, but 3 (or 4 ..) iPads goes a long way to absolutely annihilating laptops as a comfortable, enjoyable, extraordinarily creative way to make music.

I say this as I sit here with an iPhone4, an iPad, and an iPad2 right in front of me, each with their own amazing music-making software onboard, having a blast .. iMS20 on iPad, BeatMaker on iPad2, animoog on iPhone4. No laptop can give me such a pleasant experience, period.

What do you do for recording? The instant save & recall and trouble-free rendering of a laptop running Live is hard to beat. I haven't been rich enough to try a 4-iPad rig yet.

I do have one iPad synth on the app store though (GrainBender) and I'm working on a new music app for the iPad right now so I'm definitely invested in seeing this market develop.

I record directly into my Linux DAW (Ardour) through a Presonus Firepod. I don't do "recall and play", I do more "play and play" style music-making, for me the patch recall is not ever as useful as the dynamic process of building new stuff live, so it hasn't been an issue personally - but there is definitely technology in the iOS Music-making sphere that will make this brain-dead seamless and simple soon enough.

I will check out GrainBender - I've got a huge collection of these apps - and add it to the collection. I'm currently working on my own MIDI sequencing engine/workspace product for iPad too - definitely, its an exciting platform for which to be making music tools.

Just wanted to let you know I've checked out GrainBender, bought it, and will use it at my bands next Jam session for some inspiration and music love .. nice work, very well done!
Thanks! If you have any suggestions or ideas for the next version please send them my way.
There is more than portability to consider. I find the iPad is easier to use for programming in awkward places. But maybe I'm the only one that does crazy things like write code from the tractor while I'm out in the middle of a field.
I've been developing full-time on my iPad for over a month now and am surprised at how pleasurable it is.

My MBP just rips DVDs and gathers dust these days.

My MBP replacement sits in a box still brand new, I do not use it as I work on the iMac or the iPad. Recently I had been carrying my iPad interstate, when I carried my MBP 15" again, it was almost like breaking my back with a sack full of rocks.
Even though, my introduction to programming was through vi and notepad, often I find that when I'm trying to teach kids how to program, they're turned off by the 'clunkiness' of IDEs and compiling.

Imagine how amazing of an introduction to the world of programming Codify would enable for kids. Teaching computer science in elementary schools will become so much easier and fun. This looks like something kids would love to use. And perhaps, it'll enable a new wave of young hacker/entrepreneurs who'll go on to make more awesome products.

I think this is exactly the idea behind projects like BYOB/Scratch (http://byob.berkeley.edu/). I think it's pretty successful at introducing people with no previous experience at all to programming at Berkeley, at the very least.

Coincidentally, making a Scratch app for tablets (I suspect Apple may not cooperate, but it could be for Android) would be really neat.

Great, now I need to do a bunch of screen touching along with my typing. What a waste of time.
somehow my idea of the ultimate coding platform for touch interfaces would be more symbolic/graphical (eg a few of wouter's languages, see http://strlen.com/language-design-overview or scratch from MIT). I know there are many limitations in that approach, but nonetheless it would be neat to push (or nudge) the boundaries of the modern development style.
Chill !!!

This is for FUN! You're not likely to write the next Microsoft Office with Codify, but a lot of kids are going to have heaps of fun! Anyone remember Alan Kay's vision for SketchBook? This has to be the closest yet to that vision.

Played around with it a bit, very cool.

I would love to see iCloud support and a desktop version. It would be awesome to have something like the Processing IDE with a sketchbook that automatically syncs between my devices (e.g. my iPad and MacBook).