Codify: native coding environment for iPad
twolivesleft.com
twolivesleft.com
Say hello to the future. We don't have hoverboards, but we have codebooks - where sketches come to interactive life within its pages!
The difference with this app is that the ide is really a labor of love, and it is super fun to code in. Not that iLuaBox isn't, but all of the little features for tweaking colors and editing sprites are brilliant. The graphics and audio engine don't hurt either.
For those complaining that there isn't a companion engine that you can take the code out of codify and release actual games, you should take a look a corona. The api in codify is not so big that you wouldn't be able to clone anything that you made in it to another platform relatively easily. I do agree that there should be more lua based gl engines for iphone though. I am working on one, but as of yet it is totally for my own use, but only by virtue of the fact that it doesn't come with nice build scripts.
The other thing that some commenters miss is that you can use copy and paste in this app. That will open the gates to sharing code, it is as easy as: select all, copy, switch to safari, go to pastebin, send link to someone else. I suspect that some of the time the app spent in approval was them thinking about that.
-- edit for not being a jerk to iluabox
That is, of course, assuming that Corona is a good fit for the kinds of apps you want to write.
I don't know why but this reminds me of my Amstrad CPC days where you mostly shared code by retyping it (notably from magazines and books).
I find it interesting also in that it makes the code as the thing shared, not the resulting blob.
I am so pumped that it reminds you of homecomputers though, that is the way the ipad should be, not a closed box that you can only play games on.
Codify is at this moment similar to those 8-bit computers... I had a ZX Spectrum 48K
The previous generation had Amigas or whatever that was (sorry) they used to hack on. My generation had the early days of the web. This (and others like it) could be the next generation's hacking toy.
my point was that the technology exists to make sharing apps easier, but apps like this are artificially crippled by apple's app store policies, because they want to control everything.
It seems that a word processor that allows macros in the documents would be a litmus test for this policy.
There NO EXCEPTIONS for scripts typed in by users period.
Both iLuaBox and Codify are breaking this rule. Of course Apple has a history of ambiguously enforcing their rules.
For those thinking that Apple relaxed the rules the rule above is the current license dated 10/4/2011. Apple had a more strict rule at one point that said that apps themselves could only be written in C/C++/ObjC/JavaScript. That rule was relaxed.
The rule can be read as ambiguous when it comes to executable content that is not part of an app, just the document type that an app edits and displays. For example - you could think of calculating a formula in a spreadsheet as an example of interpreted code. Apple has no reasonable interest in preventing such apps.
When the documents that an app handles become more app-like, such as games, then Apple might decide to step in. They have left themselves enough slack in the wording of the rule to allow that.
I hope that they make the rule more explicit in a future version of the agreement.
They specifically state no code or scripts may be executed period unless (a) they bundled in the application's package or (b) use WebKit and WebKit's JavaScript
If Apple is relaxing their policies it would be good to know. Lots of others would like to write apps like this but were told they would be banned.
Maybe they are getting around it by running Lua in JavaScript in WebKit?
User scripts not ok.
Doesn't matter if they are download. The license says no scripts that are not part of the app's package period except WebKit JavaScript scripts
The app did sit in review for quite some time, according to a quick look at their blog. Either the interpreter is implemented entirely in JavaScript and Webkit (it's not terribly speedy), or Apple is now comfortable enough with Lua to let something like this fly.
Either way, it's really great that there's an app like this for the iPad.
Edit: After poking around the app package, it looks like a real Lua interpreter rendered inside a EAGLView, and not some WebKit/Javascript hack.
Just like moai, so I guess I'm off to write that moai-dev environment!
In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code. This should give developers the flexibility they want, while preserving the security we need.
In addition, for the first time we are publishing the App Store Review Guidelines to help developers understand how we review submitted apps. We hope it will make us more transparent and help our developers create even more successful apps for the App Store."
--http://www.apple.com/pr/library/2010/09/09Statement-by-Apple...
Does that include using the App Documents mechanism?
Also it looks to be just for games.
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.
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.
As the other responder said, Apple has kind of disrupted its own market by making such polished and portable laptops.
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.
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.
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.
True development on a mobile platform.
To try replace a laptop with a tablet (or vice-versa) is to misunderstand the strengths and limitations of each, IMO.
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 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.
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 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.
My MBP just rips DVDs and gathers dust these days.
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.
To the point where I've been thinking about doing it for a long while, but clearly someone was way ahead of me. :)
The way you worded this reminds me of Gary Kitchen's Game Maker.
http://www.garrykitchen.com/product_history/garry_kitchens_g...
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.
Besides developing NUI apps straight on the device is interesting, instead of developing on a machine then upload and test on a tethered device.
[1] http://code.google.com/p/squeakvm-tablet/
[2] http://news.squeak.org/2010/06/17/squeak-running-on-ipad/
That is, 30 minutes, plus few more minutes pouring over the examples learning LUA syntax (I've never worked in it before but it's basically Python but lazier and more forgiving)
At times it felt a bit frustrating, as some of the code, such as p[i].x = p[i].x + p[i].vx takes forever to write because of the brackets, which are 3 taps each. I think this can be improved upon in the future.
Many examples are provided which is very nice. The graphics is done using opengl-like stack with pops and pushes of transformations.
Overall, the app is very impressive and I'd love to see these kinds of apps used in education. Kids could use it to learn programming, without having to suffer the overhead of file system etc., as on a real computer. Excellent stuff with bright future.
Nice sound effects, too. :)
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.
Not everything has to be serious.
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.
[1] http://computinged.wordpress.com/2010/04/15/apple-removes-sc...
Ironically I just posted asking if Apple would allow it now: http://news.ycombinator.com/item?id=3161245
Until then, more angry birds!
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/
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 JobsAm getting back to my linux netbook.
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.
So, it looks like this is very feasible, and I have to admit to instantly buying this application the moment I read this HN article .. but I haven't had any chance to grok it yet.
If it works out, this could be the start of a new era for iPad/iOS development - certainly my iPad is good enough for editing lua scripts, and with a delicious framework like moai around (I really, really like it) I think it would be very viable. What an exciting future we iOS developers have!
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.
Coincidentally, making a Scratch app for tablets (I suspect Apple may not cooperate, but it could be for Android) would be really neat.
Similarly, I long for an easy to use scripting language environment on the tablet itself that doesn't require one to know HTML, CSS, JQuery, etc. and is not so focused on visualization and sprites, but instead just lets you create a page or tabs, get some data, do something with the data, and display a result while impacting another service. This would empower people to create their own experiences on the tablet instead of hoping some developer hits on their exact combination of needs.
I know, all HN readers are super-programmers, but I think back to the old days when folks wrote simple basic programs on their C64/Atari/Apple/etc. to solve simple problems... and how that's so difficult today on PCs, but could be brought back to life in the consumer-friendly world of tablets...
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.
http://www.mcdaid.eu/labs/codify1
and the code to run in codify is in the textarea (small)
Maybe Google can work with Eclipse to port it over to ARM/Android. Developers could get hybrid devices like the Asus Transformer to code on them.
Maybe: http://www.supaspoida.com/2011/10/26/a-short-story-about-a-t...
(note: I didn't develop this, just sharing it with you all)
http://forums.toucharcade.com/showthread.php?p=1975221
It will be interesting to see if Apple allows them to do this.
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.
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!
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.
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..
For some more comparison I found this on SO: http://stackoverflow.com/questions/1022560/subtle-difference...
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).
It is the complete opposite in terms of ease of use, but it is still executing code. Also broken glsl code is way more likely to hard crash your phone than broken lua code.
There are some other options mentioned here: http://digitaltools.node3000.com/blog/3310-coding-ipad-coder...
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.
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.
Since it is about programming, I would love to have version control do that my kid starts using it as well.
How to share code ? Dropbox integration would be nice
Heroku style deploying the code in server would make it awesome
Purty looking, but color me not impressed. I already can sense what the constraints will be, and they aren't good. And I've gained really nothing new I couldn't already do before.