Discorax's House of w00t

A collection of technology lessons learned though doing. Sharing of code samples, tips and tricks for web design and development. Written by an interactive designer/developer for other designer/developers.

5.06.2009

Windows 7 Release Candidate - First Impressions


I wasn't an early adopter of Vista. I took my time adopting. I wanted to give other people an opportunity to work thought the pains of bleeding edge software. Vista was full of obstacles for a great user experience. Now, granted I am a very specific type of Windows user. I have built a custom PC setup with hardware assembled over time, and Vista's driver problems were the bane of my existence once I finally broke down and upgraded.

I've heard a rumor that Windows 7 isn't going to have those same driver issues, but that remains to be seen. The installation experience was very good. 15 minutes for complete install. That's a HUGE improvement over Vista. Still the problem though, that if you reinstall your OS, you have to reinstall all your programs as well, which is what really eats into the day.
I really wanted to share was a few funny experiences with Windows 7 RC when I first started playing. It's all about the User Experience after all, right Microsoft? :)
First, everyone knows all about the Vista Permission user experience. Do you want to do exactly what you just told me you wanted to do? Approve or Deny? Mac vs PC commercials played this up a ton because it was just a bad user experience. In Windows 7 there is a new link. Change Notification Settings (ohh, this has some promise). I clicked on it and set my notification to "Never Notify Me!" Then I clicked OK. Guess what happened? That's right, APPROVE? I couldn't stop laughing both because it was too funny, and because it was so sad.
The second experience I'm still exploring a little. I tried to install Firefox. Things seemed to work as expected. No notification to confirm that I actually wanted to install it. That's a start. Then when I went to access the program I got a bizarre error message. Account: Administrator doesn't have permission to access this program. Really?! Well then who does have permission to access this program? Not a good user experience.
However, I do have to say the new "taskbar" (I think that's what they are calling it) is a big improvement. The Pin files for common tasks is pretty nice as well. It's basically creating a bunch of little shortcuts to things you do all the time, and I can see that saving lots of time once people get used to it.

The best feature of Windows 7 is the new Snipping Tool. It's a quick and easy screen snapshot utility. Finally, you can select an area of your desktop, and save it out quickly as a jpeg. We've been screaming for this for years and currently there isn't an equivalent for it on Macs (yet).

So far so good. I'm excited to see what other useful features are built into Windows 7, hopefully my hardware will be supported.

Labels:

Back to Blogger

I gave it a go. I was really excited about all the features and control that Wordpress had to offer. I created my blog, I stared to migrate posts from Blogger, I even started a new design. The kicker for me was spam. Wordpress just got so much spam comments that I just didn't see the value in it. Blogger seems to do a great job of keeping all that spam off of my blog, while allowing people to comment when they want to.


Unfortunately I'll have to live without a few really awesome plugins that I was using on Wordpress. The Wordpress Mobile plugin was extremely well done and did a great job of presenting my blog on a mobile device. I would LOVE to see this feature make it into the Blogger world. To be honest, it may already exist, so I'm hopeful.


I'm also going to miss the flawless code syntax highlighting in Wordpress. The bloggger version is a little clunky and doesn't work 100% of the time. It just takes more work to get things going.


Overall, I'm very happy with my Blogger blog and I plan to invest more time to keeping content up to date and providing new and relevant code snippets for my readers to use.

Labels:

3.16.2009

MIX09 Show Off Entry

MIX09 Show Off Competition

Here at PBJS my co-worker Craig Miller and myself have worked on a few very cool Microsoft related projects in the past year. We decided we should make a little video to highlight those cool projects and the technology used to create them.

This year at MIX09 they are continuing the "Show Off" Competition. Make a 3-minute video showcasing your use of Microsoft Technology and enter it for a chance to win $500 and the respect and admiration of your peers.

Here is the result. Check it out.





Download the Source Code for the Silverlight Media Banner (Project #1)


Both of the Microsoft Company Store installations can be seen inside the Company Store on Redmond Campus, Building 92.

Labels:

3.11.2009

Twitter Mosaic Design...

Want to follow me on Twitter?



Be a part of something special. Like this sweet Twitter Mosaic Design!

Labels: ,

2.20.2009

Rogan's Wordle


Rogan's Wordle, originally uploaded by discorax.

If you haven't heard of Wordle, you should really check it out. Beautiful information design.

This is the result of the rss feed from the baby blog I created for my son Rogan.

I particularly love this result as you can see the shape of a tree with Rogan as the root and truck and all the little pieces of his life coming together to create a colorful and beautiful symbol of life.

Labels:

1.31.2009

Saftey Glasses


Saftey Glasses, originally uploaded by discorax.

Testing Out Flickr Blogging...

I'm trying to see if you can blog multiple images in a single blog post from Flickr. So far, no luck. If I do figure it out I'll be sure to post.



It looks like I'm going to have to build my own solution to blog multiple pictures. It would be very nice if you could blog an entire set. Each picture in that set blogged in one post. Maybe I'll put that up to Flickr. They're always adding new features.

Labels: ,

1.30.2009

The Color NodeTree

Here is my last minute entry into the MIX09 10K Contest.





It's a standard spring loaded Node Tree, but the cool part is that each node has a random color value. As the nodes get close to each other they give off their color. You can click on any of the nodes to change the color or turn Popping on to have the computer do it for you.

We'll see what the community thinks!

This is my first Silverlight 2.0 project, but I have done a lot of work with WPF. And I have to say that the upgrades from Silverlight 1.0 to Silverlight 2.0 are night and day. I can imagine creating this exact same effect in Silverlight 1 would have taken much more than 10k and would have run slower, and not looked nearly as cool.

Considering the announcement of Silverlight 3.0 at MIX09 this year. I'm pretty excited to see what they are going to add. I'm praying for Text Anti-Aliasing and Video with Alpha Channel. If I get those two, Silverlight 3.0 will really give Flash a run for my development time.

See you at MIX!

Labels: ,

12.01.2008

Building Custom Events in C#

The more I learn Object Oriented Programing techniques the more I value the ability to have my classes listen to each other. I've been working in C# a lot recently for a WPF project. At various points throughout the development process I've found a need to have different events cause effects among objects and classes. .NET has a great list of events built into many of their classes especially the UIElements and Controls. What I want to do is put together some code snippets on how to build a custom event for your object and hopefully to help some new C# programmers better understand how events work and how powerful they can be.



What in the world does that do you ask...well lets break it down.

The first part of this example is based on a WPF Application template from Visual Studio 2008. It includes all the using statements, the namespace deceleration and the Window1 class. The reason I included all this is so that you can download the Project file and poke around.

Inside the Window1 constructor we're going to create an instance of our EventBroadcasterClass so that we can use it to send out our custom event.



The EventBroadcasterClass has a public event myEvent and a Method to broadcast it, MyEventMethod. The constructor method then creates a new CustomEventHandler Object myEventHandler and adds it's Handle method as a listener to the EventBroadcasterClass myEvent event.

You can pass a variety of data through events (although it's not always the best approach). In this case we set up a new CustomEventArgs object and added some text to it. "Text from EventBroadcasterClass" will be used by our CustomEventHandler later on. Here is the whole EventBroadcasterClass.



The CustomEventHandler is very simple. It has a string property and a Handle method. As you can see the Handle method takes two arguments. object sender is where the event was broadcast from, in this case it's the EventBroadcasterClass, and a CustomEventArgs object. This is where the string value we set in our broadcaster is held. To access it we just have to set our string property to the CustomEventArgs public property MyString. Then all we do is write it out to the Console for demonstration purposes. Here is the CustomEventHandler Class



The final piece of this puzzle is the CustomEventArgs. This Class just hold the arguments we pass between events and listeners. You can fill this object will anything, although it can really hurt performance if you pass too much data in event args. The constructor method sets a private property and the public MyString property which has a get to return the value set when the CustomEventArgs object is created. Directly below we see a public delegate CustomEvent. This delegate is used to relay your event to any object that is listening.




It took me some time to put all these pieces together, but now that I have I can build Classes that are always aware of what others are doing, which can have some very cool effects. I hope this little summary will help others get up to speed quickly building Custom Events in C#.

Download the Source Code

Labels: ,