So a mere five days after I wrote a post about WorldWide Telescope the team at Microsoft Research released a preview of the application. While I am in Europe. And can't (easily) download the application. But download it I did... and all my dreams about what the application would be like came true!
How to Get It
It's pretty easy. Visit the WorldWide Telescope site's Experience page and follow the download instructions. It's a relatively hefty application, about 20MB download, though it does require the Microsoft .NET Framework 2.0 before it can install. You will want download that first if you don't have it. There's a pretty decent set of installation instructions on the download page, and the application installer prompts you along.
What Is It?
Like I said in my first post, it's like having access to a multi-billion dollar telescope array from your desktop. Once the installation is complete, the application -- a network aware program that defaults to using live data on the servers and only uses the local cache when you're not connected -- displays an interface that is reminiscent of the Encarta experience (at least to my untrained UX eyes) and loads a full-blown sky survey. From there, you can follow one of several guided tours, search for images from Hubble or Spitzer, search constellations, or explore any of a dozen other resources. The application flies around the screen, zooms on whatever image you're interested in, and points out relative data with a quick right-click on the object in question. It's really fun, not to mention educational.
There's a lot more information on the What is WWT? page. That page links to contributors, additional details, and other resources. They also describe what WWT is:
The WorldWide Telescope (WWT) is a Web 2.0 visualization software environment that enables your computer to function as a virtual telescope—bringing together imagery from the best ground and space-based telescopes in the world for a seamless exploration of the universe.
They also explain what a "Web 2.0 visualization software environment" is:
Web 2.0 is the next generation of the World Wide Web wherein technologies and social practices use metadata or tags to enable communication and resource sharing in a variety of forms (text, audio, video, links, etc.) through the Web without a centralized authority's intervention or approval.
Rich visualization software provides a graphical visualization of large structured data sets. The software's interactive graphical user interface provides users with a more data-rich presentation of the data and enables them to explore, filter, analyze, and interact with the data, resulting in a better understanding of that data.
No, What Is It Really Like?
It really is like having access to your own telescope array. You start with a simple user interface with a digital representation of a sky survey of what you would see from the surface of the earth. You will also see wire-frame overlays of constellations and other aspects of the night sky. Here's a screenshot of the application after starting it up:
You will then have the ability to navigate using the collections listed at the top of the application screen, take a tour, or simply pan around the sky survey with your mouse. You can use the scroll wheel to zoom in and out and right-click elements in the night sky, such as a star or nebulae, to learn more about those elements or to zoom in on them for a close look.
It's a really engaging experience. I suspect my children will also enjoy it, so please head over to WorldWide Telescope and download it today.
This is some seriously cool stuff...
Yes, I Admit I am a Geek
I am a space buff. I love SciFi books, shows, and movies. Battlestar Galactica (the new one) is wonderfully engaging (who is the final Cylon?!?), and I am a fan of Star* (you know, -Wars, -Trek and -gate). I enjoy historical documentaries like From Earth to the Moon and movies like Apollo 13. I watch programs on NASA and space travel on Discovery Channel and History Channel. I've even watched a shuttle launch or four. When I read about the WorldWide Telescope I realized someone just granted me access to my very own multi-billion dollar telescope array from the comfort of my own home.
I've always been fascinated by astronomy and telescopes and pictures of the stars. Sure, I can look at pictures on the Internet and browse catalogs in books. But being able to interact with those images? I'd need access to a telescope and some seriously expensive equipment.
Your Own Personal Telescope
Now imagine being able to gain access to images like this one of the Orion Nebula on your computer, seamlessly stitched together with hundreds of other photos from a variety of sources from Hubble to the Spitzer Space Telescope. That's my take on the idea behind the WorldWide Telescope.
As I watched the videos and read through the FAQ, I began to envision an application capable of bringing together images and data from a variety of sources into an engaging user experience that essentially behaves like a telescope you control with your mouse on your computer. The site says you'll be able to pan and zoom across the night sky, perhaps even finding the Orion Nebula where it sits in the night sky. How wonderful would it be to sit behind the controls of the Hubble telescope, controlling where the lens points, seeking out the mysteries of space? To me, it would be incredible fun.
WorldWide Telescope at your Fingertips
So, what is the WorldWide Telescope? I can't say it any better than the FAQ...
The WorldWide Telescope (WWT) is a rich visualization environment that functions as a virtual telescope, bringing together imagery from the best ground- and space telescopes to enable seamless, guided explorations of the universe. WorldWide Telescope, created with Microsoft's high-performance Visual Experience Engine, enables seamless panning and zooming across the night sky blending terabytes of images, data, and stories from multiple sources over the Internet into a media-rich, immersive experience.
According to the web site, the WorldWide Telescope will be "Coming in Spring 2008". And I can't wait.
The Chicago Manual of Style continues to prove a really helpful resource for would-be authors and journalists. Check it out.
At the St. Louis Heroes Happen Here Launch event, Denny Boynton used some mysterious utility that added a really nice touch to his demos and presentation. With a deft keystroke, Denny's screen would zoom smoothly to wherever his mouse was on screen. He used it to draw attention to various hard-to-read things like the Visual Studio Property Sheet. I was so interested in what he was doing, I corralled him after his talk and asked him about it.
He told me it was one of the Windows Sysinternals utilities called ZoomIt, and he promised to write a post, which I dutifully read. Now, I can't say I'm the person he quoted, though that's pretty close to what I said. So, I promptly downloaded the utility and ran it on my computer. That's when the trouble started. As Master Chief would say, I ran into a snag.
ZoomIt, like many of the Sysinternals utilities (my favorite being Process Explorer, but that is perhaps best saved for another post), is made available in a zip file. It's the world's greatest install: extract the executable, ZoomIt.exe, to your favorite folder and double-click the program to run it. ZoomIt — a completely self-contained, literally copy-and-run installable — causes Windows Vista to prompt you with a security warning:
Now the easy thing to do would be to uncheck the "Always ask before opening this file". And that would have worked, but I like to keep all my Sysinternals utilities under C:\Program Files, which is a protected system directory. This is where the trouble part of the story comes in.
You see, you can't unblock an applications that live under the Program Files folder while User Account Control (UAC) active. And you can't permanently unblock an application from its property sheet while UAC is active, either. Why does this become a problem? Well, the security prompt above will show every time you launch the program. You have two options: a brute force option and a more elegant option.
The brute force option is to turn UAC off — which I do not recommend, for many, varied, and obvious reasons, not the least of which is the security risk it exposes... and the pain of one or more reboots — and unblock the application. (Honesty time: before I discovered the more elegant approach below, this was how I unblocked applications like Process Explorer.) This takes a few solid minutes, especially if you turn UAC off then turn it back on, what with the two reboot cycles.
The more elegant — and faster, IMO — approach is to move the executable to another folder, right-click it and choose properties to pull up the property sheet, click the Unblock button (see below), click OK, and move the program back to your favorite folder in Program Files directory structure.
Problem solved! Now you can add a shortcut to the Startup folder or Quick Launch and have easy access to ZoomIt (or Process Explorer) without the security prompt splashing onscreen every time you launch the program.
For completeness it should be noted that if you put the ZoomIt executable in any non-system directory (e.g., Program Files, Windows, or other protected folders), you can easily uncheck the "Always ask before opening this file" checkbox on the security prompt dialog to unblock the application. The steps I list only apply when you place applications like ZoomIt in the protected Program Files folder.
I was traveling this past weekend (see my earlier post for why) and flew home early yesterday morning. When I got home, I watched The Upside Down Show (my three-year-old son loves it) and Hannah Montana (there was a new one where Hannah dreamed she went back in the past and... I mean, my nine-year-old daughter loves it) with my kids, helped put them to bed, and watched Food Network Challenge and Lost with my wife.
Through all that TV watching goodness, relaxing after a weekend away from home, I forgot about something that I _really_ wanted to watch last night, and by all accounts (and the news on NHL.com) I missed a good one.
I am a Dallas Stars fan. I lived in Dallas for ten years, and became a fan in 1997. While I lived in Dallas I must have attended a couple hundred games. I saw the Stars with Lord Stanley's Cup against the Buffalo Sabres. I saw them lose the Cup against the New Jersey Devils, and I was in the stands while Commissioner Bettman awarded then-Captain Scott Niedermayer the Cup. It was cool.
And last night the Stars defeated the San Jose Sharks -- in the fourth overtime, no less, the eighth-longest NHL playoff game ever -- to advance to the Conference Finals for the first time since they lost to the Devils in 2000. Both goaltenders put on a clinic for how to win a game. Only a redirect after five long hours of play beat the Sharks.
In reading the game recap at lunch today, I realize I missed a good one.
I had the pleasure to attend the Iowa Code Camp on Saturday, May 3, and I have to say I am very impressed with what they were able to accomplish. By partnering with great sponsors like the University of Iowa IT Services Department (who not only volunteered their offices but also provided coffee and drinks; talk about going above and beyond the call of duty!), ASI Computer Systems, Robert Half, Magenic, QCI, and a handful of software vendors including Microsoft, they hosted a really special one-day event for .NET developers in Eastern Iowa. If you attended the event, check out the Contributors list and thank them for their stellar support.
There were about 100 people in attendance, not including the couple dozen people who staffed, supported, and spoke at the event. There were five tracks with five sessions per track. They had a series of sessions that tied together thematically and built upon one another, in topic series on SharePoint, ASP.NET, XAML, and LINQ. They also planned what I thought was a spectacular idea — they held back a slot late in the afternoon and asked attendees to vote for a session they wanted to repeat in the final hour of the event. And to cap it off, a local firm (
whose name I regrettably forget... if someone from the Code Camp will contact me and let me know I'll update this post and give credit where credit is due; update: Bryan Sampica sent me an update on the Iowa Code Camp dinner — he informed me that TekSystems and a small computer company in Davenport Iowa sponsored it; thanks to both!) hosted a dinner for up to 100 people.
Sounds like it was a great event, doesn't it? Trust me, it was!
From Microsoft, Jeff Brand and I traveled to participate and support the Code Camp. Jeff delivered two presentations: a walkthrough of Silverlight Streaming featuring a custom player Jeff calls MyTube as well as his patented introductory presentation on LINQ. I attended to "mingle" (I am management overhead, after all) and meet with community leaders from Eastern Iowa. I used to live in Cedar Rapids from 1993 to 1996, so it was a real joy to see how the .NET community had taken root in Eastern Iowa. As an added bonus I got to see some old friends, too.
I also had the pleasure of meeting several of the .NET developer community leaders from around Iowa, as well as many of the other folks involved in planning the Code Camp. Javier Lozano, from the Des Moines .NET User Group, was there, and was one of the Code Camp leaders. He also presented a talk on ASP.NET. I met Greg Sohl and Chris Sutton, who were facilitators of the code camp; they are both also involved in the Cedar Rapids developer community. I had lunch with them both and we had a really great discussion about the developer community. I also met Bryan Sampica, who helped with marketing the event and delivered a couple of talks on XAML and LINQ; and Greg Wilson who helped schedule speakers and spoke on SQL Server.
There were several other folks there that I met, and probably too many to list. Suffice it to say the community and thought leaders of Iowa banded together to deliver an outstanding event.
A Worthwhile Weekend
So, was it worth it to spend a weekend in Iowa? Yes! This was a really well done event, with a lot of professionalism and polish. Great speakers, great venue, great food, great coffee (a must for me in the morning), and a great format combined to make this almost feel like a one-day TechEd event. There was a little something for everyone, and they have bold plans to drive more Iowa Code Camps moving forward. If the success of this event is any indication, the developer community of Iowa can count on something really special every six or so months.
Note to Self
Learn from Larry Clarkin: next time remember to bring the camera and grab a few photos to include with the post.
I was recently listening to a Spaghetti Code Podcast with host Jeff Brand and guest Jason Bock, a Microsoft C# MVP. These two blokes were talking about languages, from (classic) VB to C++ to Java to C# and F#. And their discussion took me down memory lane. Oh, and it inspired me to write a quick little post about the podcast.
Spaghetti Code Podcast
First, what is this podcast, and why am I mentioning it. Well, Spaghetti Code Podcast is a series of audio podcasts with host Jeff Brand, a Developer Evangelist on my team, and various guests from around Jeff's stomping grounds in Minneapolis, MN. He's played host to Rocky Lhotka, Shannon Braun, Matt Milner, Scott Colestock, and others. You can get his podcast on iTunes or from his RSS feed. And if you listen to the latest podcast, a recap of MIX with Rocky and Shannon, be sure to stay around for the ender. I was rolling on the floor laughing. Jeff's a hoot!
Listening to this podcast took me down memory lane. Well, actually, what triggered this trip down that dusty old road was a question from Jeff. He basically asked "What languages have you programmed in, Jason?" And that was all it took to get me thinking, especially when Jason talked about programming a text-based Zork-like adventure game in BASIC on an Apple II way back in high school.
I started thinking of all the languages I have used at one time or another. Like Jason, I started with BASIC, but I used an IBM PC in 1986 and I wrote two programs. The first was a text-based take on Space Invaders. The second was to code in a string of HEX code I found that played a 10-second clip of "Everybody was Kung Fu Fighting". (Tip: the IBM PC sucked for sound. To get it right, I rewrote it on Commodore 64 and, later, the Amiga. Amazing mono audio!)
As I moved on from BASIC, I started thinking about all the programming languages I learned, and for an added challenge I started listing them in the order I learned them and where I learned them.
|High School and College ||On the Job|
- BASIC — high school, 1986
- Fortran — high school, 1986
- RPG — high school, 1987
- COBOL — high school, 1987
- Pascal — college, 1987
- PL/1 — college, 1988
- Assembly — college, 1988
- Modula-2 — college, 1989
- Prolog — college, 1989
- COBOL (again) — college, 1990
- Unisys LINC 4GL — college, 1990
- COBOL85 — Principal Financial Group, 1992
- CICS — Perot Systems, 1993
- REXX, Visual REXX — Perot Systems, 1994
- Visual Basic 4 — Perot Systems, 1995
- Smalltalk, C++, Java — Perot Systems, 1996
- Active Server Pages — Perot Systems, 1997
- Visual Basic 6 — Perot Systems, 1998
- Visual Basic .NET — Perot Systems, 2000
- C#, ASP.NET — Microsoft Corporation, 2000
Admittedly I did include multiple versions of COBOL and VB, and I added one UI "framework" in CICS. I think of them more as career milestones — or particularly painful consulting engagements. But I digress...
A Renaissance Programmer
Why the lengthy list? Truthfully it's partly a reminder of where I came from over the past nearly 20 years. Though it is a pointed example of how easily one can learn a variety of languages. Part of what reminded me of that was a quote Jason referenced during his interview, and I am paraphrasing here, "Once you make a habit of learning languages, they become easier and easier to learn."
There is great truth in that, and I believe it whole-heartedly. Were there programming languages that I found difficult? Oh, yes, Assembly was a killer course, and Prolog wrapped me around the axle. But I also found that over time learning various languages became easier and easier. Sure there are quirks with certain languages. I've looked at Ruby and Python and F#. There are unique traits about each.
But you know what? There are common elements, too. Conditional logic looks not that dissimilar between various languages. Variable declaration is often recognizable. And with the "big languages", there is more in common than different.
VB.NET, C#, and Java are all incredibly similar in core syntax. Sure, one has begin-end blocks, and another requires a strong pinky finger... I mean, uses curly braces and semicolons. But if you look beyond the core dialect of the languages and consider how each language tackles variable declaration, conditional logic, method invocation, there are many similarities. The crux of a language, really, is the underlying frameworks and libraries you're going to be using.
One of the questions Jeff asked during his interview was "What is your favorite language feature?" I won't spoil Jason's answers — you need to listen to the podcast for that — but it got me thinking about my favorite language features. Now, I'm not talking about tools like Visual Studio, or class libraries. I'm talking about capabilities built into the language.
My all-time favorite? Smalltalk's code blocks capability. You could literally read syntax from a database, pass it into a method signature, and have the method execute the code you read from the database at runtime. It was cool, and this capability enabled us to do some neat things. Second to that was Smalltalk's ability to change the core language behaviors in code. On a lark, a co-worker and I pulled a prank on one of our colleagues who, regrettably, forgot to lock his computer. We reprogrammed integer to only accept odd numbers. Trust me, that's fun times for a geek.
Other favorites include declaring throws in Java, rewriting memory be branching registers in Assembly (for more fun times, geek-style, try burping out some executable code into executing program memory space; it's a sure-fire way to cause some major heartburn for mainframe operators), and — occasionally — leveraging VB's late binding behavior, especially when programming against the Office object model.
What Language Are You?
Now, back to the original question...
So... What language are you? Let me know.
On April 26, 2008, my colleague Zain Naboulsi will be hosting a Heroes Happen Here launch event in Second Life. He's got the full launch agenda, covering Windows Server 2008, SQL Server 2008, and Visual Studio 2008. If you're active in Second Life — or even if you're not — join Zain and his team as they make history by running a launch event in Second Life.
...which seemed to work after making a few configuration changes on my IIS server. A true RTFM moment. Of course, there are still a few glitches to work out, but with a little help from my friends I am sure I will iron them out real soon now.
I quite literally just finished implementing some new blog software. I tinkered around with templates, CSS settings, and loads of other minor aspects of the software I chose to use. At the same time I made loads of changes to my web site, moved content to a new hosting service, edited DNS records with my registrar, and moved email servers. Whew!
So, now that I have just uploaded the content, it's time to work on getting Technorati, Feedburner and other services wired up. I also need to move content from my old "blog" to this new blog. And the old one was not so much a blog as a pile of code I cobbled together to list announcements and stuff, so there's a few dozen posts I need to move.
I thought about writing code and all that to push content into the new software... But honestly brute force will probably take less time. (Trust me, there's not that much content that would make an automated solution worthwhile.) The only downside I've seen is that while I can set the date for a post I can't set the time. So moving the old stuff over won't match the old date-time stamps. I'm on the fence on that. Maybe it will annoy me enough that I'll go ahead and write code to force everything to match up.
Anyway, after that, it'll be time to retire the old code and database and write some new code into my main site to pull in the latest five or so posts from the new blog. Not bad for an evangelism manager.