Pages

    Wednesday, March 2, 2011

    Video Review: Nokia BH-905i Bluetooth Stereo Headset

    I have recently had the privilege to review the Nokia BH-905i Bluetooth Stereo Headset through the WOMWorld project.  It's quite a nice set of headphones, with lots of nifty features.  Watch the review to hear more.


    Monday, February 21, 2011

    Final Admission of the Rock Star

    Well, what a wacky and wild week so far.  And it's only Monday (it is Monday, right?).

    Long story short, Cole started running mild fevers on Thursday night.  We took him in Friday, but the fevers cleared up.  Per protocol, they drew cultures.  Saturday morning at 6:30 AM we got the call that the cultures grew bacteria.  And not only did they grow, they grew with zest!  Back to the hospital (this time through the ER) where they drew more cultures (the second set) and admitted us up to good ol' 8B.

    Keep in mind that Cole has been completely asymptomatic this whole time.  He's the picture of 5 year old health.  With that mentality, we waltzed up to 8B.

    It was a bit like walking into Cheers, and Cole was Norm.  Nurses and clins would look at Cole (without recognizing him), look at me, remember me, then realize who this big boy was that was standing next to me must be.  Their jaws would drop open, they'd do a double take back to Cole, then yell "COLE!!!!!!!!!!!!!!!"

    At one point, I had to leave the room for about 15 minutes.  I came back to find Cole, sitting on the bed with two nurses, telling them all about his plans to be a marine biologist and study at UNCW.  He's been like a rock star.  The floor staff all remember him, and they all love him.  It does a daddy's heart good to know there's a special place where his little boy is loved so dearly.

    Here's the medical low-down.  Cole's line has most likely been "colonized" by a common skin bacteria (Staph epi, for those that keep track of these things).  Colonized means that the bacteria has likely been living there for some time, but it's not causing Cole any trouble.  It's also likely the cause of the positive culture that grew back in January.  It's not really dangerous, but it's still a potential source for infection and the best way to treat it is to take his line out.

    Now, quite miraculously in my mind, this line has lasted us for two years of being accessed once to twice a week.  That's hard use for a port-a-cath line, and by all rights we should have had an infection well before now.  But, the line lasted almost exactly as long as it needed to.  I'll let you attribute that to what you will, but I know where I'll attribute that kind of providence.

    So, tomorrow, Cole's line will get pulled.  He'll have two more days of IV antibiotics (through a regular old IV) and then, sometime Thursday, we get to go home.

    And when we go home, Cole will be well and truly finished with his cancer treatment.

    Wednesday, February 16, 2011

    Learning Android: Appcelerator's Titanium vs. Native-built Apps

    I have finally been able to take the time to do something I've been wanting to do for a long time:  some mobile development.  I decided to work on some Android apps first, as the barrier to entry is a little lower.  As this was an exploratory mission, I thought I would give a few development options a try.  Those development options were native Android development via Eclipse and Appcelerator's Titanium Platform.

    By way of explanation, Appcelerator's Titanium Platform is a development environment that allows you to write HTML/CSS/JavaScript apps and have them compiled down to native code (Android or iOS).  Titanium provides a rich framework of APIs from which to build your apps.  For instance, the UI components in Titanium are analogous to the UI components in Android.  The advantage to Titanium is that you can take one app and compile it down to any of the supported platforms, like Android or iOS.  Since Titanium compiles down to native code, you're not running interpreted, though there are some specific wrappings that Titanium has to build in.

    The app:  Quotious

    For my app, I had a few necessities.  First, it had to be twitter-like, meaning that it was a bunch of short messages that can be displayed as a list.  I also wanted the data to be served up from some external source and arrive packaged in JSON.

    Based partly on these needs, and partly on an idea I got from a buddy, I decided to build an app that captured quotes.  You could specify the author of the quote, the source of the quote and the quote itself.  Nothing too fancy.  I called it "Quotious".

    In light of that, I first built out a small Jetty based server which I could run on my local.  It was backed by a MongoDB database.  The server simply served up the contents of the database in a RESTful manner (I really only implemented the GET).  I seeded the database with a bunch of quotes from Darth Vader, as he is a worthy source of quotes all over the interwebs.

    Then, I got to work building the apps.

    Titanium Quotious

    Titanium Quotious
    I decided to delve into Titanium first, as I was most excited about that.  While I can do all the Java programming anyone could ask for, I absolutely love working with JavaScript.  Titanium seemed like it would be a fun experience.

    From start to finish, it took me about two days to turn out the Quotious app in Titanium.  Titanium offers a great example app called "Kitchen Sink" that implements examples of an incredible number of their APIs.  I relied heavily on an example twitter app that comes included with Kitchen Sink, adapting it for my needs.

    The Titanium implementation of Quotious doesn't have a persistent store and pulls the data over a RESTful call every time you fire up the app.  In that manner, it's not very robust, but the real story here is that it was almost trivial to implement.  I was able to bring all of my traditional web app skills to bear and had I really been trying I could have turned it out faster.

    Native Quotious

    After I was done with the Titanium version of the app, I turned my hand to a natively built implementation done in Eclipse.  I quickly went through all the tutorials and found myself in an interesting position:  After Hello World, there wasn't a clear path to building up my understanding.  So, I turned to The Goog and found this superb implementation of a twitter app that is put together as a tutorial by Marakana.

    Native Quotious
    This app took me about twice as long to build, roughly 4 or 5 days.  The reason, though, is significant.  Titanium abstracts away much of the underlying Android structure.  You are free to basically build your app as if it were a web app and not worry about the inner workings of Android.  While those inner workings can only suffice to make your app stronger, they're not strictly necessary to simply build an app with Titanium.

    As I worked through the Marakana example, I was enlightened about all of the various moving parts that truly make up an Android app.  From the Manifest.xml to the views, from the actions to the intents, I had to actually learn what went into an Android app.  This accounted for much of the increased time of development.

    The native app that I developed is slightly more robust than the Titanium version.  It is backed by a SQLite database.  As updates are fed from the web source they are placed into the database.  As those changes go in, the UI is updated and what you see on the left is what is created.  In light of the database, my app will survive a loss of connectivity with grace, serving up what it has already seen and remembered in the past.

    Conclusion

    Let me not give the impression that Titanium is only about building web-app like Android apps.  It's not.  There is rich support for what makes a truly native app within Titanium.  You can create and manipulate a database, you can work with actions and intents.  You can do all of these things.  (Update:  See the first link below for some info on how to do all of these things)

    But you don't have to.  And therein lies what might be the most seductive thing about Titanium.  You can build your app as if it is a web app, only it runs natively.  You don't have to expand your skill set to understand all of the ins-and-outs of what makes up an Android app.  All you have to do is take your current skill set for building JavaScript heavy web apps and port them over to your device of choice.

    If developer time is your main constraint, then Titanium is likely the way to go.  You can hit the ground running faster with Titanium.  You don't really have to be an "app developer" to develop apps with Titanium.  What's more, and something I only lightly touched on, with very little augmentation, you can port your app to an entirely different platform such as iOS.  With very little, if any, changes, I can run the Titanium version of Quotious on an iOS device by simply compiling it down.

    One word of caution, though:  If you choose the Titanium route, don't eschew learning what really goes into an Android app.  Knowing the actuals behind Android can only make you a stronger developer in the long run.

    Edited:  For formatting
    Updated:  Added pointer to first comment with additional information

    Thursday, January 27, 2011

    Working from Home: What are Your Pro Tips?

    For the past month and a half, I've had the privilege of working from home.

    The benefits are unquestionable:  I don't commute, I simply walk up and down the stairs to go to work; I can pitch in throughout the day if my wife finds herself in a pinch; Should sudden inspiration hit me, I am mere steps away from a comfortable work environment.

    But I find that there are some surprising catches that I didn't expect.  For instance, now that my work and home are effectively the same place, it's harder for me to "leave work behind".  Without a commute, there's no time to wind down.  It's much harder to hold "meetings" as I have to work around the sleep schedules of my young children.

    Another interesting side-effect is that I am finding myself working more.  After the kids go to bed it's way to easy to walk upstairs and continue what I left behind earlier in the afternoon.  This is time my wife and I have traditionally spent together.  I also tend to "get to work" earlier, walking upstairs with coffee in hand, having spent only a few minutes walking around downstairs like a zombie til I am almost fully awake.

    So, while working from home is truly an awesome thing (at least for me), I'm finding that it requires a completely different set of coping mechanisms.  I wanted to toss out the question to all of you that do or have had the opportunity to work from home:

    What survival skills have you developed to allow you to be more productive while working from home?

    Leave your comments below, and after a bit, I'll compile these pro tips into a blog post.

    Wednesday, January 26, 2011

    The Last Dying Gasps of Cancer

    As many of you may know, my oldest son, Cole, was diagnosed with ALL (Acute Lymphoblastic Leukemia), a type of cancer, on November 14, 2007, just days after his second birthday.  It has been a long, trying road to see him through his treatment.  Much of the first year or so is covered extensively in this blog, and I invite you to peruse the archives going back to November of 2007.  But there is wonderful news to report.

    On January 17, 2011, Cole took his last dose of chemo.  It was a monumental event, one that we had planned on celebrating with a small party of close friends who have been with us on this journey.  But, alas, the party was not meant to be, at least not yet.

    Cancer had one last, desperate attempt to rope us back into the land worry and concern that pervades any experience with cancer.  One last dying gasp, if you will.

    Our family had been sick for about a week, with each of us but Cole having a moderate cold.  The two younger kids ran fevers and felt miserable, but as he has been wont to do during his whole treatment, Cole seemed to be riding it out unscathed.

    Then, the Saturday before the 17th, just two days before Cole was done with chemo, it happened, he ran a fever.  In peds cancer-land, if you have a fever, you earn a trip straight to the hospital.  If you're lucky, it's on a weekday, during business hours, so you get to go hang out at clinic.  If not (and we never were lucky) you get to go sit in the ER for hours on end.

    So, Dalynn and I accessed Cole, he and I packed a bag, and off to the ER we went!

    Now, Cole and I are old pros at handling these visits.  You get to be that way after 3+ years.  So, we came prepared with iPhone and lots of games.  We got ushered back to a room quickly, got our stuff down, then turned on the TV and BOOM!  Star Wars: A New Hope was on!  (Epic, truly epic...)

    The doctors and nurses came and went, there were x-rays taken, and then there was some distressing issues with his line.  We had to de-access and re-access his port (which he hates) but things got cleared up.  Since Cole wasn't running any more fevers, after about 5 hours and 4 new iPhone apps we got to go home.

    A call came in the next day, Sunday, in the early afternoon:  Cole has a slight touch of pneumonia, take an anti-biotic.  No big deal.

    Then, a couple hours later, we got the dreaded second call from CHKD:  His lab cultures grew something, come back in.

    Bah, a second trip to the ER!  Now we're just one day from end of chemo.

    So, Cole and I grab the bag we had packed and off we go.

    This time, I was fairly certain that we'd be admitted and staying for a few days.  Much to my surprise, we were let out a mere 4 hours later, no fevers, repeat labs, everything looked fine.

    Monday, the 17th, we went to follow up with clinic and also have a GI consult.  They had spotted elevated liver enzymes and Cole's liver was enlarged.  Thus began our (hopefully) last medical mystery in cancer-land.

    There was a lot of worrying and concern, I have to say, and Cole went the following Friday for an ultra-sound and a doppler of his liver, but I'm happy to report that the liver concerns were most likely the result of some virus, and his levels have normalized.  I thought especially of our friends the Lemn's who have endured a liver transplant for their young daughter.

    These things have a way of making you feel grateful for what you do have, especially when confronted with what you might lose or don't know.  While it was a bit of a rude awakening and it really reminded us of darker days, back when Cole was so sick, it's almost refreshing.  This is something we won't have to live with much longer.

    At the end of February/beginning of March, Cole will be completely done with both chemo and anti-fungals.  His port will come out and we'll be ushered from the world of "my son has cancer" to the world of "my son had cancer".  What a glorious thing.

    Friday, January 21, 2011

    Porting Numbers from AT&T to Google Voice (Updated)



    Google is testing the option to port your number from your current carrier to your Google Voice account.  For some, the option has shown up and then disappeared, for others, it was never there.  For me, the option is still available.

    However, porting a number in modern day carrier parlance signals that you are cancelling your account.  According to AT&T, the contract resides on the number, and you cannot move the contract to a different number.

    Therefor, if you're tied into a contract on the number you wish to port to Google Voice, then you cannot port that number without incurring any cancellation penalties that you might be subject to.

    The good news is that if you do port your number, you have 59 days in which to come back without incurring the penalties.  But, you have to bring the same number back.

    Turns out those numbers are gold.

    Update:  Google has officially started rolling this out to everyone (over time).  They also confirm that porting your number cancels your contract with your carrier.

    Lifehacker has a nice write up on the ins-and-outs of porting your number to Google Voice, go check it out.

    (Image pulled from Lifehacker)

    Thursday, January 6, 2011

    Switching: iPhone to Android (Email)

    Once you're contacts are moved over, you need to move your email.  Now, let's be frank:  Gmail is one of the killer apps on the Android platform.  Though many a BlackBerry addict may disagree, it is by far the best email client on any mobile device.  It supports all of the major Gmail features:  threaded conversations, labels, search, etc.  The Gmail client on Android is light years beyond the native client on the iPhone, and once you get used to it, you won't want to go back.

    The problem here, though, is that the Android Gmail client works with just Gmail.  If you're already a Gmail/Google user, this is a non-issue for you.  When you sign into your Android phone, your mail will come over automatically.  You don't have to fuss or fret.  It'll just be there.

    If you're not a Gmail user you're faced with some decisions.  Once again we come back to the crux of the Android platform:  really getting the best out of Android requires a commitment to Google.  So, what are your options?

    Switch to Gmail
    The most effective, but probably the most drastic method (if you're committed to your email provider), is to switch your email over to Google and use Gmail lock, stock and barrel.  There are a lot of ways to do this.  Probably the easiest is to just start using Gmail without bringing any old messages along with you.  Send out the "this is my new email" message and call it a day.

    However, that might not be an option for a lot of folks.  History is important, and those old email messages are your history.  Taking them with you might be high on your list.

    If your old email provider is a POP provider, you can import your email into Gmail using the import feature.  Google has a great tutorial on the subject which will walk you through importing from some common email providers.  This method should really work for any POP provider, though, so even if your provider isn't on the list, don't give up, try anyway.  Don't forget to check the box that you'd like to be able to send email as from that account, too.  That way, you can still be seen as sending email from your old email address.

    Pro Tip:  You can still use your old email account through Gmail.  Setting it up this way, via POP, means that Gmail becomes your mail client, just like Outlook or Thunderbird.  The feature that really makes it possible is the one that allows you to select which account you're sending from.  When you create a message, click on the top of the compose message window where your Gmail address is and you'll get the option to select any account that has been verified.  Since Gmail is pulling your messages from your old account, and since you're sending messages as from that account, no one will know that you've changed.

    Another method revolves around using your current email client (including the iPhone) to connect to Gmail via an IMAP connection.  Once you do that, you can copy over any messages that you would like to keep on Gmail.  Here's a tutorial from the Gmail FAQ on how to go about it.  There's a second page attached to the first, linked to configuration instructions under the "Great, how do I get started?" heading.  Look for the configuration methods for your primary email client.  Just keep in mind, this is going to be a bit easier on a desktop.

    Switching to Gmail for the Insane Over-Achiever
    The above IMAP method works if you have a few hundred or so messages to copy over.  But, what if you have more? A whole lot more?  I found a great tutorial on setting up a local email server on your machine (looks like it's rather Windows-centric) and using that email server to move your files over via POP.  This is by no means a simple process, though.  Just keep in mind that this is for the advanced (and slightly crazy) user.  Attempt at your own risk!

    But I Love My Email Provider
    So, switching to Gmail isn't for you?  Don't despair, you're not completely up the creek, though you may be in for a sub-excellent email experience.  If you're on Yahoo, there is a Yahoo mail app that you can place on your phone.  As well, most modern Android phones ship with a native email client other than Gmail.  You should be able to set up that email client to connect to your old email via POP.

    Wrap Up
    Moving to a new email provider can be tough, traumatic work.  But in the end, it will make your life better, insofar as your Android phone is concerned.  The Gmail client on Android is the best email client out there, matching all of the major Gmail features.  Using it is a sheer joy, especially when you come from such an archaic email client as the native iPhone client.

    But, if switching isn't in the cards for you, you will still probably have options.  The great thing about Android is that there's an app for most anything.  You can most likely find a good email app to work with.