* 'Display' icon and header image taken from Crystal icon set as provided by Everaldo.com under a GNU General Public License.
This was my first week at a new gig as a full time Silverlight developer. I'm still getting into the flow of a totally new job, but this first week has been great. I am working with Corey Schuman over at IQ Interactive on a really neat project which I hope to brag about once it's public. Working with people in the design community and another Silverlight developer is going to exponentially help build up my Silverlight abilities.
I can't suggest enough that people who want to get into the Silverlight space get involved with your local communities - or start local groups if you don't have one in your area. Corey took the initiative to startup the Atlanta Silverlight Meetup Group just a few months ago, and there are already over a dozen people showing up for the meetups, and that is now leading towards an upcoming Atlanta Silverlight firestarter. This has served to encourage me to get out there and get more involved in the community as well - hopefully there will be more on that going forward.
I've heard several people tell me how Twitter is a waste of time, or is stupid, or things like that - but if your a developer and aren't on Twitter then you are really missing out in my opinion. In a very real way using Twitter is what helped me land this job - getting my name out there and having some back-and-forth with peers in relative fields.
A quick search on Linkedin shows that there are hundreds of thousands of folks out there labeled as a Software Engineer, tens of thousands labeled as a .Net Developer, but a search for Silverlight Developer turns up just a handful of people, and I am very happy to be on that list - I can't wait to see where it leads.
Today is my last day at my current job - it is the end of another chapter of my career. I don't want to overstate the significance of this job, but I must admit that this job opened my eyes to a lot of new things, and provided me tremendous amounts of opportunities to progress in my career. While I am incredibly eager to start my next opportunity - which I will post more about later - I will definitely miss many of my coworkers here, and I wanted to express my deep gratitude for their support and the opportunities afforded to me the last two years.
My soon-to-be-former employer is a gold certified Microsoft partner, and as such I had the privilege of using a ton of great Microsoft technologies, attending numerous training sessions put together by Microsoft, and in some cases working side by side with Microsoft reps on mission critical projects. Another great perk of this shop was their affinity for giving developers the time and resources to visit some of Microsoft's annual conferences - I myself got the chance to go to PDC 2008 on the company's dime - something which was a great opportunity for me. This shop is also quick to pick up on new Microsoft technologies, and that is what afforded me the opportunities to work in .Net 3.5, WPF, etc. - the breadth of technology used here (and used well) is something to be seen.
From a developers standpoint, this job was my first introduction to a real development shop. By that I mean a company with not just 5-10 developers, but several teams of developers, all of whom are proficient in a wide variety of technologies. Project management and code maintenance were crucial here, and as such I got to use a lot of things which many other developers may be familliar with, but perhaps don't rely on heavily. This included unit tests, acceptance tests, continuous builds, virtualization, sprint planning, sprint reviews, backlog planning and breakdowns, and several other processes that made all our teams and players work together and get things done. It was quite impressive to see how such a large development team is orchestrated to commit to the same projects without everything falling apart and ensuring code quality.
I can't say enough about this great development shop, and I wish everyone here and the company itself the best of luck going forward - I am sure we will stay in touch through the local code camps and user groups.
For those that don't know, I have been a Winforms dev since about 2001. Before that time I was just as interested in graphics and usability as I was in coding itself. While in college I was pursuing a computer science degree in class, but my free time wasn't spent coding in Java or reading books on operating systems, it was spent in Photoshop and Flash 4. In fact, I was doing more advanced stuff in Flash Actionscript at the time than I was doing in my college CS courses. I had hoped that when it came time to graduate from college I would be able to get aboard the Flash bandwagon - creating super cool UI's for the web - unfortunately the dot com bubble burst, and my coding abilities were what kept me gainfully employed.
Up until creating an entry for the Server Quest Silverlight contest I had never touched Silverlight. I was definitely aware of it, but I was a Winforms guy, not a web guy - so I was elbows deep learning WPF and Prism and doing WPF LOB work for my current employer - I had no plans of touching Silverlight. Now that I've finished my first major Silverlight app, Matchingo, I find myself questioning which direction I want to go next - do I go back to WPF, or do I keep on trucking in Silverlight?
(click 'Read More' below to keep reading)
For those who aren't aware, a great resource for Silverlight designers launched a few weeks ago named Silverzine. It already has several tutorials worth checking out, all centered on not just Silverlight, but coming at Silverlight from the designer perspective - meaning primarily Expression Blend centric.
At some point after this site is redesigned this article will end up posted here as well, but with Silverzine around for such tutorials, I don't see much need for cross-posting it.
Keep an eye on Silverzine, and check out my recent tutorial posted there:
Create Circular Rotating Text in Expression Blend
The initial code drop of Matchingo is now available on CodePlex at matchingo.codeplex.com. This release contains the same functionality set as is currently featured in the Server Quest Contest, but the code itself has undergone major refactoring since that initial release.
The Matchingo codebase makes use of various technologies including:
It is my hope to hear back from others in the community that have interest in contributing to this open source project as well as to hear constructive discussions regarding how Matchingo can be improved going forward. Please help me spread the word about Matchingo, and please consider voting for Matchingo in the ongoing Server Quest contest and on SilverArcade.com.
I'm very proud to say that Matchingo is one of the 16 finalists in Microsoft's Server Quest Contest. You can go there now to vote on your favorite entries - the voting ends May 14th.
Also, Matchingo can now be found on SilverArcade.com - a gaming community site for gamers and Silverlight developers. If your going to be playing Matchingo, play it there so it can get up on the top played list - after you've voted on ServerQuestContest.com of course ;)
I also just put up a new build of Matchingo up on matchingo.com. There's not much to see, its really just a build after a weekend of cleaning up the code. It does have some changes to the particle effects, so if you were having framerate issues give it a whirl. Please let me know if you notice any major issues with it.
I'm hoping to get the source code posted by the end of the week - whether I get everything done I want done by then or not - so please check back later for that.
I am very pleased to announce the launch of Matchingo.com. Matchingo.com is the main hosting page for my new game Matchingo - a Silverlight implementation of a matching game.
Matchingo includes several features including the ability to replay every game you play, track all your high scores, choose from various card and background image sets, and more. Matchingo was developed using C#, Silverlight, and the Composite Guidance for WPF and Silverlight (aka Prism).
Matchingo will be competing in the upcoming Server Quest Silverlight game contest, and will be posted as open source in the coming weeks on CodePlex.
But enough of all that, go check it out!
Matchingo.com

For those who are concerned, I have not fallen off the map - in fact I've been busting butt the last 2-3 months on a project which I will be announcing sometime next week. This project is relative to the Silverlight game contest that Microsoft is hosting, and is a derivative of a previous game project I had started in WPF.
See you next week!
Searching for information on new(er) technology can be pretty interesting. Sometimes you can find all the information you need, and other times you can't find anything. For whatever reason finding information on the StatusBar in WPF was one of those things where the articles written on the subject were slim pickings. Luckily it is really easy to reinvent the wheel in XAML if necessary once you know the basics.
It is pretty easy to create a StatusBar, it's just as you might imagine it would be in XAML:
<StatusBar> <TextBlock>Field 1</TextBlock> <Separator/> <TextBlock>Field 2</TextBlock> </StatusBar>
The problem is that typically you need something a little more advanced in your StatusBar. You'll probably want regions which can expand/contract, a tooltip to read the truncated text, some columns which are fixed width, and you probably don't want your items to go off the edge of the screen if the window is too small or the text too large either. Keep in mind that the StatusBar container behaves like a DockPanel when your trying to make use of it.
Attached is a XAML file of the StatusBar example shown above. The basic premise is that the StatusBar contains a Grid which defines the areas on the StatusBar, and some of the fields are allowed to be as large as they need while others will be truncated if they are too long to fit.
You can make any TextBlock show the Ellipses(...) by using the TextTrimming and TextWrapping properties, or in a Style definition like this:
<Style TargetType="TextBlock" x:Key="StatusBarTextBlock"> <Setter Property="TextWrapping" Value="NoWrap" /> <Setter Property="TextTrimming" Value="CharacterEllipsis" /> </Style>
.. just keep in mind that a TextBlock inside a StackPanel, or some other container allowed to grow horizontally indefinitely, will never show the ellipses because it will never actually be forcefully constrained - even if it is cut off and the full text isn't visible.
We also want to add the drag handle in the lower right corner of the Window, which can be done with the ResizeMode Window property like so:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ResizeMode="CanResizeWithGrip">
Be sure to check out the XAML file attached and provide any suggestions you might have, or ask any questions, etc. Hopefully the keywords in this post will be good enough to help someone else down the line when trying to create a decent WPF StatusBar.
Every once in a while I'll get an idea for something I wish I had time to create. Today I did some searches for a resource monitor for my home server. I didn't want anything fancy, just something which showed resource usage at a glance and looks good. I didn't find much. It seems most performance monitors are commercial packages aside from Perfmon which ships with Windows.
In any event, I wanted to quickly mockup what I was thinking in XAML. I put it together in under an hour by hand in kaxaml. It has a lot of duplication since it was just a quick hackup, but it served its purpose. I'm posting the XAML just as much for me to refer to as for anyone who might gain anything from it.
In the mean time I did manage to hackup a 2 progress bar resource display to run on my server for now, it was really easy using System.Diagnostics.PerformanceCounter. I mostly just wanted to show I was still kicking ;)