Blog Publishing with Windows Live Writer

by Aaron 28. December 2011 05:46

I subscribe to quite a few blogs.  I put them in Google Reader so that I can easily read them from my phone or my tablet.  When I run across one that seems like it might be useful to me, either now or later, I "star" it.

Recently I decided to go back through my starred posts looking for posts on useful utilities.  I really look for anything that can keep my machine clean, running faster, help with productivity, whatever.  I wish I could double-star those because of how useful I find them.

This time around, the article that stood out for me, and I've gone back to it several times, is Scott Hanselman's 2011 Ultimate Developer and Power Users Tool List for Windows.  Say that three times fast.  Seriously.

The author, Scott Hanselman [blog | Twitter], apparently updates this list every year or two.  I already use a few of those utilities, but the one that I overlooked until a few days ago is Windows Live Writer.

One of my [failed] goals this year was to do a lot more publishing on all of my blog sites.  I find that it's maybe more than a little inconvenient to log into the various sites, go into the editor, which may or may not be very friendly (it is the web after all), write, spell-check, proof-read, and publish.  Windows Live Writer gives me a unified front for doing just that.

When I set up Windows Live Writer for this blog site, and the others, it downloaded the stylesheets.  It appears to be giving me an accurate view of what my post will look like once it’s published to the site!  The rich text editor in BlogEngine.NET doesn’t even do that for me.  There's a Preview tab so if this isn't good enough, I can see what it’ll look like on the site itself.

While this is obviously going to help me publish more blog posts, I still need to find something for mobile devices.  I find that using my tablet is easier than carting my laptop around the house.  Also, the aforementioned rich text editor in BE.NET isn't very Android browser friendly.  If anybody has a recommendation for something on Android, I would love to hear about it.

Tags: , , , ,

The Droid Eris and Gingerbread

by Aaron 11. August 2011 00:13

I rooted my phone some time ago. I then flashed it with a custom ROM with undesirable results. I've been pretty unhappy with my phone lately because of a lack of storage space for apps, it's slow, and I get bored easily.

Do I get a new phone? No, not yet.

Do I try flashing it with a ROM again? I think Yoda said it best. You know what he said.

In my search, I discovered that some of the newer ROMs give the user the ability to move apps to the SD card. Sounds like just the thing! But what ROM do I use? I did some research and found that there is a ROM (more than one actually) that is based on the latest CyanogenMod release. I read a little about it, and I decided to do it, not try it since...you know...thanks Yoda.

The splash screen that comes up is pretty cool. Totally non-functional, but I appreciate CyanogenMod's splash screen.

I have found very little reason to complain about this ROM! It's been very stable with some minor exceptions. I find that I can't run Navigator with GPS on and listen to music through the player at the same time. After a while, the phone spontaneously reboots. Also, for some reason, it couldn't get location through GPS once.

I'm also not a huge fan of LauncherPro, which is the UI installed as opposed to something like HTC Sense. It works fine, and I've got it customized now, but every once in a while, I would accidentally start to resize a widget or icon, and it would nag about buying the upgraded version to allow for resizing your home screen widgets. Not a deal breaker by any means.

The ability to move apps to the SD card has been great for me. This made the effort of reinstalling all of my apps totally worthwhile.

After about a week, I installed an app called Battery Calibration. I reset the battery stats (whatever that is or does). My battery life has been great. I can go a couple of days without having to charge the phone. A definite improvement over the stock ROM!

I've been running the ROM for a few weeks now, which is more than I can say about KaosFroyo (sorry Kaos!). If you're getting tired of your Eris (or other older Android phone), I would definitely recommend trying one of the CyanogenMod "unofficial" ROMs. For me, it's been mostly stable, snappy, and refreshing to use!

Tags: , , , , , , , , ,

Mobile Development Frameworks

by Aaron 8. September 2010 08:10

Recently, I started learning about Android development.  I watched the five videos on TekPub by Donn Felker.  Great series, as I've already stated.  Because mobile development is something that I'll be moving into at work, I decided (and was maybe urged) to investigate frameworks and technologies that would allow us to develop applications that can be ported easily to Android, iPhone/iPod, iPad, and Windows Phone 7.

I was presented with a short list of potential frameworks that we could look at.  Of the list, two seemed reasonable in that they weren't C++, although none of them supported WP7.  We decided that wouldn't be a problem.  We're great with .NET, so-so with Java, and as I told my boss today, if I had to do just Objective-C, I think I would stab my self in the eyes.

The two frameworks are Appcelerator's Titanium and PhoneGap.  I started with Titanium, but I'm going to talk about PhoneGap first.  It's a shorter monologue.

PhoneGap

Let me preface this with, I like the idea of PhoneGap.  They don't try to hide what they're doing, how they're doing it, or what the result will be.  To help the developer create a consistent user experience through the use of HTML instead of attempting to generate layout content for each platform.

You get the source code that the framework generates so that you can tweak, extend, and test.

Sounds great, except I couldn't get the framework to work.  I tested with the example app they distribute with the framework.  Of course the UI rendered in my Android emulators.  After all, it's creating a WebView in the layout and rendering an HTML page from the local system.  But I couldn't get any of the native features to work.  The page is supposed to tell you what version of Android it is, and the fact that it's Android.  It also has some actions that you can initiate like making your phone beep or vibrate.

None of those things worked.  I couldn't find any definitive information that would tell me what was going wrong or what I could try to make it work.  I tried to get it to work by generating the app on my Vista 32 desktop, my Win7 x64 laptop, even on my Linux box.  I tried different combinations of targets when I imported the project into Eclipse, and different emulators.  I tried changing the target in the Ruby script that's used to execute the app generation.

My boss tried it as well.  He was able to get it to work on his Windows VM, but was unable to get it to work on his Mac.  Rather ridiculous if you ask me.

I gave up on it and decided that I didn't want to use something that unreliable.  So that's what I don't care for about PhoneGap: I can't get it to work.

Titanium

I downloaded Titanium Developer and installed it.  I clicked the shortcut that it put in my Start menu, and was presented with a nice-looking interface.  I said, "sweet!  Titanium has an IDE!" to my 1-year old son.  I was answered with some gurgles, babbling, and a distinct, "no it doesn't."  I don't know how he knew...

So that leads me into the first thing that I didn't care for in regards to Titanium: no IDE.  I did find a language add-on for Notepad++ so you can get some auto-complete features, and there's an add-on for SciTE.  I decided to wing it.  It's just JavaScript right, and we're REAL developers?  We don't need no stinkin' IDE!  It's just nice to have.

This segues into the second thing I didn't care for: it's JavaScript.  I don't mean pieces of it, I mean the whole thing.  Apparently, you can write your own business components and integrate them into your app.  That's great, because I don't want to write all my stuff in JavaScript.  Unfortunately, it appears that the layout has to be done with JavaScript too.  I didn't think that would be a problem.  It's really just a matter of declaring your stuff, setting properties, adding them to your views, displaying your views, and showing all your friends what a marvelous thing you've accomplished.

It's not so marvelous.  At all.  Bringing me to the third thing: no WYSIWYG editor.  Not to say that I need a WYSIWYG, I would just like to see what my layout looks like.  Otherwise, I have to run the app in the emulator each time I want to see the updated layout.  That wouldn't be a big deal, except the layout doesn't work the way I expected.  This becomes time-consuming, especially if you're experimenting with layouts as I was.

I used Donn Felker's "Hello TekPub" application from the first video of the "Intro to Android Development" series as my test.  It's a simple application that has a WebView with a textbox and a button.  A very simple, stripped down web browser so to speak.  It was such a simple thing that I thought I would give it a shot.

I couldn't get the layout to work the way I expected.  Items were absolutely positioned in the center of the emulator screen.  I managed to move the textbox to the top, and set the width of everything appropriately, but I couldn't get a flowing, relative layout.  I even, unsuccessfully, resorted to using a TableView to arrange my elements.  It worked for the textbox and button, but I couldn't see my WebView anymore.

I saw that there's a folder with an Android application folder structure.  I though, "great!  I can check out the generated layouts and tweak those as an intermediate step!"  You can't.  The source that it generates is based on the manifest and some other Titanium stuff.

I gave up.  I spent several hours trying to make the layout work, but I just couldn't do it.  Even if I had arranged the elements on the page to look the way I wanted, I wouldn't have called it a victory.  It was a layout with three elements on it.  Nothing to throw a party over.

After talking to my boss about this, he said that he read most people seem to use Titanium for their business logic, and something else for their UI.  That makes me assume that they're either doing a native UI, or they're using HTML to layout their UI and calling into their custom stuff from there.  But then you're doing it the PhoneGap way.  While your business logic will be native, how do you test it?  You need to make sure that it's going to behave the way you would expect in each environment.  I don't know if you can simply reference the library that it outputs and run unit tests against that or not.

If I wasn't such an impatient cow, I might have continued and then tried a more complicated application.  The platform does support a wide variety of mobile and desktop target platforms.  I think that's fantastic!  The ability to generate a native application for so many different runtimes is very noteworthy.  I get sweaty and exhausted just THINKING about the amount of work behind that.  Unfortunately, I don't think it's a good choice.  You might ask, "good choice for what?"  My answer is, "anything."  Sorry Appcelerator.

Conclusion

Of course there are other alternatives to the two that I discussed here, but I really think that it may be pointless to try to use one framework and codebase to create all of your applications.  The one exception might be the Mono platform.  MonoTouch right now looks awesome for iPhone development, and the concept of MonoDroid seems like a great idea for Android.  I actually signed up for the MonoDroid closed Beta test.  I want to try it out.  I think that it's pretty unlikely to happen though.

For the rest of these single codebase frameworks, I'm not sure where they're appropriate for use.  It might be okay in an environment where you don't have skilled technical people, or maybe small to medium-sized businesses with a lot of disparate mobile devices where the code doesn't need to be solid, air-tight, bullet-proof, full of awesomeness.  I feel they're not going to be good for commercial application development.  Nor will they be good for enterprise development where there's probably going to be more standardized mobile devices throughout the organization.

Maybe for educational purposes?

In the meantime, I'm going to stick with writing native code.

Tags: , , , , , , , , ,

Donn Felker's Introduction to Android Development on TekPub

by Aaron 4. September 2010 04:31

I don't want to say that I'm not a creative person, but I don't usually come up with new ideas of my own.  I could never come up with a name like CompuGlobalHyperMegaNet for an internet company.  Can I have some money now?

If you don't get it, then Google/Bing it.

Maybe I just don't recognize the problems around me.  I'm a fairly rigid person when it comes to change.  I adapt to my environment, and live with it.  So, it comes as a surprise that I came up with a couple of mobile phone app ideas of my own.  Make no mistake: my ideas aren't original, but the implementation of them will have my own little flair to them.  They'll interact with each other, and help you save money.  But not on your insurance.

I'm not telling you what my ideas are right now though, because that's not the point of this post.  "But Aaron-" Shut up and read!

The point of this post is, I want to make these apps for my phone, and my wife Sarah's phone, but I don't really know that much about Android development.  Back in January, I won a one-year subscription to TekPub at Codemash.  I activated it just before it expired so that I could get the most out of it.  I'm short on time you see, and I figured if I waited, I would get more time.

There's a series named "Introduction to Android Development" by Donn Felker.  I love it!  At the time of this writing, there are 5 episodes available.  I'm about halfway through the 3rd episode (I'm taking a break while I download and install Git).  I feel like i could actually create a mediocre app now for my phone.  I say mediocre, because there's a lot more to cover in the series, and I've only watched up through some basic layout.

The first was an entry-level "Hello world" kind of thing.  At the end, he guides you through installing the development tools that you need.  Not to say that there aren't other tools that you might want to use, but these are the minimum things that you'll need to use.

The second covers the architecture.  It explains how the operating system works with the apps, the architectural layers in the OS down to the kernel, and explains the framework building blocks and application interactions through intents.

The third episode, that I'm currently watching, goes through starting to make a nice-looking app for TekPub.  This app is going to span multiple episodes in the series.

I've been following along by building the application as he walks through it.  While he has all of the code typed up in snippets so he can copy and paste, I'm typing everything by hand.  This is one of the ways that I learn: by doing everything manually, then learning how to do it through tools or other automated/assisted fashion.

This is why I needed to install Git though, so I could download the codebase.  Not for the code though.  I'm reproducing that by hand.  I need the images.

Now that everything is done downloading, I've rebooted already in that time because I downloaded and installed TortoiseGit as well, I'm going to get back to watching the video.

In the meantime, if you're interested in doing some Android development, or you'd like to learn more about it, I recommend getting a TekPub subscription, or  at a minimum, start buying and watching this series.

Tags: , , , , , ,

The Droid Eris and Froyo

by Aaron 30. August 2010 10:18

I bought an HTC Droid Eris at Christmas of 2009.  Some may ask, "why didn't you buy a Motorola Droid?"  Honestly, this is my first smartphone.  I knew that I wasn't going to hog wild with it.  You're talking to somebody that had a Motorola E815 followed by an LG enV2.  Over the years, I always felt that I made pretty intelligent, educated phone decisions.  This was no exception.

I bought the Droid Eris knowing that it came with an old version of Android and was later going to be updated.  I started getting pretty irritated when the update came later and later, but eventually it came.  When it did arrive OTA on my phone, I cackled maniaclly and rubbed my hands together in an evil, anticipatory way.  I now have a phone that officially supports Android 2.1.  I rule.

Seriously though, the interface just seemed a little more refined.  The icons looked a little nicer, the phone acted nicer, and I'm pretty sure I lowered my cholesterol.

Soon phones around me started getting updates to Froyo.  No, no, no.  Not this guy:

Frodo Baggins

That's "Frodo", silly.  No, Froyo is the name for Android 2.2.  It's supposedly about 10% faster than the previous point release.  It has some fancy new features.  People love it.  But I don't have it.  There's only one way for me to enjoy Froyo just like other people: hack my phone!

I'm no stranger to hacking embedded devices.  Or rather, I'm no stranger to using rooted images and then doing my own thing with them.  For example, I bought an internet appliance years ago called the Audrey.  It was a small internet appliance that allowed you to check your email, browse the web, and look at the weather.  It was a smallish touch screen appliance with a tiny keyboard, and did very little else.  Much like the Android though, there was a large community for it.

3COM Audrey

I found a site called AudreyHacking.com that had TONS of information on flashing the Audrey with what essentially amounted to a rooted image.  There were in fact, lots of images.  I even learned how to create my own, and I did.

The operating system for the Audrey was QNX.  It was a realtime system based on Unix.  I don't remember what it means to be a real-time operating system, but that's not important to the story.  The point is, I hacked the crap out of that thing.  There was an MP3 jukebox application that I downloaded the source code for.  I double-booted my PC to boot up into QNX so that I could tweak the app.  I updated it, uploaded it, and I used to use it as my MP3 player.

Also, I'm a big TiVo junky.  If you looked at the diagram from my Linux router posts, you'll notice two TiVo icons.  That's because I have two TiVos on my network: a Series 2 TiVo and a TiVo HD.  My first TiVo was a series 1 by Sony.  It was a gift from some friends.  It was fantastic.  Again, huge community for TiVo.  I hacked the Series 1 by first upgrading the hard drives with more storage than I could possibly use.  I also put TiVo Web on there, and a couple of other things.  The modem dies, so I put a network adapter into it.  If you're familiar with the series 1, there was no TiVo supported network adapter, so you'll understand that again, I had to hack it.

The Series 2 was locked down, so the most I could do was upgrade the storage on it.  Again, more storage than I can possibly use.  I decided not to hack the TiVoHD, but I've regretted that one a bit.  I bought the supported 1TB external hard drive from Western Digital.  My TiVo has been flaky ever since.  I should have cracked the shell and just put a big internal drive in it.

Enough of my trip down memory lane.  The point is, I decided to hack my Eris.  The first thing I did was read as much as I could to make sure that I could recover if I needed to.  I was getting some mixed information on what I needed to do.  I rooted my phone first.  Easy step.  I'm not sure that I needed to do it though.

Then I backed up my phone.  This is where I got really confused.  I was reading various things about backing up the phone.  I thought that I needed to use a solution named Nandroid.  I downloaded it and tried to figure out exactly what I needed to do.  I finally decided to simply try doing a "NAND Backup", which you can do from the recovery screen.  I was concerned because I didn't know if it was the right thing to do.  It was, and I'll get to that later.  If it was possible though, I should have taken a backup of my phone prior to rooting it.  Not because I feel like I need to be "unrooted", but just in case.

The next thing was to flash my phone with a Froyo ROM.  I chose the KaosFroyo ROM.  It was because I couldn't really find any other ROMs out there.  I figured this would be a good starting point though.

I rebooted my phone after flashing it.  I could tell that something changed because the splash screen said "ANDROID" instead of something HTC-related.  After it finished booting (many minutes later), I checked it out.  First thing I noticed after the initial setup stuff was the hideous wwallpaper that the developer decided to use.  Seriously, what made him stop, look at it, and say, "looks good"???

The next thing I noticed was that all of my apps were gone.  I don't know if I was suppsoed to back them up somehow and restore them, but I was a little psissed about it.  I justified it by announcing that this was "a good time to clean up my apps anyway."  I was still pissed.

I set up my email, contacts, and some of the apps that I remember having installed.  Unfortunately, when I installed the apps, it didn't pull in my previous settings, so I had to set them all up again.  Even more pissed now.

I started using the phone playing around.  I marvelled at things, but I noticed a lot of the little things I liked about my phone were gone.  The icons didn't look as nice anymore for some reason.  I didn't have the option in the power menu to set my phone to vibrate and back to regular volume.  I couldn't move email messages to other folders in the email app.  Some things crashed on me for seemingly no reason.  And where was all this speed that people raved about?  I saw somebody post that they did a benchmark and got a 410.  What the hell does that even mean???

I didn't like it.

So this morning, I decided to restore it back to the way it was.  I was concerned because I didn't know what was going to happen.  Was it going to be 2.1 again, but I'd have to download all of my apps again and reconfigure everything again???  No, that's not the case.

I did a NAND restore on my phone choosing the backup that I made.  Once it booted up, I could tell things were going my way.  My son was looking out at me over the screen lock bar.  I unlocked the phone with the same gesture and unlock pattern as before.  All of my apps were there, and everything was configured just the way I like it: my way.  I haven't had any issues, and I don't plan on ever trying that again.

Now, back to the point where I said I should have made a backup prior to rooting the phone, if possible.  My phone is rooted right now in it's current state.  Again, I'm fine with that simply because I'm a responsible user, comfortable with root access to my own devices.  But will I ever need to go back?  If so, I'm going to be going through some more work to figure out how to get rid of the root files that are on there.

My advice, if you want Froyo on your Android device, get one that officially supports it.  You'll probably be happier, and you can still root a lot of those devices granting you all the luxuries of a rooted device with Froyo.

Tags: , , , , , , , , , ,