OK, so I'm a little late to the game...
Tuesday, October 30, 2007
...but Transformers was awesome. Sure, some of may say that you didn't like the plot, and others may say that John Turturro hasn't done a good film since Mr. Deeds. But I say, as a child of the 80's, that this movie was awesome.
I was a long-time fan of the Transformers cartoon series as a kid (not to mention G.I. Joe, He-Man, Teenage Mutant Ninja Turtles, Thundercats, etc.) But that's not the point of this post. I could spend the next few days naming all of my favorite shows from my childhood (Animaniacs, for example). OK, enough.
I'm writing about Transformers because, well, I just saw it for the first time last night. I know, I know...what self-respecting technology geek waits nearly 4 months to see a movie that is guaranteed to bring back childhood nostalgia and fun? Me. That's who. I very rarely get to the movies anymore, mostly due to being a parent, but I'm also generally too busy with work and life to get out to the theater for a few hours. I've relegated myself to the Netflix posse. I've accepted that I will see movies when they make it to DVD (or HD-DVD if available, thank you XBOX 360).
The problem with seeing 95% of your movie choices at home, however, is that when you see a really good one, like Transformers, you can't go running to your movie-going friends the next day to talk about it. They had their conversations about it on July 5. You've got nothing for them but old news. So, I'm forced to wallow by myself in the excitement I had for this film.
They got the original Optimus Prime voice!
They used the original "transformation" noises!
Seeing them transform, fight, do just about anything in "live-action" was just awesome.
Does anyone else struggle with DVD excitement? Anybody want to talk about it with me?

I was a long-time fan of the Transformers cartoon series as a kid (not to mention G.I. Joe, He-Man, Teenage Mutant Ninja Turtles, Thundercats, etc.) But that's not the point of this post. I could spend the next few days naming all of my favorite shows from my childhood (Animaniacs, for example). OK, enough.
I'm writing about Transformers because, well, I just saw it for the first time last night. I know, I know...what self-respecting technology geek waits nearly 4 months to see a movie that is guaranteed to bring back childhood nostalgia and fun? Me. That's who. I very rarely get to the movies anymore, mostly due to being a parent, but I'm also generally too busy with work and life to get out to the theater for a few hours. I've relegated myself to the Netflix posse. I've accepted that I will see movies when they make it to DVD (or HD-DVD if available, thank you XBOX 360).
The problem with seeing 95% of your movie choices at home, however, is that when you see a really good one, like Transformers, you can't go running to your movie-going friends the next day to talk about it. They had their conversations about it on July 5. You've got nothing for them but old news. So, I'm forced to wallow by myself in the excitement I had for this film.
They got the original Optimus Prime voice!
They used the original "transformation" noises!
Seeing them transform, fight, do just about anything in "live-action" was just awesome.
Does anyone else struggle with DVD excitement? Anybody want to talk about it with me?
Labels: netflix, Transformers
Codemash Speakers: Part 2
Monday, October 29, 2007
Here's the second release of speakers for the CodeMash conference coming up on January 9-11, 2008. The bar continues to get higher...
============
Leah Culver: "Getting Started with Django"
============
Leah Culver founded Pownce with her friends Kevin Rose and Daniel Burka as a way of sending messages, links, files and events to each other. Leah is the lead developer for the site, which has become one of the largest sites using the Django framework Leah loves the challenge of developing a web application from scratch and writes about her experiences as a software developer at leahculver.com.
============
Kevin Dangoor: "Overview of the Dojo JavaScript Toolkit"
============
Kevin Dangoor is the product manager at SitePen and the founder of the TurboGears open source web application framework. He has held positions in software development, management and sales engineering. He has previously spoken at CodeMash, PyCon, EuroPython and GLSEC and is the co-author of the book "Rapid Web Applications with TurboGears".
============
Catherine Devlin: "Crash, Smash, Kaboom Course in Python"
============
After a wasted youth studying chemical engineering, Catherine Devlin accidentally became a database administrator in 1999 and began tying web applications to her databases almost immediately. She works for IntelliTech Systems at Wright-Patterson Air Force Base, programming and maintaining small-scale, database-centered web applications.
============
Keith Elder: "Introduction to WFF" and "Building Custom Workflow Activities"
============
Keith Elder is a Team Leader / Sr. Software Engineer for Quicken Loans, the nation's largest online mortgage lender based in Livonia, MI. At Quicken Loans he is the team leader, lead developer and architect for a custom built in-house Smart Client CRM (client relationship management) application. As a Microsoft MVP he speaks throughout the South and Midwestern parts of the United States at various Code Camps, .Net User Groups, technical conferences and schools.
============
Joe O'Brien: "Ruby - Testing Mandatory"
============
Before helping found EdgeCase, LLC, Joe O'Brien was a developer with
ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.
============
Jay Pipes: "Performance Coding Techniques for MySQL"
============
Jay Pipes is the North American Community Relations Manager at MySQL. Author of Pro MySQL, Jay has also written articles for Linux Magazine and regularly assists software developers in identifying how to make the most effective use of MySQL. He has given sessions on performance tuning at the MySQL Users Conference, RedHat Summit, NY PHP Conference, OSCON and Ohio LinuxFest, among others. In his abundant free time, when not being pestered by his two needy cats and two noisy dogs, he daydreams in PHP code and ponders the ramifications of __clone().
============
Brian Sam-Bodden: "Rails: A Peek Under the Covers" and "Bitter Java? Sweeten with JRuby!"
============
Brian Sam-Bodden is the author of two Java titles; a frequent speaker at
national and international conferences, a professional trainer and a
full-time member of the NoFluffJustStuff symposiums. Brian is passionate
about clean, concise and understandable software and enjoys hacking away with Java and Ruby.
============
Chris Judd: "Agile Development with Groovy and Grails"
============
Christopher Judd is the president and primary consultant for Judd Solutions, LLC. (www.juddsolutions.com), international speaker, open source evangelist, Central Ohio Java Users Group (www.cojug.org) coordinator and co-author of "Enterprise Java Development on a Budget" and "Pro Eclipse JST". He has spent ten years developing software in the insurance, retail, government, manufacturing, service, and transportation industries. His current focus is consulting, mentoring and training with Java, J2EE, J2ME, web services and related technologies.
============
James Ward: "RIAs - Beyond the Buzz"
============
James Ward is a Technical Evangelist for Flex at Adobe and Adobe's JCP
representative to JSR 286, 299, and 301. Much like his love for climbing mountains he enjoys programming because it provides endless new discoveries, elegant workarounds, summits and valleys. His adventures in climbing have taken him many places. Likewise, technology has brought him many adventures, including: Pascal and Assembly back in the early 90's; Perl, HTML, and JavaScript in the mid 90's; then Java and many of its frameworks beginning in the late 90's. Today he primarily uses Flex to build beautiful front-ends for Java based back-ends. Prior to Adobe, James built a rich marketing and customer service portal for Pillar Data Systems.
============
Leah Culver: "Getting Started with Django"
============
Leah Culver founded Pownce with her friends Kevin Rose and Daniel Burka as a way of sending messages, links, files and events to each other. Leah is the lead developer for the site, which has become one of the largest sites using the Django framework Leah loves the challenge of developing a web application from scratch and writes about her experiences as a software developer at leahculver.com.
============
Kevin Dangoor: "Overview of the Dojo JavaScript Toolkit"
============
Kevin Dangoor is the product manager at SitePen and the founder of the TurboGears open source web application framework. He has held positions in software development, management and sales engineering. He has previously spoken at CodeMash, PyCon, EuroPython and GLSEC and is the co-author of the book "Rapid Web Applications with TurboGears".
============
Catherine Devlin: "Crash, Smash, Kaboom Course in Python"
============
After a wasted youth studying chemical engineering, Catherine Devlin accidentally became a database administrator in 1999 and began tying web applications to her databases almost immediately. She works for IntelliTech Systems at Wright-Patterson Air Force Base, programming and maintaining small-scale, database-centered web applications.
============
Keith Elder: "Introduction to WFF" and "Building Custom Workflow Activities"
============
Keith Elder is a Team Leader / Sr. Software Engineer for Quicken Loans, the nation's largest online mortgage lender based in Livonia, MI. At Quicken Loans he is the team leader, lead developer and architect for a custom built in-house Smart Client CRM (client relationship management) application. As a Microsoft MVP he speaks throughout the South and Midwestern parts of the United States at various Code Camps, .Net User Groups, technical conferences and schools.
============
Joe O'Brien: "Ruby - Testing Mandatory"
============
Before helping found EdgeCase, LLC, Joe O'Brien was a developer with
ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.
============
Jay Pipes: "Performance Coding Techniques for MySQL"
============
Jay Pipes is the North American Community Relations Manager at MySQL. Author of Pro MySQL, Jay has also written articles for Linux Magazine and regularly assists software developers in identifying how to make the most effective use of MySQL. He has given sessions on performance tuning at the MySQL Users Conference, RedHat Summit, NY PHP Conference, OSCON and Ohio LinuxFest, among others. In his abundant free time, when not being pestered by his two needy cats and two noisy dogs, he daydreams in PHP code and ponders the ramifications of __clone().
============
Brian Sam-Bodden: "Rails: A Peek Under the Covers" and "Bitter Java? Sweeten with JRuby!"
============
Brian Sam-Bodden is the author of two Java titles; a frequent speaker at
national and international conferences, a professional trainer and a
full-time member of the NoFluffJustStuff symposiums. Brian is passionate
about clean, concise and understandable software and enjoys hacking away with Java and Ruby.
============
Chris Judd: "Agile Development with Groovy and Grails"
============
Christopher Judd is the president and primary consultant for Judd Solutions, LLC. (www.juddsolutions.com), international speaker, open source evangelist, Central Ohio Java Users Group (www.cojug.org) coordinator and co-author of "Enterprise Java Development on a Budget" and "Pro Eclipse JST". He has spent ten years developing software in the insurance, retail, government, manufacturing, service, and transportation industries. His current focus is consulting, mentoring and training with Java, J2EE, J2ME, web services and related technologies.
============
James Ward: "RIAs - Beyond the Buzz"
============
James Ward is a Technical Evangelist for Flex at Adobe and Adobe's JCP
representative to JSR 286, 299, and 301. Much like his love for climbing mountains he enjoys programming because it provides endless new discoveries, elegant workarounds, summits and valleys. His adventures in climbing have taken him many places. Likewise, technology has brought him many adventures, including: Pascal and Assembly back in the early 90's; Perl, HTML, and JavaScript in the mid 90's; then Java and many of its frameworks beginning in the late 90's. Today he primarily uses Flex to build beautiful front-ends for Java based back-ends. Prior to Adobe, James built a rich marketing and customer service portal for Pillar Data Systems.
Labels: codemash
Codemash Speakers: Part 1
So the speaker list is being announced for CodeMash in phases. This post features the first round of selections. Based on the quality of this round of speakers alone, I'd say we're in for an amazing conference.
Bruce Eckel: "Why I Love Python"
Bruce Eckel has given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences. He provides public and private seminars & design consulting in OO Design, Python, Java and C++.
Neal Ford: "Engineering and Polyglot Programming" and "DSLs in Static & Dynamic Languages"
Neal Ford is an senior application architect at ThoughtWorks, a global IT consultancy. His primary consulting focus is the building of large-scale enterprise applications. He is also an internationally acclaimed speaker, having spoken at numerous developers conferences worldwide.
Jesse Liberty: "Coding in Silverlight"
Jesse Liberty is a Senior Program Manager for Microsoft's Silverlight
Development Team. He is a former Distinguished Software Engineer at AT&T and
Vice President for technology development at CitiBank, and was an
independent consultant for 12 years.
Dick Wall: "Testing with Guice"
Dick Wall is a software engineer at Google, based in Mountain View. He also
co-hosts the Java Posse podcast-a regular Java-centric news and interviews
show that can be found at http://javaposse.com.
Jim Weirich: "Advanced Ruby Class Design"
Jim Weirich has over twenty-five years of experience in software
development, and is employed with EdgeCase. He has worked with real-time
data systems for testing jet engines, networking software for information
systems, and image processing software for the financial industry. Weirich
is active in the Ruby community and has contributed to several Ruby
projects, including the Rake build system and the RubyGems package software.
Bruce Eckel: "Why I Love Python"
Bruce Eckel has given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences. He provides public and private seminars & design consulting in OO Design, Python, Java and C++.
Neal Ford: "Engineering and Polyglot Programming" and "DSLs in Static & Dynamic Languages"
Neal Ford is an senior application architect at ThoughtWorks, a global IT consultancy. His primary consulting focus is the building of large-scale enterprise applications. He is also an internationally acclaimed speaker, having spoken at numerous developers conferences worldwide.
Jesse Liberty: "Coding in Silverlight"
Jesse Liberty is a Senior Program Manager for Microsoft's Silverlight
Development Team. He is a former Distinguished Software Engineer at AT&T and
Vice President for technology development at CitiBank, and was an
independent consultant for 12 years.
Dick Wall: "Testing with Guice"
Dick Wall is a software engineer at Google, based in Mountain View. He also
co-hosts the Java Posse podcast-a regular Java-centric news and interviews
show that can be found at http://javaposse.com.
Jim Weirich: "Advanced Ruby Class Design"
Jim Weirich has over twenty-five years of experience in software
development, and is employed with EdgeCase. He has worked with real-time
data systems for testing jet engines, networking software for information
systems, and image processing software for the financial industry. Weirich
is active in the Ruby community and has contributed to several Ruby
projects, including the Rake build system and the RubyGems package software.
Labels: codemash
Central Ohio .NET Developer's Group Recap
Friday, October 26, 2007
I had an opportunity to speak at the October CONDG meeting last night, and had a great crowd. It was a great talk on Silverlight and some of the other cool things that Microsoft is up to, including Popfly, Surface, and Photosynth.
We also cleaned out the "swag closet," giving away a total of 16 items. This included some rubberized, roll-up keyboards (for typing in the bathtub), some 32MB flash drives, some 128MB flash drives, a few books, and a copy of Vista (congrats to Aaron Ponzani!).
Included in this post are links to the slide decks and demos that I used during the presentation.
Thanks to everyone that attended!
Silverlight 301 Deck & Demos
Innovative Microsoft Stuff Slide Deck
We also cleaned out the "swag closet," giving away a total of 16 items. This included some rubberized, roll-up keyboards (for typing in the bathtub), some 32MB flash drives, some 128MB flash drives, a few books, and a copy of Vista (congrats to Aaron Ponzani!).
Included in this post are links to the slide decks and demos that I used during the presentation.
Thanks to everyone that attended!
Silverlight 301 Deck & Demos
Innovative Microsoft Stuff Slide Deck
Labels: CONDG, microsoft, photosynth, popfly, Silverlight, surface
Dial America and Their Horrible CRM
Wednesday, October 24, 2007
So, I got a bizzare phone call today.
It started as innocently as any other telemarketing call. I checked the CallerID (thank you Vonage), and the caller was Conde Naste Publications. I figured it was worth picking up, in case they were calling about a magazine subscription of mine or something. Little did I know they would give me the hardest laugh of my day.
The girl on the phone had a pleasant voice, but really sounded very disinterested in her job. She was clearly reading her script, and here's how the conversation began:
"Hello, Mr. Blankenburg? This is Jenny from Dial America. I'm calling in regard to your subscription to Cookie Magazine." (My wife is the subscriber, but I know you're gonna make fun of me anyways.)
Ok, so her software told her which magazine I have been subscribed to, and that we have let the subscription run out. She also knows my name, gender, and presumably my address, etc.
Now, I've always thought that it would be a great idea to know things about the person you're talking to when in this role. For example, if you're calling someone, and you know their address, why not comment on the weather in their area? Surely you could rig up some web service calls to weather.com and away you go. "My goodness, it certainly has been hot in Phoenix lately, right Mr. Jones?" It gets the callee talking, which is the best way to make a sale. Get someone to talk about themselves. People just love it.
Anyways, so here was Jenny's personalized pitch to me (keeping in mind this was most certainly scripted):
"Mr. Blankenburg, I'm calling from cold, rainy Columbus, OH. How's the weather in Westerville?"
(I did some research. They have a calling center in Columbus.)
At this point, I couldn't help but laugh. "Um, it's cold and rainy? I'm 3 minutes from Columbus."
"Oh, yeah. I guess you're right. Sorry about that." *Click*
She hung up on me! That's funny stuff.
It started as innocently as any other telemarketing call. I checked the CallerID (thank you Vonage), and the caller was Conde Naste Publications. I figured it was worth picking up, in case they were calling about a magazine subscription of mine or something. Little did I know they would give me the hardest laugh of my day.
The girl on the phone had a pleasant voice, but really sounded very disinterested in her job. She was clearly reading her script, and here's how the conversation began:
"Hello, Mr. Blankenburg? This is Jenny from Dial America. I'm calling in regard to your subscription to Cookie Magazine." (My wife is the subscriber, but I know you're gonna make fun of me anyways.)
Ok, so her software told her which magazine I have been subscribed to, and that we have let the subscription run out. She also knows my name, gender, and presumably my address, etc.
Now, I've always thought that it would be a great idea to know things about the person you're talking to when in this role. For example, if you're calling someone, and you know their address, why not comment on the weather in their area? Surely you could rig up some web service calls to weather.com and away you go. "My goodness, it certainly has been hot in Phoenix lately, right Mr. Jones?" It gets the callee talking, which is the best way to make a sale. Get someone to talk about themselves. People just love it.
Anyways, so here was Jenny's personalized pitch to me (keeping in mind this was most certainly scripted):
"Mr. Blankenburg, I'm calling from cold, rainy Columbus, OH. How's the weather in Westerville?"
(I did some research. They have a calling center in Columbus.)
At this point, I couldn't help but laugh. "Um, it's cold and rainy? I'm 3 minutes from Columbus."
"Oh, yeah. I guess you're right. Sorry about that." *Click*
She hung up on me! That's funny stuff.
Labels: crm
Comic for Geeks Like Me
Tuesday, October 23, 2007
I might just have found one of the funniest comics on the web.
So sure, I can identify with Dilbert most days, and many of them are hilarious. But at the end of the day, it's a comic about working in an office. MOST people can identify with working in an office.
But there are very few who can get (or draw) the subtle humor of writing code. XKCD has done it. I've included two of my current favorites below, and I'm anxiously looking forward the Monday-Wednesday-Friday posts.
Excellent work.


So sure, I can identify with Dilbert most days, and many of them are hilarious. But at the end of the day, it's a comic about working in an office. MOST people can identify with working in an office.
But there are very few who can get (or draw) the subtle humor of writing code. XKCD has done it. I've included two of my current favorites below, and I'm anxiously looking forward the Monday-Wednesday-Friday posts.
Excellent work.


Ann Arbor Day of .NET Recap
Monday, October 22, 2007
So I spent this past Saturday in Ann Arbor, MI at the Ann Arbor DODN. As was true this past Spring, it was an excellent community event.
BTW, I find so much more value in a community-driven event than I do a sponsor-driven event. It just seems to have a better "feel." You can't help but bump into passionate individuals at every turn. Sessions have standing room only, and the crowd is captivated by the content.
This is what the DODN was. Strong community leaders putting together a great event. Strong influential developers giving their professional take on technology. A strong community taking their personal time to further their knowledge. That's what I call cool.
Congratulations to the leadership of Day of Dot Net Ann Arbor. I'm looking forward to v3 in the Spring.
In the meantime, I'm also going to be speaking at the Memphis Day of .NET on November 10. I need another fix. If you can get there, do it! It will always be worth your while.
BTW, I find so much more value in a community-driven event than I do a sponsor-driven event. It just seems to have a better "feel." You can't help but bump into passionate individuals at every turn. Sessions have standing room only, and the crowd is captivated by the content.
This is what the DODN was. Strong community leaders putting together a great event. Strong influential developers giving their professional take on technology. A strong community taking their personal time to further their knowledge. That's what I call cool.
Congratulations to the leadership of Day of Dot Net Ann Arbor. I'm looking forward to v3 in the Spring.
In the meantime, I'm also going to be speaking at the Memphis Day of .NET on November 10. I need another fix. If you can get there, do it! It will always be worth your while.
Labels: day of .net
Silverlight 301 (and some other cool stuff)
I'm going to be talking on Thursday at the CONDG (Central Ohio .NET Developer's Group) meeting. I've been asked to speak on a higher level about Silverlight and the things you can REALLY do with it.
I'm going to be covering web service interactions, user controls, and event handling in Silverlight. In addition, we're going to be looking at some of the other cool stuff that we at Microsoft have been up to.
This includes: Popfly, Photosynth, SeaDragon, and even the new Surface. (No, we won't have an actual Surface device...at least NOT YET.)
I hope to see everyone there!
I'm going to be covering web service interactions, user controls, and event handling in Silverlight. In addition, we're going to be looking at some of the other cool stuff that we at Microsoft have been up to.
This includes: Popfly, Photosynth, SeaDragon, and even the new Surface. (No, we won't have an actual Surface device...at least NOT YET.)
I hope to see everyone there!
Labels: photosynth, popfly, Silverlight, surface
XNA 101
Saturday, October 20, 2007
Today at Day of .NET Ann Arbor, I got a chance to sit in on the XNA 101 session that Dave Redding was giving.
I've read plenty on XNA (the .NET game development platform), but I haven't really gotten much chance to play with it just yet. Dave's demos were excellent. He showed us how to create a simple game of pong, and had good references to how to really jazz up your first game.
He also showed some of the demo games that have been created as projects to learn from. The graphics were as good as any I've seen. Dynamic lighting, textures, and animation were excellent in the Racing Game demo. Xbox controlled integration was also very simple.
If you get a chance to see Dave give this talk again (maybe at a GANG meeting?), I'd recommend you check it out for some inspiration to create your first game.
I've read plenty on XNA (the .NET game development platform), but I haven't really gotten much chance to play with it just yet. Dave's demos were excellent. He showed us how to create a simple game of pong, and had good references to how to really jazz up your first game.
He also showed some of the demo games that have been created as projects to learn from. The graphics were as good as any I've seen. Dynamic lighting, textures, and animation were excellent in the Racing Game demo. Xbox controlled integration was also very simple.
If you get a chance to see Dave give this talk again (maybe at a GANG meeting?), I'd recommend you check it out for some inspiration to create your first game.
Labels: XNA
DevLink 2007 Recap
Sunday, October 14, 2007
So I got home from DevLink in Nashville, and to say I was impressed would be an understatement. John Kellar and his team put together a spectacular event.
It was well organized, it was entertaining, and it was as if every single detail had been considered. Here's a list of the ways I was wowed.
1) The VIP/Speaker Dinner the night before. I had an opportunity to mingle with the who's who attending DevLink I devoured a delicious Filet before being presented with excellent dessert. I was given a thoughtful, handwritten card and gift. I was not only given the agenda, but inserted was a sheet that listed the specific times I would be speaking, and where. A brilliant way to make me feel valued as a speaker.
2) The facilities. Hosted at Lipscomb University (yes, the Bison), we were primarily in a state-of-the-art technology center. Wireless internet throughout, projectors (sometimes multiple) in every room, and a polished looking, professional interior. Overall, an excellent facility.
3) The attendees. I have never felt more accepted and embraced yet in this role as Developer Evangelist for the Heartland District as I did this week. Everyone I met seemed to have passion just oozing from them. I'm not going to name names, because singling out some excludes others...but I really connected with many of the people at this conference. It was a great place to just sit and talk tech.
4) The organizers. John Kellar and his team gave their all at this event. They were always walking around with a smile on their face (no matter how tired they were on the inside). They were always available to answer questions, no matter how stupid the questions (namely, mine) happened to be. Even as the event was wrapping up, I needed to move all the XBox 360 equipment to Jon Box's car. John Kellar caught us in the hallway and offered to take some time to help me out. He's got an entire event running, and he still took the time to help me load my equipment. That's the kind of crew that was running DevLink this year. Absolutely awesome.
That's my short story on DevLink 2007. I'm looking forward to great things in Nashville in '08.
It was well organized, it was entertaining, and it was as if every single detail had been considered. Here's a list of the ways I was wowed.
1) The VIP/Speaker Dinner the night before. I had an opportunity to mingle with the who's who attending DevLink I devoured a delicious Filet before being presented with excellent dessert. I was given a thoughtful, handwritten card and gift. I was not only given the agenda, but inserted was a sheet that listed the specific times I would be speaking, and where. A brilliant way to make me feel valued as a speaker.
2) The facilities. Hosted at Lipscomb University (yes, the Bison), we were primarily in a state-of-the-art technology center. Wireless internet throughout, projectors (sometimes multiple) in every room, and a polished looking, professional interior. Overall, an excellent facility.
3) The attendees. I have never felt more accepted and embraced yet in this role as Developer Evangelist for the Heartland District as I did this week. Everyone I met seemed to have passion just oozing from them. I'm not going to name names, because singling out some excludes others...but I really connected with many of the people at this conference. It was a great place to just sit and talk tech.
4) The organizers. John Kellar and his team gave their all at this event. They were always walking around with a smile on their face (no matter how tired they were on the inside). They were always available to answer questions, no matter how stupid the questions (namely, mine) happened to be. Even as the event was wrapping up, I needed to move all the XBox 360 equipment to Jon Box's car. John Kellar caught us in the hallway and offered to take some time to help me out. He's got an entire event running, and he still took the time to help me load my equipment. That's the kind of crew that was running DevLink this year. Absolutely awesome.
That's my short story on DevLink 2007. I'm looking forward to great things in Nashville in '08.
It's Tribe Time Now!
Thursday, October 04, 2007

I don't generally bring my personal stuff into this blog, but it's October! As a die-hard Indians fan who sat through the snowed-out season opener (and several other games during the season), I'm excited for the playoffs to begin tonight for the Indians.
Let's Go Tribe!

This scoreboard shot isn't Photoshopped, it's actually the scoreboard from August 31, 2004. When the Indians put the worst shutout beating ever seen in baseball on the Yankees of New York (even through this 2007 season). It's an optimistic view of this evening's game.
Labels: cleveland indians
ReMix or DevLink? Anyone?


I'm going to be starting another week-long adventure on Sunday, and I'm looking to meet you. I'm starting to put together a series of webcasts on developing effective UI, UX, and the interface technologies that are used to create them.
If you have thoughts on any of these subjects, or if I just haven't met you yet, please introduce yourself. I want to meet passionate developers.
Here are my expected locations for the next week:
Sunday, 10/7, 1:00 PM - Browns vs. Patriots game
Monday, 10/8, All Day - ReMix07 Boston
Tuesday, 10/9, All Day - ReMix07 Boston
Wednesday, 10/10, 5:00 PM - Cleveland for potential Game #5
Thursday, 10/11, All Day - DevLink Nashville
Friday, 10/12, All Day - DevLink Nashville
Saturday, 10/13, All Day - DevLink Nashville
.NET Framework, now available in large print
Wednesday, October 03, 2007
This post is part of a large announcement today. Microsoft is releasing the source code for the .NET framework libraries under the Microsoft Reference License. This license allows viewing of source code, but not modification or redistribution. The source code will be downloadable and viewable by anyone who accepts the license agreement.This is a very exciting announcement. You'll be able to download a package with all of the source, and then be able to install and browse it locally.
I can continue gushing about this, or I can send you to the official announcement locations:
Scott Guthrie's blog has the primary announcement, with screenshots of the Visual Studio experience.
Also, there is a 30-minute podcast interview with Shawn Burke on Hanselminutes.
Labels: .net, .net framework, microsoft
Adobe Illustrator to XAML
Some of you, my dear readers, have asked how I got over that magical step in my Silverlight Animation Tutorial. The step where I had an Adobe Illustrator file, and then, POOF!, I had the XAML to start working with it.No, I didn't recreate the logo in Expression Blend. Mike Swanson created an AI->XAML Exporter. You will need:
* Adobe Illustrator CS2
(I don't know how they did it, but every trial version of this software on the web has disappeared. There used to be a 30 day trial...now you can only find Illustrator CS3. This is why I save all of my installation files.)
* Mike Swanson's Export Plug-in
* The rest of his instructions.
One quick thing to remember, however, is that there are a couple of quirks with the XAML you get. The syntax is good. No issues there. But it is creating XAML for WPF, not Silverlight. WPF has a much larger set of tags to work with, and as such, most WPF XAML may not be directly compatible with Silverlight.
Not in a "these are totally different" way, more in a "the opening and closing tags for WPF are different than Silverlight." WPF uses <window> as its top level tag, and Silverlight uses the <canvas> tag. Window is meaningless to Silverlight, because you don't have a window for it. It's only part of a web page. You can see this illustrated below:
Default code generated for a WPF application:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="UntitledApplication1.Window1"
x:Name="Window"
Title="Window1"
Width="640" Height="480">
<Grid x:Name="LayoutRoot"/>
</Window>
Default code generated for a Silverlight application:
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="640" Height="480"
Background="White"
x:Name="Page"
>
</Canvas>
So, in order to use the XAML that is generated by this tool in Silverlight, you're going to have to chop the "middle" of the XAML out and paste it into your new Silverlight app. Everything else should be the same. Ta-da!
Labels: adobe illustrator, Mike Swanson, Silverlight, WPF, XAML
Great Star Wars Theory
Monday, October 01, 2007
I wonder if Mr. Lucas has read this...it's a great theory, or at least entertaining to a fan of the films.
(Found via Tim Wingfield's blog)
A New Sith, or Revenge of the Hope - Reconsidering Star Wars IV in the light of I-III
(Found via Tim Wingfield's blog)
A New Sith, or Revenge of the Hope - Reconsidering Star Wars IV in the light of I-III
Labels: star wars
TUTORIAL: Creating A Simple Silverlight Animation
Silverlight has to be one of the easiest things I have ever worked with.
Last year, I was asked to put together a logo and site design for a new type of technology conference: CodeMash. (As a sidenote, registration just opened for the 2008 Codemash. For the price, it is by far one of the best conferences you'll attend this year.)
I designed the logo in Adobe Illustrator CS2, knowing that it would be used for print materials, the website, t-shirts, etc. It only made sense to create it using vector graphics. Little did I know at the time, it would also be the way that I turned that logo into an animation for CodeMash v2.0.0.8.
This post is meant to be a tutorial on what it really takes to create a simple Silverlight animation.
First, you are going to need to install some software (I am including links the newest stuff, but you should be able to do this with v1 of expression, and no Silverlight):
* Silverlight 1.1. Alpha
* Microsoft Expression Blend 2 September Preview (This version is good through June 1, 2008)
Once you've got those installed, you're also going to need some base XAML (eXtensible Application Markup Language) to work with. Download the CodeMash logo here. All this markup is at this point is the design. Just save this .txt file down, and we'll use it momentarily.
OK, now on to the tutorial:
1) Open Expression Blend 2, and create a new project.

2) Choose Silverlight Application (.NET)

3) By default, Page.xaml will be open. Choose the XAML view.

4) Cut and paste the contents of the logo.xaml file you downloaded earlier IN BETWEEN the <canvas> and </canvas> tags that are currently provided to you.

5) Flip back to the Design view, and you should now see the CodeMash logo on your canvas.

6) You're probably also noticing that the white canvas we started with isn't really big enough for our design. We should probably make that bigger as well. It needs to be 650px x 777px. We've got two options with this one. This first is just to edit the XAML directly. Take a look at that initial <canvas> tag we started with. It's got width and height properties, so we can just change the values. The second option is much better for those of you that don't want to edit your XAML directly. Click on the element named "Page" (that's our primary canvas) in the "Objects and Timeline" panel. Then, click on "Properties" in the top right. This shows you, much like Visual Studio, the Properties that are available to the element you've selected. Finally, you'll see the width and height properties in the list. You can type the values there, or you can use the innovative "slider" interface to get to the value you desire.

7) Take a look at the Objects and Timeline panel. You should see a well organized list of all of the elements that make up the logo. Gears, glasses, etc. Each one of these elements is defined in the XAML we imported. We are primarily going to be working in this panel the rest of the way.

8) Press F7 on your keyboard. This will take us into the "Animation Workspace." It's not any different from the "Design Workspace" (F6) we were in, except that the panels have been moved.
9) Expand the elements in the Objects and Timeline panel, and look for:
Page > Orange_Gear > Orange_Gear_Teeth. Click on that element once, highlighting it.

10) Under the "Objects and Timeline" panel header, there is a drop-down list with "(No Storyboard open)" as the selected value. Click the ">" button just to the right of that list. This will bring up the storyboard search dialog. Click the "+" symbol to create a new storyboard. Name your timeline/storyboard (it's named Timeline1 by default), and click "OK." Since we're gonna be animating the gears, I named my timeline "GearSpin."

11) You will now see that a timeline has appeared next to our list of elements. Each number (1, 2, 3, etc.) represents one second of time. We will use these times to "schedule" our animations. For those of you unfamiliar with animation software, we are going to be creating keyframes that will do most of the animation work for us. Basically, we define the states we want our elements to be in at certain keyframes, and the software figures out how to get it from Point A to Point B without any other instruction. Please also notice that your canvas now has a red line around it, and in the top right corner, now says, "Timeline recording is on." This means that all of our future actions will be recorded and animated. When we want to make a change that we don't want to be part of the animation, we need to make sure to turn recording off.

12) Make sure that the element "Orange_Gear_Teeth" is still selected. Just above where ZERO seconds is on the timeline, there is an icon with a green "+" in it. Click it. By clicking this, we are creating a keyframe at 0:00 of our animation. This means that it will start as soon as the application does. We could move this to 1 second if we wanted a 1 second delay before our animation began, but for this demo, we want it to start at the beginning.

13) Next, we need to create a new place for these gears to be. So let's say we want to have them rotate 90 degrees in 1 second. Drag the yellow timeline indicator to one second. Click the "+" to set another Keyframe at 1 second. In the "Properties" tab in the top right of Expression Blend, find the "Transform" section, and click the "Rotate" tab inside there. You will see that the current Angle is set to 0 degrees. Let's change that to 90 degrees. You can either click and drag the box to the right, until it says 90, or you can just click on the box, which will allow you to type 90.

14) Whoa! You may have noticed that your gear teeth have derailed from their hub. That's because we didn't define the center of those objects appropriately. Press CTRL + z on your keyboard, to undo the change you just made. Also, because we don't want to animate moving the center of these objects, we need to turn off recording. You can do this by clicking on the red circle in the top right corner of the canvas.

15) Because you have highlighted the "Gear_Orange_Teeth" layer, you should see a blue box surrounding those elements, but probably a bit bigger than just those elements need. You should also see a white dot that indicates where the center of that entire box is. We need to move that. Click on it and drag it to the blue center of the orange gear. That's the point we want our teeth to rotate around, right? To be more exact, I recommend zooming in and placing your center point that way.

16) Once you're confident in your center point, turn recording back on, modify that angle again, changing it to 90 degrees. Now you can click the "PLAY" button (it's right above the timeline) to see your orange gear spin.

17) We've got one other thing to take care of to make this look great. We don't want to have the gears stop after 1 second. We want them to continue spinning forever. This is a simple change. We had selected Orange_Gear_Teeth from the timeline earlier, and now we need to expand it. Inside it, you will see a RenderTransform element. This was created when we changed that rotation angle. Expand it all the way, and you will see an "Angle" element. Right-clicking on this will give you the option to "Edit Repeat Count." We can set this to 1, 2, 100, etc. There's also an "infinity" option. Choose that, and our gears will spin forever.


18) Now, we need to animate the other two gears. We are going to follow the same steps for the Blue and Green Gears. So take steps 9-17, rinse, lather, repeat. The only difference for the other two gears is that they rotate in the other direction. So instead of 90 degrees, they will be set to -90 degrees.
19) You should now have a working Silverlight application, that has the gears spinning. Press F5 to run your project!
Last year, I was asked to put together a logo and site design for a new type of technology conference: CodeMash. (As a sidenote, registration just opened for the 2008 Codemash. For the price, it is by far one of the best conferences you'll attend this year.)
I designed the logo in Adobe Illustrator CS2, knowing that it would be used for print materials, the website, t-shirts, etc. It only made sense to create it using vector graphics. Little did I know at the time, it would also be the way that I turned that logo into an animation for CodeMash v2.0.0.8.
This post is meant to be a tutorial on what it really takes to create a simple Silverlight animation.
First, you are going to need to install some software (I am including links the newest stuff, but you should be able to do this with v1 of expression, and no Silverlight):
* Silverlight 1.1. Alpha
* Microsoft Expression Blend 2 September Preview (This version is good through June 1, 2008)
Once you've got those installed, you're also going to need some base XAML (eXtensible Application Markup Language) to work with. Download the CodeMash logo here. All this markup is at this point is the design. Just save this .txt file down, and we'll use it momentarily.
OK, now on to the tutorial:
1) Open Expression Blend 2, and create a new project.

2) Choose Silverlight Application (.NET)

3) By default, Page.xaml will be open. Choose the XAML view.

4) Cut and paste the contents of the logo.xaml file you downloaded earlier IN BETWEEN the <canvas> and </canvas> tags that are currently provided to you.

5) Flip back to the Design view, and you should now see the CodeMash logo on your canvas.

6) You're probably also noticing that the white canvas we started with isn't really big enough for our design. We should probably make that bigger as well. It needs to be 650px x 777px. We've got two options with this one. This first is just to edit the XAML directly. Take a look at that initial <canvas> tag we started with. It's got width and height properties, so we can just change the values. The second option is much better for those of you that don't want to edit your XAML directly. Click on the element named "Page" (that's our primary canvas) in the "Objects and Timeline" panel. Then, click on "Properties" in the top right. This shows you, much like Visual Studio, the Properties that are available to the element you've selected. Finally, you'll see the width and height properties in the list. You can type the values there, or you can use the innovative "slider" interface to get to the value you desire.

7) Take a look at the Objects and Timeline panel. You should see a well organized list of all of the elements that make up the logo. Gears, glasses, etc. Each one of these elements is defined in the XAML we imported. We are primarily going to be working in this panel the rest of the way.

8) Press F7 on your keyboard. This will take us into the "Animation Workspace." It's not any different from the "Design Workspace" (F6) we were in, except that the panels have been moved.
9) Expand the elements in the Objects and Timeline panel, and look for:
Page > Orange_Gear > Orange_Gear_Teeth. Click on that element once, highlighting it.

10) Under the "Objects and Timeline" panel header, there is a drop-down list with "(No Storyboard open)" as the selected value. Click the ">" button just to the right of that list. This will bring up the storyboard search dialog. Click the "+" symbol to create a new storyboard. Name your timeline/storyboard (it's named Timeline1 by default), and click "OK." Since we're gonna be animating the gears, I named my timeline "GearSpin."

11) You will now see that a timeline has appeared next to our list of elements. Each number (1, 2, 3, etc.) represents one second of time. We will use these times to "schedule" our animations. For those of you unfamiliar with animation software, we are going to be creating keyframes that will do most of the animation work for us. Basically, we define the states we want our elements to be in at certain keyframes, and the software figures out how to get it from Point A to Point B without any other instruction. Please also notice that your canvas now has a red line around it, and in the top right corner, now says, "Timeline recording is on." This means that all of our future actions will be recorded and animated. When we want to make a change that we don't want to be part of the animation, we need to make sure to turn recording off.

12) Make sure that the element "Orange_Gear_Teeth" is still selected. Just above where ZERO seconds is on the timeline, there is an icon with a green "+" in it. Click it. By clicking this, we are creating a keyframe at 0:00 of our animation. This means that it will start as soon as the application does. We could move this to 1 second if we wanted a 1 second delay before our animation began, but for this demo, we want it to start at the beginning.

13) Next, we need to create a new place for these gears to be. So let's say we want to have them rotate 90 degrees in 1 second. Drag the yellow timeline indicator to one second. Click the "+" to set another Keyframe at 1 second. In the "Properties" tab in the top right of Expression Blend, find the "Transform" section, and click the "Rotate" tab inside there. You will see that the current Angle is set to 0 degrees. Let's change that to 90 degrees. You can either click and drag the box to the right, until it says 90, or you can just click on the box, which will allow you to type 90.

14) Whoa! You may have noticed that your gear teeth have derailed from their hub. That's because we didn't define the center of those objects appropriately. Press CTRL + z on your keyboard, to undo the change you just made. Also, because we don't want to animate moving the center of these objects, we need to turn off recording. You can do this by clicking on the red circle in the top right corner of the canvas.

15) Because you have highlighted the "Gear_Orange_Teeth" layer, you should see a blue box surrounding those elements, but probably a bit bigger than just those elements need. You should also see a white dot that indicates where the center of that entire box is. We need to move that. Click on it and drag it to the blue center of the orange gear. That's the point we want our teeth to rotate around, right? To be more exact, I recommend zooming in and placing your center point that way.

16) Once you're confident in your center point, turn recording back on, modify that angle again, changing it to 90 degrees. Now you can click the "PLAY" button (it's right above the timeline) to see your orange gear spin.

17) We've got one other thing to take care of to make this look great. We don't want to have the gears stop after 1 second. We want them to continue spinning forever. This is a simple change. We had selected Orange_Gear_Teeth from the timeline earlier, and now we need to expand it. Inside it, you will see a RenderTransform element. This was created when we changed that rotation angle. Expand it all the way, and you will see an "Angle" element. Right-clicking on this will give you the option to "Edit Repeat Count." We can set this to 1, 2, 100, etc. There's also an "infinity" option. Choose that, and our gears will spin forever.


18) Now, we need to animate the other two gears. We are going to follow the same steps for the Blue and Green Gears. So take steps 9-17, rinse, lather, repeat. The only difference for the other two gears is that they rotate in the other direction. So instead of 90 degrees, they will be set to -90 degrees.
19) You should now have a working Silverlight application, that has the gears spinning. Press F5 to run your project!
Labels: Expression, expression blend, microsoft, Silverlight, WPF
Jeff Blankenburg is a Developer Evangelist for the Microsoft Corporation. I have a passion for user interface technologies, including CSS,