December 2003 - Posts

Describe your journey into computers and the lessons learned along the way
31 December 03 11:39 AM | Scott Mitchell

So, what's your story? Here's mine...

My first experience with a computer was back in the late 1980s when I was in fifth grade. My dad had decided it was time the family entered the computer age, so we trekked down to the local Sears and picked ourselves out a Packard Bell Legend IV. At the time it was quite cutting edge – the CPU could handle 12 million operations per second, it boasted whole megabyte of RAM, and 40 MB of hard drive space. Included with the MS-DOS operating system was an antiquated programming language – GW-BASIC. Since my dad had done a spat of programming back in his college days, he showed me how, with a little reading, a bit of typing, and a whole lot of patience and fortitude, one could spend the better half of a Saturday afternoon and have a program where colored squares raced one another across the screen to show for it. After seeing this, I was hooked.

Through junior high I continued to spend too much time in front of the computer working on my two passions: writing and programming. My computer time was pretty evenly split between writing fiction and programming with GW-BASIC. (Even as a kid, I was never that interested in computer games, although I did become addicted to Sid Meier’s Civilization for a while.)

Have you ever wondered why children seem the most acclimated to technology? Give a kid a new gizmo, and he can likely figure out how to make it work before an adult. I think the main reason for this is because children have yet to been programmed that there is a right and a wrong way. They haven’t been taught to feel shamed if they do the wrong thing, or embarrassed if they make a mistake. So they just start trying different things. They don’t worry if pushing these buttons will cause an error message to appear, they just try it and see what happens.

I’ve always believed that the best way to learn is by doing, and that’s the philosophy I’ve had when learning about computers and programming myself. I learned programming, in large part, by building applications. I’d pester my dad, asking him what programs he needed, and then I’d set off to create them. Through junior high and high school, I wrote programs for friends, for my dad’s business, and for other small businesses in the area. I didn’t always know how to solve a problem when I sat down at the keyboard, but I think that’s what attracted me to computer science – the problem-solving aspect of it.

So one important lesson I’ve learned is simply “do.” Another important lesson I’ve learned is that you don’t always know the answer to a problem, but don’t let that stop you. Answers aren’t intrinsically known, they’re discovered. These are two philosophies I’ve tried to carry from my personal experiences into the books and articles I’ve authored, especially those writings intended for beginning programmers. Beginners, understandably, are apt to feel overwhelmed when learning a new programming language or technology. There’s so many things to learn, so many ways to do something, and so many ways to do something wrong!

Poor authors can easily make a beginner feel overwhelmed; the sign of a good author is his ability to distract the reader from his innate concerns of the technology’s difficulty and complexity. This is done by showing the reader how to do something, anything. My dad, when teaching my GW-BASIC, wrote a program from start to finish, as I watched. Afterwards we discussed how the program worked, what the syntax meant, and so on. This approach not only held my interest, but allowed me to pick up the language quicker because I was able to put its syntax and semantics into context. Contrast this with an approach too many technical authors take: instead of creating a program, my dad could have sat me down and started enumerating the build-in functions, the many control-flow constructs, the concept of data types, and other technically valid, yet overwhelming pieces of information. Thankfully my dad did not choose this approach, as it would have likely killed my interest in computer programming altogether.

Filed under:
An Extensive Examination of Data Structures - Part 2
19 December 03 11:13 AM | Scott Mitchell

My second part of a (proposed) six-part series on data structures is now live on MSDN - An Extensive Examination of Data Structures: Part 2.

In Part 1 of the article series, I discussed the importance of data structures and their impact on the performance of algorithms. The most basic and durable data structure - the array - was discussed, as well as the ArrayList. In Part 2, I examine the cousins of the ArrayList, the Stack and the Queue classes. There are many pretty pictures and diagrams illustrating how queues and stacks are implemented in the .NET Framework.

Part 2 also contains a look at hashtables and, specifically, the Hashtable class in the .NET Framework. If you're unfamiliar with hashtables, or if it's been a while since you've studied hash functions, collision resolution, and rehasing, you might find the article of particular interest. It was a blast to write.

Part 3 has already been written and will (hopefully) be on MSDN's site before too long. Part 3 looks at trees, and build a binary tree and binary search tree class. It ends with a discussion on the perils of binary trees (namely their unbalanced-ness), which provides a segue into Part 4, where we will briefly discuss self-balancing trees and then look at a randomized data structure - the Skip List - which exhibits the properties of a self-balancing binary tree.

Filed under:
RssFeed Version 1.1 Available
13 December 03 02:58 PM | Scott Mitchell

RssFeed, an ASP.NET server control for displaying RSS syndication feeds I created back in October, has been updated. The new version had the following two additions:

  1. A Target property has been added so that the page developer can customize what frame the link opens in. By setting this property to _blank, clicking a link in the RssFeed control will open the URL in a new window...
  2. RssFeed previously only supported syndication feeds formatted by the RSS 2.0 specifications. With RssFeed Version 1.1, RssFeed now also supports the RSS 1.0 (RDF) format.

To get your hands on the source code or the compiled assembly, meander on over to the RssFeed GDN Workspace. To see RssFeed in action, check out the recommended blogs page on 4Guys. (Still need to add support for those running behind proxy servers... it's on my to-do list...)

Filed under:
New skmMenu Article Online - and skmMenu 1.3 Beta is Available
06 December 03 01:49 PM | Scott Mitchell

My latest MSDN article is now online, Examining the skmMenu Server Control. This is the second in a two-part series examining an open-source ASP.NET menu control I started back in September. (Read Part 1, Building an ASP.NET Menu Server Control.) Part 2 is a bit length (28 printed pages) with tons of good info on control building, from databinding to managing state.

The skmMenu project is available in its latest incarnation on the skmMenu GotDotNet workspace. This code in this workspace is a bit outdated, as it's being maintained “as-is” so that those reading the article can examine the complete code in detail. However, a group of developers have been extending skmMenu on a separate GDN workspace, skmMenuDev. The code has been refactored a bit and has had numerous features, bug fixes, and enhancements made. Recently, the group game out with skmMenu 1.3 (still in Beta), which needs testers if you're interested. To get a feel for what skmMenu can do for you, check out these two simple examples:

These examples are two of the samples in the skmMenu 1.3 Beta download...

Both of these menus are generated with just a few lines of declarative syntax in the HTML portion of the ASP.NET Web page. The part using the XML file only takes two lines of code in the code-behind class!

Filed under: ,
TheSpoke? Community Starter Kits? Heavens, where's .Text?
04 December 03 02:49 PM | Scott Mitchell

Dave Wanta pointed out this article on ZDNet: Microsoft Test Drives Another Blogging Tool. The article talks about Microsoft's upcoming blogging site aimed at students: TheSpoke.NET. TheSpoke looks pretty bare to me, still a lot of “under construction” signs, but the aim of it seems to be a blog aggregate site for students. TheSpoke, according to a ZDNet article source, is Microsoft's competition against LiveJournal, Blog*Spot, and other such community blog sites. Although I can't see this as something Microsoft is that serious about, otherwise you think they'd keep the site private until it worked, at least!

Does TheSpoke use .Text? I dunno? Can anyone share if it does or not? I'm going to guess not, but that's just that - a guess. The ZDNet article also talks about blogging support in the Community Starter Kit. But.... no mention of .Text anywhere in that article. As you might or might not know, .Text is a blogging engine written by Scott Watermasysk. It's open-source and is what is powering Weblogs.ASP.NET (and will be the engine for the GotDotNet blogs as well, as the GDN blogs are moving over the Weblogs.ASP.NET). It is what powers my blogs (this one and, and many other blogs running on ASP.NET. So, why no .Text love from ZDNet?

On a grander note, what do you think Microsoft's plans for .Text are moving forward? Do you think Microsoft is creating their own blogging engine (i.e., TheSpoke), and plan on ditching .Text?

Filed under:
More Posts


My Books

  • Teach Yourself ASP.NET 4 in 24 Hours
  • Teach Yourself ASP.NET 3.5 in 24 Hours
  • Teach Yourself ASP.NET 2.0 in 24 Hours
  • ASP.NET Data Web Controls Kick Start
  • ASP.NET: Tips, Tutorials, and Code
  • Designing Active Server Pages
  • Teach Yourself Active Server Pages 3.0 in 21 Days

I am a Microsoft MVP for ASP.NET.

I am an ASPInsider.