Tuesday, October 24, 2006

Advertising Quid Pro Quo

The recent screencast work put together and posted today was satisfying in that I now have a means of showing some software related concept once and publishing it for repeated viewing. Yeah.. I was reasonably happy with the result. Sure I sound incredibly stilted when say compared to a newsreader or a third grader doing show and tell, but thats hopefully going to improve over time. Then I played one of the videos all the way to the end off the torq web site… and got… an advert for “a tribute to lonely girl15”. Ahh crap. You take something for free and there’s a quid quo pro with respect to advertising, whose content you have no control over. Welcome to Web 2.0. Yes its a reasonable exchange. Swap a free service for advertising. Its totally reasonable, but I prefer to pay a subscription in this case. The problem is I quite like the revver.com service except for the advertising. The screencasts will stay as is for now, so apologies for whatever weird adverts you get in the mean time!

Screencast Experiments

Today I posted a couple of screencasts on EID and Kaxaml in relation to MacroView and XAML. The idea is to be able to publish quick screencasts when its easier to show some concept rather explain it just in words. Having a basic mechanism to make the publishing process easy and with minimal management or bandwidth costs would be the ideal. This blog post summarizes the experiences with some of the video publishing options available today. Its certainly not an in depth review of the options, just a quick run down on what I encountered and the final choice made for publishing screen casts on my blog.

The two screen casts were based on an 80MB and 12MB AVI respectively recorded originally on an 800x600 screen. In the future I’ll probably limit the screen casts to a max of 30MB and use a 640x480 screen for the initial recording. 640x480 is a pain for using most modern UIs in a screen cast, so some more work on zooming in rather than relying on a full screen approach will be needed. All of the video publishing options I tried limit the resolution/quality of the resulting video so larger size screen casting is impractical. Regardless most of these are free services so its tough to complain without sounding like a whinger. I ended up using revver.com as the video publishing choice. See below for different services that were tried.

Google Video: At first I had trouble getting the 80MB file upload working. The upload progress bar is just a bunch of 2D balls rolling around. Given the size of video files there really needs to be a progress bar. The 12MB AVI file was successfully uploaded and displayed. The resulting video quality is too fuzzy for usable screen casts.

GoogleKaxaml

 

Revver.com: Real easy to use. The upload progress is displayed on a Flash based screen with a progress bar and percentage indicator. The only part that took getting used to was the delay between when the file was uploaded and when you could view it. It appears that an actual person checks the video (for copyright, offensiveness etc.) before it goes live. There resolution is quite good and doesn’t get throttled back as much as the other video publishing options I tried. All in all a good experience.

RevverKaxaml

 

Screencast: This is the service provided by techsmith.com and linked to their Camtasia product. The web UI didn’t work in Firefox 2.0 when attempting uploads. The uploads did work in IE7 but the 80MB upload always failed part way through. The 20MB upload did work and the quality is illustrated below. A progress bar with percentage complete was displayed during the upload process. Unlike the other options tried, the embedded player wasn’t Flash based but appeared to be the Windows Media Player. All in all, I was a bit disappointed when comparing to something like revver.com since screencast.com does involve a yearly subscription and is directly oriented at the screen cast market.

ScreencastKaxaml

 

Soapbox: Uploads and video processing was extremely slow compared to the other options. The upload progress indicator was a swirling circle which was a pain given the slowness. Unfortunately didn’t successfully get a screencast playing – just the audio. It is a beta product so it may simply not be ready yet for prime time. On the other hand, Google Video is in (perpertual) beta as well, so who know’s what beta means these days. I included the blank video that resulted as a bit of a laugh at soapbox’s expense.

SoapBoxKaxaml

 

Youtube: Really easy to get get going. The upload and processing was quick and showed a progress indicator with percentage information. Unfortunately the video quality is severely ratcheted down so its not suitable for screen casts.

YoutubeKaxaml

 

Kaxaml MacroView Plugin

Kaxaml is a XAML text editor with live previewer functionality (similar to the xamlpad application that comes with the latest Windows SDK). I was pointed to the author’s site after querying about loadable assemblies for xamlpad in a Microsoft forum. Kaxaml supports plugins via a plugin directory. The video shows the procedure for getting Kaxaml to load the MacroView code needed to display live MacroView data in a XAML/WPF graphic. Its a workaround approach based on the experimental MacroView XAML Module. Unfortunately I pronounced the Kaxaml web site incorrectly on the video. The correct web site location is notstatic.com.

 

MacroView, XAML and EID

We are experimenting with XAML technology for use a MacroView graphics platform as mentioned as a possibility in previous years user group meetings. Its very early days as the whole Microsoft Windows Vista, Office 2007 and WPF technology wave has run its development course over a number of years and is recently coming to the point where Microsoft are preparing for actual release. This is an unfortunate side effect of being more public with their development plans, so everything seems way longer in time than if they kept everything secret and behind closed doors.

We currently have an experimental MacroView XAML module for in house use. Its not at a point where any of the technology is releasable. Regardless there will be some videos published showing some experimentation with XAML and different graphic editing options for any one that is interested. This video covers how to use the Expression Interactive Designer (EID) September CTP to create loose XAML ready for use with the MacroView XAML module. Loose XAML is not tied to code behind files. Note that technically XAML designed for use with MacroView is not “loose XAML” in that it relies on certain MacroView specific dlls. Given a MacroView context, loose XAML doesn’t rely on additional C# code defined for that specific graphic file in Visual Studio or EID. Preliminary documentation on the MacroView XAML module is available at this location.

 
PS: Apologies for stilted audio commentary. Its tough going sounding coherent when you’re knee deep in programming code and abstractions all day. Well it is for me anyway ;^)

Sunday, October 22, 2006

Killer Tomato Memory Lane

I was listening to a Plumbers at Work podcast and they talked about Google code search for a bit. As a lark I did a quick search to see if any of my source code has turned up on the public web. Surprisingly the following came up as one of the results which made me laugh out loud.

TomatoesGoogleCodeSearch

This was the first piece of software work that I was actually paid money for way back in my younger days. My first exposure to programming was at high school. In year 8 (1978), the year above us had remote access to a PDP machine which was kept in a small locked room. All data entry and terminal output was via a printer based terminal. To me it was all technical voodoo that the Year 9’s had access to. The following year, finally my mates and I finally got access to the new “top of the line” Index 2000 computer. This was a Z-80 based computer housed in a single unit with keyboard, 80x25 black and white text screen, 8 inch floppy disks and a basic interpreter. Man I wish I could find a picture of that sucker. We mainly wrote 80x25 text games for it at school and it became quite addictive. Some of my friends actually broke into school to use it on weekends.

The games I wrote included a version of asteroids which leveraged the 80x25 text scrolling to move the asteroids (O and o characters). It didn’t have any graphics just text output. It was also too slow to move large numbers of text characters around the screen to properly simulate large numbers of asteroids. Because of this, the automatic line scrolling of the screen was leveraged to get large numbers of asteroid characters to move. The space-ship (< ^ > V characters) could move freely around the 80x25 space and included basic physics given thrust and movement commands. The same applied to the missiles (. character) fired by the space ship. Another game was a moon landing game with the lunar landscape defined by text character sequences and basic gravity/thrust physics affecting the lunar lander movement.

Because of this exposure to the wonderful Index 2000 and its basic programming language, I had a hankering to get my own computer during my teenage years. Unfortunately I didn’t have access to the money needed to by one. There was many a time spent drooling over Apple II and  Commodore Pet machines and PC trade shows - sad and geeky but true. Finally I saved up the $200 or so needed to buy a Dick Smith VZ200. It hooked up to a TV, had 320x200 8 colour graphics and a cassette tape for loading and saving programs. Oh yeah. I think the model I bought had a 2MHz CPU and 16K of RAM, but thats just from memory.

Creating 320x200 graphic games on the VZ200 in basic was frustrating as the run speed was so slow. You couldn’t practically animate more than a few sprites at a time at even slow speeds. For that reason, I started to learn Z-80 machine code. There was no assembler for the machine at the time. So the approach taken was to write a basic program with the machine codes specified in an array and then POKE the code into memory at program load time. This gave an enormous performance improvement as machine code was directly modifying the video memory. It also meant that I learnt the Z80 instruction set machine code values off by heart by the time my first VZ200 program was finished.

That program was called “Attack of the Killer Tomatoes” and was similar to one of the arcade games available at the time. You were stuck in a generated maze with a bunch of killer tomatoes that were out to get you. Your only defence was to be dig holes which the tomatoes would fall into and die a horrible death. As each level was passed more tomatoes would be added to the maze. They would also get faster the longer the time spent in the maze. Dick Smith added the game to the VZ200 catalogue and sold the game as cassettes wrapped in basic plastic in their stores. The royalties gave me some spending money and helped pay for a desk that I used through University and still have in a back room today. Dick Smith couldn’t have made much money from selling these type of games, so it was pretty cool that they fostered a small community for VZ200 software at the time

Anyway.. back to the intro of this post. The Google code searched showed that the binaries for the killer tomatoes game was available on a retro emulator site. I had long ago lost the original basic loader and machine code values for the program, so it was a pleasant surprise to see it as a downloadable image.

VZ200 game download site: http://vzalive.bangrocks.com/downloads/downloads.html

VZ200 emulator download page: http://vzalive.bangrocks.com/emulators/

Interview with the emulator developer: http://vzalive.bangrocks.com/interview/

The emulator running on Windows XP SP2 runs the old game, but the keyboard entry doesn’t work so the game character just sits there waiting for a death by tomatoes. The game image is only 4K, but I do remember sweating over the machine code in that piddly 4K! (Literally sweating as it was an Australian summer and we didn’t have air conditioning in those days)

KillerTomatoes

Thursday, October 19, 2006

Google Reader IE7 Flatline

The first web page I tried with a newly installed IE7 was Google Reader as it is the web app I use the most. It flatlined the processor straight away. Not a good start to my IE7 experience! Its a dual processor. So since there was none of this 50% usage half measures, it means its using multiple threads to flatline. I wonder if a javascript “bug” could cause this or is it all the browser’s fault?

Ie7GoogleReaderFlatline

Tuesday, October 17, 2006

VSTO SE links and thoughts

This post is mainly just the noting down of a collection of VSTO (Visual Studio Tools for Office) 2005 SE related links (which then turned into a rant down the track).

Announcement of VSTO 2005 SE on the forums: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=726538&SiteID=1

Useful thread that helped me get what VSTO 2005 SE was about: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=826527&SiteID=1

A quote from that thread that helped:

Here is the confusing part:

App-level solutions built with VSTO2005se are supported on Office 2003 Std and office 2007 Std

Doc-level solutions built with VSTO2005 are only supported on Office 2003 Pro, Office 2003 Word standalone, Office 2003 Excel standalone and, I think, all editions off  Office 2007. Unfortunately Office 2003 Std is not in this list.

Main VSTO 2005 web site: http://msdn.microsoft.com/office/tool/vsto/2005SE/default.aspx

Useful blogger posts:

Paul Stubbs: Five reasons to love VSTO 2005 Second Edition

John R. Durant: Visual Studio 2005 Tools for Office Second Edition Beta: the Polar Shift

Misha Shneerson: managed addins support in Office 12

Man… Managed code development for the Microsoft Office platform seems like a real dog’s breakfast to me. The problems include:

  • Lack of consideration that developer’s need to develop for the existing customer base. This means a range of Office versions not just the current one.
  • The expense associated with getting a customer to upgrade from one Office version to another. The pricing of upgrades means that the spread of Office versions in the wild is wide. Why should a customer upgrade if (a) the upgrade price is non trivial and (b) the old version does what they need. Let me rephrase that, the old version does what they perceive they need but software developers have to manage supporting a wide variety of versions.
  • Functionality splits that limit the use of Office as a platform. For example, the differences between Office 2003 Standard versus Professional lead to developer’s making choice that move away from using Office as a platform.
  • Crappy COM API legacy. I know this sounds harsh, but it just seems that APIs designed using .NET as a basis seem to just make more sense. Its like having to deal with all the COM plumbing left less resources to think through the structure and usability of the APIs.
  • Deployment complexity.
  • VSTO 2005 document centric nature. This is actually starting to be corrected in VSTO 2005 SE with its addin support, but it was frustrating when VSTO 2005 first came out. A bunch of useful functionality such as task panes and data caching, but not practically usable in my applications because of the document centric structure of the API.

I’m sure that Microsofties could produce valid reasons for why Office .NET development is the way it is and can define how developers should use the available versions of APIs, run times and office versions together. My problem is that its just way too much to learn and for no direct application benefit. Its just a bunch of cruft that gets in the way of application development. Microsoft Office as a platform for software applications has massive potential – even beyond what it is currently. It just seems like the chasm between a useful ubiqitousVBA based development platform and the equivalent modern .NET development platform has yet to be crossed for Microsoft Office.

 

 

GoogleReader+Firefox2+TabletPC

I recently changed my web feed reading tools from the Newsgator RSS aggregator and Firefox 1.x to the Google Reader and the Firefox 2.0 release candidate. Putting the Google Reader together with Firefox 2.0 and a Tablet PC is one sweet combination. It allows me to quickly scan through blog posts separating the wheat from the chaff so to speak. Firefox 2.0 is perceptibly faster than the 1.x version, but the real gains are in the Google Reader when compared to the using the Newsgator web based aggregators. It feels like a local app and not a web app. I didn’t realize how much time was spent just navigating between blog posts previously. Hopefully the performance doesn’t degrade as more people start using the reader service. If you haven’t tried the Google reader recently, give the current version a go. The responsiveness reminds me of why I’ve stayed with Google as my main search engine for a number of years now. Its simply fast bringing up the web site to getting results back. You wouldn’t think the fractions of a second matter, but they do in practice for applications you use regularly.

GoogleReader