Skip to content

Using IntelliJ Idea to build HTML5 apps on a Node.JS server

So unless you’ve been hiding under a rock for the past few years you’ve probably heard of JetBrains and their wonderful IDE, IntelliJ IDEA. Originally a Java IDE, they’ve fleshed it out to support a variety of additional platforms. They have arguably the best Flex tooling on the market and have since added support for the Web stack, Ruby, Python, etc etc etc.

I know not everyone is crazy about using IDEs, if it’s not your cup of tea then thanks for stopping by and you can feel free to stop reading here. If you want to learn how to set up IDEA to do fancy things with Node.JS and HTML5 development, however, keep reading!

(Note: I did this using IntelliJ IDEA 11. I do not have any idea how this will apply to previous or future versions of the IDE. If you have success or failure using this approach on other versions please let us know in the comments, as well as describing any tweaks you had to do to make it work right!)

Continue reading ›

Tagged , , , ,

Apture added

Just a quick note to say that I’ve added apture support to this blog. Apture is a super smart web service designed to transparently overlay context onto keywords. It’s smart enough to know what words people are interested in learning more about by keeping track of what words people highlight so that they can copy+google them. You’ll see Apture links scattered throughout the blog, hover over any of them for more information!

Tagged ,

WWDC 2011 Prediction: Apple Acquires Twitter?

I could be way off base here, but I suspect that Steve Jobs is about to announce the acquisition of Twitter by Apple. I don’t have access to any private info or anything, but here’s why I think this might be true.
Continue reading ›

Tagged , , ,

Brief Update

Very little in the way of blog updates the past few months, been up to my ears in a few things. Work is finally starting to slow down, though, so I’m hoping I’ll have more time to post.

In the meantime, here is a brief rundown of stuff I’ve been playing with (and will hopefully soon be blogging about):

1) Living without an IDE – a lot of folks seem to have a great time coding all kinds of stuff using TextMate, without the clunkiness of an eclipse-based IDE. I’m looking to explore this option, and I’ll let you know what I think. This ties into the next few points, because my latest interests live outside of any IDEs -

2) Node.JS – if you haven’t heard about Node.JS you’ve been living under a rock. Node is server-side javascript, bringing that lovely (ech!) JS syntax to the server. Why is this cool? Because like AS3, it relies on the Observer Pattern to handle asynchronous requests. Instead of spawning a new thread and blocking, like most other server-side languages, Node uses an Event system with async callbacks to juggle lots and lots of stuff at the same time. Plus, it’s JavaScript. Say what you will about it, it’s pretty slick to be able to handle scripting, web server and front-end coding in the same language.

3) Using JavaScript with Socket.IO to replace Python as my go-to Arduino interface language. If I’m going to learn one stack inside and out, it seems like JavaScript is the stack to learn. If I’m doing everything else in JS, why keep Python around when I can use Node just as easily?

4) Back in the Flash world, a big project I’ve been working on for a few months is approaching launch-readiness. It’s my first Flex 4 application, and I have some thoughts about that. Generally speaking, I haven’t really enjoyed it – but I’m not sure yet if that’s my fault or Flex’s. Much to think about.

5) Finally, this summer I’ll be rolling out my first iOS application. Stay tuned for rants and thoughts on the subject.

As always, the best way to keep up with me is on Twitter, where you can always find me quickly as @mykola. Drop me a line!

Last thing – I’ve implemented Google’s “+1″ feature here. If a blog post is useful or interesting, please consider hitting the +1 button to let me and others know!

Public APIs: The True Battlefield of the Platform Wars (and a proposed solution)

A few interesting stories this week have compelled me to flesh out an idea I’ve been having for a while. Details below the fold, but here’s the gist: as the web continues to evolve, we get more and more services that deal with lots of information and these services are currently in the habit of putting out public APIs. However, these companies also control these APIs and they are able to change or even disable them at will – which is fine, legally, but creates huge problems for any other companies that are relying on those APIs.

As the web moves forward I can only suspect that this problem is going to become more common, not less – and so I have at least a vague hint of an idea for how we can go about solving it. I’m curious for your thoughts!

Continue reading ›

Tagged , , , , , ,

2011 Adobe Community Professional

Just a quick note to say that I learned last evening that my application to become an Adobe Community Professional this year was accepted. The idea now that the resources and contacts that come along with that will help me to create more and better content, so hold me to it! :)

Why I Love flash.utils.Dictionary, and you should too!

One of the unsung heroes of readable AS3 code is the native Dictionary class. A Dictionary is just a container for key/value pairs, much like Object. In fact, a lot of people don’t realize just how useful Dictionary is. The assumption, easy to make, is that it’s better to use Object because then you don’t have to import anything.

The cool thing about Dictionary, though, is that you can use non-string keys. In fact, you can pass a reference to ANYTHING and use that as a key. Below are a few examples of how Dictionary lets you write clean, readable code. You can do all of this stuff without Dictionary, but you’re going to be writing more lines of code. I’ve got three examples below, in increasing order of abstraction. We’ll step through using interactive elements such as Buttons as Dictionary keys, then we’ll use Functions, and finally we’ll use Classes. This is really, really useful.
Continue reading ›

Tagged , , , , , , ,

2010 In Review

Just a quick post to wrap up my year.


2010 was incredibly exciting for me. A year ago, I was working full-time at a digital advertising agency doing Flash production. It wasn’t a bad job, but I wasn’t thrilled about agency life and in April I decided to finally take the plunge and go into business for myself – and honestly, I haven’t looked back. I prefer the consulting lifestyle over the salaried lifestyle in almost every way, and it’s allowed me to cast an incredibly wide net in terms of extracurricular activities and side projects. Having a girlfriend who is also a talented designer made this something of a no-brainer for us, and it’s been great to be able to collaborate on large projects working to meet our own deadlines. Some of my consulting has been done on-site, as has some of hers – but our most exciting projects are the ones we’re working on secretly. Hopefully in 2011 we’ll have some cool stuff to share!


As far as extracurriculars and side projects go, I took over running the Columbus Digital Adobe User Group, provided technical feedback on not one but two books from O’Reilly Press (The Flex 4 Cookbook and Getting Started with Flex 4), and went to my first industry conference (RIAUnleashed). I also submitted a talk to 2011′s Flash and the City.

Additionally I’ve become much more active on Twitter (hit me up at @mykola) and I’ve started updating this blog with almost alarming regularity (this is what, like, my fifth post this year? That’s huge for me!)


2010 was going to be the year I switched to an Android phone. I mean, come on – I’m a Flash developer. I’m supposed to hate Apple and Steve Jobs, especially after that Flash stunt he pulled! So in July, I put a bullet in my trusty iPhone 3G and bought an HTC Evo 4G.

I returned it inside of a month. I know this is a highly polarized field right now, and I don’t want to make any enemies – but I hated almost everything about the Android platform as a user. Inconsistent UI, a convoluted phone OS (“Oh, no, you should download the process manager to let you know what’s running!” – really?), a terrible app store experience. You name it, going down the list I felt like Apple simply cares more about providing a great user experience – and so I’m back on an iPhone. Maybe I’ll switch in 2011 – but honestly, Android has a lot of cleaning up to do before they can begin to compete with Apple’s user experience.

I also picked up an iPad this year. I like it okay, but honestly the novelty wore off quickly. I’m just not entirely clear what I’m supposed to do with it. Right now it kinda just lives in the bathroom, which is a constant source of amusement for guests. Still, I suspect I’ll buy an iPad 2 this coming year.


2010 is the year I bought my first (four) Arduino microcontrollers. This has been an incredible way to spend my downtime, and I’ve learned so much I can’t stand it. Currently I’m working on developing a custom stack for robotics projects – it looks something like this:

  • Robot Structure – VEX frame, with VEX motors and wheels etc. It’s a bit like Lego – everything is designed to fit together nicely.
  • Microcontroller – This is going to be Arduino. It doesn’t take that much effort to make the VEX components play nice with the Arduino, and the existing support out there for open-source hardware projects using the Arduino system is fantastic.
  • Communications – Right now I’m using Python to handle my serial communications, because it works so nicely. I can rig up my serial connection using USB, BlueTooth or XBee and it doesn’t make any difference – Python is able to read/write with like 2 lines of code. That said, I still haven’t resolved the difficulties I’ve been having integrating python into the final layer of my stack…
  • User Interface – Adobe AIR. This is a no-brainer – it’s incredibly easy to build amazingly detailed user interfaces using the Flash Platform, and I’m almost able to get complete integration between my Python layer and my AIR layer. I’m confident that with a bit more tweaking I’ll have it down.

So yeah, that’s that. Vex -> Arduino -> Python -> AIR creates a VAPA Robotics Stack. If I can iron out the kinks, I’m going to have an incredible project to show off in a few months!

Looking Forward

2010 was a great year for me – I’m expecting 2011 to be even better. I’m going to keep learning, keep playing and keep doing cool stuff. Please reach out to me on Twitter of any of this sounds interesting to you, I love to talk shop!

In 2011, my largest focus is going to be on completing my robotics stack – my big goal for the year is to present at Adobe MAX 2011, controlling a variety of cool ‘bots from a Flash-built interface. It’s much easier than you probably think, and it’s incredibly satisfying! Like I said, I have a few kinks to work out – but it’s 80% of the way there, and I’d love to get other people to join in!

So, from me – Happy New year, and I’ll see you all in 2011!

Tagged , , , ,

Controlling a VEX motor with an Arduino Microcontroller

I’ve been tinkering with some hardware I recently got my paws on, a VEX starter kit. Designed for education, VEX includes a whole host of equipment beyond their microcontroller – they have structural components, sensors, motors, servos etc and all of it is designed to plug into their microcontroller.

Since it’s hard-wired into me to do things the hard way, I decided to see if it was possible to control VEX components with an Arduino microcontroller. A bit of googling shows that it can be done, but I didn’t find any good step-by-step guides – so I thought I’d write one. This isn’t a comprehensive guide to powering all things VEX through an Arduino – but follow along and I’ll show you how to control a VEX motor using an Arduino, which is pretty cool.
Continue reading ›

Tagged , , , , , ,

Adobe AIR, NativeProcess and Python – Introduction

Right now, if you want to handle input and output between Arduino and Adobe Flash/AIR, the recommended best practice is to use a program like SerProxy to listen to your serial input, turn it into socket data and publish it to local host. Inside of Flash, then, you treat it as a socket server – you listen for socket data, and respond in kind.

It works, but it’s not pretty. You need to have access to the right ports, and you have to run a third-party application with its own config file to make it work. Additionally, I’ve never once been able to get it working on a mac – I know I’m not the only one, either. There’s some weird shit going on there.

I decided to see if it was possible to get the same results using the new NativeProcess API in Adobe AIR 2. Read on for the details!

Continue reading ›

Tagged , , , , ,