Tcoz Tech Wire

Discoursing on trends and technologies interesting to Tim Consolazio, sole proprietor of Tcoz Tech Services, specializing in Flash/Flex/Air, iPhone, Facebook, Twitter, and related technologies.

"Technology from an indie software developer's perspective".

Monday, June 22, 2009

TcozTwitter: A Twitter Client using Adobe Air and the Flex Mate Framework - Day 7: Running on the iPhone...really?

This post covers my progress developing a Twitter client using the technologies mentioned in the article title, but also takes another interesting turn. I've been working on the side with Citrix to understand their latest XenApp Server product, and how a Flash/Flex/Air developer might be able to leverage it. To this end, I decided to branch my Air code base, and use what I've already done to drive forward a version of TcozTwitter that could be delivered on the iPhone...or any mobile device for that matter.

Notice I said “branch”, not “start all over again with a different technology”, and “any mobile device”, not just “iPhone”. Those are the important things to get here. More on that in a minute.

If you're interested in the history, links to all the previous blog articles are at the end of the article.

To summarize, here's the “thin line” of technologies you'll need to be familiar with, if you want more detailed summaries, look at the links at the bottom of this article:

Amazon EC2 Cloud and S3. EC2 is essentially a vast pool of processing power that you can isolate a piece of to run whatever you need. I frequently liken it to a ball of clay; you grab a chunk and shape it the way you want; when you're done, you take a snapshot of the configuration (so that you can “restart” it from where you left off), and put the chunk back on the bigger ball. S3 is “Simple Storage Service”. It's basically a huge pool of storage space that you can access via an API or one of many downloadable clients. When you take your “snapshot” of your “chunk” (or in EC2 parlance, when you “bundle” your “instance” into an “AMI”), the AMI is saved to a “bucket” (essentially a directory) that you've previously created in S3. When you “restart” your instance, you point to the configuration file that gets stored with your AMI data, fire it up, and there ya go.
XenApp Server and Desktop. There's a lot to this technology, but I'm focusing on the iPhone-tweaked version of the product, which you can read about here. Briefly, XenApp and Desktop are server-side software that “virtualizes” applications and allows you to view them over a variety of different clients. You install whatever app on a server—any technology that the server supports is fine—then “publish” it via the XenApp software so that it can be accessed remotely by Citrix Viewer and Receiver clients. Citrix has published an AMI in the EC2 cloud that you can use to experiment with. Remember, an AMI is a saved configuration, ready to go. All you need to do is go the cloud, fire it up, install your app, publish it, and remote clients can access and run it. The Citrix XenApp AMI is a demo that times out in three months; plenty of time to learn your way around.
Flex/Air, and Mate. Flex is an ActionScript 3 component framework used to build applications that run in the Flash player, Mate is a Flex-specific framework, heavily leveraging MXML, to simplify and organize building applications with Flex and ActionScript 3. I'm using Mate purely to familiarize myself with it. I'll say this; compared to other frameworks, it's pretty easy to get your head around, and it does simplify a lot of tasks. I have some concerns, but that's true of any prescribed development approach.
The iPhone. Enough said about that I think, and then some.

You'd be surprised, once you know exactly how it all works, how easy it is to set this all up and get basic applications working. I can publish an app, or an app update in a matter of minutes.

Here's some screenshots of my Twitter client, running on the iPhone, using all the above mentioned technologies:

It really works, even over EDGE on an OG iPhone (as I write this article, I'm actually expecting the delivery guy with my new 3GS 32mb Black. UPDATE, I have the new iPhone, and the Citrix stuff runs great over the 3G network). I leave it up and running on my iPhone while it's docked to see my tweets come in without any page refreshes and whatnot.

I also have to say, Citrix' luminaries Chris Fleck and Ray Yang have been great. When I started my experiments, I pinged them with a few questions, and they've been supporting my efforts with tech info and advice ever since, because they're interested in my perspective on these technologies.

It's that perspective that, perhaps, makes this all interesting, so much so that TechCrunch published a story on my findings that stayed on the front page of their site for weeks and sparked a lot of debate, mostly revolving around “There's no need for Flash on the iPhone,” and “why don't you just build a native app”. Flash is a great candidate for building mobile apps. The industry just seems to have a variety of issues that prevent it from getting out there on mobile devices, and I have good reason to believe they're not primarily technical ones.

Anyways, I'm an independent developer; in a nutshell, that means I go from contract to contract, building various kinds of applications for various kinds of clients of all sizes. I've worked for Microsoft, Viacom, Thomson Reuters, IAG Research, American Express, CitiGroup, IEEE/Spectrum, and a slew of smaller shops and startups. I'm pretty proud of my portfolio, and I work hard to stay cutting edge; I run servers to host all kinds of development environments and server software, like Flash Media Server, TomCat, BEA WebLogic, MAMP, Red5, Blaze, Ruby/Rails, .Net, Air, SVN, FTP, mySQL, SQL Server, Oracle Comm. Edition, etc. etc.

It's a lot of work, and isn't cheap; sure I write it off, but I have to do the cash layout, and admin/maintain them. IMHO, it's necessary; a good independent developer should know how to put together a good development and staging environment in just about any technology.

So, enter the Amazon EC2 cloud. Now, I can spin up instances of virtually any kind of development environment...install this and that software/app/ the configs and shut them down...for about 10 cents an hour. After doing the math, that works out to about half what I pay now for a fully dedicated hosted box at a solid host company, and that's only if I leave it up and running 24/7. It's WAY flexible. For staging and development testing, it's fantastic.

However, most of what I do for a living involves Flash development. I love the iPhone and have learned Objective C, got my business accepted into the dev program—it turned out to be more than a matter of just paying for it to my surprise—and so on. But I've been working with Flash for a decade, and it's a big disappointment that Flash doesn't run on it.

Enter XenApps, which Citrix makes available as a demo AMI config in the EC2 cloud. All I have to do is select the AMI, launch it, and I'm looking at a clean build of Windows Server 2k3 with XenApps, Desktop, and all that; everything I need to work with to see if I can deliver a Flash/Flex/Air application to an iPhone.

I settled on Air, mostly due to the fact that Air doesn't deal with browser security and sandboxes the way that Flash/Flex do; Air is a native runtime, with it's own encrypted data store and access to NativeWindow and other elements that make it a fairly powerful RIA desktop development environment. Crossdomain and such isn't a hassle as well. You can also publish an Air app (which, on Windows, is an .exe) in a very straightforward way from the XenApp environment, as opposed to using AppViewer, which is a .Net app Citrix distributes that you run in lieu of your actual SWF by pointing it at the web page that embeds it. It works and works well, but I figured why bother with web pages and such if I can just run my Flash app in a native runtime environment without the involvement of the browser footprint.

The connection should be evident; there I was developing a Twitter client in Flex Builder, and publishing it to Air, using the Mate framework. So I decided to marry the two efforts, and see if I could branch my slowly developing Twitter app—it's hard to find spare time, but I fit it in now and then—and see if I could tweak it for delivery to the iPhone via XenApps.

Yay verily, it worked; I installed the Air runtime on the Windows instance, installed my Air TcozTwitter client, published it through the XenApps server, and pointed the iPhone Citrix Receiver at it, and there it was, touch enabled and all. True, I had to rethink the UI in terms of the iPhone. I've had people say that Flash apps won't port directly to the iPhone because they use mouseovers and such—think about it, the iPhone doesn't have “fingerovers”, which is interesting—but that's true of any technology no matter what. As a UI developer, you have to look at the device, consider the interactivity, and develop your app, using your given technology, in that context. If you factor your code well and the UI is truly abstracted, this isn't that big a deal though at all, certainly a heck of a lot less work than writing the whole thing all over again in Objective C...and then Symbian...and then Android...and then Windows Mobile...and then Blackberry...and whatever else winds up getting cranked out of BigTech Labs XYZ.

Here's points I found to be VERY interesting about this manner of development:

I'm not an “enterprise”, I'm an independent developer. But, I don't just write code for clients, I build things off to the side to keeps my chops fresh and who knows, maybe make some money. I find that this technology, although created by Citrix which is typically associated with “enterprise”, works for me. The Citrix guys seemed to find that interesting too. A library of demo apps that I can bang off a single EC2 instance is also a powerful demo tool for landing contracts. As I mentioned once before, I could probably get work just by having put all this together.
With just UI refactors, I can roll out the same codebase to any mobile device that Citrix has written a Receiver for. They've covered a number of them, see their website for more info.
The XenApps “tweaked” version I'm working with, via the Receiver, presents your apps as a selectable library; so, the user downloads ONE app (the phone-specific Receiver), and they can access ALL the apps that I publish though XenApps.
Consider the above...all I have to do, to deploy a new app to my entire userbase, or update one, is install it on my EC2 instances, which you access via RDP or the Citrix Receiver desktop app (I use the Mac version). No app store approval iterations. It'll be interesting to see how this shakes out.
Because the app runs on a regular server, I don't have the development restrictions inherent on the iPhone. I can make any number of network connections of any kind, store data in a variety of ways locally, and whatever else I need to do. The available technology I can use to drive my apps is essentially unlimited.
For proving out concepts and getting user reactions, this can't be beat. I can build apps rapidly in one codebase, get them deployed to all kinds of devices, and see what users think. What hits on a Symbian may not hit on an iPhone. Depending on the reaction, I can decide to build a native app, or abandon the effort for a given platform.

There are some things I have yet to figure out, the Citrix guys say they are interested in helping me find solutions:

Encrypted data store in the Air runtime is having some issues; I believe these are probably related to the permissions that XenApp is using to run apps under; some server config will probably solve this, if not, I can always just dump everything to a SQL DB or some such.
iPhone mechanisms, like the auto-complete for text, the new cut 'n paste, and such, don't work, because the app isn't actually running on the phone. Fixable, because I can just build the capability into the application, and just make sure I emulate the iPhone look 'n feel. The investment of time can in fact give me the same look and feel consistently across any device...nice for my end users on different platforms, and of course very useful looking forward to things like NetBooks and touchscreen e-readers.

Will I abandon building native apps for the iPhone, and whatever else I find the time to learn how to build apps for? Of course not. There's money to made out there, and different development technologies is something I'm interested in. So, the Objective C book and Xcode will still take up space on my hard drive, and be frequently used.

But, if I work with a client that needs apps rapidly deployed to a variety of devices, without going through the rigor of building multiple versions and maintaing multiple code trees, will I be glad that I learned how to do this...and, will I continue to ensure that apps I build are constructed in such a way where I can branch and get a version running on the iPhone this way in relatively little-to-no time?

You bet. Citrix has most definitely found a place in this independent developer's toolbox.

I wonder how many other contract Flash developers have said that.

As always, thanks for visiting.

Article Links:

TcozTwitter: A Twitter Client using Adobe Air and the Flex Mate Framework: Day 1, Day 2, Day 3, Day 4, Day 5, and Day 6.

Flash/Flex...on the iPhone? Initial Exploration, Follow up with Citrix.

Why the Amazon EC2 Could and S3 is a great thing for the independent developer, Article Link

Labels: , , , , , , , , , , , ,

Friday, June 5, 2009

Why Amazon EC2 is a great thing for the Indie developer. At least, that's what I'm finding.

I've been working with Amazon EC2 a lot lately. I'll tell ya, this is a great thing for independent developers.

For those of you that don't know, EC2 is Amazon's computing cloud, in which you can run instances of virtually any kind of computing environment for pennies an hour. It's all managed right through a web interface. Go to the Amazon Elastic Compute Cloud website and check it out.

As an independent, I work with different clients all the time. Some use Linux, some Unix, some Windows. That doesn't matter to me per se, because I generally work with technologies that have runtimes for most commercially viable platforms. But, in order to look more professional, I've taken it upon myself to provide clients with a staging server, as well as SVN and FTP repositories. You would be amazed at how many times a client has said to me, "you can do all the staging, AND will set us up with SVN accounts?". Yep, I'm serious about this business, and want to make it as easy as possible to integrate me into your workflow without the hassle of setting me up internal accounts and access for the piece I'm building.

The staging server is a Windows box. The reason for this choice: I can run .Net on it. People frequently ask me, "why do you bother with that," to which I offer canned response, "I'm not going to lose work because I have a religious belief about a given technology". If the client wants .Net web services to power the Flex UI, that's fine with me. If they want Java, or PHP, or Ruby, same thing. All of these technologies are fully available on Windows. The same is not the case with Unix or Linux. People guffaw at this, pointing to .Net implementations on the Unix base, but that's not what clients use. So, to run as many technologies as I can, Windows was the logical choice. I can drop a MAMP server on it for PHP/MySql, run Tomcat and Oracle Comm. Edition for Java, and power IIS with .Net and SQL Server, or any combination of the above, all at the same time.

It costs me money though, even when I'm not using it. About $150 a month to be precise. I host with Liquid Web, which I must say does a GREAT job. GREAT. Their support is on point, and I've never had an outage in more than two years. But fact is, I do most of my development locally, and just do a daily dump it on staging so the client can eyeball it, but otherwise, I store my SVN repos on their, do some experimentation with server products and whatnot, and that's about it. If I want to test on anything other than Windows though, I do it on local virtual machines, like a Parallels Centos VM or some such. Its been a great model for working with all kinds of clients, managing the environments is great experience of course, but...

...enter Elastic Compute Cloud. The concept is this: it's a big ball of clay. When I want a piece, I pull it off; this is my "instance". I can shape it any way I want, and only get billed for when it's active. When I'm done with it, I "bundle" it (essentially a saved configuration) and put the raw material back onto the big ball, which stops billing.

Billing, btw, for a "small instance", which is roughly equivalent to my $150/month hosted box, is 0.125 dollars/hour...that's twelve and a half cents and hour.

Amazon provides you with all kinds of pre-configured instances: Fedora running Ruby on Rails, LAMP, 64 bit versions, Windows Server 2003 and 2008, etc. Additionally, the "community", which is made up of all kinds of platform developers like Citrix and what not, provides Windows, Debian, Fedora, SUSE, Ubuntu, Solaris, Gentoo, etc. images of all kinds, running their databases, VM servers, and what have you. They also put out a lot of demo instances so you can check out new technologies and services...for FREE, all pre-config'd. No downloading, installation issues, and all that. True, it's important to know how something installs, but first, let me see if I'm interested in the technology before I fight with a download and install.

So, here's the scenario. I have a client that works entirely in Linux using MySQL, and they want to see the deployment of my product in that environment. Currently, I can't do it, because my box is Windows; I can certainly demo the product working and use MySQL, but it's not Linux. So, I send it to them and have them deploy it, but that detaches me from the process, which causes iterations. I need to see it running--or breaking--to fix it fast.

With EC2, I can just develop locally, test on a Linux VM, and when I'm ready, fire up a Linux instance in EC2 and deploy it. I make any necessary changes and fixes, and when I'm done, can show it to the client running in an environment similar to theirs, and be reasonably certain that if they deploy it correctly--and there's nothing exotic going on, and of course there's nothing I can do about their internal security boundaries--it'll work.

I start the instance when I need it, stop it when I don't. Even if I leave it running 24/7, it's ~90 a month, still sixty bucks cheaper than my current environment. I write it all off true, but it's not just about the money, it's about being able to come as close as possible to the deployment environment. It looks really pro and builds client confidence. " have this running as an instance in a cloud? How did you set that up?" is a question I've already been asked.

And because it's cheap and timed, it's very easy to bill back to a client. I usually don't do this, preferring to just build it into my rate, but in this day and age of economizing, being able to draw out line items on an invoice is important. If a client declines, that's fine, but I make the point that for essentially pennies they are compromising my ability to ensure they are getting a working product in as few iterations as possible. I expect that my clients will say, "spend the fifty bucks".

Lastly...I'm an independent developer, and am getting a firm, hands-on grasp with cloud computing and how to use it effectively. That's the sort of experience that sets you apart from the typical "I do flash sites" kind of hacker.

There you have it. If you have the chops, being an indie dev isn't as hard as you'd think. I find it far more rewarding than a straight corporate job, and if you read my blog, you know I've had 'em. But to stay on top of it, when new tools or services come along that let you economize and work smarter, you gotta get involved. For me, EC2 is definitely in my toolbox.

As always, thanks for visiting.

Labels: , , , , ,

Monday, June 1, 2009

Flash Flex on the iPhone? Setting up the Amazon Cloud Instance running Citrix XenApps

This is a continuation to my series of articles detailing how to get Flash Apps running on an iPhone...sort of. You really don't run Flash on the iPhone, you run it on a Citrix XenApps server, which runs on a Windows instance in the Amazon EC2 cloud.

My previous blog articles can be found here:

- Flash, Flex...on your iPhone?
- Monday, May 18, 2009 The Citrix Receiver Follow Up: Flash/Flex (and then some) on your iPhone...or Symbian...or WinMo...or...

Quick blurbs on what the technologies I mention above are:

- Flash/Flex/Air: if you're reading this article, no explanation needed.
- Citrix, simply, specializes in terminal-based delivery of applications. Think "thin client" delivery of applications.
- XenApps, in there own words, "Citrix XenApp virtualizes an individual application, be it Microsoft Office, PowerPoint, Excel, or SAP (sic, or Flash, etc.), allowing users to run those applications on a client directly from a XenApp server hosted with a Windows application."
- Amazon EC2, cloud-based computing infrastructure. I describe this more below.

So, my goal is to "Deliver Flash/Flex/Air apps, initially for the iPhone but eventually for any client, from the EC2 cloud running an instance of a Windows Server running Citrix' XenApps".

Whew. I could probably land a contract just by saying I know what that means.

In order to get this rolling, I'll have to get a Citrix XenApps instance running in the on the Amazon EC2 cloud. Citrix offers a video showing how to do this, you can view it here.

Three IMPORTANT notes, this is fair warning, and this is coming from somebody that has worked with resources in clouds before (I've just never been responsible for actually configuring and maintaining one).

- WATCH THE WHOLE VIDEO CAREFULLY. Believe me, you won't figure it out on your own if you've never done anything like this before.
- DO NOT USE SAFARI. If you're a Mac user, you probably know Safari doesn't always work well in sites that have multiple form submissions. The Amazon web pages broke quite a bit until I switched to Firefox.

Let's talk about what "an instance in the EC2 cloud" means. An "instance", is conceptually like a dedicated server...but it's not. It's an allocation of resources that appears to me to be a server, but which is disposable; when you terminate an instance, it's configuration is saved so you can restart it, but otherwise, the resources are freed up. The company, like Amazon, uses commodity hardware to build a platform to make instances available, and you pay for the time that each of your instances runs, because you're using resources in their cloud. When I terminate the instance, I don't get billed anymore, because there's no server to keep up and running, just a stored configuration that gets reconstituted into an instance if and when I start it back up.

Conceptually, the "cloud" is like a big ball of clay. When I need a chunk of clay, I grab off as big a handful as I need; I pay for that chunk based on the size of it, and how long I keep it out of the main big ball. When I'm done, I take a snapshot of the chunk, and just put it back onto the big ball. It's now available for anybody else to use, and my billing stops until I grab a new chunk, which by using my snapshot, can get instantly reshaped to the last known configuration. I can grab as many chunks as I need, shape them all differently, and so on.

It's a great model. In addition to a website hosted by Brinkster (where my blog and main site is), I currently pay almost $150 a month for a dedicated Windows server that I use for deployment and testing of customer apps. I pay for it whether or not I'm actually doing anything with it, which has irked me more than once. It's a business write off and all that, and IMHO an essential tool for any independent web-based software developer, but still, if I can economize by just using cloud instances of windows and linux servers, activating and deactivating them when I actually need them, and enjoy the easy flexibility of multiple environments (this one runs Tomcat on Linux...this one .Net on Windows Server 2008, etc.) I can cut that cost to a fraction and save myself multiple webserver config headaches and such.

Anyway, to get started, you go to the Amazon Elastic Compute Cloud EC2 Site. Initially, this is a little scary, because you see a list of usage fees by the hour, and you have to submit a credit card. But I'm intrepid, and have a business credit card, so on I go. I needed to set up an EC2 account, which lets me run select all kinds of pre-made server images that I can run as instances, and an Amazon S3 account, which is the storage mechanism for my files and so forth. They run independently of one another; again, remember that you're not actually running a server, you're running an allocation of resources, broken down into processing and storage. This way, I can run the same image as multiple instances, each with different (or differently configured) apps, using different amounts of processing power, all pointed at the same storage, or different areas of storage. Very flexible and elegant.

Anyway, the EC2 account I want to run my server images in is "$0.125 per Small Windows Instance (m1.small) instance-hour (or partial hour)". According to the documentation, it breaks down like this:

- You're paying by the hour, 12.5 cents, for every hour your instance is running. Hmm...let's assume I'll leave it up all day for a month: 12.5 x 24 = 300 cents = three bucks a day, x 30 = 90 bucks a month. I don't mind that as an investment in learning this technology and proving its use; if I land one contract because of this, it'll more than repay me in a couple of hours. And if course, I don't have to run it all the time.

- The specs for a Small Windows Instance, which should be plenty for my development experiments and demos: 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform. Hmmm...we'll have to see how it goes. The large instance has 7.5 GB or memory, but is fifty cents an hour. So, here's hoping the Small Windows Instance can swing it.

So, you fill out the forms (again, don't use Safari), which when complete, takes me to a page with the following message:

"Thank you for signing up for Amazon Elastic Compute Cloud. We will e-mail you a confirmation when the web services are available for you to use. In order to begin using this service, you will need a X.509 certificate. You can Create a New X.509 Certificate or Upload Your X.509 Certificate." let's create the X.509 Certificate. If you don't know what one is, an X.509 certificate binds a name to a public key value; more generally, a public-key certificate is a digitally signed statement from one entity, saying that the public key (and some other information) of another entity has some specific value. So, by using a certificate, a browser and an application know that they are speaking to the intended targets by comparing those values; if it checks out, the communication is coming and going from where it's supposed to.

After a minute or so to create the certificate, I now have a certificate assoicated with my EC2 account, and my instances will be run using it.

That really seemed to be about all there was to it; strangely enough, by signing up for EC2, I seemed to have already signed up for S3; I went to the S3 page to sign up, but it told me I already had access, and as far as I know, I've never signed up for it before. It makes sense, but seemed a little implicit; I'd prefer to have at least received an explicit notice of some kind. It doesn't seem to cost me any additional money though.

Once that's done, you go to the EC2 Console and look up an image of the XenApps demo image. This image is located in the Community AMIs list after you click "Launch Instances" (search for "XenApps"). In order to do so, you'll need to create a security group and a key under which to run the instance; these items do things like open ports so that you can access the instance however you need, like HTTP, RDP, and via the Citrix clients. WATCH THE VIDEO, it explains exactly how to do this and what it means.

All in all, not so bad to get this end of it up and running. I still need to know how to upload and configure apps to make them available, but that's the next step. For now, I'm an independent developer with direct experience in setting up custom configured server instances in a cloud. I understand the benefit of it and can put out a wide number of configurations for any kind of client to access and test applications, and it's costing me twelve-and-a-half cents an hour to play with. Worth every penny IMHO.

Next, making Flash/Flex/Air apps available on my fancy new server instance running XenApps.

As always, thanks for visiting.

Labels: , , , , , , , , , , ,

Thursday, May 28, 2009

Amazon adds Browser Access to Kindle User Highlights and Notes

Amazon continues to enhance the Kindle experience. I got this email a little while ago:

Dear Customer,
Our customers have told us that they love being able to add highlights and notes to their Kindle books. We want to make it possible for you to access your highlights and notes directly from a Web browser too. So we've released, an online tool that enables you to do just that.

To try it out, go to, sign in with your Amazon account, and simply select one of your books where you have added highlights or notes.

We hope you enjoy this new feature. If you have feedback please send it to us at

The Amazon Kindle Team

Tellin' ya, I love the Kindle. The more I use it, the more I know that anything remotely resembling a backlit laptop, netbook or otherwise, isn't a substitute. You can use it anywhere and it's never inappropriate, because for all intents and purposes, you're reading a book or a notepad. I only refrain from using the keypad now and then, like in crowded, subdued situations, e.g. when you're in a conference session, around people eating dinner in a restaurant, etc; it can be distracting.

A while ago, I got into an online back 'n forth about the usability of a Kindle compared to a real book. One of the forum commenters said that it's harder to take notes on a Kindle, and that he'd rather just use a book.

I respect books, I own a lot of them; but fact is, we waste a LOT of paper on them, and many kinds of books aren't intended to convey that aura of "book". Technical manuals, programming books, general paperbacks, reference guides, blogs, etc., are about conveying information to me; I just want the content. For that sort of thing, if you can make a better book, which makes annotation, highlighting, clipping, bookmarking, and searching faster and more robust, you've got my interest.

The highlighting and annotation feature of a Kindle is essentially, pushing a button and moving a cursor. It can be a little awkward across pages, otherwise it's easy and fast, certainly faster than carefully drawing long horizontal lines. Clipping articles and taking notes is essentially the same thing; hit Menu, select Add Note or Clip Article, and it's done. There's keyboard shortcuts I'm sure, but the menu options don't bother me, so I haven't really explored them.

What happens to these notes, highlights, and clippings? They get stored in a sort of "book" of their own. On your main book list, you open "My Clippings", and lo and behold, there they all are. This information is actually saved to a .txt file on your Kindle (right in the root directory), so if you want, you can even move it to your computer and print or edit it. I find this VERY handy. If I could print right from the device that might be welcome, but again, the Kindle is supposed to be a better book, not a laptop or tablet; I appreciate the distinction.

All this data gets backed up to your Kindle account online via the free "Whispernet" 3g wireless access you get with the device. So, if you ever lose your Kindle, or want to view the information on a different Kindle, your good to go; just sync it to the new device. I was disappointed to find that "My Clippings" didn't seem to be on the iPhone though. Well, at least I can grab the txt file... need anymore. Now I can just use any browser-enabled device, access my Kindle account, and get to My Clippings. Here's a shot of it on the iPhone, this not being possible until today.

Note: To get it REALLY right, you should just be able to access "My Clippings" from any Kindle reader, iPhone-based or whatever. It's still not on the iPhone native app as far as I can tell.

The below shows a book I read on my Kindle, which had a music exercise (you had to write down the key a piece is written in based on a the chords used to create the music). I just did it with the keypad on the Kindle while on the subway. Below you can see the chords I entered (got 'em all right btw yay).

Labels: , , , , ,

Wednesday, May 13, 2009

Subscribe to my Blog On Your Kindle!

I know that the masses aren't going to flock to an amateur blogger's site; I don't expect to make any money. I anticipate one subscriber though at least, maybe two (if I can talk my girlfriend into it). But, my blog is on the Kindle list with the big boys, albeit a lot further down methinks. Sure, you can always just hit it on the web; but why do that when you can really use your Kindle to the max and subscribe in a civilized way that will drive me on to ever-more-interesting blogger heights? Erm...because the web one is just as good, and free? You have a point...

...but, one of the intriguing things about the web is how it levels the playing field as far as presence is concerned. I don't have to be Oracle or Microsoft to have a web page, or to publish a blog. Li'l ol' me, with some resourcefulness and my programming skills, can create enough assets and presence to rival many a big shop. This has always appealed to me, and the Kindle blog capability, which is free, just adds to it, thank you Amazon. I blog...and have a website...and an FB page...and a Twitter account...and membership in forums...and come up in Google links... therefore, I am.

That aside, how did I manage this? Yesterday, the news hit the wires that Amazon was opening up it's Kindle blog publishing platform to Kindle owners. I have a Kindle, I love it, I have a blog, I contribute to it frequently, I'm a tech nut...add it all up, and I was a perfect candidate to give it a whirl. 

If nothing else, it's incentive for me to blog hard; one day maybe, somebody I haven't promised to take out to a nice dinner will subscribe to my blog, a complete and total stranger. On that day I'll drop my clients, tell my girlfriend to quit her job, move us out to San Diego, blow my savings on a top-end 'Benz, and live the high life with the blogerati. 

Or, I'll smile, text a couple of people the good news, tweet it, and greedily wait for that first south-of-$10 deposit from Amazon. 

Anyway, the process, if you're interested; this assumes you already have a blog with an RSS/atom.xml feed of some kind set up properly (Blogger for example):

- Go to the Kindle Publishing for Blogs Beta site, Kindle Publishing for Blogs Beta
- You can't use your standard Amazon credentials, you have to create a fresh account. 
- Fill out the surprisingly simple form; basic identification, a couple of security-in-case-you-forget questions, and provide a bank account number for Amazon to dump your hordes of riches into. 

That's all there is to signing up. Following this, you get taken to a page showing three tabs: Dashboard, Reports, MySettings. 

- Dashboard: provisions your blog. You click "Add Blog" off to the right, then provide your blog's RSS/Atom feed address (nice, I don't have to republish my blog, they actually pull my existing Blogger blog in and format it for the Kindle automagically), title, tagline, description, publisher, screenshot, masthead/banner, and website address. Easy enough

- Reports: Two reports are available; single issue purchases, and monthly subscriptions. Mine are empty (hint). 

- My Settings: change password, security questions, the usual sort of thing. 

And that's it. Preview your blog, publish it, and 48-72 hours later, you're available for purchase. 

Note: if your blog is simple, primarily text and image based, your published results will probably be more consistent. If you have all kinds of Flash gew-gaws and whatnot in there, the formatting may be less consistent, since Amazon will just omit the gadgets, either truncating, or just leaving in, the space they usually take up. 

Make my a single issue! If you like it and are the sort that can spare a few bucks for an aspiring blogger...subscribe for a month! 

Free or paid, thanks for coming by :)

Labels: , , , , ,

News is FREE on the Kindle, and Other Useful Kindle Tidbits

So much of what people are saying about the Kindle seems misinformed. Both casual and serious pundits are publishing information and opinions about the device, seemingly without having used one for more than an hour, let alone own and use one for enough time to actually get a feel for it.

Example: everybody is talking about the features of the Kindle DX, TechCrunch published how the device will fail unless people pirate books for it, others say it's not worth the money, and how it does this and not that, or not that but this, or how it's just a "holdover device". Interesting, since the device hasn't even released yet and we have no idea what Amazon has in store for textbook reading folks, like student, programmers, engineers, etc. Discounts? Programs? Student pricing? Aside from rumor and speculation, nobody really knows.

But I guess folks have to say something about it, even if it's just something they heard from somebody who heard something somewhere they know not where..

So, here's some things you should probably know, from somebody that actually owns a Kindle 2 and uses it every day:

- News is FREE. You do NOT have to subscribe to get it. In fact, the Kindle's integrated web browser, which is suitable for rendering text and image versions of just about any newspaper website, comes with pre-installed bookmarks for CNN, BBC, CNET, ESPN, MSN Money, and others. And of course, you're always free to visit NYTimes, etc.
- Same with Blogs. Use the browser.

I actually do pay-subscribe to a couple of blogs, like TechCrunch and OReilly Radar, and have bought a couple of single issues of the NYTimes, but I don't have to at all.

- Whispernet (which I believe is Sprint 3g) works, and is free. I've heard people say "well yeah but you have to pay for the wireless". No, you don't. It's one of the things that imho makes the device worth the premium dollar tag (well, it is still pricey). So on top of free news and such, you can surf and access it for free.

- Free content: there's a lot of it. Of course, some is dreck. But that's indie for ya; it's up to you to find the gems.

- You don't end up spending a fortune on new things, though of course you have the opportunity. Really though, it's not like iTune songs or apps, how many books will you buy in a month?

- The device is not intended to be a laptop replacement. I've heard, "pointless, I'm going to get a Netbook (or some such app) when it comes out." It's apples and oranges. I've always carried a book, or three, and/or a newspaper, along with my laptop, and I would never break out my laptop on a subway or in any kind of upscale social setting, like a nice restaurant or some such. A tablet, or netbook, or anything else backlit, will always have the readability issues of a computer. The Kindle is more like a book than a laptop, e-ink technology and all that, and consolidates my reading material nicely. It's a complement, exactly as my bag 'o books used to be, but without the bulk and weight.

- Navigating the device is easy. There's keyboard shortcuts and simple menus. When you first pick it up, you may not think so. People said the same thing about the iPhone. Two or three days later, you're skipping around the device like a pro.

- Same for highlighting, taking notes, bookmarking, etc. It's easy and fast. With the way people thumb type these days, I don't think the keyboard is a detractor. In fact, hardcore thumb typers still seem to prefer the tactile keys over the iPhone-style screen keyboards.

- Your annotations and clippings are not hard to find, primarily because they get automatically put into another "book" of their own (more like a file actually) called "My Clippings". This is great; I can clip articles, highlight and annotate passages, and review them in a consolidated document. Also, using "My Notes and Marks" while in the book itself, is easy.

- You CAN use PDFs on the Kindle 2, and in fact, the DX is documented as supporting them natively. For the Kindle 2, you mail the document (word files too) to your Kindle account (, and it converts it to Kindle-friendly format, which you can then download to your device from your Kindle portal.

- The PDF conversion works. I haven't had any trouble with any documents so far. I know that complex PDFs can break, but I haven't encountered the issue yet.

Note: this is something I actually don't know all that much about other than some basic testing. There seem to be numerous conversion utilities, like Stanza, that enable converting and sharing with a Kindle, but for now, I've just been using the Amazon store for content primarily. I suspect over time there will be numerous ways to convert other e-book formats and documents to your kindle, and again, the DX has more robust format support, and future versions of the product no doubt will augment this.

- Printing: "My Clippings" is just a .txt file. You can connect via USB, grab the file, and print it. True, it's a limited .txt file, but printing is sort of contrary to the intent of the device; again, it's more like a book than a computer. Books don't have a "send to printer" feature.

- You can replace the fonts for greater contrast. I've already done it, and it substantially enhances the readability. The process is easily reversible and does not brick your device. You can find the info here:

In closing, the more I use it, the more I think the Kindle is a great device. If you're the sort that carries around books, reads enough on a computer to make your eyes hurt, and likes to read on the go or pretty much anywhere you have a few minutes to relax, I recommend it.

Labels: , , , , , , ,