Alright Adobe, here’s what you do: Cross compile Objective C to run on the Flash Player

Ooooh, I think this may actually be a good idea.

We know that Apple is trying to keep its developer base isolated from the rest of the mobile world. If you have to choose a platform between iPhone and Android, an indy developer will probably choose the iPhone right? Thats where the people are. This has nothing to do with the Flash Player, but everything to do with making the iPhone a hard ecosystem to leave for a user.

Now Adobe, imagine you release an Objective C library that developers can use that will also cross compile to Flash Player bytecode that can run on Android, web etc. You already have done some work for compiling C/C++ to Flash Player bytecode in the Alchemy Project, and I am assuming you now have a bunch of of LLVM experts in your team. You will have to mandate that developers use only that library since others may not work with the cross compiler (there may be dependencies that are not ported). As an indy developer trying to get to the maximum audience I would use that library in a heartbeat. Now suddenly a lot of games are being automatically ported to the Android platform (with AIR). Except that those games appear on the Android immediately, rather than wait for the few weeks/months of sitting around waiting to be approved. The Android now suddenly looks like a better platform doesn’t it. Meanwhile this works nicely for you again. You need some IDE (maybe Flash CS5) to cross compile the Objective C to ActionScript bytecode so you have a market for a tool again. Get Google to help you by replacing the iAd system with one that uses Google ads, I am sure they’ll get behind that.

[update] This is not really a solution for people who dont know Objective C and dont want to learn it. But it does give iPhone developers more options, unties their dependence on that platform only and makes AIR on other devices a lot more viable.

Hopefully you like this idea, I’ll expect a check from you soon 😉

Notes from Jonathan Rosenberg’s talk on Rules to Success

Fantastic talk by Jonathan Rosenberg, Senior Vice President, Product Management at Google on Rules to Success. The talk was so heavy with aphorisms that I ended up watching it twice and noted down his various points. They may be slightly off missing a couple of points here and there, but still pretty educational (for me at least 🙂 )

Starting note: I loved this statement at the beginning of the talk:

If you want to build a ship
don't herd people together to collect wood
and don't assign them tasks and work,
but rather teach them to long for the 
endless immensity of the sea.

Antoine-Marie-Roger de Saint-Exupery

Rules on Communication

  • Overcommunicate always all the time. You cant communcate enough.
  • Openly share everything with your collegues. Trust your people and give them this info. Trust breeds loyalty.
  • Repetition does not spoil the prayer.
  • Each word matters. Be crisp and direct and choose each word wisely. Its is not rambling: Leave out the parts that people skip. “I would have written a shorter letter if I had the time” : Mark Twain
  • Great leaders are great teachers and great teachers are great storytellers. Narrative is what that matters.
  • On Talking:
    • As leaders you learn more by listening than talking. Listening makes you humble and smart. When you listen you learn how things work, when you talk, you echo how you think things work.
    • If you must talk, ask questions. People learn more about you from your questions
    • If you actually know the answer in a business situation, talk, but back up with data.
  • Try to respond instantly. If you dont respond instantly, everything stalls.

Rules on Culture:

  • Avoid Hippos: (Highest paid person’s opinion)
  • You should not be able to read an org chart by looking at the product (for example, you cant look at the apple org chart when you look at the ipod).
  • Healthy orgs crush bureaucracy in all forms.
  • Ask for winning strategy and look for good tactics.
  • People are more productive when they are crowded. Social groups moderate bad behavior.
  • Empower the smallest of teams. Small teams accomplish more. Read the mythical man month. Create teams about the size of a family.
  • Working from home is cancer. Ban it.
  • Engineers and product managers add complexity, marketing adds management layers, sales adds coordinators.
  • Knights are knights and knaves are knaves. Tom Peters: There is no momentary lapse of integrety.
  • Focus on value rather than costs.
  • Never suggest copying a competitor. You can do better.
  • Hope is not a plan.
  • Success breeds the green eyed monster. Take away with surprise and humility.
  • Do all re-orgs in a day

Rules on Hiring:

  • Know how to interview well.
  • Gimmicks like free food, games, etc aren’t that important. People come to google to work with great people.
  • Managers don’t hire people. Committees hire people.
  • Promotions should be a peer review process.
  • Instead of laying off the bottom 10% dont hire anymore.
  • Dont hire specialists, esp in high tech. Change is the only thing permanent. “I have no special talent just passionate curiosity.” : Einstein.
  • You cannot teach passion. Nothing great was ever achieved without enthusiasm. If the enthusiasm isn’t palpable in a room, its not there.
  • Urgency of a role isnt important enough for a quick hire.
  • Identify and purge bad eggs.
  • Diversity is your best defense against myopia.
  • You cannot punt the management training program.
  • Life is not fair. Disproportionately reward risk takers and performers. Don’t tell people they did a good job if they didn’t. Real life is a meritocracy. Celebrate and reward what you want to see more of.
  • Build around the people who have the most impact.

Rules on Decision Making:

  • Decision making is about concesus and not unanimity. Dont spend hours towards unanimity. Good enough is better. Voltaire: “Perfect is enemy of the good”.
  • There is no consensus w/o dissent. Patton: If everyone is thinking alike then someone isnt thinking.
  • If there is doubt about what to do think abt customers perspective.
  • Choose your goals wisely. If the goals create conflict change the goals.
  • No-one of us is smarter than all of us.
  • Where there is harmony there is no innovation. Discuss and arguement leads new ideas and new meaning. Innovation comes from disagreement.

Rules on Fostering Innovation:

  • You cannot manage creativity to manage risks. Innovation comes from creativity.
  • Create a culture of yes based on optimism and big thinking.
  • Never stop someone from a good idea for a better one. Darwinian rule works. Best ideas win and others fail.
  • A leaders job is not to prevent risk but to recover from failures fast. Good failure happens quickly.
  • A good crisis is a terrible thing to waste. Nothing teaches like a crisis.

Rules on Humility

  • Learn something new to remember how hard its to learn. Teach something so you can learn.
  • Never stop learning. School is never out.
  • Humility is correlated with age. Arrogance is inversely correlated with age.
  • You get personal leverage from delegation and inspection. Smart people suorround themselves with smart people.
  • Judgement comes from experience and experience comes from errors. You learn more from your msitakes. At google screwups are written and archived to learn from for the future.
  • Smart ppl can smell hypocracy. Make sure you spend ur time on things you say is important. Culture is set from the top.
  • Don’t burn bridges.
  • Would you work for yourself?
  • Write a self review and be critical about yourself.
  • Communicate and confess when you make a mistake.

Final note:

Develop your own style.Styles that worked for others may not work for you (ends with the story of Cortez’s burning the boats, which may have worked for him, but Johnathan prefers the way of the Isreli tank commanders who lead by shouting “Follow me”)

Value vs. Revenue

I have been working for Comcast Interactive Media for over 5 years, thats a lot by some measures and barely anything by others. This is my first full time job and as those go, not particularly shabby. Off late I have been involved in more R&D/labs/prototypes kinds of projects ever since my move to the UX Technologist position. Sometimes I still struggle with the amorphous nature of this position. Things were a lot clearer when you executed on someone else’s plan. I am closer to product development now which is great and gives me a new look at how some of the things we build get concepted. And you have these interesting conversations around things like ROI on User Experience, the importance of time invested in design vs the need for getting features out of the door quickly, the love/hate feelings towards 300×250 ads of dancing polar bears on our sites. Its fascinating to see the camps erected on either sides of these debates.

Trying to pitch a concept to a friend of mine recently, our conversation moved towards revenue models. Usually these are answered by either “well, there is slot for an ad here…” or “We’ll increase user engagement by x “. However, I realized for that at the core, I didnt really care for the rev model immediately. I was really trying to work on something valuable. Something I can look back in my later years and be proud of, not because it would help my career but because I would have made a difference (in as significant a way as a web programmer can I guess) and people would use it.

The thought of course had been crystallized by the book I have been reading: Daniel H Pink’s “Drive”, I haven’t finished it yet, but its a great read so far on what motivates people to do what they do.

Looking back, I realize I have been making these distinctions for a long time, just not realizing it: why I was glad I didn’t write an app like “iFart” even if it made a lot of money and why working on projects that I perceive no value irritates me like crazy. “Drive” says this is a fundamental human characteristic. Nothing kills morale than knowing you are working towards revenue oriented goals and not value oriented ones. That morale is hard to substitute even by money. And you can get a lot of people working on something if you convince them of the value of that. Value and revenue don’t have to be in opposition. Something valuable can and will generate revenue, but the goal of your project cannot be to make something revenue-able, it has to be to make something valuable. If your goal is revenue targeted only, your success if any would be pretty small.

Apple lost someone today too, Director Jerome B. York, and they showed it by changing their entire homepage to pay respect to him:


Bet they lost some revenue on that one, but I bet it makes them a lot more valuable a company

Collected links from the whole Apple/HTC lawsuit thing

So, Apple sues HTC with over 20 patents, most of them idiotically trivial, including for example, Time-based, non-constant translation of user interface objects between states, which to the lay-developer should read “transitions”. Ah so Apple patented transitions in 2001, somebody better tell all the developers who are using things like jQuery effects, Tweenlite etc.

Steve Jobs says “We think competition is healthy, but competitors should create their own original technology, not steal ours.” , which is hilariously ironic when you see an earlier video with him saying how Apple has been shameless about stealing great ideas

This time even the die hard mac-heads call the craziness: Wil Shipley, Mac developer and author of the very successful Delicious Library application, writes an Open Letter to Steve Jobs on the whole thing.

Wait, what, you dont know who Wil Shipley is? Well he has a Wikipedia entry AND has starred in his own Penny Arcade strip. Yeah, so he’s kind of popular like that:

But I digress. Die hard mac fanboy John Gruber posts a good writeup on this whole mess, and more folk have started associating Apple with Evil, as evidenced by Paul Grahm’s comment on Hacker News and Tim Bray’s recent Tweet.

Meanwhile, Android Central posts a pretty awesome infographic on patent litigation in the mobile space

while someone tries to patent the whole practice of patent trolling. How meta…!

What applications do you use for notes and personal productivity?

For the last few months I have struggled different apps for taking and managing notes. There seem to be a fair number of tools out there but all seem to fall short of being the one “aha” application I can commit to. These days one of my primary use case is to jot down a quick idea and share it with some friends and not that many applications seem to help there.

Traditionally my notes used to be on one off text files that I would save on my desktop when I was writing them and then a week or so later figure out where among my folders I would keep them. This always bothered me as I am not a super organized person as is and would end up having 10-15 text files on my desktop before I would decide to organize them. Moreover many of these documents would contain references to information in other notes (if I could ever find them), so I began my quest for the perfect note taking application.

Here were my high level requirements:

  • Bring all my notes under one application
  • Rich formatting options
  • Be able to group documents
  • Be able to link documents from one to the other
  • Grow a document from a few lines to a comprehensive body of knowledge
  • Allow certain documents to be sharable
  • Web sync for me to access them on different devices
  • Be cross platform (I use a mac at work and a PC at home)

I have been using Evernote for the last few months and its not bad. It allows individual notes that could be tagged, web synchronization, public/private notes and had a good PC and Mac client. Thats what I am using right now. However the document formatting is okay at best and it doesnt help that most of my collaborators arent on Evernote.

For my last collaborative project I started working with shared Google Docs. It had better formatting options than Evernote and almost everyone I know seems to have a Google account these days. And since its on the web, there is no synchronization or cross platform issue. The minus: the workflow for a quick note seems wrong. I dont want to create a Google Doc for a 2 liner note (it feels fairly a formal document) and it definitely feels a more distant application than an installed application that I can launch with a couple of key presses (using QuickSilver on the Mac and Launchy for Windows).

With the announcement of Google Wave, I was pretty excited (yes I am one of the few who finds it pretty useful and wish more people started using it regularly). The format of a wave is less formal than a Google Doc, the in line contextual commenting on shared waves makes it great for documents that are still in the amorphous stage and it has options of embedding raw html and iFrames that let me embed relevant information right in the document. However it does seem to suffer from the same problem of not feeling very “on my machine”. Occasionally I need these notes in places where internet connection is spotty at best.

I have also tried other applications like VoodooPad and personal productivity applications like DevonThink, Together, Yojimbo etc and they all seem to have elements of my perfect app but they aren’t quite there yet. Actually in the last couple of weeks I have reverted to using my trusty Moleskin notebook and that almost works best.

So what do you use to take notes and such? I am curious if people already have a great way of managing information that I am missing.

IPad and the era of the digital magazine?

The reactions to the recent iPad launch have been fascinating to watch. My personal reaction is kind of mixed. For the last month or so I have been looking at ebook readers and am tempted to get the Kindle. The reader itself is a means to an end for me: its the Amazon library that is really tempting. I have been using the Kindle application on the iPhone and its surprisingly functional, even on the small screen. Given that, its tempting to consider the iPad instead of the Kindle (I would probably never use the Apple Book Store). I am not sure how Amazon’s business model is set up, i.e, is it like the Video Games industry where they make minimum profit on the device itself and more on the content (games for XBox/PS3s and books in Amazon’s case). If its not, Amazon should re-evaluate keeping the Kindle App in the AppStore. From what I read, the iPad’s is probably is.

What I am a little excited about is that the iPad could potentially have a significant impact on the way people consume online content, or at least on how they feel they should be able to consume content. I have seen some great examples of digital magazines that have started emerging and a lot of these rely on touch interfaces. In my mind, this is the main use case for the iPad.

The print media seems to be excited, though note that the Time Inc magazine (video #1) is actually done in Adobe AIR and Flash, something we wont get on the iPad.

That said, the iPad’s usage pattern would be interesting to watch. I dont think it would work for more than a few minutes of browsing at a stretch. It would be a good device to quickly glance over the day’s news and watch a few minutes of video but thats it (I kind of imagine it sitting on my coffee table like any other magazine). iLife for the iPad seems a waste. The iPad is not geared for content creation, heck even typing in emails would be a chore. I do like using more than my index finger when typing anything more than a google search or a url. In terms of content consumption, the device would be awkward to hold for longer than a few minutes. I cannot really imagine using it to consume long form video content at all, though people seem to insist they will love to use it on airplanes etc, I like being able to place the laptop/netbook on the seat table and not stress my arms (or throw your neck out bent over a iPad sitting flat on the table).

The lack of Flash on the device is tragic though. Coupling a rich web technology to the iPad could have raised its utility manifold. Flash has traditionally been used to create richer experiences on the web fairly cheaply. The only option to creating such experiences for the iPad is a fairly expensive native application, which brings its own headaches around things like application updates. For example, as Doug McCune points out, sites that use Flash for data visualization will completely not work on this device. HTML5 may allow for some of that but experiences like embedded video (like the video based navigation in the Sports Illustrated application) are completely ruled out.

This also means a big hole in iPad’s armor. I think I will probably end up waiting for a similar device powered by Android, as long as I can still access the Kindle books there.

In the end, I feel the iPad is specifically geared for one kind of content, and if you get one, will end up using for really short periods of time before going for ur laptop again. Its position in the market isn’t as strong as the iPhone and while lack of certain features like multitasking and Flash were acceptable on a phone, they will get really annoying on this device really fast. In the end, a lot of its success depends on optimized experiences developed by content creators. In any case, I hope it raises the bar for such content as the iPhone did for the phone.

Wired’s new IPad application is pretty interesting and done with Adobe AIR that they plan to compile down to an IPad application:

Thoughts on DaringFireball’s latest post on Apple and Flash. Lets Call a Spade a Spade can we?

Quotes from the post and counter arguments:

Apple isn’t trying to replace Flash with its own proprietary thing. They’re replacing it with H.264 and HTML5. This is good for everyone but Adobe.

h264 is NOT part of the open web. Its proprietary technology that Apple (and Adobe) happen to license and Apple has adopted that its core media technology. Frankly, there are enough posts out there that indicate Apple may actually want to sabotage the ogg-theora effort, you know, the real open source video codec?

It’s a chicken-and-egg problem. Publishers use Flash for web video because Flash is installed on such a high percentage of clients; clients support Flash because so many publishers use Flash for web video. Apple, with the iPhone, is solving the chicken and egg problem.

It is actually only a problem if you are Apple. End users didnt seem to mind enough to not install or update the players.

[The whole story of the kid not able to play a web game and then…] That there was a period of initial frustration due to Flash games not playing doesn’t change the fact that they (a) bought an iPhone and (b) were set to buy games from the App Store.

They probably were, but a couple maybe. But the kid was not going to get a game every time he got bored of the last one. The story worked out for Apple sure, but not the kid really. Apple didnt start him off in a new direction where he was going to be a lot happier with better games available.

The iPhone’s lack of Flash has not hurt it one bit.

Yeah, neither did having AT&T as a carrier but we all know our sentiment on that.

I’ll leave the last word to Apple COO Tim Cook, who a year ago said, “We believe in the simple, not the complex. We believe that we need to own and control the primary technologies behind the products we make…

Exactly. Its a battle for ownership of platform. Can people stop saying “Apple is doing this for us”?

My main coding machine is a Mac and I really like it. I think the IPhone is a fantastic device and the user experience let Apple push its own agenda around video further. Its a deserved win! But for Apple’s proprietary platform.

The Flash Platform continues to amaze me. Check out the fantastic movie: Waltz with Bashir

I just saw Waltz with Bashir, a fantastic animated documentary chronicling Ari Folman’s journey as he tries to regain his lost memories from the 1982 Lebanon War. The direction is fantastic and the story is powerful and shocking and definitely blew me away.

The Wikipedia entry goes a lot more into the details of the movie’s plot and lists it mile-long list of awards. Also check out the Israeli Art Director David Polonsky’s interview here as well as the the trailer of the movie here.

What I really found interesting is that all the Character animation was done in Flash! Yeah the same platform that powers all those crazy banner ads, apps like Tweetdeck, crazy creative Flash websites etc etc. The Flash animation is combined with some really good CGI and occasionally cell animation to end up telling a deep and powerful story that, according to Ari, could not have been told in any other medium.

The breadth of the platform continues to amaze me and its something we occasionally forget. Fantastic stuff !

Embracing my inner hacker

The word hacker has always held a negative connotation for me and I am sure for quite a few other people. Phrases like “its a hack” are generally used to describe a poor but functional implementation and usually the number of hacks in the codebase are used as a metric for its lack of quality. So naturally I would never dream of calling myself a hacker. For the last 5 years at Comcast I have grown quite a bit as a programmer and for quite a while, was responsible for maintaining some of the core applications’ code bases (I am migrating to new lands now but thats a different topic that I’ll discuss in a later post). I have always had the highest respect for code architecture and am pretty proud of the architecture of the code and frameworks (like OpenPyro) I have written.

However the last few days have been instructional in a couple of different ways. I participated in Yahoo’s Open Hack NYC event, (which was a lot of fun) with Gabo (yes of GaboCorp fame, stop asking me). This was the closest I have ever worked with him and he has a very different coding style then I did. Gabo evolved with Flash and still uses the IDE to amazing potential. Having come from a more traditional programming school (Rutgers, NJ) with a Masters in Computer Engineering, I use Flash as I used to use Java, very strict OOP, design patterns, the works. I havent opened the Flash IDE in the longest time without the reason being to create a quick graphic that I could use from Flex Builder.

But watching Gabo work was fascinating. Most of the UI in our application was done by arranging MovieClips on stage and then gluing in the logic in FlexBuilder (or FDT in Gabo’s case). Surprisingly I found that we got a lot more done than my tradional way of trying to describe the UI in a series of “draw” commands. And tweaking the gradients and shapes was so much easier.

Last week I read this awesome essay by Paul Graham titled Hackers and Painters, which apparently is pretty old. But there were certain parts I agreed with so passionately that I had to write about it. Some excerpts are below:

I’ve never liked the term “computer science.” The main reason I don’t like it is that there’s no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they’re doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers—studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It’s as if mathematicians,
physicists, and architects all had to be in the same department.

The mathematicians … happily set to work proving theorems like the other mathematicians over in the math department, and probably soon stop noticing that the building they work in says “computer science” on the outside. But for the hackers this label is a problem. If what they’re doing is called science, it makes them feel they ought to be acting scientific. So instead of doing what they really want to do, which is to design beautiful software, hackers in universities and research labs feel they ought to
be writing research papers.

This struck me very close to home. I had fallen in love with Flash when I was in grad school and working with Java Swing for an application’s UI. Suddenly I was confronted with this technology that I could just draw my controls in and didnt have to worry about the GridBagLayout f-ing things up or need 5 lines of code to get a JButton to be blue in color. But I was desperately seeking a topic for my thesis and it was really hard to justify using Flash in a grad school full of Java developers. My final thesis was on Flash Java integration (and this was Flash 6), where I explored a middle layer that maintained application state across a desktop application done with Flash and Java. However I am sure my advisor would have been happier with a crappier looking application that I had gotten to work by beating Java Swing to some level of submission.

Paul literally says this later:

Unfortunately, beautiful things don’t always make the best subjects for papers. Number one, research must be original—and as anyone who has written a PhD dissertation knows, the way to be sure you’re exploring virgin territory is to to stake out a piece of ground that no one wants. Number two, research must be substantial—and awkward systems yield meatier papers, because you can write
about the obstacles you have to overcome in order to get things done. Nothing yields meaty problems like starting with the wrong assumptions.

The way to create something beautiful is often to make subtle tweaks to something that already exists, or to combine existing ideas in a slightly new way. This kind of work is hard to convey in a research paper

I wont quote him anymore since almost every line on that essay is worth quoting. But reading it, I suddenly feel that its okay for me to be more concerned with the visual than the architecture. Fortunately the two goals are not in opposition. Good architecture enables more aesthetically pleasing and interesting interfaces (Look at Flex 4 compared to Flex 3 the Spark architecture in Flex 4 compared to the old Halo architecture. Spark enables creation of so much more interactive and interesting controls). But after reading this I suddenly feel less guilty about not caring for the purest Singleton implementation in AS3 or not being able to launch a headless version of Flash.

I code the pretty!

So what really is Google Wave

As of right now, I do not have a Google Wave invite, but the blog buzz is kinda interesting to see. The one thats prompting me to write this post is the one by Ryan Stewart titled “Google Wave pisses me off”. I commented on his post but it was such a long comment that it seemed to warrant a post.

I think Wave as a technology is different from Wave the product. Technically everything Wave does could be done with some XMPP servers powering a real time wiki or something like that. I think to Google’s credit, they applied the tech to an interesting problem. I am no Google fanboy and find most of their applications functional but not exciting (though I use Maps, GMail and GReader like crazy), but Wave excites me for a number of reasons.

It was a good observation by Google that a lot of communication we do on the web is fairly similar but fragmented. We have conventionally considered things like blog posts, twitter feeds, IMs, emails, collaborative document sharing to be different things, but are they really? Arent we all manipulating a basic content document. Can one interface serve all the needs?

Consider that you run a group (I manage a couple on OpenPyro and CIM Logbook and help out with Philadelphia Flex Dev Group and RefreshPhilly). If you want to announce the new event, do u post to the google group there and wait for replies, or post a message on the group blog and wait for comments, or tweet it and wait for @replies? Usually I do all of them and it seems really silly (more so since I saw the GWave demo). Its kind of interesting to see a tool that *could* change that.

Whether Google will really succeed remains to be seen. John Gruber phrased GWave as not only technically complex but also conceptually complex. Could I get my mom to use it, no way. But maybe it’ll take our generation before it becomes a new standard for web communication. In the meanwhile I anxiously wait for an invite :).

Other links:
Why Google Wave is Conceptually Simple
What works: The web way vs. the wave way

[update] I have no more invites left, so please dont ask me for one 😦