Thursday, July 30, 2009

Discoveries: Public Domain Pictures

It is amazing to me what a difference a polished photo or image can make in a blog article. You can see a difference - blogs with great article content but no pictures feel like they are lacking something. It may be that the splash of color or other artistic composition in an image appeals to one part of the brain while the words appeal to another, providing a more holistic experience as a reader.



Companies with a good instinct (or department) for public relations understand this and will provide polished images as part of press kits. For the blog writer who is not a talented photographer, there are also sites like PublicDomainPictures.net and Public-Domain-Photos.com which provide quality photos, free for personal or commercial use. Each also provides photos from sponsors at a cost, but their libraries of free images are sizable.

Tuesday, July 28, 2009

The Emerging Competition over Streamed Video Games

It feels like we're on the cusp of a new industry - or at least an upheaval in an existing one. A battle is emerging among startups and established giants over streamed video games, one that I see as a precursor toward streamed computing.



The players are staking their claims. We have Onlive, whose approach centers around solving the growing problem for publishers that games are costing more and more money to make but profits ironically harder and harder to find. Onlive's approach also seems to value social interaction, with "spectating" and "brag clips" among their features. If technically and commercially viable, Onlive could usher in a console-less era for video games.

Then there's Gaikai, taking a browser-based approach, looking not so much to challenge console supremacy as to bring in new players to the market. By offering publishers a service, Gaikai proposes to give publishers flexibility to let newcomers try their games at little cost.

With over 100 employees, Onlive seems like a goliath compared to software company Otoy with only seven. But Otoy sports a strategic partnership with AMD to build "a new kind of supercomputer". AMD builds the massive graphics-crunching hardware, Otoy supplies the scalable graphics software, and the combination potentially affords another platform for distributing video games and PC applications, particularly those with intense graphics requirements.

Recently the company PlayCast launched a pilot in Israel, working with the cable network Hot to deploy streamed games on demand through cable set-top boxes. Streaming games/computing seem a natural extension for a cable company and could be yet another service they can provide, along with media distribution, Internet service, and telephony. I would think within five years most if not all the major cable providers will be active in this space, be it through their own development or through strategic partnerships with companies like PlayCast.

And then there's the cell phone providers and manufacturers. Companies like Verizon are already providing games-on-demand services, and manufacturers like Apple have shown that cell phone devices like the iPhone can prove a capable platform for video games. These efforts aren't exactly the "streaming" I have in mind when writing of companies like Onlive and Gaikai. Currently with Verizon's and Apple's services, users download complete games to their device (PC or cell phone) then play them through the processing power of the device. The streaming revolution will come when Verizon and others build their own server farms and wireless networks are fast enough to support latency-free streamed gaming directly to the cell phone.

Console makers Microsoft (XBox Live) and Nintendo (WiiWare) each offer a downloadable games service too, but again, users are downloading the games through the service to play through the processing power of the console. Sony is presently shunning suggestions to deploy a games-on-demand service, but they as well as Microsoft or Nintendo would be natural competitors (and logical participants?) should any decide to offer a streaming solution.

It is exciting to consider the number of different approaches being taken toward streamed video games, and to realize how many different companies, and different types of companies, can take a serious stake in the development of this new industry. As streamed video games become mainstream (within five years perhaps?) we will also have the solution (solutions?) for streamed computing in general.

Sunday, July 26, 2009

Discoveries: WordSpy.com

I consider myself a terrible writer. Part of the reason I began this blog was the possibly misguided hope that forcing myself to write more frequently would improve my ability to communicate. It may be that I'm too hard on myself, but the process of writing is something I continue to find more tedious than joyful. I am hoping that in time, and with practice, that can change.



I do respect those however who have a talent for writing and can somehow find joy in the writing process itself. The well-chosen language we hear or read from someone else can have a profound impact on how we may then think about a given topic. A good command of language helps to frame thought.

Well-chosen language can be used against us, as marketers and politicians have known for ages. But I prefer today to think of the positive inspiration that can come from a well-written book or article. So, with an eye for improvement in vocabulary, my discovery for the day is the web site WordSpy.com.

I think I became a fan when I read the definition for intexticated.

Saturday, July 25, 2009

Simple Dirty Tracking for WinForms in C#

A common requirement for Windows Forms applications is to track whether or not a user has made changes to a document. Upon closing, the application can check if the document has been changed (considered "dirty") and prompt the user to save. If the document isn't "dirty" - if it hasn't been changed since its last save - the application can forego such a prompt.

A simple way to create this behavior is to track a "dirty" flag for the form, and trap the appropriate event on input controls to catch value changes. Rather than create an event handler for every input control, and write all that code again for the next form, a developer can create a simple helper class - one that assigns the appropriate event handling code for each of a form's input controls, and tracks the "dirty" state on behalf of the form. Such a class can then be reused across many forms and projects.

Here's a sample of such a class that demonstrates this simple technique.

public class FormDirtyTracker
{
private Form _frm;
private bool _isDirty;

// property denoting whether the tracked form is clean or dirty
public bool IsDirty
{
get { return _isDirty; }
set { _isDirty = value; }
}

// methods to make dirty or clean
public void SetAsDirty()
{
_isDirty = true;
}

public void SetAsClean()
{
_isDirty = false;
}

// initialize in the constructor by assigning event handlers
public FormDirtyTracker(Form frm)
{
_frm = frm;
AssignHandlersForControlCollection(frm.Controls);
}

// recursive routine to inspect each control and assign handlers accordingly
private void AssignHandlersForControlCollection(Control.ControlCollection coll)
{
foreach (Control c in coll)
{
if (c is TextBox)
(c as TextBox).TextChanged += new EventHandler(FormDirtyTracker_TextChanged);

if (c is CheckBox)
(c as CheckBox).CheckedChanged += new EventHandler(FormDirtyTracker_CheckedChanged);

// ... apply for other input types similarly ...

// recurively apply to inner collections
if (c.HasChildren)
AssignHandlersForControlCollection(c.Controls);
}
}

// event handlers
private void FormDirtyTracker_TextChanged(object sender, EventArgs e)
{
_isDirty = true;
}

private void FormDirtyTracker_CheckedChanged(object sender, EventArgs e)
{
_isDirty = true;
}

}


The class is instantiated in the form's Load handler like this:

private FormDirtyTracker _dirtyTracker;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// instantiate a tracker to determine if values have changed in the form
_dirtyTracker = new FormDirtyTracker(this);
}



Then when the form is closing, the developer can simply check _dirtyTracker.IsDirty to determine if the user should be prompted to save.

This isn't a particularly sophisticated technique, and considers the document "dirty" with any change - even if the user changes a value back to its original. It does track user input however, is simple to code, and is reusable across multiple forms.

Friday, July 24, 2009

Discoveries: Information Aesthetics

A good portion of my job involves deriving useful information from data - through extraction, analysis, modeling, waterboarding... whatever it takes to make the data talk.

I am fascinated by the presentation of data and discovered the web site http://infosthetics.com. "Infosthetics" is a portmanteau of "information aesthetics" and the site is a blog highlighting interesting presentations of data.




It's an interesting site, worth a look even if you aren't a data geek.

Wednesday, July 22, 2009

Barnes & Noble vs. Amazon

Barnes & Noble announced this week the launch of their eBookstore, selling digitally distributed books, akin to Amazon's Kindle service. B&N provides reader software for the iPhone/iPod Touch and Blackberry devices as well as PC and Mac operating systems. Their announcement also included a statement of a strategic partnership with Plastic Logic, whose e-Reader device currently under development will directly compete with the Kindle and Sony's Reader.






It is significant that, at least for the time being, Barnes & Noble is not manufacturing their own reader device. In the long run, I don't see the devices (Kindle, Plastic Logic) as the focus of competition for Amazon and Barnes & Noble. In fact, as e-book adoption becomes widespread, it wouldn't surprise me if Amazon got out of the business of device manufacturing entirely. Their long-term success is in the sales of the content, and it is here that they and B&N will compete: their online store experience and the service afforded to customers.

For example, the service that Amazon provides with distribution of content via cellular networks to the Kindle is terrifically convenient for consumers, and of clear value to those who wish to avoid having to sync with a computer. Cynics may point out that it is also a great way to lock-in consumers to the Amazon store, discouraging competition from others - and they would be right.

But while that sort of lock-in may be in Amazon's near-term interests, over time they will provide better service for individuals with devices other than the Kindle (they already have decent reader software for the iPhone). And though Barnes & Noble's electronic format is currently incompatible with the Kindle, I believe that in time consumers will demand choice here - to read their purchased content on whichever device suits them, regardless of the content vendor. Companies like Amazon and B&N will ultimately support that choice, because over the long term their success is in the sale of the content, not in the devices themselves.

Barnes & Noble's entry into this market is a good development for consumers. At the moment, the space is Amazon's and, to a lesser extent, Sony's. With a big player like B&N directly competing in areas of consumer service and convenience, Amazon will have good motivation to avoid complacency at the top.

Monday, July 20, 2009

Discoveries: BlankSheetMusic.net

From time to time I stumble upon a web site that offers something of unique utility for me. The other day I discovered BlankSheetMusic.net, which as the domain name implies, offers a toolset for creating and printing custom blank sheet music.




There are some terrific music notation software packages available, but for composition I still appreciate the creative freedom that comes when sketching musical ideas with a pen and real paper. I appreciate the variety of options in BlankSheetMusic.net's toolset, and it saves trips to the music store.

Thursday, July 16, 2009

Stop "Run as Administrator" in Vista

I had a strange exchange with Windows Vista in which I was prompted to run my favorite text editor as Administrator. I ended up clicking “Yes”, and then realized that my text editor was no longer recognizing the drives mapped by my favorite FTP-mapping-to-drive utility.

Assuming the elevation in access was putting me in a different user account context, I decided the solution was to re-run the text editor under my normal privileges. The shortcut icon in my Start menu didn’t seem to want me to though. It retained that familiar shield icon, and launched each time from that point on with Administrator privileges. I’m not sure why I expected to see a “Stop Running as Administrator” when right-clicking the icon, but was frustrated that the command didn’t exist. Ironically, “Run as Administrator” was still an available option, however redundant and, in this moment, tauntingly sardonic like an evil curly-mustached landlord in a melodrama.

When displaying Properties for an application, there’s a convenient checkbox on the Compatibility tab to permanently set the app to always run with elevated privileges. Of course – this box must now be checked for my text editor… I was surprised to see that it wasn’t.


The actual solution lay in the Show settings for all users button immediately below the checkbox. Until this problem, I hadn’t realized that Vista maintains and applies a duplicate set of default compatibility settings for programs. Windows had applied my “Run as Administrator” acceptance on the default user setting rather than on my user account. Unchecking the box there solved the problem.

Incidentally, my favorite text editor is UltraEdit, and I like WebDrive as an FTP-mapping utility. Each is inexpensive and has helped me greatly in my daily productivity.

Thursday, July 9, 2009

Google is Announcing the Chrome OS

A month ago I wrote an article about several trends in web computing that were marginalizing the importance of the traditional PC operating system, at least from an average user's perspective as a platform for running applications. Significantly this month, Google has announced the Google Chrome OS - a lean operating system based on a Linux kernel that treats the Chrome browser as the application platform. Targeted initially for netbooks and users who spend most of their PC time currently in a web browser, Chrome OS should afford a significant, low-cost offering for anyone currently using web-based applications.

As Google states on its blog: "For application developers, the web is the platform." Current momentum suggests that the web will continue to overtake the desktop OS as the ubiquitous application platform for average users. Google's development of Chrome is a logical step in that direction.