How to do custom chart annotations in Flex

Hunting around the ‘Net, I found a few good examples of creating chart annotations in Flex.

One example app which helped me greatly was from a “blog posting by Ely Greenfield”:http://www.quietlyscheming.com/blog/2006/04/03/custom-chart-annotations/. If you’re interested, you can view it on his website: “chart annotation demo”:http://demo.quietlyscheming.com/overlayDemo/index.html.

Unfortunately, the code you can download from his site is a little old so it has problems compiling in Flex Builder 2+. I have updated the code, fixed some bugs in it and have it available here: download OverlayDemo-fixed.zip.

Ely has other interesting demos on his site which are worth checking out. Some of my favorites are: the “variable radius pie chart demo”:http://www.quietlyscheming.com/blog/charts/variable-radius-pie-chart/, the “interactive bubble chart demo”:http://www.quietlyscheming.com/blog/charts/variable-radius-pie-chart/, and the “dashed lines demo”:http://www.quietlyscheming.com/blog/charts/dashed-lines/.

h3. Resources

annotation example by Ely Greenfield

  • “http://www.quietlyscheming.com/blog/2006/04/03/custom-chart-annotations/”:http://www.quietlyscheming.com/blog/2006/04/03/custom-chart-annotations/
  • demo: “http://demo.quietlyscheming.com/overlayDemo/index.html”:http://demo.quietlyscheming.com/overlayDemo/index.html

annotation example by Brendan Meutzner

  • “http://www.stretchmedia.ca/blog/index.cfm/2007/3/28/Chart-Milestones-using-annotationElements”:http://www.stretchmedia.ca/blog/index.cfm/2007/3/28/Chart-Milestones-using-annotationElements
  • demo: “http://www.stretchmedia.ca/code_examples/chart_milestone/main.html”:http://www.stretchmedia.ca/code_examples/chart_milestone/main.html

How to build and install the Metakit DB for Python on MacOSX

Ever since I used it years ago on a geek-project for my Zaurus, the Metakit DB has always been a favorite of mine. I had the chance to use it again on another personal project and this time on MacOSX. Unfortunately, the prebuilt binaries on the Metakit site are for older versions of MacOSX, so I had to build it myself.

Normally one would simply follow the “Metakit installation instructions”:http://www.equi4.com/pub/mk/, but they are old and didn’t work correctly with 10.5 Leopard. I scraped enough information together from the Internet to get it working, but I had to do a lot of research. To save others the same hassle, I have put together all of the changes and put them here in their entirety:

Building Metakit

Make sure you have Xcode installed on your system before starting.

Get the latest source from the “Metakit downloads page”:http://www.equi4.com/pub/mk/. At this time the latest version is @metakit-2.4.9.7.tar.gz@.

Uncompress the archive in a work directory and run the following commands:

Note: Your Python install might be in a different location. If so, give the @–with-python@ arg the proper value.

“Fat” binary setup

If you need this to run on the PPC architecture you will need to make a couple of modifications to @./builds/Makefile@ after running @configure@, otherwise you can skip this step and build the binaries with @make@.

Find @CXXFLAGS = $(CXX_FLAGS)@ and change to the following:

Find @SHLIB_LD = g++ -dynamiclib -flat_namespace -undefined suppress@ and change to the following:

Build the binaries

Run your typical @Makefile@ commands:

Installing Metakit

Rename the shared library which is now in the @./builds@ directory:

And copy the following files to @/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python@ (be sure to adjust the path name for your version of Python):

Testing Metakit

At this point you should have a working system and ought to be able to run the following command in a Python shell without issue:

Enjoy !

h3. Resources

  • “Metakit for Python website”:http://www.equi4.com/metakit/python.html

  • “helpful instructions from www.ospace.net”:http://www.ospace.net/wiki/index.php/ServerHowTo

Trying to do MVC in pure Flex

I was looking for some examples of how to structure a Flex application using MVC, but using only the Flex framework. In the long run I think I’ll be using PureMVC, but right now I am anxious to get my app working and don’t want to have to learn Yet Another Technology just to get there. Besides, shouldn’t Flex be able to stand on its own?

I found what I was looking for in the article _”An architectural blueprint for Flex applications”_ written by Joe Berkovitz. In it he talks about a way in which he architects Flex applications using pure Flex/Actionscript constructs.

Being a Flex newbie, I learned a lot from his article like how to pass variables to your own MXML tags and even customize them using Actionscript. His architecture also solves an issue I was having with Event messaging/bubbling due to the fact that it only works automatically on DisplayObject components. His design also has an interesting way of handling multiple data-services as well as the operations required for handling service communication.

Source code for the project is available in the article. I would recommended downloading it and browsing through the files.

Resources:

Moving to WordPress

It’s time for another blog / website changeup. This time I’m moving from RapidWeaver to WordPress. I think it’s going to be much better for me and my needs.

Please update your RSS feed links: http://blog.davidmccuskey.com/feed/

I will make the switch permanent in the next couple of days.

Thanks !

My First Document Scanner

Today I ordered a NeatScan document / receipt scanner made by NeatCo!

I’m pretty excited because I’ve always wanted one ever since the days of the Visioneer Paperport. The idea of a paperless office really appealed to me mostly due to my infatuation to keep around receipts and documents that I receive, be it electronically or on paper. Unfortunately, I’ve never figured out a method to process & save any of the paperwork on an ongoing basis – it usually falls apart when I start to get too busy with life.

I had done a little research several months ago to see if there were any changes in the document-scanner market since the last time I checked. From that I made my rough list for my ultimate document-scanning setup:

  • Small, desktop scanner
  • Ability to create searchable PDFs
  • Software to help me organize everything

I started looking again because I came across two Black-Friday deals related to document scanners: NeatScan to Office by NEAT and the SnapScan S300M by Fujitsu. (The deal from NEAT was for the PC version of the scanner, but I read on their website that they were offering the Mac software for free as long as you provided the serial number of the scanner.)

I found that Fujitsu’s SnapScan always had great reviews so it probably wouldn’t be a bad choice no matter what. One of the cool features it has is the ability to feed and scan multiple documents while scanning both sides at the same time! Very nice.

NEAT released a Mac version of their software last January at MacWorld. From what I could tell from the NEAT website and forums, they are committed to creating a great Macintosh experience and their goal is to match the functionality of their Windows software. One of the cool features of the NEAT software enables you to print directly to the software (eg, print an email receipt from Amazon to the software, which will then process it with OCR/PDF). This could definitely be handy for me since I get a lot of electronic receipts from the things I order online.

Here are some of the reasons I decided on the NEAT scanner:

  • It was a little cheaper than the SnapScan
    I wasn’t sure if I was going to appreciate a document scanner
  • The included software did OCR (important for making searchable PDFs)
    (Though during this quarter [2008Q4], Fujisu is offering a rebate to get a free copy of Readiris Pro OCR sofware.)
  • The included software will organize receipts and documents
    (I was considering purchasing Yep as my tool for organizing PDFs; I always have the choice if I find the NEAT software lacking.)

h3. Resources

  • “MacNN Forum: NeatReceipts or Fujitsu?”:http://forums.macnn.com/57/consumer-hardware-and-components/367014/neatreceipts-or-fujitsu/

  • “TUAW Review: NEAT Receipts for Mac”:http://www.tuaw.com/2008/06/06/tuaw-review-neat-receipts-for-mac-advance-release/

  • “MacMost Video: NeatReceipts Review”:http://macmost.com/macmost-now-89-neatreceipts-review.html

  • “Macworld Review: Fujitsu SnapScan S300M”:http://www.macworld.com/article/133962/2008/06/scansnaps300m.html

  • “Fujitsu.com: SnapScan S300M”:http://www.fujitsu.com/us/services/computing/peripherals/scanners/scansnap/s300m.html

  • “Readiris Pro Website”:http://www.irislink.com/c2-532-189/OCR-Software—Product-list.aspx

  • “Pricegrabber Review: Readiris Pro 11”:http://reviews.pricegrabber.com/data-fax/m/19848156/

What does it take to be a CEO?

I recently quit my job to (re)start my own software company so I decided to do some research to find out more about the responsibilities of a CEO.

During the search I found a great article from Steve Robbins in which he talks about several components of a CEO’s job function.

The article itself outlines a CEO’s job description including some important related job topics. The basic outline is this:

  • A CEO Job Description
  • Measuring Success as a CEO
  • Pitfalls and solutions for the CEO
  • Coaching tips to stay sane and skillful at the top of the heap

The job description he writes about is very simple and it can be distilled into four duties:

A CEO Job Description

  • Setting strategy and vision
  • Building culture
  • Team-building
  • Capital allocation (how to spend money to achieve the vision)

Reflecting back on my experiences in The Workplace, I think this is a great list with which to start.

Resources

  1. Article from Steve Robbins’ website: What do CEOs do? A CEO Job Description.

My predictions about the success of Apple’s iPhone

After digesting all of the stories, videos, blogs and comments on the ‘Net, I make my predictions about the success of the iPhone.

Here we are on the eve of what is arguably the hottest product launch in the history of computing – the Apple iPhone. Over the past few weeks the amount of buzz surrounding it has reached frenzied proportions! As usual, I read the same reports on the ‘Net typical of an Apple product launch – “Apple is great!” “Apple is going to fail!” “Apple did it all wrong!” “It’s too expensive” “I want one!” “No one is going to want one!” “The iPhone doesn’t do <insert favorite technology or feature here>”. So, I’m here to add to the insanity and give my take on the success of the iPhone, but through a different perspective. In short,

Apple is going to sell millions of iPhones … and this is just the beginning.

Why will it be so successful? Apple expertly markets and sells technology catered to the largest section of consumers who are, based on their technology needs and knowledge, simply the average person. Most companies (try) do this, too, but always fail to excite consumers in the way Apple does. Their secret sauce is one thing – the user experience – and it permeates the entire experience, from marketing to packaging to purchasing to product use, etc. It is this user experience which fully resonates with the majority on so many different levels.

!http://davidmccuskey.com/wp-content/uploads/2008/12/chasm-400w.jpg(The Graph of Moolah)!:http://davidmccuskey.com/wp-content/uploads/2008/12/chasm-graffle.png

click on the image for a larger view

The market and the majority of which I speak are best described in the book “Crossing the Chasm” by Geoffrey Moore. Graphically, his view of the market is a typical bell-shaped curve that is split into five different segments of consumers, each with their own technical needs, motivations and comfort levels. The names of these groups are the Innovators, Early Adopters, Early Majority, Late Majority, and the Laggards. By far the two largest of these consumer groups, and the ones to target to be extremely successful, are the Early Majority and the Late Majority. And, it’s interesting to note, it’s not necessary to target these consumers with the best technology[1]!

No, Apple doesn’t always compete using the latest technology, though whatever technology they choose they make it easier to use and more beautiful than any existing product. With the iPhone they have once again upped-the-ante by bringing to market the world’s first consumer multi-touch display which uses hand gestures to navigate the phone’s menus and tools. The screen is gorgeous, the graphics are adorable, and people will have fun using this phone.

It’s apparent that Apple put a lot of research and development into the interface and they will need to recoup their costs. Thus paying a premium for this device shouldn’t be unexpected (though it is actually not that expensive when compared to other smart phones on the market today[2]).
Initially price won’t be an issue because the first purchases will be made from those in the market groups called the Innovators and Early Adopters. These people are willing to spend extra money for something cutting edge, but to be fully entrenched in the latter groups the price must fall to within their budget (as did the prices of the iPod). I expect the first price drop to happen in 6-12 months with the second revision.

Of course there are things which might hamper the iPhone’s success:

  • Manufacturing defects
    I think Apple is poised and ready to deal with any issues which come up.

  • Usability
    Notably the keyboard and battery life, though I’m sure Apple has done a lot of testing. Initial reports are positive.

  • AT&T service
    This isn’t really under Apple’s control, but they have taken over part of the process, notably activation of the phone which will be done through iTunes!

It’s obvious that Apple has worked extremely hard getting the iPhone to market. From outside appearances, the iPhone execution has been superb, especially considering all of the components Apple has brought together within a few short years.
The early summer release will give Apple time to work out the initial bugs and give the market opportunity to see how cool the iPhone really is. Fast forward six months and Apple will once again be selling the most desired technical gadgets during the Christmas season.

Given the new touch interface, the iPhone is the most revolutionary mobile phone / Internet device / music player the world has ever seen. Apple will sell millions, make billions, and fully deserves to do so!

fn1. Two notable examples are the Apple iPod music player and the Nintendo Wii game console. Neither product incorporates the best technology on the market, but they are both one of the most desired items in their respective categories. The popularity derives from their user experience.

fn2. Check ebay for the Nokia N95. (At the time of this writing, the Nokia 95 was selling for ~650$US)

Converting journal entries from Outlook to MacJournal

I wrote a Python script to convert a journal file export from Microsoft Outlook to one which can be read by MacJournal.

It requires the Python module csv (included with Python 2.3 or later)

Run the script like so:

If no input or output files are listed, it will use the following defaults:

Outlook (input): @exchange_export.csv@
MacJournal (output): @macjournal_import.txt@

You can click here to download the Outlook to MacJournal Python script.