Thursday, March 29, 2007

Impromptu Channel 9 Videos

Scott Hanselman and Rory Blyth going into a random office in Building 42 and letting the camera roll: it could have turned into a disaster, but what happened was that they stumbled into Polita Paulus's office, and discovered the developer who created the ASP.NET GridView and ObjectDataSource controls (as well as BLINQ)!!!

http://channel9.msdn.com/showpost.aspx?postid=295919

(This one's well worth watching: just under 15 minutes)

Of course, about 1/2 way through the video, I was screaming at Scott and Rory to go across the hall and talk to the guy that wrote the XmlDataSource and find out why there's no Namespace support (Scott even brought that up in the video)

Friday, March 16, 2007

It Talks!

Almost two years ago, I threw together an interpreter for the Infocom Z-Machine using C#.  This was actually an exercise that I used while teaching myself the internals of the Z-Machine itself.  I've said it before in this blog, but in my opinion, the single best way for a high-level language developer (like myself) to learn the low-level aspects of a particular machine architecture (be it a Z80, 6802, Atmel AVR, PIC, Z-Machine, etc), is to write an emulator to run the native code bytes.  Once you've gone through that exercise (especially the debugging process), you pretty much know exactly how each opcode works.

I've pulled out this Z-Machine library a couple of times when I wanted to test the capabilities of a particular technology.  For instance, when I wanted to see what SQLCLR could/could not do, I created a stored procedure interface to my library, and was able to play Zork completely on the database server itself (it turns out that you can do a lot using SQLCLR if you wanted to).

Last year, I plopped the source code into a GotDotNet workspace, and pretty much forgot about it.  Until yesterday when James Ashley from the Atlanta area emailed me to let me know about a little project of his that he is working on.

It turns out that James is really into SAPI (much like an INETA speaker from my area, Martin L. Shoemaker), and was able to create a System.Speech-based interface into my Z-Machine library.  What a great demo of the SAPI capabilities of the .NET Framework v3.0 by playing a text adventure game using only your computer's speakers and a microphone!

UPDATE: James' article can be found here: http://www.codeproject.com/useritems/SAPISophia.asp

Thursday, March 15, 2007

Day of .NET Blog Badges

Scott Zischerk, the guy behind the fantastic looking Day of .NET in Ann Arbor website, has created a couple of badges that you can post on your blogs!

Day of .Net May 5, 2007 - I'll be there!

Day of .Net May 5, 2007 - I'll be there!

HTML code is available at: http://www.dayofdotnet.org/badges.aspx

Wednesday, March 14, 2007

Great Bill Gates Story

Lorin Thwaits tells a great story about asking Bill Gates a question this week at the MVP Summit.

I won't spoil it with details, but give it a read!

Tuesday, March 06, 2007

Day of .NET in Ann Arbor: Postponed 1 Week

Due to some previously unforeseen coincidental events taking place on April 28th, we have decided that the Day of .NET in Ann Arbor conference had to be postponed one week.  Otherwise, there would just not be any lodging available within a 40+ mile radius of Ann Arbor.

So, cross off the previously reserved date, and create a new entry in your calendar for MAY 5, 2007

Also, if you have the means, then please help to spread the word that the Day of .NET in Ann Arbor conference is now being held on MAY 5, 2007.  All other details remain the same.

Thanks!

Saturday, March 03, 2007

My Programmer Personality

I saw this on Keith's blog, so I had to do it too.... It's kind of like the Myers-Briggs personality test, but for programmers (and not as in depth). (For the curious, my MBTI is INTP...)

From http://www.doolwind.com/index.php?page=11, I am being told:

Your programmer personality type is: DHSB

You're a Doer.
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.

You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.

You work best in a Solo situation.
The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.

You are a liBeral programmer.
Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We're not writing on paper anymore so we can take up as much room as we need.

Memorabilia

One of my readers (we'll call her Mom, because that's her name) sent me this photo today:



This was the first "PC" in my house growing up, speaking specifically of IBM-compatible machines. My house had always had a computer in one form or another, from TRS-80's to a Commodore VIC-20 and the Commodore 64. This is the machine that took over the main computing needs of the family at the tail end of the C-64 days (my late high school days, if I recall).

Notice the important details though:

  • This 286 had the spiral phone cord-like keyboard cable. They just don't make them like that anymore!
  • The mouse has a definite home in its holder affixed to the case. I don't know how many times today that I wish I had a place to put my mouse when I'm done using it.
  • Speaking of the mouse, I don't know if you can make it out, but there's a mousepad there with gridlines on it. You know, for when you need the highest precision in mouse usage, or so that you can pretend that you're at a CAD workstation or something.
  • Even in the days of this 286, there was a format war going on between 3.5" floppies and 5.25" floppies. Thankfully, this computer could handle both. Imagine if it only had a 3.5" drive: those disks in the cases to the right wouldn't work, and I bet inside of those cases were copies of MS-DOS 4.01. (Do they even sell computers with floppy drives these days?)
  • There's no Windows keys on that keyboard. No sir, they didn't exist back then. I don't even think that we would have seen a pirated copy of Windows 3.1 for a few more years, and by that time, I think that this particular machine was in retirement.
  • There are no speakers because... well, there was no sound card in this thing. And no CD-ROM drive because if they were out, then they probably cost as much as this computer.
  • And, lastly, there's the ever-important beer can lamp that I think my younger brother made in shop class.

Friday, March 02, 2007

Still using Data Dude... Still not "Wow'd"

I'm forcing myself to use VSTEDP for my current project, which involves making a wide variety of changes to an existing database schema in order to support new functionality required by my web application.  Hopefully, I'll have a seemless deployment of the changes into production when the time comes (holding breath).  I mean, that is one of the advertised benefits...

What I like is visibility into any breaking changes.  "Data Dude" does all of the dependency checking for me, and will create errors in the Visual Studio task list if a change breaks other objects.

What I dislike is how painful it is to actually make the changes using VSTEDP itself. 

Come on, guys.  Visual Studio is known for being more than just a text editor.  Microsoft is known for providing great GUI database tools in addition to just "Query Analyzer" functionality.  IMHO, you shouldn't have released "Data Dude" without the same level of database editing support that Visual Studio itself supports against live databases. 

Am I just using the product incorrectly, or coming into it with way too much expectation? 

The only solution that I found was that I could make changes to a live (development) database and then use the schema compare functionality in order to capture the deltas.  This seems to work, and allows me to use tools that I'm already familiary with.  I would just have preferred to do everything against my "one version of the truth" right in the tool itself.  Not to mention that if I were actually in a "team" environment, then this solution does not provide a very solid way to prevent people's changes from stepping on each other.