PosterBurner is Cool!

I recently designed a poster to commemorate the launch of my AWS book. Starting with a high resolution PDF of the cover, I added images of the first page of each chapter, a picture of the product page on Amazon, a couple of reviews, and a picture of some Argentinian developers each holding a copy of my book.

I designed the poster in Microsoft Publisher and generated a one-page PDF, which I then uploaded to PosterBurner for printing. I paid for the printing and the finished poster arrived a few days later.

Unfortunately, there was a small yet quite visible printing defect — a light pink area on the cover of the book. I messaged the good folks at PosterBurner and they sent me a replacement poster just days later.

The finished, framed poster is now hanging on the wall in my home office as a reminder of the very pleasant time that I spent writing the book in the summer of 2009.

Gnomedex 2010 Mind Maps

Earlier today Chris Pirillo awarded me a Seagate FreeAgent GoFlex Pro hard drive for taking notes in the most geeky way at Gnomedex 10.

What did I do?

I used an open source mind mapping tool called FreeMind to create a single mind map (pictured at right) of all the talks. I tend to take notes to keep myself focused and engaged (and awake — I often run myself to the ragged edge and can fall asleep far too easily).

FreeMind works really well and has a very refined keyboard interface for data entry and node navigation. Even though it is still labeled “beta” it is quite robust and I’ve never had a problem with it. The newest version includes the “cloud” feature that I used to group the nodes representing each of the speakers.

Here are the maps for days one and two, in PDF and Mind Map formats:

I used SnagIt to take the screen shot of the mind map. My friend and fellow evangelist Betsy Weber is always good at keeping me up to date on the latest releases from TechSmith.

Leave me a comment if you find this useful or if I have made any glaring errors.

Vex-Based Webcam Platform

As part of my job as Amazon Web Services Evangelist, I am planning to record some screencasts and some videos later this year. I am in the process of adapting my home office to the task. So far I have set up a green screen (so that I can use the Chroma Key process to put myself in front of an interesting background scene) and I have purchased a nice Logitech webcam.

The green screen is a simple piece of fabric from EEFX. They sell “remnants” for very reasonable prices. The remnants are very small when compared to the giant pieces that they sell to their commercial customers, but are perfectly adequate for use in a home studio.

I want to be able to use the same webcam to record myself while sitting at the desk or standing in front of the green screen. I explored a number of different ways to do this and finally decided to use some Vex Robotics parts to build a webcam platform that I could activate using the Vex remote control. Years and years ago, Radio Shack dumped their entire inventory of Vex parts at half price and I picked up everything I could find and tucked them away on a shelf.

Here’s what I came up with:

Here are two videos of the platform in operation:

And here’s the view from the camera as it pans up and down in front of one of my shelves of programming books:

I still have room to make this better, and I want to add a third servo so that I can rotate it, but I am pretty happy with my progress to date! Stay tuned for some AWS videos starting next month.

Links for Monday, May 31, 2010

  • BBC News: Work Starts in £15m Plan to Get Concorde Flying – “It is hoped the jet will be able to fly as part of the opening ceremony of the 2012 London Olympics.
  • Gnomedex 10 – “Hundreds of the world’s leading bloggers, podcasters, videobloggers, and tech-savvy enthusiasts will once again descend upon the city of Seattle, Washington from August 19 – 21, 2010.
  • The Heart of Innovation: 20 Ways to See the Invisible – “Given our tendency to miss what’s right in front of us, is there a way to increase our ability to see the invisible?
  • The Automatic Earth: Lent, Spent, and Guaranteed – “This thing can blow up in our faces any moment now, with one fire igniting another across countries and within them. There’s just too many people falling by too many waysides, and too many of them will very simply not go gently into that night without a fight.

My Son Andy Is Heading to Sao Paolo…

My 19 year old son Andy has been learning Portuguese and has booked a mid-June flight to Sao Paolo, with plans to see that city and a few others as part of a two month trip. His goal is to see the country, practice and improve his language skills, and to have a safe and fun time.

His plans are uncomfortably vague at this point, and I need some help to find accommodations and local connections for him. We know that hostels are an option for him,and we are also exploring some other options through friends and friends-of-friends.

If you know of a situation that might be suitable for him, please send email (andyasb @ u.washington.edu) to Andy. He would be interested in doing some teaching or tutoring in full or partial exchange for room and board.

Andy is currently studying Math, Physics, and Astronomy at the University of Washington.

Andy is a very accomplished musician. He plays the piano, bass guitar, and several wind instruments and would really appreciate the opportunity to do some teaching.

 

Andy recorded the following video to show off his Portuguese skills:

Of PL/I, Line Printers, Punch Cards, and Carriage Control

In the fall of 1979 I was living in Rockville, Maryland. I had been accepted at the University of Maryland, but decided to attend Montgomery College, right up the street from my house, instead. I wasn’t ready for that huge, sprawling campus or the large and apparently impersonal classes.

I entered the computer science program, and took classes in the contemporary languages of that era. I learned Fortran IV in my first semester. Around the same time I started my first programming job, at a small Bethesda company called Moshman Associates. My first task there was to write a macro assembler for the 6502 microprocessor. I wrote a Fortran simulation of the hashing algorithm that we had planned to use for instructions and labels, found that it had an excessively high number of collisions, and was given a nice raise for my trouble.

In my second semester I took a class in PL/I programming. Designed by IBM, PL/I was a clean, structured, and relatively complex language. The compiler had many, many options for optimization and for diagnostic output. I spent a lot of time experimenting with the options and carefully inspecting the resulting printouts in an attempt to write the most efficient code possible.

I need to explain how we would write and run our code at that time. We didn’t have our own PCs and we didn’t have terminals to log in to a time-sharing system. Instead, we would use an IBM 029 card punch to punch each line of code into a punched card. The 029 was a complex mechanical device, with noises, rhythms, and so forth. The cards were assembled into a deck, preceded by some job control language (JCL) statements which provided a name for the job and instructed the computer how to set up input and out devices and how to compile and run the code. Small decks could be rubber-banded together for safekeeping; larger decks (usually for COBOL programs) were best kept in the cardboard boxes that originally held the blank, unpunched cards.

Once the deck was ready, I would walk up the hall to the job submission window, hand it in to the woman behind the counter, and she would stack it up in the card reader for eventual processing. At crunch times there would be line of students and a big pile of unprocessed jobs.

When it was my deck’s turn to be run, she would load it into the card reader, the computer would read and process the cards, and print the results on a very fast IBM printer. The attendant would take the printout, wrap it around the cards, and file it away until I came back to the window to collect the results.

On a good day the turnaround time would be about 3 to 4 hours. At crunch time it might take slightly longer. If all went well the printout would include two sections — the evidence of a successful compilation, and the results of actually running the program. I quickly learned to be careful with my code and with my algorithms, so that my code would compile and run after just a few iterations. Others were not so fortunate, and would spend many hours waiting for their results, only to find that they’d misplaced some punctuation, forgotten to declare a variable, or made an algorithmic mistake. I remember one of my fellow students “bragging” that “I am getting pretty good at this, it only took me 30 tries to get it to compile.”

I remember taking away a couple of things from these early experiences. First, there was great value in desk checking your code and your algorithms to increase the odds of a successful run. Second, it was good to have several projects going simultaneously to make the best of your your time. Third, I was always shocked (from reading my printouts) to see that my code could wait in the queue for several hours in order to be compiled and run in the space of 2 or 3 seconds.

As I mentioned earlier, the IBM line printer had a unique feature known as carriage control. By punching different special characters in the first column you could make the printer do some special things when it printed out your code. For example a “1″ would make it advance to the top of the next page of green bar paper before it would print. This was a good way to make sure that each function was on a page of its own. The “+” (plus) sign was magic; it would inhibit the printer from advancing the paper to the next line after printing. The next line would overstrike the current line.

I learned how to put it to very good use at the end of my PL/I class. The instructor asked us to make our final assignment look as pretty as possible. For most people this meant clean comments, good variable names, a clean structure, and so forth.

I decided to go a step further! Because this was a school, they would do their best to get as much use of each printer ribbon as possible. Instead of printing in a solid black color, the printer would usually produce text that was, at best, a medium gray. I did some experimenting, and found that 3 overstrikes would create nice, black text.

I decided to see if I could use the overprinting feature to make my final PL/I program look really nice. After getting my code to work as desired, I set out to use bold highlighting on all of the variable names. This turned out to be easy, although I spent a lot of time on the card punch. Here’s what I did.

First, before going any further, I should explain that PL/I used the characters /* to open a comment and */ to close one. The comments were free-form, and could flow from one card to the next as desired.

Let’s say that I was writing a simple loop. The actual, unadorned PL/I code and comment would look like this:

To make the MONTH variable bold I punched a series of cards like this:

 

 
 
 
 

The compiler saw a DO statement with a very long comment. The DO statement would look like this on the printout:

DO MONTH = 1 TO 12; /* PROCESS EACH MONTH */

The use of this irregular carriage control upset the otherwise rhythmic sounds made by the printer and the operators sometimes thought that the printer had jammed and would cancel the job. Once they realized that it was me (one benefit of going to a small school) they allowed it to run to completion.

Needless to say, I aced the class!

My PL/I knowledge turned out to be quite useful. Within a year I worked on a project for the National Science Foundation. I wrote a very cool program that would verify the accuracy of grant data, basically adding up the rows and columns to make sure that they matched in the application (an inverse spreadsheet). A year or two later I used Digital Research’s very capable PL/I-80 compiler to prototype some of my own ideas for a spreadsheet.

Note: I used Ralf Kloth’s Punchcard emulator to create the card images.

Links for Monday, March 1, 2009

  • Robert Trigaux: How the Economic Crash May Reshape Us – “Worldwide, people are crowding into a discrete number of mega-regions, systems of multiple cities and their surrounding suburban rings where the greatest new ideas and productivity are concentrated. In America, for example, those regions include the Boston-New York-Washington corridor, the Charlotte-Atlanta corridor, the Portland-Seattle-Vancouver corridor and — in our case — the Tampa-Orlando-Miami area.
  • Hottnez: The Mysterious Gigantic Megaliths of Baalbeck Temples – “What holds the center of mystery about these stone structures are the massive megalithic platform upon which the Roman temples sit. You could identify three such stone blocks that could weigh something close to 350 tons (1,000,000 lbs). It is a mystery how these blocks were extracted, shaped and carried over miles and lifted to the height of 22 feet to rest atop smaller blocks.
  • Jiri Mruzek: Jupiter’s Temple, Baalbek, Lebanon – “The sad truth is that regarding the Trilithon, some scholars have mental blocks its own size. Admissions that blocks weighing over a 1000 metric tons were quarried and transported in prehistoric times would invite uncomfortable questions on what technology had made it all possible.
  • CyberTech News: Transfer your SL Avatar appearance to Opensim – “Bringing your avatar to OSGrid is clearly a non-zero effort. Using realXtend appearance import/export, the work is made significantly easier.
  • PageTable.com: Create your own Version of Microsoft BASIC for 6502 – “This article also presents a set of assembly source files that can be made to compile into a byte exact copy of seven different versions of Microsoft BASIC, and lets you even create your own version.
  • LGDB: Linux Games Database – “This is a Linux Game Database, primarily for native Linux games that are beyond the planing stage and have released more than tech demos ether as source code or binary files.
  • Essential Cane: All Natural Flavored Cane Sugar – “ Flavor is fun. Essential Cane™ is obsessed with it. Flavored sugars are incredible; why not use the best ingredients to create them? Why stop with the standard flavors? Our all natural flavors are fused, blended, smoked with organic cane sugar.

TweetGrid – Review and Suggestions

I’ve been on Twitter since the end of 2006. In that time it has grown from a curiosity to a plaything to a valuable part of my business and personal life. I can’t even begin to fully enumerate the number of different ways that it has been of value to me. From keeping track of important new developments in the cloud computing space, to keeping up with the activities and antics of a bunch of followers, to helping me to plan and to make the most of each business trip, real-time, world-wide messaging is certainly a valuable tool.

A few months ago I started to use a cool new web site called TweetGrid. TweetGrid has given me the ability to watch conversations about each of the Amazon Web Services in real time. I have set up a grid of searches, 3 wide and 2 high, with individual panes for AWS, jeffbarr, EC2, S3, SimpleDB, and CloudFront.

There’s no better way to watch the global conversation around a product; if you are not doing this, you are missing out. People are going to talk about your product; the question is, are you listening?

When someone talks about one of our web services, I know about it within a second or two. I can re-tweet it to my own followers. If there’s a link to a longer story I can set it aside for blogging on the AWS blog or post it to the AWS Buzz, or I can track down the author and ask for more information. If someone has a complaint about one of the services I can pass it along to our support team and they can investigate. We track down sales leads, get the word on new AWS-powered applications, and do our best to keep our ears to the ground so that we know what people are saying about us. Other AWS Team members on Twitter include Werner Vogels, Mike Culver, Simone Brunozzi, Martin Buhr, Deepak Singh, and Satyen.

Of course, cool as it is, I do have a few suggestions for TweetGrid:

  • The ability to create more columns in the grid. My monitor is 1920 pixels wide and could easily accommodate 4 or perhaps even 5 columns.
  • The ability to filter out certain sources on a global basis. Right now this can be done using the -from: option on each search. I would like to filter out a few bothersome re-tweeters across all of my searches.
  • The ability to store all of my searches persistently on a server so that I can have the same grid on my home desktop, my work desktop, and my travel laptop. This could be done very easily using Amazon SimpleDB. In fact, I think that the Twitter infrastructure itself could be used to pass messages between the browser and a hypothetical TweetGrid server.

Given that we are coming up on the 10 year anniversary of the publication of the Cluetrain, there’s no better time to start paying more attention to its 95 theses. The first one says that “Markets are conversations.” Here’s your way to watch, and to participate, in those conversations!

Using Google Docs Spreadsheet To Compute Recipe Costs

My teenage daughter Bianca is hoping to go to Spain next year for a semester of study abroad. The program is kind of pricey and we told her that she would have to raise half of the money herself. Since she’s a very accomplished cook and baker, she’s going to sell some tasty baked goods to friends and neighbors during the holiday season.

Earlier today she started to gather her recipes together and created a brochure using Microsoft Publisher. She asked me how she would go about setting prices and I told her that she could price them based on value to the consumer or as some multiple of her ingredient and labor costs. This particular 15 year old wasn’t quite sure what I was talking about, so we set about to figure out her actual costs.

This turned out to be more complex than I would have ever imagined, but we managed to do it to a high degree of accuracy using a Google Docs Spreadsheet, a few online reference sites for unit conversion, and two online shopping sites (Amazon Fresh and Safeway).

We created a new spreadsheet and set up a pair of tabs, one for an ingredients list and another for recipes:

Then we populated the Ingredients tab with information about the ingredients that she’d need. We had to do a bunch of math to convert the weights and measures of the packaged ingredients into the equivalents used in the recipes. The rec.food.cooking FAQ and the Sugar Conversion Calculator were both very helpful. It is always odd to see how recipes interchange weights and volumes so often. Why is flour sold by the pound and used by the cup? Anyway, here’s what it looked like:

In order to simplify the cost calculations we assigned a named range to each value in the Recipe Unit Price Column::

Then we switched to the Recipes tab and entered a recipe (Martha Stewart’s Pumpkin Cookies With Brown Butter Icing) to try it out:

We then used the named ranges to calculate the cost of each ingredient:

Summing up the column gave us the total cost (we decided to ignore the costs of seasonings and spices for this costing exercise). Bianca was intrigued and decided to compute her unit cost, set some prices, and even figured out her profit. She had never used a spreadsheet before (what do they teach kids in school these days?) but caught on really quickly:

Not bad at all for an hour or two’s worth of work. Bianca now has a very valuable pricing tool at her disposal and she’s going to be better equipped to run a real business of her own someday. Frankly, I was surprised that the ingredients for Pumpkin Cookies With Brown Butter Icing will cost $7.96, but I am relieved to know that this works out to just 13 cents per cookie.

She’s starting out local and isn’t ready to ship goodies, but if you are in Redmond or Sammamish and would like to buy some delicious baked goods for the holidays, drop me a note (via a blog comment) and I’ll send you a brochure.

London Eye Street Performers

I just got back from a week-long trip to London. After a busy working week, I spent Saturday walking around. The weather was perfect and I had some good tunes on my iPod, so I walked and walked and walked, a total of over 12.5 miles.

My journey took me past the London Eye on the South bank of the River Thames:

There are a number of street performers in the area around the Eye. They dress in interesting costumes and perform for tips. Here’s what I saw on Saturday: