Tuesday, December 21, 2010

Klok Sale: Only 5.99 using coupon code

Merry Xmas - We can't give you more time for Xmas, but we can give you $10 off Klok. http://goo.gl/9sqzv Use coupon code: hohoho

Tuesday, November 30, 2010

Klok 2.2.7 now available - New Features Added

This new release of Klok contains a frequently asked for feature: the ability to move or delete multiple time entries. You can now select multiple items from the Time Entries tab (Shift+click or Ctrl+click). Then right click and choose Move Selected Entries or Delete Selected Entries.

There was also a bug that prevented changes from "sticking" when you changed a time entry's project from the Time Entries tab that has been fixed with this update.

Klok 2.2.7 now available - New Features Added

This new release contains a frequently asked for feature: the ability to move or delete multiple time entries. You can now select multiple items from the Time Entries tab (Shift+click or Ctrl+click). Then right click and choose Move Selected Entries or Delete Selected Entries.

There was also a bug that prevented changes from "sticking" when you changed a time entry's project from the Time Entries tab.

Monday, November 29, 2010

Adobe AIR Application: Klok Mobile for Android Beta now available - update

With the excitement of Thanksgiving last week you may have missed our exciting announcement regarding the Android version of Klok Mobile. If you have an Android phone that meets the requirements for Adobe AIR for Android and would like to try out the mobile version of Klok, feel free to click on over to the Klok Mobile for Android page on our site. Make sure you read the Getting Started section. Also, please send any bugs or feature requests to us at support@mcgraphix.com.


Thursday, November 25, 2010

Adobe AIR Application: Klok Mobile for Android Beta now available

I am pleased to announce that the first beta version of Klok Mobile for Android is now available for download from the Klok website at http://www.getklok.com/KlokMobileAndroid.html.

Klok Mobile requires that you have the Adobe AIR for Android application installed. For those developers out there wondering how easy or difficult it was to create, I am happy to say that working with Flex 4 Hero is very simple. While I still have some bugs to work out, some skinning to do and some performance enhancements to add, I was able to go from blank canvas to working beta version is just about 20 hours worth of work. Note too, that this was really the first real application I created using Flex 4 at all, so there was a learning curve to overcome too.

Tuesday, November 9, 2010

Adobe AIR Application Klok surpasses half a million downloads

This is giving me a bit of deja vu, as it was only a little over a month ago that I announced that Klok had reached 350,000 downloads. But, I am happy to announce today that while I was on vacation for the last two weeks, Klok has surpassed 500,000 downloads. As of today it is actually more like 600,000. Thanks to everyone who has helped make Klok such an enormous success.

Wednesday, October 20, 2010

What happened to the AIR Marketplace?

If you haven't noticed, Adobe has a new website. Unfortunately, it leaves a bit to be desired IMHO.

I wanted to look for something in the AIR Marketplace (which is where my application Klok lives) but could not find a link for the AIR Marketplace anywhere. I expected this to get a more prominent spot. I ended up searching for it and found it that way, but I never did find it in the navigation anywhere

It also took me a few minutes to find the links to the designer and developer community sections. They are nestled under Learning in case you are looking for them too. While there is certainly a lot to be learned there, I didn't immediately make the connection.

Perhaps the site isn't completely done yet?

Aside from the missing link, you will notice another item that has gone missing... Flash content. There is surprisingly little Flash being used on the site. Now it isn't to say that there should be a lot of Flash on the site, I'm just saying that I was surprised to see the home page with the big Acrobat X graphic on there without some cool animation or interactive content.

Tuesday, October 12, 2010

Flex: The ABC data is corrupt - Solution

About a half hour ago, I was happily coding along on my Flex Adobe AIR application and all of a sudden when I tried to run the application (which compiled without error) I got this error when the application was initializing.

VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.

My first thought was "What the hell is ABC data?". I still have no idea what that means but I did figure out what the problem was. After doing a bunch of searching I finally went back through every change I had made in my code since the last time it ran successfully.

What I found was that I had added two optional arguments to a method with the same name. I'm not sure exactly how that mistake caused that error message but in case you run into this error take a look at your method arguments. Given the genericness off the error message, I suspect that there are probably a lot of other different ways to cause that error message but this fixed it for me.


Friday, October 8, 2010

Android - A breath of fresh (Adobe) AIR

In case you have not heard, Adobe has release the Adobe AIR 2.5 runtime for Android devices. We should start seeing some very cool mobile applications built with the Flash Platform in the coming weeks. I know I can't wait.

Friday, October 1, 2010

What's new in Klok? Automatic backups and project search

In case you weren't looking, it is possible you missed the last few updates which included the ability to set up automatic backups (full version only), search your project tree, and specify the calendar to import from when using the MS Exchange import options (full version only).

Also, don't forget that the betas of the Basecamp and Harvest connectors are now available.

Thursday, September 30, 2010

Adobe AIR Application Klok reaches 350,000 downloads

It is almost hard to believe, but as of Sept 30, 2010 Klok has been downloaded 350,000. It seems like just yesterday I was posting about it reaching 2000 downloads. Back then it was just an experiment that I used to learn Flex and Adobe AIR development and enter in Adobe's "developer derby". Time really flies... which is why it is so important that you keep track of it.... using Klok of course.

Tuesday, September 28, 2010

Klok Basecamp and Harvest Connector Betas Now Available

We are happy to announce that the public beta versions of the Basecamp and Harvest connector plugins are now available. You can download them below. Also, check out the video of the installation process and the video demonstration of the Basecamp plugin in action

There are a couple of things to note about the beta versions of the plugins.
  • These are "beta" versions, so there may be bugs. When you find one, please let us know at http://getklok.com/bugs/submitBug.html
  • In order to use a connector plugin, you must be using a full version of Klok or the trial version available from the Adobe Marketplace
  • You should use a new data file location when using a plugin because your project tree will be populated from the remote system. If your data file has projects in it before connecting, they will not exist in the remote system and therefore not be able to track time against them.
  • You cannot edit or add projects in Klok. You must manage your clients, projects and tasks via the web-based Basecamp or Harvest interface
  • Once installed, you access the connector configuration by clicking in the lower left corner of Klok where it says "Offline".
  • Plugins can expose the ability to do two types of synchronizations. Usually one that pulls items from the remote system and the other that uploads items. What these buttons are call and what they do is up to the plugin and the remote system's capabilities.
  • If you delete a project from Basecamp or Harvest, the item will not be deleted from Klok

Basecamp Plugin
Timetracking is only available on Basecamp Plus, Premium and Max plans. Therefore, in order to use Klok to track time you must have one of those plans. The Basecamp Basic plan does not include time tracking. Also, you will need to make sure that API access is enabled on your Basecamp account. This is done on the Account tab and can only be enabled by the account owner. Once you install the plugin into Klok you will notice that on the plugin configuration panel, it doesn't ask for the token. Instead it asks for the username and password. However, this may change to using the token only before the final release.

Also, Basecamp does not store the start and end time of a time entry. Because of this limitation it is not possible for Klok to "pull down" time entries that were entered directly into the Basecamp web-based interface.

When choosing "Full Synchronize", the project tree will be downloaded from Basecamp and stored in Klok for use offline. When choosing "Upload Time", any time entries that were added or deleted while not connected will be uploaded. Note that while you are connected to the internet, added or edited time entries will be uploaded in real time.


Harvest Plugin
Harvest allows time entries to be tracked via durations or via start and end timestamps. In order for Klok to interact correctly with Harvest you must set up your account to use start and end timestamps. See the Harvest FAQs for instructions for setting up timestamps.

When choosing "Synchronize", you will be prompted to select a date range to synchronize. This allows you to download entries added via the Harvest web or mobile interface. It is recommended that you choose a time period of a week or two. The project tree will also be downloaded from Harvest and stored in Klok for use offline. When choosing "Upload Time", any time entries that were added or deleted while not connected will be uploaded. Note that while you are connected to the internet, added or edited time entries will be uploaded in real time.



Thursday, September 16, 2010

Klok 2 - Volume discounts now available online

We just added the several discounted options for those buying multiple licenses of Klok 2. You can choose one of the multi-user packages from our online store at http://getklok.com/store/purchase.php

Wednesday, September 15, 2010

Klok - Update to 2.1.9 - Fixes bugs enhanced collapsed mode

We posted an update to Klok that fixed some bugs. We also enhanced the "recent projects" list so that in collapsed mode, you can start working on any project
  • Fixed: KLOK-67 Can't exit from system tray Klok
  • Fixed: KLOK-65 data lost when reassigning a project
  • Fixed: KLOK-64 sum of times is incorrect
  • Enhanced Recent projects dropdown
Note that users using the trial version or purchased their license via the Adobe AIR marketplace will not see the update for a day or so as it goes through the deployment process.

Thursday, September 9, 2010

Klokwork Team Connector - Update

We just posted another update to the Klokwork Team Connector that fixes several issues. You can download the update from our website. You will need to uninstall the existing one before you install the new one. We will be adding an automatic check for updates prior to the official release of the plugin.

We will also be posting an update in the next few days to Klok and Klok Pro that will fix the issue where you get a scroll bar in the connector configuration window as a result of the new options in the connector. The 2.1.8 update will also include several (about 20) bug fixes

So AIR on the iPhone after all?

I just came across this post on Gizmodo which seems to indicate that using the iPhone packager might now be allowed. Anyone from Adobe care (or dare) to comment?

Having just created my first Flex/AIR based Android app using the embedded SQLite database in about 45 minutes, I can say that it would be awesome to apply that kind of productivity to building iOS apps.

Tuesday, September 7, 2010

Klok + Klokwork Team Connector - Free 30 Day Trial

Just a reminder, that you can try out the Klokwork Team Connector when you install the new 30 day trial version from the Adobe AIR marketplace. Once you download and install the trial, download the free Klokwork Team Connector (beta) plugin from http://getklok.com/KlokworkTeamConnector.html. Then install the plugin on the Tools > Preferences > Plugins menu. See the instructions on our website for more details.

Friday, September 3, 2010

Try Full Klok 2 Features Before You Buy

We are happy to announce that you can now try all the features of Klok 2 before you buy with our new 1 month trial version. If you like it and want to buy it you can initiate your purchase right in the Klok interface. If you decide you don't want the full version, you can still download the free version from http://getklok.com

Monday, August 30, 2010

Creating Bullet Graphs in Flex

I just saw this post on the IBM ILOG Elixir blog and thought it was a good time to remind everyone of the Free Flex Bullet Graph component I posted a couple of years ago.

Enjoy!

Klok - How-to videos now available

We have begun posting some How-to videos to help you get up and running with Klok even faster. Check them out on our Youtube channel.

If you think we need a video addressing some functionality that isn't already there, let us know in the comments.

Friday, August 27, 2010

A note about submitting Klok bug reports or feature requests

This is just a friendly reminder that if you would like to report a bug or make a feature request and there is a need for us to get in touch with you, please make sure you leave some method of contacting you when you submit the bug report or feature request. Alternatively if you have a problem specific to you, please contact us at support@mcgraphix.com.

If you have posted a bug or feature request that asks a question or just says "help me", if we don't have your contact info, we can't respond.

Thanks

Klok 2.1.6 Now Available - Enables custom first day of week

Klok Version 2.1.6 was just posted. You can now specify the first day of the week from the Tools > Preferences > General screen.

As usual, you can get the free version from http://getklok.com/features.html or buy a license for the full version at http://getklok.com/store/purchase.php

Wednesday, August 11, 2010

Klok updated to 2.1.5 - More Google Calendar Fixes

Last night, we posted an update to Klok (2.1.5) which fixes an issue that we discovered where all-day events were causing the Google calendar import to fail. Even though all-day events were working previously. There seem to have been several issues lately which appear to be caused by changes in the way Google is returning the time data. So, if you notice any new incorrect behavior with the Google import, please let us know ASAP by submitting a bug report at http://bugs.getklok.com or by emailing us at support@mcgraphix.com

Friday, August 6, 2010

Klokwork Team Console: Early screenshots now available

We are continuing to work to toward an initial release of the Klokwork Team Console. Just to whet your appetite, we just posted some early screenshots (which are subject to change) on the Klokwork Team Console page of the website.

Also, don't forget about the Klok 2 discount that is going on now through Sunday.

Klok: $5 off this weekend only

Just to celebrate to upcoming release of the Klokwork Team Console, we are now offering a special discount for this weekend only. Now though Aug 8th, get $5 off a single user license by using the coupon code FB20100806-1 on the Klok store page.

AIR: Custom Icon Not Showing in Install Dialogs

I must be losing my mind because I am 99% sure that I saw my custom icon show up in the install dialog before. But the Flex AIR application I am currently working on does not seem to want to show the icon in the installer. A Google search yielded no useful results, so I am wondering if I am the only one with this problem. Anyone else run into this before?

Thursday, August 5, 2010

AIR Flex NativeMenu bug?

I think I have discovered a bug with the AIR native menu. I may be doing something that was not expected but here is what I am doing.

Let me set the stage. I have a Flex based workbench application that creates a basic native menu (File, Help, etc.). The application allows the user to install and launch various plugins using Christian Cantrell's example as an approach. When the user loads a plugin, the plugin contributes a menu item that I add to the main application's native menu. All works fine up until this point. The plugin can dispatch an event that exits the plugin module, which I capture in the main application. I unload the plugin and remove the contributed menu item from the main app's menu. Here is where the bug rears it's ugly head. The menu item only partially gets removed from the main menu. The resulting behavior is that the main menu still shows the plugin's menu item, but it appears to be disabled as clicking on it does nothing. Now for the really weird part. If you deactivate the window by minimizing it or activating another application, the phantom menu item disappears.

There doesn't seem to be any way to trigger the refresh of the menu programmatically.



Tuesday, August 3, 2010

Froyo is here... and it's Awesome

So Sprint pushed the Froyo update last night which was surprisingly painless. When I think of upgrading the operating system on any device I get a little scared, but in this case I really didn't have to do anything other than watch the progress bar for a few minutes. I wasn't timing it but the whole process took less than 20 minutes.

Now that I can watch all kinds of video and play all kinds of games on my phone, I realize that Flash on the phone drains the battery quicker, but not for the reasons you would expect. The reason was that I couldn't put it down. Having free access to all that stuff I was missing almost brought a tear to my eye. I spent more time using my phone than I ever had with my IPhone. My word of caution to people who are not able to try it first hand and have to listen to the media talk about it is that, when people say the battery drains faster, you really need to make sure that apples aren't being compared to oranges. Make sure that the reports are based on equivalent use of each device.

As I was playing around with it, I watched some videos on Adobe TV, played some of the games that were in the Adobe's Flash Showcase app and spend quite a while playing with it. Of course the battery went down slightly... very slightly. Nothing near the "OH MY GOD... I CAN HEAR THE BATTERY DRAINING BECAUSE IT IS DYING SO FAST" fud that is coming out of Apple. I was surprised at how little it actually affected the battery. Note that I was over WIFI, not 3G/4G so that probably would have an effect on battery life.

Overall I am very pleased with my EVO and Froyo so far. I will be posting about my experiences with it as I find new interesting things.

UPDATE: I said that Sprint "pushed" Froyo, but they actually didn't. They made it available for geeks like me to check for updates manually. If you can't wait, you can go into the Settings > System Updates > HTC Software Update menu.

Monday, August 2, 2010

OpenPlug Elips - update but still no joy



Well I was able to get past my original problems but after 5 minutes of playing with it I seem to have broken it again. With a very simple app with just text in it it compiles and tests ok from within FlashBuilder and when I package and install to my Android emulator set up with Froyo. However, when I add what I think is bare bones application funcionality, it starts to go haywire again. Basically I have a List that I want to populate with XML from a webservice. My initial thought was to use an mx:WebService (which is what I am doing in the browser version). No luck though... WebService doesn't seem to exist in the ElipsFlexSDK. I could always get the data another way via URLLoader so I forged ahead and figured I would just compile in the XML using an mx:XML tag and come back to the remote data access later.

"Sorry folks, park's closed"... This error: "Could not resolve mx:XML to a component implementation" is particularly frustrating because when prototyping, I use this all the time. (If there was a 6 foot moose to punch in the nose I would have). I am not giving up yet though. So I create local variable of type XML and initialize it to a chunk of XML. Voila... it builds again and I can run it in the emulator in FlashBuilder. So at this point all I have to do is package into an APK file.

....Um....no. I get a whole bunch of errors starting with one like this:

C:\OpenPlug\My Systems\Flex_XD\ElipsProject\elips_bin\ElipsProject.cpp:582: error: invalid conversion from 'avmplus::Atom' to 'avmplus::ScriptObject*'
This is where I am giving up for now. It just doesn't seem friendly enough for me to start going down this path. The upside of it is that it supports iOS but I am personally starting to care less about the iPlatform altogether anyway. Especially now that I scrapped my iPhone in favor of the HTC Evo... which totally rocks by the way... I missed Flash on my phone way more than I even realized but I really am enjoying it. Plus I now can start on the Klok for Android app... I've said too much already. Stay tuned.

Note: I keep putting "emulator" in quotes because it doesn't appear to really emulate the real Android. It doesn't look anything like what it looked like when I packaged and installed the apk file to the actual Android emulator. This may be because Elips seems to only have profiles for Android 1.6. More importantly, if something works in the emulator in FlashBuilder I would expect it to work similarly in the Android SDK emulator.

OpenPlug Elips - Sounds great but...

Don't you hate when you get all excited about how easy something is and then try it out and it just doesn't work the way you expect it to?

Well, OpenPlug Elips Studio sounds pretty great (except for the price) so I decided to give it a quick try while I await Flex Hero. So I created a very simple app with some text on it and tested in FlashBuilder and saw the Android emulator (I think... it kind of looks like an emulator comes up and then the air app comes up and is positioned over top of the emulator) come up and show me my application. So far so good. Then I decided I wanted to try creating the APK file and install it on the emulator myself and eventually on my Evo (Froyo is coming tomorrow so I hear).

This is where things started to go wrong. First off, I had an Actionscript error where I had a creationComplete handler specified on the application but didn't have a matching method in my code. The error message shown in the console was pretty big considering the error. So it took me a few to find my problem.

Then I compiled again and got a different error regarding the keystore being in the wrong format. I thought the issue was that in the configuration I hadn't correctly specified the necessary parameters to generate a key. So I specified all the values that were required and tried again. No joy though. The new error... "Incorrect AVA format". I don't really know what that means. A search of the support forum, returns exactly 1 result that mentions "rebuilding the keystore". Not exactly sure what that means either so I am dead in the water at this point.

Hey Adobe... help me out here. A beta of Hero would really help right about now.

Klok 2.1.2 Released - annoying bugs fixed

This latest Klok update (2.1.2) contains mainly fixes for the Time Entries tab where updates, and deletes were not correctly updating the screen until you picked a different project and came back.

Thursday, July 22, 2010

Flex Hero now available for download?

If you are like me then you are anxiously awaiting the ability to create apps for mobile devices with Flex. With the announcement of Flex Hero a couple of weeks ago I have been a kid waiting for Christmas. Several people have asked about Klok for Android and I have been playing around with Flash CS5 but I would love to build it with Flex if possible.

So today I decided to see what additional information was available online. A quick Google search returned this result:


Clicking the link brought me to the general login page for Adobe's site. Upon logging in I was brought to the Adobe Groups home page. Unfortunately, that is where the trail went cold. Hitting the link directly, even after logging in, gave me an generic permission denied error.

It seems that on July 20, it was possible to download the Flex SDK with Hero atop it, but it is no longer publicly available(?). Perhaps there is a private beta that I don't know about. If there is I would love to be included... Did you hear that Adobe? Just in case you didn't, I will say it lounder: ADOBE, PLEASE INCLUDE ME IN THE FLEX HERO BETA.

Klok 2.1.1 Released - Now supports Google Apps Calendar

Several people have pointed out that importing from Google Apps Calendar didn't work while importing from GMail Calendar did. Klok 2.1.1 now supports Google Apps Calendar so that you can import your meetings (recurring ones to0) directly to Klok. Make sure you select "Use HTTPS" when entering in your credentials. As usual, let me know if you run into issues at support@mcgraphix.com

Monday, July 19, 2010

Klokwork Team Connector Public Beta Now Available

I am pleased to announce the public beta release of the Klokwork Team Connector for Klok 2. You can download the beta and find instructions on how to integrate it into your environment at http://getklok.com/KlokworkTeamConnector.html

Note, that you will need a license for Klok 2 and have updated to the most recent release (2.1)

For those who don't know, Klok is a desktop application that runs on Adobe AIR. Find out more by visiting the Klok website, following us on Twitter, or becoming a fan on Facebook.

Wednesday, June 30, 2010

Klok wins Editor's Pick award

The folks at Software Informer notified me that Klok was chosen for the Editor's Pick award. Find out what everyone is talking about by checking out the Klok 2 features at http://getklok.com/features.html

Monday, June 21, 2010

Klok updated to 2.0.9 - Fixes some bugs

If you happen to have downloaded Klok 2.0.8 in the few hours it was available, you will want to immediately update to 2.0.9. Although we fixed the issues with the tree view not remembering the order of top level items and the issue with the skin selection not saving, we unfortunately introduced a bug that was making the dashboard show no results... even if you tracked time during the period you were reporting on.

This update fixes it.

Thursday, June 17, 2010

Klok | Adobe CS 5 integration anyone?

Yesterday, I read something about Adobe's Creative Suite SDK and it got me thinking. As someone who spends a lot of time in Adobe tools (Illustrator, Photoshop, Dreamweaver, etc.) I might find it useful, if I had a panel right in those programs where I could start or stop working on a project and have it automatically start the Klok timer. This seems entirely possible with their SDK. However, before I spend a whole bunch of time working on it, I figured I would put it out there and see if there was actually any interest to anybody else. So is this something that you would find useful or should I not waste the time?

Who am I kidding... it seems like a fun thing to do, so I will probably do it anyway at some point.

Let me know what you think in the comments.

Wednesday, June 16, 2010

Klok gets a new website

With the launch of Klok 2 we didn't have much time to refresh the website. Over the last week or so, we finally got some time to update the site. The site has not only a new look but also some new information about some new products and features that are coming soon. Check it out and let me know what you think.

Tuesday, May 25, 2010

Rock Star UX Designer/Flex Developer wanted

Are you one of those rare individuals who have the skills of a UI/UX Designer and the skills of a Coder? If so, then I have the job for you. I am looking for a Rock Star UX Designer that can take business requirements/user scenarios and turn them into designs/prototypes that are innovative and intuitive. My team is relatively small which provides lots of space for collaboration. If this sounds like something exciting to you, then take a look at the full job description and send us your resume at hrjobs@workscape.com

Saturday, May 15, 2010

Klok 2 - Now available

It has been a long road but I am happy to say that Klok 2 is now available. There is a free version that you can download now which you can upgrade to the full version by purchasing a license key on the Klok website. Visit the Klok website at getklok.com for more information.

Thank you to everyone who helped test the product.

Whats next for Klok?

This launch is just the start of some exciting things to come with Klok. We expect to be release some Klok Conntectors for some popular time tracking/project management systems. Stay tuned.

Don't forget you can stay up to date with all the Klok news by becoming a fan on Facebook or following us on Twitter.


Thursday, May 6, 2010

Building Flex 4 AIR application with flex-mojos (Maven) - Update

It's been a week since I originally posted about Building Flex 4 AIR apps with Maven. This is just a quick note that I made an update to the code listings. The update in question is pretty minor but just in case you copied code from the previous post and it stopped working all of a sudden this change might be the culprit.

The change is simply that a change was made in the latest 3.7-SNAPSHOT of the plugin that changes what was flexbuilderCompatibility to flexBuilderCompatibility. Notice the capital "B" in flexBuilder:


<flexBuilderCompatibility>true</flexBuilderCompatibility>

One other thing to note is that I posted some of this same information on the flex-mojos wiki.

Tuesday, May 4, 2010

Someone noticed the worm in the Apple

I can't say I am surprised at this investigation by the FTC. I wonder if Steve Jobs is? I'm gonna go out on a limb and say that someone at Adobe may be grinning on the inside about this.


AgileUI now has a new look

In case you stopped by and wondered what happened with the design of my blog last night. I may have been in the middle of updating it with a new theme. The new design seems to be working completely now. Feel free to leave a comment and tell me what you think.

Thursday, April 29, 2010

I finally understand Steve Job's argument against Flash

Yes. That's right, I finally understand Steve Job's argument... and it is more asinine than I thought. You may have seen that he posted an open letter on the Apple website clearly spelling out his argument. While there are some things I can't disagree with such as stability and security on Macs (since I don't work on a Mac that much), there are a few statements that really clear it up for me.

What I mean by that is the fact that Steve Jobs is so removed from the lowly task of developing software that he cannot comprehend what it would take to create an equivalent application in HTML5, CSS and Javascript. To quote Steve Jobs:
If developers need to rewrite their Flash websites, why not use modern technologies like HTML5, CSS and JavaScript?
There really are no words to describe how much this trivializes what Flash developers do.

You might as well say:
Why take a plane from New York to LA when you can ride a bike?"

The two technologies have widely varying capabilities and weaknesses. Why not use HTML5, CSS and JavaScript? Because they aren't good enough yet. They just aren't. I know Steve wants them to be and maybe someday they will but right now you just can't do the same thing. Even if some websites, applications, and games could be done it HTML5, it isn't necessarily cost effective for me to change everything to support one platform.

And do we really need to hear how Apple defines Open again:
Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.
Now I don't know about you but this statement is just as true as Jobs's
Apple iDevice products are 100% proprietary. They are only available from Apple, and Apple has sole authority as to their future enhancement, pricing, etc. While Apple's products are widely available, this does not mean they are open, since they are controlled entirely by Apple and available only from Apple. By almost any definition, Apple's iDevice is a closed system.
And when you think about it, the Flash Player is free, Adobe's Flex SDK is open source and the Flex Compiler is free, the Flash Player format spec is freely available. It doesn't cost anything additional for a developer to start creating apps for the Flash Platform. Just a browser, the free items above and some initiative and off you go. Plus, I can't remember the last time Adobe stepped in an disallowed any Flash application from being sold (or given away for free)

In contrast, you need to buy a Mac from Apple to build iDevice apps, you need to pay for the privledge of becoming an iDevice developer (which doesn't guarantee they will let you actually distribute anything you create). You then have to submit your creation to Apple's approval process (whose guidelines vary widely depending on some unknown criteria). At any time Apple can choose to prevent your creation from being distributed even if it approved it previously.

Now seriously, does Apple really think they are more "Open" than Adobe?

Apparently Jobs also doesn't understand the meaning of the word full. So here is the definition for anyone else who doesn't know:
  • containing as much or as many as is possible or normal
  • entire: constituting the full quantity or extent; complete;
  • complete in extent or degree and in every particular
More...

When a person goes to a website and the whole thing or any significant part of it cannot be seen, then they are by definition not seeing the "full" website. It doesn't matter that YouTube videos can be seen if the ones I want can't be seen. If many of the sites I visit use Flash, and many do, then I am not seeing the "full" web. If I play a lot of games online that are Flash, then I am again not seeing the "full" web.

I do agree that Flash was created in the PC era. However, Objective-C was too. And who cares? Flash is pushing beyond PCs too. Targeting TVs, mobile devices, and anything else with a screen is just as likely with the Flash Platform.

Having Flash on mutliple types of devices does not mean that Adobe (or their developer base) wants to take a single application and run it on every device. What we do want is to be able to leverage some code, logic and assets in order to quickly build contextual apps without driving costs up by recoding everything in a different technology.

So yes... I understand what he is saying. To paraphrase: "I am so important that it doesn't matter that I am so out of touch with reality... people will follow me! And by the way... I want to control everything"


Wednesday, April 28, 2010

Building Flex 4 AIR application with flex-mojos (Maven)

After spending a number of hours trying to get my Flex 4 AIR application to successfully build with the maven flex-mojos plugin, I was finally able to create a pom.xml file that worked. There are a few gotchas to deal with which are detailed below. First of all here is the working pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://
maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mcgraphix.xd</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app Flex</name>
<properties>
<flex.framework.version>4.0.0.14159</flex.framework.version>
<sourceDir>src/main/flex</sourceDir>
</properties>
<packaging>swf</packaging>
<build>
<sourceDirectory>src/main/flex</sourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.7-SNAPSHOT</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>${flex.framework.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.compiler</groupId>
<artifactId>adt</artifactId>
<version>${flex.framework.version}</version>
</dependency>
</dependencies>
<configuration>
<sourceFile>AirTest.mxml</sourceFile>
<flexbuilderCompatibility>true</flexbuilderCompatibility>
<descriptorTemplate>${basedir}/src/main/flex/AirTest-app.xml</descriptorTemplate>
<keystore>${basedir}/cert.p12</keystore>
<storepass>secret</storepass>
<includeFileSets>
<fileSet>
<directory>src/main/resources/embedded</directory>
<includes>
<include>*.*</include>
</includes>
</fileSet>
</includeFileSets>
</configuration>
<executions>
<execution>
<goals>
<goal>sign-air</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>air-framework</artifactId>
<version>${flex.framework.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</project>


Also notice that includeFiles and includeFileSets configuration parameters are both set. Although the documentation says they are not required, leaving them out causes an exception to be thrown from the sign-air goal. This has been fixed in the latest snapshot.

Also note that it seems to only be possible to include files that are located within the src/main/resources directory.

Also, one other thing to note is that the flex-mojos plugin uses the application descriptor xml file as configured in the descriptorTemplate node. However, there is one change that I had to make in order for the plugin to work. Normally, FlashBuilder updates the descriptor template to specify the name of the SWF in the <content/> node:

<content>[This value will be overwritten by Flex Builder in the output
app.xml]</content>

In order for the sign-air goal to work, I had to manually update that node with the correct value. In my case it needed to be:

<content>my-app-1.0-SNAPSHOT.swf</content>
This change breaks FlashBuilder but there are two solutions. One would be to just make a duplicate version of the descriptor that you use with flex-mojos and one with FlashBuilder. However, you would need to manually keep them up to date if you change the version number. The other option would be to dynamically make a copy and then update that node as needed. This would theoretically allow you to automatically sync the version number with the version specified in the pom. I haven't figured this part out yet, but I will update this post with my progress. This has been fixed. You can specify the flexBuilderCompatibility parameter to let the plugin manage this automatically


<flexBuilderCompatibility>true</flexBuilderCompatibility>

UPDATE: You can also use the special ${output} token in the application descriptor as the value of the content tag which will allow the plugin to set the name of the swf into the descriptor automatically. With this approach, you don't need to set the flexCompatibility paremeter. However, that still breaks Flash Builder's Export Release Build function.

The last step if desired is to let the plugin manage the version number in the application descriptor. This can be done by setting the version node with ${version}.

<version>${version}</version>

This doesn't break Flash Builder, however if you use the Export Release Build the version number will be "${version}".

I will bundle everything up and post here shortly.


Also, I have posted some of my findings to the Flex-mojos Google Group.

Friday, April 9, 2010

Lets not forget that the iPhone can have buggy apps when built natively too

There seems to be a trend with the people backing Apple in their decision to prevent Flash from being compiled to the iPhone. Many developers have been saying that that capability will cause a whole wave of poorly designed/developed applications from get submitted which would be a huge burden on the App Store review process.

Am I the only person who has my iPhone lockup or crash when using native apps?


I doubt it. Bad developers are bad developers regardless of what language they use. The fact that a bunch of new app submissions is going to bog down the review process speaks more about the review process than the apps. What if for a whole new generation of Objective-C developers comes out of the woodwork? Wouldn't that slow down the review process too? Wouldn't you get just as many poorly written applications? The fact of the matter is that the whole concept of a review process is ridiculous. If Apple wants to maintain quality, then have the review process be optional. Then let the consumer choose whether they want to download apps that don't have the Apple approval.

There are probably a hundred different compromises that could be made that would benefit both developers and consumers while at the same time protected the Apple brand experience. The real problem is Apple's lack of willingness to compromise.



Apple pours salt on Adobe's wound...


In a further attempt to crush Adobe, Steve Jobs has announced that starting Monday (coincidentally the same day as the Adobe CS5 launch event) you will no longer be able to dial the number 5 from your iPhone. Steve Jobs states that the number 5 is buggy and has lead to 92% of all iPhone crashes.

This couldn't be true right? Of course not... but it is only slightly more ridiculous than his decision to prevent the use of the Flash iPhone packager. There are a lot of developers out hear that didn't want to have to take sides in the Adobe/Apple war... but we are taking a lot of shrapnel from Apple's F-You grenades.

I for one will be focusing on AIR development for every other phone and if I have to learn Silverlight to support Windows Phone 7, then I will.

This certainly doesn't make me want to go spend $3000 on a Mac, then pay for the privilege of becoming an "iPhone" developer, then spend a ridiculous amount of time learning a language that's only other use is for supporting a single minority (talking Mac vs. Windows here) platform, then spend tons of time building the next great mobile application which will need to ported to Flash anyway to support all the other phones, only to have it take forever to be reviewed by the App Store nazis and finally get rejected because Steve Jobs doesn't like the color Red (or some other undisclosed reason).

Ok... I'm done ranting for today. Now I will go back to checking out the HP Slate

Wednesday, April 7, 2010

First problem with Flash Builder 4

I have been using the Flash Builder 4 beta for quite a while now and decided I would try out the trial version while I wait for my request for a license to go through my company. At the same time I got a shiny new Win 7 machine. So one of the first things I had to do was install FB4 and the ClearCase plugin from IBM. What I noticed was that it installed fine (I can use the check in/out from the right click menu), but when I went to Customize Perspective so I can make it show up in the top level menu... I couldn't because once the Customize Perspective window is open, the OK button doesn't do anything.

This is probably not a top priority problem but it is annoying.

To top it off, I went looking in the Adobe Forums to see if anyone else has the problem and I can't even find a Flash Builder 4 forum at all. There is one for the beta but I don't think this belongs there. And it isn't a Flex problem so it doesn't belong there either.

Monday, March 8, 2010

What's new with Klok 2?

It has been a while since I blogged about Klok 2. This is because I have been head down working on it. I am happy to announce that we are getting really close to releasing both the free version and the full version in the coming weeks.

To sum up what it includes:
  • Added the ability to import events from Google Calendar or MS Exchange Calendar
  • Enhanced the reporting (dashboard and timesheets)
  • Added the framework to allow skinning the application (3 additional skins are included)
  • Added the framework to allow connecting to third part systems (more info coming soon)
  • We fixed over 100 bugs
  • and many other enhancements

If you are a Beta tester for Klok 2, then last night's update will bring you up to the Release Candidate version.

If you are not a beta tester, stay tuned by following us on Twitter, becoming a fan on Facebook, or watching this blog.

Wednesday, February 3, 2010

Did Steve Jobs Just Kill the iPad

In case you are living under a rock you may not be aware that Apple and Adobe have there... differences. This article on Slate asks whether Steve Jobs' decision to keep Flash off the IPad will "kill Flash".

There have been many "Flash Killers" over the years which have faded into obscurity, so you could easily ask whether this decision will be worse for Apple than Adobe. If you think about all the great things that the iPad would be great for (video, mobile video conferencing, games, presentations) you will see that most if not all of them are currently solved with adequate success using Flash today. So, as an iPad user you will probably eventually be able to get all those things on the iPad, but my expectations (and those of many gadget users) are that any new device should add value on top of what I have today... the iPad doesn't (at least not in the way I want it to).

So the argument needs to focus on which technology meets the needs and expectations of the target audience. I just don't see how Apple's latest device will do that. It just isn't as revolutionary as the iPod or iPhone.


Thursday, January 21, 2010

Klok 2 Beta update fixes critical issue

If you have been using the Klok 2 beta, the previous update (Klok 2 Beta Build 2.01) had a serious issue that caused it to hang while launching in some cases. If you have experienced this problem, you can download the update manually using the email you received when you joined the beta program.

If you have not experienced this issue we strongly recommend that you install the update (and all updates during the beta) when prompted.

Also, make sure you keep up to date with progress by visiting the Klok Facebook page and submit any bugs at http://bugs.mcgraphix.com



Wednesday, January 13, 2010

New Klok 2 Beta build posted last night

Last night I posted a new build (1.17) of the Klok 2.0 beta which fixes some issues with snapping on the week view as well as an issue on the comments tab of the timesheets.

We are getting close to release. If you find critical issues make sure you submit them at http://bugs.mcgraphix.com so I can determine when we are ready for release.

Monday, January 11, 2010

Your donations are on their way

Your donations are on their way to help feed those struggling with hunger so I would like to take another moment to thank all the Klok 2 Beta Testers:

Stijn V. E., Brian V., Perisoft, Nick O., Andrea C., Ritual, Kaolin S., Benjamin W., Jan B, Sidney K., Sebastian Z., Adam W., David M., Justin J., Nicole N., Michael P., Jonal J., Thomas S., Zdenek M., Joel W., Ariane D., Karalyn P., Oscar S., Pawel P., Agrobio Products B.V., Brian C., mFace Marketing Solutions, Glenn H., Jay M, Daniel A., Benjamin T., Data Logg, Eric O., Adam G., Blaine E., John B., Alchmi, Helge H., Ross S., Rupert E., Brandon B., Farrell Documentation, Wouter V., Denis B., Stacy K., Ken Y., Phillip R, John S., Jonas N., Exit12, Jordan H., Anders T., Wouter G., Andy H., Hogan & Associates, Anna K., John S., Ofer G., Anthony M., Sean B., Frank J., James T., Charles R., Grade A, Taylor B., Steven J., Hung P., Michael Z., Torgny B., David B., Paul S., Rob H., Mitch F., Jon W., TRR Digital Industries, Liam D., , Shaun D., Blahnik Digital Designs, Don S., Larry M., Octave 2 Media, Stephen C., David P., Malcolm O., Chistian K., Jason D., mcgraphix, inc., , Trevor G., Mark A., Mark A., Betrand P., Steven W., Sofia P., Clifford L., Benjamin H., Ziad W., Steffen W.

Half of each of your donation is going to Feeding America. For more information on how you can help visit their website.

Friday, January 8, 2010

High resolution PDFs from Flex

I was recently working on a mechanism to save some panels (similar to some Dashboard graphics from the Klok 2 dashboard view) created in a Flex application to the user's harddrive by converting them to PDF. The obvious choice for PDF creation is AlivePDF. However, the quality of the resulting PDF was...well terrible. The problem was that instead of trying to recreate every last bit of my app in the PDF, I was just passing a reference to each panel into the pdf.addImage method like so:

pdf.addImage(myPanel)


What this actually does is take a low resolution screenshot (72 DPI) of the component and add it as an image to the pdf. So when you print the pdf, the quality is pretty bad. After some digging I found this post which seemed to be exactly what I was looking for. I thought that simply doing this would do the trick:

var image:ImageSnapshot = ImageSnapshot.captureImage(myPanel, 300, new PNGEncoder());

The problem is caused by the fact that Alive PDF doesn't support transparent PNGs which is what is returned when using the PNGEncoder class which is part of Flex.

A little more digging (several hours worth actually) turned up this post which again sounded like my solution. Applying the code fix from that got me almost there. I created my own NonTransparentPNGEncoder which was basically a copy of the built in PNGEncoder with this new version of internalEncode() method:
private function internalEncode(source:Object, width:int, height:int,
transparent:Boolean = false):ByteArray
{
// The source is either a BitmapData or a ByteArray.
var sourceBitmapData:BitmapData = source as BitmapData;
var sourceByteArray:ByteArray = source as ByteArray;
if (sourceByteArray)
sourceByteArray.position = 0;
// Create output byte array
var png:ByteArray = new ByteArray();
// Write PNG signature
png.writeUnsignedInt(0x89504E47);
png.writeUnsignedInt(0x0D0A1A0A);
// Build IHDR chunk
var IHDR:ByteArray = new ByteArray();
IHDR.writeInt(width);
IHDR.writeInt(height);
IHDR.writeByte(8); // bit depth per channel
IHDR.writeByte(2); // color type: RGBA
IHDR.writeByte(0); // compression method
IHDR.writeByte(0); // filter method
IHDR.writeByte(0); // interlace method
writeChunk(png, 0x49484452, IHDR);
// Build IDAT chunk
var IDAT:ByteArray = new ByteArray();
for (var y:int = 0; y <>
{
IDAT.writeByte(0); // no filter
var x:int;
var pixel:uint;
for (var j:int = 0; j <>
{
pixel = sourceBitmapData.getPixel(j, y);
IDAT.writeByte(pixel >> 16 & 0xFF);
IDAT.writeByte(pixel >> 8 & 0xFF);
IDAT.writeByte(pixel & 0xFF);
}
}
IDAT.compress();
writeChunk(png, 0x49444154, IDAT);
// Build IEND chunk
writeChunk(png, 0x49454E44, null);
// return PNG
png.position = 0;
return png;
}

One final change and I finally had it working:

pdf.addPage();
var image:ImageSnapshot = ImageSnapshot.captureImage(page, 300, new NonTransparentPNGEncoder());
var resize:Resize = new Resize ( Mode.FIT_TO_PAGE, Position.CENTERED );
pdf.addImageStream(image.data, ColorSpace.DEVICE_RGB, resize);



Then I just save my pdf to a ByteArray and use the FileReference to save it.

var bytes:ByteArray = pdf.save(Method.LOCAL);
var file:FileReference = new FileReference();
file.save(bytes, filename);

Keep in mind that although the panels are high resolution, they are still bitmap graphics. So, you will not be able to copy and paste any of your text out of the resulting PDF.

In order for all this to work, I am using 0.1.5 Beta version of AlivePDF, Flex 3.4 and Flash Player 10.

UPDATE: One last note. Because this is generating a 300DPI version of your component, it takes some time. A few seconds for a few page document.

Tuesday, January 5, 2010

Your New Year's Resolution that you can achieve... Make More Money

Now that 2009 is a distant memory and everyone is settled back into work now is good time to think about a New Year's resolution. I know, I hate them too. However, here's a resolution you can stick to with the help of Klok. Repeat after me... "I resolve to make more money by making sure I correctly keep track of my time and then bill for the time and effort I actual spend".

That's right... Track your time better. Actually bill for your time spent. Make more money. What could be better than that?

Also don't forget that if you track how long you spend on projects, you will be able to more acurately estimate the next one.