Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Monday, January 31, 2005

Dang, ccPublisher gives me an "Unknown Error"

ccPublisher: Unknown Error

"ccPublisher has enountered an error. We apologize for the inconvenience."

More information:

C:\Program Files\ccPublisher\resources
Traceback (most recent call last):
File "", line 288, in OnPageChanged
File "", line 553, in archive
File "", line 534, in __archiveId
File "pyarchive\identifier.pyc", line 40, in available
Traceback (most recent call last):
File "", line 288, in OnPageChanged
File "", line 553, in archive
File "", line 534, in __archiveId
File "pyarchive\identifier.pyc", line 40, in available
Traceback (most recent call last):
File "", line 288, in OnPageChanged
File "", line 553, in archive
File "", line 534, in __archiveId
File "pyarchive\identifier.pyc", line 40, in available

Free Podcast Hosting at the Internet Archive

Get this -- the Internet Archive has generously offered to host unlimited audio and video for free forever, the only requirement being that they have a Creative Commons licence.

This means free hosting for Podcasts!! (I think there is a 24-hour processing delay, however).

Google for the free ccPublisher upload app (for Mac and Windows).

Update: I have unfortunately never succeeded in getting audio uploaded to the internet archive. ccPublisher simply gives me an error (discussed in an earlier post). And I've tried the FTP/XML interface -- my contributions simply disappear from the contribution list. Boo.

The "workshop" for mom's school project.

For some anomalous reason, Nature decided to give us a beautiful day today.

Picked up these cheap earbuds from FutureShop for $10 CDN. The beauty of them is that they retract - just give 'em a little tug.

Aximsite - are you happy with your X30?

What I do with my Axim (PDA): blog (using Blogger's post-by-email), create podcasts using the built-in-microphone, listen to presentations downloaded daily via the free programs Doppler and MobSync, listening to audiobooks on Microsoft Reader through my $10 retractable earbuds, implementing the Getting Things Done organization system using Pocket Informant, download the full text of each of my web bookmarks using Plucker and Vade Mecum, try to resurrect my drawing skills using MobilePencil and email my cartoons to my blog using, etc.

My strongest traits, in the order in which I value them

  1. unusual
  2. innovative
  3. resourceful
  4. pioneering
  5. persevering
  6. thorough

I've tweaked the wording on my favourite skills ...

... so that they make more sense to me, and re-prioritized them:
  1. Imagining new ideas
  2. Computer programming
  3. Extracting patterns from data
  4. Creating graphics
  5. Evaluating a set of alternatives
  6. Communicating to a group via writing

Sunday, January 30, 2005

How to change the large MessagEase keyboard back to normal size

Drag down on the "?" key.

My Favourite Skills, In Order

1. Imagining, Inventing, Creating, or Designing New Ideas
2. Creating Software
3. Seeing patterns among a mass of data
4. Analyzing, Breaking Down into its Parts
5. Synthesizing, Combining Parts into a Whole
6. Deciding, Evaluating, Appraising, or Making Recommendations

MessagEase allows typing with four fingers

A slightly more complicated Ruby script...

... to facilitate the prioritizing of various items. It asks you to choose which of two values has the higher priority. Once it has asked you about all possible pairs, it prints a report of the items sorted by number of "hits":

class Item
attr_reader :tally, :description
def initialize(description)
@description = description
@tally = 0
def incx
@tally += 1
def <=>(other)
other.tally <=> @tally
items = [
"Compiling, Searching, or Researching",
"Imagining, Inventing, Creating, or Designing New Ideas",
"Analyzing, Breaking Down into its Parts",
"Adapting, Translating (incl. Computer Programming), Developing, or Improving",
"Visualing, Drawing, Painting, Dramatizing, Creating Videos or Software",
"Synthesizing, Combining Parts into a Whole",
"Deciding, Evaluating, Appraising, or Making Recommendations",
"Enabling Other People to Find or Retrieve Information",
"Communicating Well to Individuals in Writing (e.g. excellent letters)",
"Communicating Effectively to a Group or Multitude by Using Words Expressively in Speaking or Writing",
"In a Group: Leading, Taking the Lead, Being a Pioneer"
class Comparison
attr_reader :a, :b
def initialize(a, b)
if rand > 0.5 then
@a = a
@b = b
@a = b
@b = a
n = items.size
comparisons = []
class Array
def my_shuffle!
size .downto 1 do |n| push(delete_at(rand(n))) end
1.upto(n-1) {|i|
(i+1).upto(n) {|j|
comparisons <<[i-1], items[j-1])
def read_char
require "Win32API""crtdll", "_getch", [], "L").Call
def input(comparison)
case c = read_char.chr
when "q"
throw :quit
when "a"
when "b"
puts "Unrecognized command: " + c
catch(:quit) do
comparisons.each {|comparison|
puts "a) " + comparison.a.description
puts "b) " + comparison.b.description
items.sort.each {|item|
puts "#{item.tally} #{item.description}"

Ruby script to generate a Bolles-style "Prioritizing Grid"

n = 5
def pad(x)
return " "+x.to_s if x < 10
return x
1.upto(n-1) {|i|
(i+1).upto(n) {|j|
print "#{pad(i)}, #{pad(j)} "
print "\n"

Example output:

1, 2 1, 3 1, 4 1, 5
2, 3 2, 4 2, 5
3, 4 3, 5
4, 5

Saturday, January 29, 2005

The Jon Aquino Podcast 29-Jan-2005 13-01

MP3 File

Aximsite - Removing a Screen Protector

Hey, I figured out an awesome, easy way to remove my Belkin screen protector - slide an index card under it!!! Easy as pie.

Friday, January 28, 2005

The Jon Aquino Podcast 28-Jan-2005 22-51

MP3 File

The Jon Aquino Podcast 28-Jan-2005 22-57

MP3 File

Yay, GTD weekly review complete!

Hooray! Hooray! Hooray!

ninetyninezeros: what.. what would you say... ya do here?: "contrast that to google, where reinvention is almost in its blood. there's no remorse about throwing away dead code; people work however they feel makes them most productive; and now, another critical part is here: there's a product management core that can help harness that creativity and productivity into products the world loves to use."

Thursday, January 27, 2005

The Jon Aquino Podcast 27-Jan-2005 23-14

MP3 File

The Jon Aquino Podcast 27-Jan-2005 21-42

MP3 File

The Jon Aquino Podcast 27-Jan-2005 20-29

MP3 File

> > Why not light a candle for me instead?

Dave purchasing the candle at the Salvation Army Thrift Store, as Emily looks on. Dave strikes a pose -- as his Official Chronicler I shall christen this pose Dave's "Sherlock Holmes" pose.

Here is Dave lighting the candle for reasons unbeknownst to me - I find out later that it is an inside joke.

This is Dave's reaction a couple minutes after discovering that the top of the pedestal on which he placed the candle was in fact a hole, through which the candle promptly dropped. Here he is looking around the pedestal, hoping that the candle would materialize somewhere near the base. It did not.

Here is Emily's reaction to what happened after Dave attempted to place the candle on top of the pedestal.

The Jon Aquino Podcast 25-Jan-2005 19-15

MP3 File

The Jon Aquino Podcast 26-Jan-2005 21-09

MP3 File

Wednesday, January 26, 2005

Another story

Creating a spreadsheet of all tasks remaining on PSP project to get clear and current on the project status. Computing the "project velocity" or ratio of actual to estimated time, to understand the accuracy of my estimates (0.95).

Also: My two MyVirtualBand collaborations.

Sunflower sketch

Sunflower sketch

I want to get back into drawing.

A story about PDA keyboards

I bought my Pocket PC a couple of months ago, and one of the first issues was: How to enter text efficiently? I found Graffiti and Transcriber to be slow and inaccurate, and I knew that there were better alternatives to the built-in QWERTY keyboard. MessagEase was one, but with its lack of visual feedback I found myself continually glancing up at the screen to check my work - uncomfortable and stressful:


Fitaly has visual feedback and its letter layout has been tuned over the years, but its punctuation seems an afterthought, scattered among five hidden screens:

[The five Fitaly punctuation screens]

I decided to make my own on-screen keyboard, based on the wonderful Fitaly layout, but also providing access to all punctuation from the main screen, just like the standard built-in keyboard.

First, I needed a customizable keyboard. The Pocket PC Magazine awards mentioned one: TopKey. Only $5, compared to Fitaly's $30. Next problem: How to implement the Fitaly layout? Fitaly has five rows, whereas the standard keyboard has four. Well, it didn't take me long to realize that I could squeeze Fitaly into four rows while preserving its essential character. I called it "Fitnaly", as that's how the letters appeared in the end. Here's my first cut:

[Fitnaly on TopKey]

Note how everything worked out nicely: punctuation is placed in their familiar positions (slide up on the numbers to get !, @, #, etc. More on this later...), and as a bonus, numbers are also located in their usual positions! I posted this layout on the Aximsite forums so that others could benefit, and also contribute ideas.

But then ... I discovered that TopKey has compatibility issues with Windows Mobile 2003 SE -- often keys would be "sticky", staying down. Plus, its wonderful self-learning predictive text feature seemed to be making the responsiveness sluggish. I emailed TopKey and they confirmed the "stickiness" problem on WM2003SE.

So I looked for another customizable keyboard, and found one in the recent Pocket PC Magazine winner in the Soft Keyboards category: Resco Keyboard Pro. On sale for $13, it was priced halfway between TopKey ($5) and Fitaly ($30). Here is my first attempt at implementing the Fitnaly layout:

[Fitnaly on Resco]

The next refinement was to use Paint to create a new skin:

[An early skin]

Note the muted colours and lack of grid (tips I picked up from Edward Tufte's books - not sure if it is elegant, ugly, or both). Also I chose a simple layout for the colours to help users to orient themselves.

I wanted to explore an alternative layout: ATOMIK, developed by IBM:

[IBM's ATOMIK layout]

Again, the challenge here was to map a 5-row layout to 4 rows. Here's one way to do it while preserving the character of the original:

[The ATOMIK layout mapped to a standard keyboard]

Note again the use of colour to break up the keyboard into memorable sections.

It then struck me that it would be useful to have visual cues to remind the user of the punctuation available. I added them to the skins:

[Adding visual cues for punctuation]

Note that the Atomik keyboard is rather elongated in the NW-SE direction when mapped to the standard keyboard - this makes for a lot of hand contraction, which can get painful. So I flipped the layout upside down, which made it more compact while preserving its character:

[Flipping the ATOMIK layout to make it more compact]

Well, after using the Fitnaly and Atomik layouts for a week, I just felt that Fitnaly was a lot more comfortable -- almost more "intuitive" I guess -- for some reason. But wasn't Atomik more "scientifically" designed, using the Metropolis algorithm to cluster letters that are often used together?

Well, I decided to conduct my own tests to find out.

First, I wanted some quantitative evidence, so I set up a simple experiment. I wrote a 134-line Groovy script to compute the distance travelled for Fitaly vs. Atomik using two texts: the Gospel of Matthew, and Grimm's Fairy Tales -- both available for download from Project Gutenberg. In both cases, Fitaly is better by around 3% (God prefers Fitaly, perhaps?).

C:\>cat BookOfMatthew.txt | groovy fitaly.groovy
Fitaly distance: 192163.3 units
Atomik distance: 198783.9 units
Fitaly is better by 3.4%

C:\>cat GrimmsFairyTales.txt | groovy fitaly.groovy
Fitaly distance: 814045.4 units
Atomik distance: 834466.2 units
Fitaly is better by 2.5%

Next, being a visual person, I wanted to see the Fitaly and Atomik gestures displayed side-by-side for the text from the annual Dom Perignon speed competition. This I did using Paint.Net (and Tufte's idea of "small multiples").

[Visual comparison of the Fitaly and ATOMIK gestures for the Dom Perignon competition]

Looking at the gestures side by side, I did not see that Atomik was significantly better -- if anything, Atomik looked slightly worse. The numbers from my quantitative experiment confirm this.

So I have put aside the Atomik layout and settled on Fitnaly, implemented in Resco to make all the punctuation available on the main screen. The current version of Resco does have a major bug (it sometimes ignores your taps - namely, inadvertent 2-mm slides along the grid do nothing), but the punctuation design outweighs that for me (plus Juro at Resco has promised to fix the problem for the next version). The latest incarnation of the Resco Fitnaly skin features some nice 3D buttons from other Resco skins. (Dontcha love the green button? I did that using GIMP's colour-replace feature).

[The latest iteration of the Resco Fitnaly skin]

I have created a zip file, with installation instructions, for these skins. So far, six Resco users have asked me for them. Send me an email if you want a copy! (Note that it requires that you have Resco Keyboard Pro installed on your Pocket PC).

Some cool scripts I have written

- Sort programs from and by rating
- Play the next chapter from the NIV audiobible on the web, and bookmark where I left off
- Play a random 10-second snippet from each track in the Listen! music history course CD, for a 1-hour whirlwind audio tour of music history
- Extract my timesheet data into a format suitable for graphing in Excel as a series of timelines
- Concatenate my podcasts with start and end music
- Download photos from my digital camera, generate thumbnails with timestamp labels, and upload them to my website
- FTP my bookmarks HTML file to my website
- Find all empty catch blocks in a Java source-code tree
- Extract information from a BoardGameGeek GeekList (given the URL) to produce a nicely formatted entry for a Meta-GeekList
- Compute the distances travelled using any keyboard layout (e.g. Fitaly, Atomik) for any "corpus" or text (e.g. Matthew's Gospel, Grimm's Fairy Tales)
- Daily downloading of the most recent Astronomy Picture of the Day (or Dilbert) to my Windows wallpaper

Tuesday, January 25, 2005

What I want out of life

* Ensuring that my family lives in comfort
>* Spending quality time with my family
>* Giving people amazing surprise gifts
* Living in peace, with adequate rest.
* Creating beautifully designed computer programs
* Extracting patterns and statistics from raw data to give people new insights

Bea's selections for 2nd Sun of February

Feb 13
* Blest Be The Lord
* Lift High The Cross
Shelter Me O God
Praise To You O Lord
No Gloria

Feb 27
* Glory and Praise to Our God
* The Lord's My Shepherd
Come to the water
O Sun Of Justice

Google TV Search

Bro - this is incredible - search all your favourite TV shows with Google:

Monday, January 24, 2005

"For the most part, we are too busy doing just about everything, that means just about nothing, to just about nobody, just about anywhere . . . and will mean even less to anyone a hundred years from now!" (Matthew Kelly)

Dang -- when I click "launch avg test center", I just see an hourglass flash briefly, and the Test Center window doesn't appear :-(

(Update: Reinstalling AVG fixed it.)

Presenting ... the "Fitnaly Black" skin

I wish the Windows XP start menu's recent-programs list were sorted alphabetically. Sigh.


Hm - when I exhale, I have this vague pain in the pit of py stomach. Hope it'll vanish.

Shackin' up with Esther

I am proud to announce the beginnings of some musical collaboration on another song on Dan Probst laid down the original tracks (vocals, guitar).

Then today I added additional vocals, an additional guitar track, and some whistling. Check it out!

Here's are the comments that the musicians are leaving for each other:,175

Sunday, January 23, 2005

Father Tony's homily

Christian unity.

The Reformation. Mending relationships.

- more socializing among churches (events)
- cooperation, not competiton, in charitable work (missed opportunity: tsunami aid)
- words and names - rather than Protestants, separated brethren, heretics: he/she who belongs to the animated church of Christ
- opening our building for use by other denominations
- dialogue among the leaders of the different groups

The Jon Aquino Podcast 23-Jan-2005 14-16

MP3 File

The Jon Aquino Podcast 23-Jan-2005 12-25

MP3 File

Here's a Ruby script that I'm going to use to slap on start and end music for my podcasts:

Dir.foreach("../X30 Storage Card") {|filename|
if filename =~ /Podcast.*\.mp3/
File.stat("..\\X30 Storage Card\\#{filename}").mtime.to_s =~ /\w+ (\w+) (\d+) (\d+):(\d+):\d+.* (\d+)/
puts `copy PodcastStart.mp3 /b + "..\\X30 Storage Card\\#{filename}" /b + PodcastEnd.mp3 /b "..\\Podcasts\\#{$2}-#{$1}-#{$5} #{$3}-#{$4}.mp3"`

This is awesome - my violin part was part of the first radio program (aka podcast).

You know, this MyVirtualBand thing really reminds me of jamming with my buddies in high school. A ton of fun.

Google Groups : alt.comp.freeware

">I'm lookin' for an app (Win98 or Linux) that'll merge MP3s. Any suggestions?

Do you need to edit the join in detail or will a simple DOS command line 'copy a.mp3 /b b.mp3 /b c.mp3' do?"

Saturday, January 22, 2005

This is a list of high-quality internet radio stations. I found one station in particular that appeals to my (mainstream, I guess) taste: " Top Hits".

Tuner2 - your ears will know:
"Tuner2 lists only the best of the best - stations featuring the latest in Internet radio technology, like high-fidelity MPEG-4 aacPlus in stereo and 5.1 surround. Riding the front of the Internet audio shock-wave, stations on Tuner2 are hand picked for quality, reliability, and variety."

The Jon Aquino Podcast 2005-01-22

MP3 File

Just before heading out for lunch with the boyz

Dang, I need a camera that doesn't blur so easily!

On the set of the world premiere of the first podcast of a cat eating.

Ever wondered what it would look like if you forgot to turn off the stove when you were boiling eggs? Well, you need not wonder any longer.

1. To make a Jon Aquino Cheese Wrap, start with the bread

2. Next, lay down some cheese

3. Melt the cheese in the microwave

4. Then finally, roll it up!

5. Voila! You have created a limited-edition Jon Aquino Cheese Wrap (TM)

Yasuhiro gave this souvenir from a temple in Japan. It foretells your luck -- in this case, a rare "bad luck" bill. Note the "X" near the top-right. That means "bad luck". Yasuhiro's family was worried when he received this slip at the temple.

Plan for tomorrow:
- Sidekick (chocolate bar)
- root beer
- Spiderman 2 or Terminal

Also, maybe adding vocals to some of the songs at I'm not good at coming up with lyrics, so I will probably take some from copyright-expired works of ancient English poetry. Also, the goal will be coming up with a catchy melody, not vocal gymnastics (which is impressive, easier, but ultimately forgettable). Maybe throw in some harmonies at key points.

Maybe turn some of the heavy rock stuff upside down with gentle vocals. I don't know. But I'm no AC/DC.

Other notes on creating vocals:
- sometimes you sing, sometimes you don't
- lots of repeated phrases

11:50 PM 2005-01-22 The Jon Aquino Podcast

MP3 File

6:06 PM 2005-01-22 The Jon Aquino Podcast

MP3 File

5:59 PM 2005-01-22 The Jon Aquino Podcast

MP3 File

8:44 AM 2005-01-22 The Jon Aquino Podcast

MP3 File

12:22 AM 2005-01-22 The Jon Aquino Podcast

MP3 File


Word-of-mouth for the new millenium: "Word-of-blog"

Friday, January 21, 2005

Every Video Game

I don't see how this can be legal. Someone has put thousands of Nintendo, Sega, Game Boy, and Arcade games on the internet, and the amazing thing is that they are running on a Java emulator i.e. you can play them right in your web browser. There's no way this can be legal!

Dang, my left wrist is paining me today. Hope it's not CTS.

Thursday, January 20, 2005

The Jon Aquino Podcast 2005-01-20 6:46 PM

MP3 File

The Jon Aquino Podcast 2005-01-20 9:20 AM

MP3 File

Figuring out some complex stuff.

Rainy day in Victoria.

At a great Chinese restaurant near Tillicum Mall. Mom likes this place because it's not too salty.

Dave and the chocolates he will be sending off.

Here's Dave packing away some candies to send to his friends.

Wednesday, January 19, 2005

2005-01-19 10:33 PM

MP3 File

2005-01-19 6:15 PM

MP3 File

:: View topic - "TaDa" - free web-based list manager

GTD is all about lists, and one intriguing possibly for lists is a web-based application. This lets you access your lists from any computer.

Evidently free. I haven't tried it yet, but I'm curious about the possibilities.

There's an online video that shows how it works.


Yasuhiro recommends a Japanese restaurant in Victoria called Ahn

1-line description of refactoring: microscopic code-cleanup

End-of-the-day podcast

MP3 File

Bumped up the quality on NoteM to High

MP3 File


MP3 File

Tuesday, January 18, 2005

Aximsite - Axim as Podcast Recording Station

Of course, the logical name for what we're doing is Axcasting :-)

Dang, I wish the (free) would let me upload mp3s. As it is, I only have the option of posting by phone. Otherwise I could Axcast while I'm waiting for the bus or sitting at Starbucks or whatever.

Maybe I can connect my Axim to my phone line ... by connecting my headphone jack to the appropriate wires in the telephone cord?


1-line explanation of PDA: "it's an electronic-calendar/music player thingee"

Podcast signoff idea

"For the Jon Aquino Podcast, this is Jon Aquino. Goodnight everybody."

this is an audio post - click to play

Mom and I enjoy these.

Dave Blasby strikes a pose.

Geared up to do some "typing" for my mom ("tapping", really, as it's on my PDA, using the Fitaly keyboard)

Typing up some stuff for my mom

In my room I've got these great big floodlights. I like light!

Monday, January 17, 2005

this is an audio post - click to play