Saturday, November 14, 2009

Eclipse buttons, Google Chrome drop-downs and Ubuntu 9.10

I installed kubuntu 9.10, then installed freenx, then downloaded and installed Eclipse 3.5. Then while trying to add packages to Eclipse I noticed that clicking on buttons had no effect. I thought freenx wasn't sending my clicks to Eclipse.

And I also found that drop-down lists in Google Chrome were blank - if the drop-down had 10 items in it, then a drop-down with 10 blank lines appeared.

And then while installing the Android SDK I found a post linking to an explanation and workaround:
If you put
export GDK_NATIVE_WINDOWS=true
in your .bashrc your apps will behave correctly again. This saved me a ton of time troubleshooting!

Droid Basics - Initial thoughts, initial uses

I've had my Droid for 7 days now. I'm a little bit in love with it. It's fast, the UI is fun to use, it keeps me connected, there are several fun apps, and I haven't even begun developing for it yet. Here are my impressions of it, speaking as a total Android newbie. Maybe this will help other people using the Droid for the first time.
  • Status indicators. Some are obvious, some aren't. Verizon's little quick start guide doesn't explain them. But their support page in a link to the "manufacturer's user guide" has them.
  • I wanted was to use the Droid on my fast home wireless network. And I wanted one-touch buttons to manage wi-fi and other power-related functions. Well there's a widget for that. It let you turn on/off the wi-fi, gps, bluetooth, sync and change the screen brightness. So simple and so necessary to keeping your Droid running all day.
    1. On one of your home screens touch "Menu".
    2. Touch "Add".
    3. Touch "Widget".
    4. Scroll to the "Power Control" and touch it.
  • Overall User Interface experience - GREAT. I love the touch screen and using gestures to move around. It's very responsive, unlike what I've heard about slower Android phones. Things are simple once you know to touch the "Menu" button for settings, extra functions, etc. Having used many Windows Mobile and older BlackBerries in the past this blows them away. I haven't used an iPhone for any length of time to compare.
  • Exchange support - I bought the $30 data plan, not the $45 business plan that provides business support. And I still use Exchange email - it's built into Android and is there to use. Verizon's $45 plan is simply there for them to ding companies that want business support. If you're like me and want to connect to your company email server without buying a company phone then just get the consumer plan. Set up was easy and everything is working great.
  • Navigation - this is Google's turn-by-turn directions application. Also known as the "Garmin/TomTom/Magellan killer". And really, Navigation is very good - very easy to use, accurate, quick to respond to new routes. There are a few choices they made with the User Interface that I don't care for - depending on how soon you turn the arrow indicating your turn direction is either on the left (for "turning soon") or the right(for "turning in several miles"). And I'd like a dead simple way to choose from a list of favorite locations, and a "go home" button. But none of these things are showstoppers - none of them would make me even consider getting another Garmin device when I've already spent the money on the Droid. Go Google!
  • Facebook - I've tried Facebook's official widget and application and I think they suck. Everytime I go back to the "Notifications" screen I see the list of notifications from last week. So I click "refresh", getting the latest notifications, but the next time I use the app I once again have only last week's list. And I'd really like to have an Inbox and a way to respond to my friend's messages but this is missing from the app. Without it I end up using the Droid's browser to go to facebook! Which actually works fine, so I've stopped using the official application and am frequently searching the Market for worthy replacements.
  • Other apps -
    1. I use and like "Swift" for twitter,
    2. "Barcode Scanner" just cause it's totally fun and impresses the family,
    3. "Listen" to subscribe and listen to podcasts,
    4. "WikiMobile" to look up stuff on my Droid instead of over the web,
    5. "Google Sky Map" so that at night I can look up, look at the stars, and then point my Droid the same direction to figure out if I'm looking at a constellation(s), and
    6. "Movies" to get local movie times quickly.
    7. I want to try out "Locale" but people keep reporting problems with it on the Droid so I'm waiting.
  • Keyboard -
    1. on the downside the keyboard is very sensitive,
    2. the keys are raised only the slightest bit making it hard to distinguish between keys and
    3. the protective case takes up some needed room along the top row of buttons.
    But see, one of my friends mentioned his acid test for hardware keyboards is to determine if he can touch-type with enough practice. I never thought of doing that. So now I'm being picky about the keyboard. I don't know if I'll ever touch-type on it. I suspect my thumbs are too thick.
  • Yesterday I found the easy on/off switch for all sounds. When the phone is in Locked mode, drag the speaker icon to the left, it's the opposite of unlocking the phone. So simple, yet so necessary.
So that's pretty much everything. Oh and I get a guilty kick out of hearing it say "DROIIID" every time a notification pops in. I keep forgetting to turn it off when I get to work. They make fun of me.

Thursday, November 12, 2009

Private browsing and freenx save the day

Recently I noticed a co-worker switching to incognito mode in Google Chrome when testing a Flash app. I didn't know why at the time but it stuck in my head and only a week later I found out why (the hard way): my browser seemingly randomly stopped reloading swfs. The browser continues to use the cached swf even though I reload the page or clear my browser cache - which is a common problem for Flash developers (see here for Adobe's suggestions). Incognito mode (or private browsing in Firefox) starts with an empty cache, so it's just a matter of a few key strokes to ensuring your Flash session is running the latest swf.
  • Google Chrome: Ctrl-Shift-N
  • Firefox: Ctrl-Shift-P
This week I installed kubuntu on a newly freed up desktop at home, intending it to be my development machine. But I don't want to sit at my desktop to work/play. And I've always missed the good ol' days of XDM at my university lab when we used to log into a remote server from a Solaris workstation.

So I setup kdm to accept remote connections and installed XMing on my Windows laptop and found the whole thing boring - my session seemed to crawl. I could work but only if I was very patient.

Another co-worker recommended freenx saying it used a different protocol than vnc. I'm working on it now - it's essentially a heavily modified X protocol running over ssh. They use several techniques to speed things up, including better compression, caching, and eliminating round-trips between the client and server. This lets them claim near-local performance over modems. It's impressive - it was a cinch to setup and it works as advertised. Latency is noticeable in some cases (scrolling through long web pages) but in other cases, like typing or clicking, I don't notice any latency. It's Christmas come early!

Friday, October 16, 2009

Sony Ericsson's XPERIA X3 Android phone looks awesome

I've been trying to keep up with the onslaught of new Android phones being released - this link has a video of the UI on the XPERIA X3.


Compare that with the Motorola Cliq soon to be available at T-Mobile.


The X3's video doesn't show as much as I'd like but what it does show is PRETTY.

I'm comparing the Android features I find most important here:

Wednesday, September 9, 2009

LiveCycle Data Services and FlexMonkey

I've been wanting to try FlexMonkey for a project at work but always had issues getting it to run our app - our app uses both SSL and PKI authentication (requires a valid cert from the user). Finally I bit the bullet and spent the time to get it up and running. Here's what I've found so far.
  • FlexMonkey does not come with BlazeDS or LiveCycle DS support out of the box. I found a single post on the FlexMonkey Google Group about this. For now, you need to recompile the MonkeyAgent to handle Secure AMF, Secure HTTP and Secure RTMP channels. Gorilla Logic is planning on supporting this in their next release.
  • Our app also uses FlexSpy when in debug mode. We have a separate Maven profile to only include FlexSpy for debug purposes. But FlexSpy runs our app under it's own application domain which is exactly what FlexMonkey does as well. So we could bring up our app inside of FlexMonkey but found some buttons and pop-ups appeared to be unresponsive. In reality the pop-ups were present but hidden by FlexSpy - I could still use my keyboard to enter data into the pop-up and the app behaved accordingly. This isn't very practical to work with so I rebuilt our app without FlexSpy and then I could see all components.
Here's what I did to get the MonkeyAgent compiled to support LiveCycle.
  1. I pulled down the Easy2BuildMonkeyAgent and Easy2BuildMonkeyLink code from their Google project.
  2. I compiled the MonkeyAgent using the Flex 3.3 SDK swcs, and the Flex 3.2 SDK automation swcs (automation.swc, automation_agent.swc, automation_dmv.swc) and the corresponding Flex 3.2 SDK locale swcs (automation_agent_rb.swc, automation_rb.swc).
  3. I added the following to my compiler options:
  • -includes mx.messaging.channels.SecureAMFChannel
  • -includes mx.messaging.channels.SecureHTTPChannel
  • -includes mx.messaging.channels.SecureRTMPChannel
  • -includes mx.messaging.channels.RTMPChannel
After compiling MonkeyAgent I added it to my webapps dir and most everything ran smoothly after that.

Everything above is on the FlexMonkey sites, but scattered across several posts and docs.

        Tuesday, July 28, 2009

        Chrome Gmail Notifier extension hack for your domain

        My email domain is hosted by Google, so when they released an extension for Chrome for Gmail I was disappointed that it only supported @gmail.com addresses.

        But here's a simple way to fix it:

        1. Install the Gmail Notifier in Chrome

        2. Close Chrome.

        3. Find your extension's installation. On my Windows machine it's here:

          C:\Documents and Settings\tmckernan\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions\ilpnegfhimflflifcnmgpeihglhedbnn\0.1

          So you may have to find the proper extension folder on yours.

        4. Look for these lines near the top:

          var gmail = "http://mail.google.com";
          var gmailAtomRef = "https://gmail.google.com/gmail/feed/atom";

        5. Replace them with this;

          var gmail = "https://mail.google.com/a/<your domain here>/";
          var gmailAtomRef = "https://mail.google.com/a/<your domain here>/feed/atom";

        6. Save the file, start up Chrome, and try clicking on the Login button along your status bar. If all is well it should take you to your Gmail login for your domain, and then the Notifier will then switch from saying "Login" to "Inbox".

        Flex debugger hanging your browser

        I've been running into a situation where nearly every time I try to debug my app, the browser hangs on the Flash "loading" screen.

        With Flex Builder you can stop the debugger and it kills fdb, un-freezing the browser, and then you can use your app and browser again, but without the debugger.

        With IntelliJ pressing "stop" doesn't seem to kill fdb, so then I have to go into Task Manager and kill fdb myself.

        Based on the bug reports on Adobe's site the problem occurs when your app tries to make a connection back to your local server (127.0.0.1), and somehow that stops it from also connecting to fdb. They say it's been fixed but not released to the public, so if this is hurting your productivity you might want to go watch it on their Jira so you will know when they release it:

        http://bugs.adobe.com/jira/browse/FB-16153

        They promise to post to the bug report when they make the release public.

        The only workaround I know of is to use Flash Player 9 instead of 10. For me 9's debugging works fine every time and my project doesn't require 10, so I'm good to go. For my co-workers that require 10 though...