Brad Wardell's Blog


RIAA kills off eDonkey, WinMX

Published on Thursday, September 22, 2005 By Brad Wardell In WinCustomize News

Betanews is reporting that The RIAA has managed to shut down WinMX, a popular peer-to-peer file sharing service.  In addition, eDonkey has apparently been shut down by Reuters (though its website remains up).

Since most P2P networks today are decentralized, eliminating a P2P network completely is nearly impossible.  However, the RIAA strategy seems to revolve around shutting down "super nodes" that, as a practical matter, cripples a given P2P service.

Microsoft reorganization reactions

Published on Thursday, September 22, 2005 By Brad Wardell In WinCustomize News

Microsoft has reorganized itself into three main divisions. This comes as news of Jim Allchin, the head of Windows development, will be retiring after Windows Vista ships late next year.

Reactions on the net have been mixed.  CNET has a story that covers a wide variety of reaction from bloggers across the Internet.

Symantec: Mozilla browsers more vulnerable

Published on Thursday, September 22, 2005 By Brad Wardell In WinCustomize News

Symantec is claiming that Mozilla based web browsers are more vulnerable to attack than Microsoft's Internet Explorer. 

However, some (such as us) are skeptical of these claims as Symantec is basing its opinion on the number of security flaws that have been confirmed by the vendor.  Uncinformed, unacknowledged security holes do not get counted.  Nor is the number of actual available exploits being weighted in.

It should be noted that Symantec's software routinely flags software as being "dangerous" based on languages used rather than actual danger.  For example, widgets or gadgets that use VB Script are routlinely blocked by running by Symantec's security products.

Whether Internet Explorer is less secure than the Mozilla browser remains a matter of debate. It largely depends on who you talk to and how you define a vulnerability.

Whining about "Stealing ideas" is pointless

Published on Thursday, September 22, 2005 By Brad Wardell In Personal Computing

It seems every time a larger company incorporates a feature that a smaller company has that a bunch of people start screaming bloody murder.  Shrieks of "copying" and "stealing" come up.  What's the point?  Last year the folks who made Konfabulator made a be stink when Apple incorporated Dashboard into the OS.  I totally agreed with Konfabulator's developers that it was pretty lame on Apple's part but in the end, complaining just looks bad I think to most people.  The fact is, if you make something good, other people will want to make something similar. That's life.

And I say that with some experience...


Object Desktop in 1995/1997

This is a screenshot of Object Desktop taken in 1997.  Mind you the product originally was released in 1995 and was in public beta testing in 1994.  It had features that were quite new (Windows 3.1 was the OS in 1994).  It provided featurs such as a skinnable UI for the entire OS (what we call WindowBlinds today), treated .ZIP files as compressed folders, allowed users to package up desktops (Object Package), Had a big sidebar on the right side with virtual desktops, system info, a clock, etc.

So when Microsoft and other companies started treating ZIP files like compressed folders, we didn't make a peep of complaint even though we were the first to do it.  Why? Because we didn't think the idea was non-obvious. 

Similarly, even though (to our knowledge) no product or OS had ever done a sidebar quite like this (NeXTStep's dock is pretty dissimilar), we haven't made a peep about other sidebars and such when they came along.

Even in 2001, when Microsoft incorporated GUI skinning into the OS using the exact same mechanism as WindowBlinds (uxtheme.dll in Windows XP might as well be WindowBlinds LE or something) we didn't complain or make a huge uproar. 

When in 2003 Konfabulator came out with a program that essentially did a subset of features of what DesktopX had been doing for 3 years, we didn't accuse them of stealing their ideas from us.  The only thing we objected to was their claims that they had somehow invented the concept.  It should be noted that we never claimed to have invented the concept.  We were inspired by IBM's work on an OpenDoc based desktop back in 1996.

And when we learned that Microsoft was going to be doing gadgets some time ago, we could have made a huge stink about that too.  Gone to CNET and Wired and other media outlets and talked about how Microsoft was "stealing" from us.  But we didn't.

Why don't we? Because nobody likes a whiner.  And in our experience, each change brings a new opportunity. Software companies must endeavor to adapt and change to new circumstances.  The only metric that should be used in my mind is whether a change is good for users/customers or not. 

To be sure, it's annoying when users will say "Oh, Stardock's screwed." Or even more annoying when someone else gets credit for what we were doing first simply because they squeaked louder.  But the reality is, in the long-term, changes bring new opportunities.

For example, looking at that Object Desktop screenshot from 1997 (which has the same features as were present in 1995) you can see a proto-Sidebar, Compressed Folders, ObjectDock, widgets/gadgets, WindowFX, WindowBlinds.  But changes have spark new innovation.

Most people don't realize this but WindowBlinds didn't really take off until after Windows XP shipped.  When Microsoft embraced GUI skinning, it opened the door to far greater opportunities.  It legitimized what we were doing.   Similarly, we had long discovered that users were generally not willing to pay money to run someone else's widget, we had already begun to migrate towards stand-alone widgets (gadgets).  But for us, the challenge was, how do we spread the word about why they'd want to use gadgets? Voila, Microsoft comes in and is going to do much of that evangelizing for us.  People don't care how their little RSS reader is made.   Does anyone care what compiler we use to make TweakVista? No.  Will people care what program is used to create gadgets? No. They will only care about what the gadget does.


Object Desktop in 2000.

This pattern will keep repeating itself as long as we continue to make software that extends and enhances the operating system.  And those that bitch and moan the loudest about being copied from will probably continue to receive unfair credit for "innovation" over us. But in the long term, I think people are more comfortable dealing with companies that look challenges as potential opportunities rather than looking for pity. 

DesktopGadgets.com launched

Published on Tuesday, September 20, 2005 By Brad Wardell In WinCustomize News

DesktopGadgets.com has been launched!  DesktopGadgets.com is a new website dedicated to the sale and distribution of mini-applets called "Gadgets".  Gadgets are a new category of software designed to provide information, useful lookup, or enhance an application or service on your computer.  Common gadgets include clocks, weather forceasters, sticky notes, system status meters, website data and more.

Gadgets are similar in concept to "widgets" which have received extensive coverage in the form of Apple's Dashboard, Yahoo's Konfabulator, Kapsules, and Stardock's DesktopX.  However, unlike widgets, gadgets do not require any additional downloads to make them work.  A user who downloads a gadget can run that gadget immediately whereas with widgets, user have to make sure they already have DesktopX or Konfabulator or whatever corresponding widget enabler already installed.  As a result, different programs can create gadgets and they will all work together.

This month at the Professional Developer's Conference (PDC), Microsoft announced it would be supporting gadgets as a native part of Windows Vista.  DesktopGadgets.com will support any kind of gadget regardless of what program was used to create them.  The most popular way to create gadgets presently is with DesktopX Pro.  However, at PDC, Microsoft introduced a new development suite called Expression. When combined with Visual Studio 2005, developers will be able to create gadgets in that way as well.

DesktopGadgets.com will be intensely moderated to ensure only premium-level content is available regardless of whether the gadget is free or to be sold.  Net revenue collected from the sale of gadgets is split evenly between the website and the gadget maker.

Links:
View: DesktopGadgets.com
View: DesktopX Pro Home Page

Developing software in a Windows Vista world

Published on Sunday, September 18, 2005 By Brad Wardell In PDC 2005

Windows Vista is going to provide an immense amount of opportunity for developers. It's going to be a real shakeup for existing developers too.  The reason I say that is that Windows Vista might as well be simply called VistaOS or something because it's a totally different ball game now.

Windows NT 3.1 was released in 1994. Microsoft gave it a new shell and moved the video drivers into Ring 0 and called it Windows NT 4.0 in 1996.  In 2000, Microsoft further refined it, made it more user friendly and called it Windows 2000.  A year later, they skinned it, changed the icons and called it Windows XP.

Building for the future..

Over the past 4 years, Microsoft has looked at where technology is going.  They needed to start replacing basic parts of the OS that were just antiquated at this point.  GDI? A 2D drawing system whose roots were based on the IBM VGA graphics specification (16 colors).  They've patched it up a bit with GDI+ but really, it has no concept of 3D, alpha blending, shaders, etc.  The networking in Windows XP is still based on a hodge podge of networking APIs that were built before over-wedgified losers made us learn words like "worms" and "malware" and "phishing".  So Microsoft developed a managed API called .NET and a new communications foundation code-named Indigo.

You put all that together and you have a pretty damn impressive OS.  On top of that, Microsoft is doing their usual bundle mania which tends to get on my nerves but monopolies do what monopolies can.

To support the new technologies, Microsoft is also creating some pretty impressive development tools.  Sparkle looks simply ingenius.  Let designers do their thing with Sparkle and hand over the XAML it creates to the developer using Visual Studio and they can do their logic behind it.  Microsot is really pushing Windows developers to stop making software that looks like..well crap.  Sparkle and the rest of the Expression Suite seems designed to do that.

Developer Opportunities

As a software developer -- a commercial software developer at that. My job is to figure out how best to take advantage of these new technologies.

In my mind, getting the most out of Microsoft's strategy involves leveraging two things:

Number one, it means making products that allow existing Windows XP users to be able to have some of the more obvious benefits of Windows Vista without being on Windows Vista.  There's plenty of reasons to upgrade to Windows Vista when it comes out, but users who elect to stay with Windows XP (and indeed, it'll be quite awhile before Windows Vista is out) should have some cool stuff to use.

To that end, we're working on WindowBlinds 5, WindowFX 2.5, and DesktopX 3 Pro:

These technologies will show up in the next month in the overall suite call Object Desktop.  Specifically, the Aero glass type technology will be available to WindowBlinds 5 users (beta due out this month).  We've got a bunch of skins in development that take advantage of the new glass technology in WB.  WindowFX is going to provide improved shadow support windows, an alternative Alt-Tab mechanism and window previews for minimized programs.  And DesktopX is going to evolve to more closely align itself with Microsoft's gadget mechanisms.  Gadgets created with DesktopX Pro will hence work on Windows 98, ME, 2000, and XP.

Secondly, it means taking advantage of the new technologies in Windows Vista to create new kinds of software.  In our view,  the Windows Presentation Foundation (Avalon) is particularly promising for creating several new programs to put into Object Desktop. And best of all, Microsoft is committed to bringing WPF back to Windows XP so those users won't be left out.   Stardock is already working on a couple of new programs to be made part of Object Desktop that will heavily leverage WPF and WCF (Indigo).

Which leaves us with the marketing question? When will Windows Vista be released?  Our guess: October 2006.

The Cartman Widget example

Published on Sunday, September 18, 2005 By Brad Wardell In DesktopX Tutorials
Our friends at OSX-E have a great widget tutorial for Konfabulator put together by Herd, talented widget author.

It's a very well written tutorial that walks the user through how to create a widget for Konfabulator.  Since its release, Konfabulator has gotten a lot of great publicity on its ability to create widgets. As the product manager of its primary Windows competitor, DesktopX, I can appreciate Konfabulator as both a technology and as a popular phenomenon.  Its existence has forced us to get a lot better at our own marketing and developer support.

DesktopX precedes Konfabulator by years.  But being a Windows-only product, we haven't gotten anywhere near the press that Konfabulator received so often times Mac users believe that user created mini-applets on the desk originated with it. 

DesktopX is object-oriented in nature.  Users make their creations with objects. When they are done, they can export their creations as widgets or as entire desktops.  For that reason DesktopX has a disadvantage -- it seems more complicated than Konfabulator to a new user.  Because it can be used to create a lot more kinds of things and its development aspects are part of the environment, it can come across as more complicated. 

DesktopX 3 Pro adds one further wrinkle, users can export their creations also as gadgets. Gadgets are identical to widgets but require no additional downloads to make them work. They are independent programs. 

What's really cool about Herd's Konfabulator tutorial is not just that it's well written, but it illustrates what's involved in creating even a simple Konfabulator widget. So for the purposes of an apples and apples comparison, I'm going to create nearly the same widget with DesktopX and walk you through how you'd create the Cartman widget with it.

Cartman: The Widget!

Tools Needed:

  • A drawing program (something capable of making PNG images with per pixel translucency).
  • A web browser or Acrboat reader for reading the DesktopX reference manual.
  • Patience!

Prerequisites to understanding this tutorial:

  • Very basic programming experience -- any language will suffice.
  • The ability to learn a fairly straight forward GUI interface.
  • Some math - just enough to figure out how often you want Cartman to blink or smile and such.

DesktopX: No XML it's all GUI or Programming - whichever you prefer

The most significant difference between DesktopX 3 and Konfabulator from a widget creation point of view is that with Konfabulator you define your widget in XML.  With DesktopX 3, you can either use the DesktopX GUI to create objects and object states (which is what I am going to do here because I prefer that) or you can do everything in JavaScript.  There is no XML writing involved in creating a DesktopX widget.

JavaScript in DesktopX

DesktopX supports Windows Scripting Host.  So any scripting language you have installed on your computer you can use. However, since Windows supports JavaScript and vbScript out of the box, it's generally best to use those.

Both vbScript and JavaScript are quite rich in what functionality they provide. For instance, I use the random function (Math.random). That's not part of DesktopX. That's a feature of JavaScript.

Coding in DesktopX

DesktopX includes a built in editor. You don't have to use it but it has an intellisense type feature that allows you to browse the various DesktopX classes.  Example, type Object. (object-dot) and upon hitting the period key a context sensitive list of object methods appear that let you know what's available.  You can always code in your favorite editor and paste it in though. DesktopX will also highlight mistakes you made on the fly.

So let's get started. Our goal is to create a little Eric Cartman (from the popular TV show "South Park") that sits on your desktop and makes faces on occasion. Nothing very fancy but enough to walk you through the basics.  Since the thrust of this tutorial is to contrast how one creates widgets in Konfabulator, I strongly recommend reading Herd's excellent tutorial as he is really the one who put this together and this is a derivative of it.  The goal is to provide an apples to apples comparison.

Step #1: Create the Cartman object.

When you load up DesktopX, it adds itself to your system tray. Right click on it and choose "new object". You will then see this.

 

Step #2: Change the image

So then I press the "Change" button and change its image.

 

Step #3: Create the eye and mouth objects

Repeating what you did to create the first object, create the face and eye objects. Essentially, the Cartman tutorial creates a widget that is Cartman with random changes to his eyes and mouth.

 

Step #4 Add the states

We have images for Cartman blinking, Cartman looking mad, etc.  I could create these states in Javascript but I prefer to add them to the actual object as I find it makes debugging easier to explicitly create states in the GUI.  Very easy to do though. Just press the add button, name your state, and then choose the image.

Do this for the eyes and the mouth.

 

Step #5: Name your objects

So far I've made 3 objects. I'm going to be doing things to two of them (the eyes and the mouth). So I'm going to name my objects so that I can refer to them in script. I name one of them "eyes" and the other "mouth". This is done on the summary tab.

 

Step #6: Write the code

I choose my main Cartman object and click on properties and then press the "new" script.

 

Which brings up the editor. To make sure this is truly apples and apples, I change my language to "javascript" (make sure you remove the VB script code in there before you choose Javascript).

 

The Java-Script I've written is a little bit different than from the tutorial since DesktopX's needs are different.  The first part is the constructor:

//Called when the script is executed
function Object_OnScriptEnter()
{
  DesktopX.Object("Eyes").Width = 75
  DesktopX.Object("Eyes").Height = 41
  DesktopX.Object("Mouth").Width = 46
  DesktopX.Object("Mouth").Height = 21
  Object.SetTimer(12,800);
}

What is happening:

  • In Herd's tutorial, he resizes the images to be 70% of what they originally were. While I could do that, I prefer to know precisely the size I'm dealing with so I resized the eyes and mouth to be a specific size. 

  • I am accessing the other objects through the DesktopX class. I type DesktopX.Object and then the name of the object I want to access and then use its methods to manipulate it.

  • The last thing I do is I create a timer.  Every 800ms I call timer 12 which calls a function called DoFace():

//Called by the timer trigger every 800ms.
function doFace()
{
  i = Math.round(Math.abs(Math.random()*30));
  if(i==4)DesktopX.Object("Eyes").State = "closed";
  if(i==5)DesktopX.Object("Eyes").State = "drowsy";
  if(i==6)DesktopX.Object("Eyes").State = "hng";

  i = Math.round(Math.abs(Math.random()*40));
  DesktopX.Object("Mouth").State = "Default";
  if(i==0)DesktopX.Object("Mouth").State = "grr";
  if(i==1)DesktopX.Object("Mouth").State = "down";
  if(i==2)DesktopX.Object("Mouth").State = "smile";
}

What is happening:

  • I am using the JavaScript math function to generate a random number between 0 and 29. I then do a standard IF THEN statement to change the state of my objects based on the result.

  • I want my eyes to blink or whatever on occasion. Therefore, I played with this number until I found a value that seemed life like (I originally did the 5 second one but I wanted it to be random). 

Step 7: Group them together

So at this point my objects would be separated and doing their thing which looks strange. So I drag and drop them together to create my Cartman. Then I drag select them all, choose group and give them a name.

 

Step 8: Export them as a widget..

Select Export

 

Since I'm using DesktopX Pro I can export it as a stand-alone program.

 

 

And Finally..

 

There's my stand alone Cartman. 

 

Conclusions

I didn't bother to create a properties dialog for the gadget to change settings but that would have been a couple more lines (I can do that if anyone is interested).  The goal is to let people see how widget/gadget creation in DesktopX compares to doing the same in Konfabulator.  Mind you, I could have done the whole thing in VB Script or JavaScript without ever using the GUI, I just find it a little easier to deal with graphics in the GUI and have the code handle logic.  

For the aspiring software developer, the ability to use DesktopX 3 to rapidly develop a mini-application entirely in JavaScript or vbScript has some significant advantages we feel.  And for artists who are not as familiar with coding, having a fairly straight forward GUI available to create and put together objects makes creating mini-applications more approachable.

You can learn more about DesktopX 3.0 at http://www.desktopx.net.  The standard version of DesktopX 3.0 is $24.95 and allows you to export widgets that can be run by anyone who has DesktopX installed.  For $69.95 you can purchase DesktopX 3.0 Pro which allows you to export your creations as stand-alone programs.

For Windows Vista developers, DesktopX Pro becomes particularly interesting as Windows Vista will have native support for gadgets and Microsoft has embraced the gadget concept.

Files

Cartman.zip (521K) - yes, it's a stand alone program, no other files needed.

 

Special Thanks

A big thanks to Herd who created the Konfabulator tutorial that this tutorial is based on. My technical writing skills pale in comparison as is obvious but hopefully I have been able to do justice to his fine tutorial concept.

PowerUser.TV: Episode 6

Published on Saturday, September 17, 2005 By Brad Wardell In Entertainment
Episode 6 of our podcast, PowerUser.tv is up! Check it out for lots of commentary on the latest tech news by me, Kristin Hatcher, Tom Chick (Quarter to Three), and WishX from Neowin.net