Posts Tagged 'colt'

One year of COLT

A year ago we have released first public version of COLT (short for Code Orchestra Livecoding Tool). It’s about time for some kind of reflection post.

Like other livecoding tools, COLT is watching your source files for changes that you make in any IDE or text editor. Unlike other livecoding tools, COLT does not restart your application but updates it with new code, and it keeps running as if nothing happened. This is cool and unprecedented feature, but of course we pay the price – we have to transform original code for this to work, and this transformation occasionally stands in the way of, or even breaks some things in your code – which looks like yet another bug in COLT to the user.

COLT was initially released for flash platform (if you was not around back then, check this demo or presentation to get a picture). We have received a lot of positive feedback and decided to expand the technology into other languages, such as javascript.

While javascript normally does not have any “compile time” and you can refresh the browser to see your changes instantly, there is the same common problem – you want to tweak the application logic in specific state, but you have not added easy way to save and restore that state. Then, there is crappy android emulator that is times slower than actual device to work with, when you are developing phonegap apps. Finally, there is node that you have to restart for source changes to take effect when you work on nodejs server application. We thought COLT would help you with all of the above (see this nodejs video, for example).

However, even the most enthusiastic users would perceive COLT as some weekend toy, opting for time-tested workflow for their actual work. We had to find another way to make COLT useful, and in the twisted turn of evolution COLT has developed special powers, when it comes to extendable text editors such as Sublime or Webstorm. Leveraging COLT’s connection to your application, our plugins for those editors can improve their limited code completion with runtime information

COLT plugin for Sublime Text

or provide new useful features such as variables inspection, navigating to function declaration or rendering pretty documentation. People seem to appreciate it already, e.g. check out slides 77 to 84 of this EmpireJS talk by Kirill Cherkashin. Funny thing about these features is that we could do them with minimal non-invasive code transformations, not having to deal with source maps or aforementioned “bugs”, but then COLT had to be renamed to COT.

For those who were still not convinced to try COLT we have added angularjs support. I mean, our live html editing support was already really good, but for angular fans we made it even better. Since I have probably exhausted average reader attention span by now, I will just briefly mention few other things here, such as new runtime environment support, chromeless COLT version, or proxy mode – but you can learn more in COLT 2.0 blog post if you feel like. And if you want to learn even more, consult our docs page, or just ask someone in the forum.

Advertisements

COLT was updated to 1.2

By the way, codeorchestra livecoding tool (aka COLT) was updated to version 1.2 just now. Ironically, the changes are far from minor, since half of the COLT was refactored to support multiple languages (at the moment ActionScript3 and JavaScript) and use JavaFX instead of Eclipse RCP for UI. Let me quickly go over these news in detail:

JavaScript

JavaScript has eval() so at first it seems too easy to support (remember this ?) but it is not. We had to solve the problem of identifying multiple anonymous and / or nested functions that we could ignore in ActionScript. We had to change code transformation logic over and over because of sneaky corner cases that did not work. We had to deal with multiple runtimes, some of which do not support “basic” things like web sockets. On the bright side, surprising number of things has worked out of the box, or with minor modifications. Thanks to prior AS3 experience, JS support comes with all its blows and whistles such as infinite loops or recursion checks. For another example, being written with browsers and mobile apps in mind, COLT never the less is perfectly able to work with server side Node.JS code:

This does not look like a big deal to PHP programmers, but Node.JS guys actually have to restart the server to see their code changes. Check this post for more information about this use case.

ActionScript3

Unfortunately our work on AS3 was mostly frozen (much like the whole AS3 world itself). But we still love AS3. Few days ago, after many months of watching the grass grow, Adobe (actually their GPM, Bill “Machete” Howard) was finally able to grant us redistribution rights to AIR SDK. So now we can get rid of long-standing AS3 workflow issues. Hopefully.

Photoshop assets generator

Ten days ago Adobe started making noise around their Photoshop “autosave” feature called assets generator. Awesome feature, I totally loved it, and surely it works out of the box with COLT:

However, there is some room for improvement here. E.g. we could do what loom guys did and give you access to layers positioning information, if there is any interest. Let me know.

Spread the news!

If you like COLT and want to help us spread the news, download COLT, try it with your project and write the review on your blog. Contact me for more information, if interested.

Less than two weeks left to enter COLT contest

Last chance :)Just to remind you all, free COLT license + a chance to win some Apple hardware are only available until June 25. So download COLT, make your video, upload to youtube, send us the link. Do it now! While you still can :)

No, seriously. We’re very curious to see what kind of crazy ideas people can come up with. Check out this latest submission going wild with Kinect API and Away3D.

By the way, huge thanks goes to wonderfl.net for spreading the word free of charge:

we love Flash and Web developers community… so we’re gonna show your ads for Free (Masakazu Ohtsuka, KAYAC Inc)

Flash and Web developers, we at Code Orchestra love you too! And we hate when you waste your time compiling stuff. In fact, we hate it so much that next COLT release will build your projects up to 3 times faster (and we are talking both livecoding and production builds here). While these news are relevant to Windows users only, I’m sure there are lots of FlashDevelop users out there who will enjoy faster builds OOTB (if they install my COLT plugin).

How to make ASC2 alchemy SWC compatible with old compiler

Some time ago I tried to use latest Genome2D SWC with Code Orchestra livecoding tool and, like others, failed (at first). The reason was that COLT, being derived from old compiler, fails to parse SWC made with new compiler, if it uses memory opcodes. In theory, there should be no problem, since memory opcodes are already compiled into SWC’s library.swf and old compiler does not have to care about it. In practice, there is a problem in SWC’s catalog.xml:

<script name="" mod="9223372036854775806">
	<def id="avm2.intrinsics.iteration:hasnext"/>
	<def id="avm2.intrinsics.iteration:nextname"/>
	<def id="avm2.intrinsics.iteration:nextvalue"/>
	<def id="avm2.intrinsics.memory:lf32"/>
	<def id="avm2.intrinsics.memory:lf64"/>
	<def id="avm2.intrinsics.memory:li16"/>
	<def id="avm2.intrinsics.memory:li32"/>
	<def id="avm2.intrinsics.memory:li8"/>
	<def id="avm2.intrinsics.memory:sf32"/>
	<def id="avm2.intrinsics.memory:sf64"/>
	<def id="avm2.intrinsics.memory:si16"/>
	<def id="avm2.intrinsics.memory:si32"/>
	<def id="avm2.intrinsics.memory:si8"/>
	<def id="avm2.intrinsics.memory:sxi1"/>
	<def id="avm2.intrinsics.memory:sxi16"/>
	<def id="avm2.intrinsics.memory:sxi8"/>
	<dep id="Number" type="s"/>
	<dep id="int" type="s"/>
</script>

The solution is to remove any mentions of avm2.intrinsics.* from catalog.xml :) SWC continues to work without them for both ASC1 and ASC2. I asked Adobe people why does this garbage has to be there and break compatibility for no reason but got no reply, so I am posting this find as PSA – when some ASC2 SWC suddenly gives you headaches, you will know what to do.

Code Orchestra Livecoding Tool update

Last time I have promised you standalone actionscript livecoding tool “in about a month”, and it was delivered in 1 month and 1 day. If some of you missed the news because I did not write a post about it here – don’t feel bad – because tonight brand new 1.0.1 build is waiting for you to download it :)

Ok, now when we’re past this marketing part, let me continue to the reflection part. What kind of feedback we have received so far, and what can we learn from it?

Bugs

As any complex technology, COLT has to have bugs, and we’re happy to receive your bug reports. If you find bugs we missed, it means you are actually interested in and trying our product :) On our side of it, these bugs get fixed and new builds are uploaded.

But then, some “bugs” we hear about are not actually bugs, but inadequate expectations and failure to understand how COLT works. We are trying to extensively document this stuff, but there is always that user who says “k, I changed the code in enterFrame handler and it works, but then I changed the code in addedToStage handler and nothing happens“. So let me cover here again how does COLT work, real quick:

When you save your code, COLT compiles small swf file with parts that changed since last time; methods in [Live] class are changed to call the code in those small swf files every time.And this is all that COLT does for you. It does not magically know that you want some code to be executed unless your program actually says so. Sigh. This is not rocket science, is it.

Features

Another kind of feedback is that one can’t do that or that in COLT. That’s right. Features take time, and we wanted to release COLT ASAP so you guys could try it not next month but today, and maybe support the development with some warm words and cold cash :) Yet, we listen to you and add the features you want – for example with COLT 1.0.1 you can add new fields and methods to [Live] class! Now isn’t that great. But you know what is even greater?

You can get COLT license for free!

All you have to do is upload COLT demo or tutorial video to youtube before 25th of June. And if your video is really good, you get iPad4. And if your video is REALLY good, you get 15″ MacBook with retina display. Damn, I would record these videos like crazy if I were you :) Get the camera, get crazy idea and get it done, seriously. More here.

Good news for FlashDevelop fans

I have been working on this plugin to make FD work with COLT closer. It exports your FD project to COLT and, when you run that COLT project, sends any compilation errors back to FD. The plugin is WIP, but already does its job and I am working closely with Philippe to improve it. So, try it out, leave feedback on github.

That’s about it for tonight, I think, and hopefully more good stuff will follow next week.

An update on Livecoding in ActionScript

Once upon a time, that famous Bret Victor talk hit the twitter and everyone went crazy about the idea for a week. Then everyone moved on, except few people around the world who set to create tools like that for web developers. Over the time, quite a few livecoding tools popped up, from LiveReload to recently Loom engine, but none for ActionScript. If you’re ActionScript developer, you should see why this kind of technology could not be developed overnight. AS3 VM is not really livecoding friendly, already loaded classes have priority over new stuff you load in. But, with enough efforts nothing is impossible, and last year Eugene Potapenko demonstrated it on ITSea event. This is an old story, however, so why this post? Well, because we have some news for you.

iOS support

Even though Adobe doesn’t think it’s important, there is increasing shift among AS3 developers to mobile, and Adobe’s AIR provides easiest way to do so. For months we were struggling to provide livecoding for iOS AIR apps, but there was always something in the way. This week, with great help of Nimisha Shukla, we’ve finally got it working there for the first time. Just check it out:

What I have here is simple painting app running on iPad with iOS v6. On the right, I edit its code in our CodeOrchestra IDE, and my changes get loaded into running app on the fly. Even better, my app does not get reloaded at all, and maintains its state! This is unlike anything you guys have experienced so far :)

“I’m sold, where’s the download link ?”

Well, it goes like this: CodeOrchestra IDE is not only about livecoding. It is big monster with a lot of tools, like AS3 to JS convertor for web and recently Node.JS, or domain specific language support allowing you to extend AS3 language itself. As such, there is a lot of stuff to test and a lot of bugs to fix, before it ships. So, to share this AS3 livecoding technology with you as soon as possible, it will be released in about a month as a separate product, that will work with whatever IDE you’re using right now. Please sit tight, we’re about to change the way you code forever :) Continue reading ‘An update on Livecoding in ActionScript’


Old stuff

September 2017
M T W T F S S
« Jan    
 123
45678910
11121314151617
18192021222324
252627282930  

Oh, btw…