I’m pleased to announce that fellow Accentient Consultants David Starr and Michael Vincent have been named Team System MVPs! David Starr is the founder of the Elegant Code community blog and podcast series, and also organized the recent, highly successful Boise Code Camp. David has over 18 years of experience in software development and has held numerous leadership positions in technology teams. He is a frequent speaker at technology conferences, a writer, and is involved in several .NET and Agile professional organizations. His passions include Agile software development, building strong teams, Application Lifecycle Management, Visual Studio Team System, and .NET. Michael Vincent has been actively involved in user group communities since the early 90's, founding both the SoCal .Net Architecture group, also known as the International Association of Software Architects Southern California Chapter, and the Orange County C# Developers group which became the Orange County .NET User Group. Mike is a frequent presenter at local and regional user groups and Southern California Code Camps and has served with INETA as the California Membership Mentor. Congratulations to both for this well-deserved recognition.
So I splurged recently and picked up one of the new Western Digital 300GB SATA VelociRaptor drives. I also happened to be in Las Vegas, and there was a Fry's nearby. I think that was the cause, and the effect was me ending up with the drive, but I digress. Every so often, I wonder how fast my various 5400, 7200, and 10000 RPM drives are, especially taking USB 2.0 and ESATA into account. I downloaded the latest version of HDTach and went to work with my not-very-scientific performance tests: | Hard Drive | Random Access | CPU Utilization | Average Read | Burst Speed | | Internal Hitachi 100GB 7200RPM | 16.8 ms | 3 % | 41.3 MB/s | 114.6 MB/s | | External 5400RPM (USB) | 17.9 ms | 13 % | 32.8 MB/s | 36.2 MB/s | | External 750GB 7200RPM (USB) | 13.9 ms | 0 % | 34.7 MB/s | 35.1 MB/s | | External 750GB 7200RPM (ESATA) | 13.6 ms | 4 % | 66.9 MB/s | 90.4 MB/s | | External 300GB 10000RPM VelociRaptor (ESATA) | 7.3 ms | 4 % | 80.0 MB/s | 88.9 MB/s | Hardware used: Dell D820 laptop, 4gb RAM, Windows XP/SP2 BTW - the numbers in bold make me happy, and here's the graphic that went along with the final test (the VelociRaptor drive): 
Back in the 80s (way back!) Apple got a toe-hold in the PC market in part by engineering a high presence in colleges and high schools. The theory was that if you get a young person started on an Apple computer then they will want to continue using Apple computers into their adult careers, if for no other reason than they already know how to use it. This strategy actually worked reasonably well.
Microsoft has always struggled with their presence in colleges and high schools. These institutions tend to favor the JLAMP stack (Java, Linux, Apache, MySql, PHP) over the Windows platform. What mind-share Microsoft has with students seems to tend toward the "evil empire" variety.
I'm pleased to see that Microsoft has finally made a bold move to improve their visibility in the college community. My son - a college student - pointed it out to me the other day. The program, launched last February, is called DreamSpark:
DreamSpark is simple, it's all about giving students Microsoft professional-level developer and design tools at no charge so you can chase your dreams and create the next big breakthrough in technology - or just get a head start on your career.
Looking at the list of software available for free through this program, it almost makes me want to enroll in a class or two at my local university!
For more information: https://downloads.channel8.msdn.com/
Ah yes, late August, time to go back to school - even for us adult geeks. Fortunately, David Starr has provided us an exhaustive list of must-read books, organized by developer, tester, project manager, and executives. ... nothing specifically on VSTS however. I'll have to bug him about that.
NBusiness is an Entity Definition Language focused on the creation of business entities. Basically, you use a construct called E# to build a code file, which is then 'compiled' into C#. Basically, NBusiness acts as a domain specific language for the creation of business entities. Below is an example of some E# code. It's still a bit stinted in the structure, but it 'feels' like English to me, much like an internal DSL in Ruby. (Even node the TRIVIAL creation of security around roles near the bottom of the example.) It seems people are really getting into the Domain Specific Language thing... But not the way Microsoft seems to be going. Microsoft seems to be focusing on the big, graphical DSL model. It'll be nice when they get there, but meanwhile, they're being left in the dust by the folks just creating very clean, very fast DSLs for a particular domain. Nicely done, guys! family BeerBase.Business { entity Address as EntityBase, EntityBaseCollection, EntityInfo, Scripts { field auto id int AddressId; field string Street1; field nullable string Street2; field string City; field string PostalCode; field int RegionId; relationship Kegbots with Kegbot on AddressId=AddressId as child; relationship Companies with Company on AddressId=AddressId as child; relationship Region with Region on RegionId=RegionId as parent; validate Street1 required; validate City required; validate PostalCode required; validate RegionId required; validate City minlength 2; validate Street1 maxlength 50; validate Street1 minlength 3; validate Street2 maxlength 50; validate City maxlength 50; validate PostalCode maxlength 16; validate PostalCode minlength 5; authorize allow * retrieve; authorize allow Administrators delete; authorize allow Administrators create; authorize allow Administrators update; } }
Umbraco looks pretty amazing! It may not have the following of Dot Net Nuke, but it looks to be a lot more open to web standards. I've tried many times to really like DNN, but it just pains me that I don't have really clean CSS control over things. I suppose it's because I haven't gotten my head around it fully, so I'm sure I'm missing something. But don't tell me to use their non-standard (although open source) theming system. That just doesn't sit right. Anyway, back to Umbraco. it appears to have support for web standards, full API, and a very extensible platform! I haven't looked at it in too much detail, but at least its something new! Something outside the standard DNN, Rainbow, Joomla, and Drupal CMS systems. Once again, I'm no expert at any of these, but I'm always on the lookout!
Hey! This is a neat little easter egg in dasBlog. Whenever you type dasBlog it automatically inserts a hyperlink to the site. I wonder if it works for das Blog and DasBlog, as well.
Head to Vertigo and run the Family.Show demo of WPF and Silverlight. It's a trivial download, and shows off some of the power of both technologies. You can find it here. You can also download the source at CodePlex!
Learning a new language isn't always fun, especially Javascript. Plus, when you're working in one language, it takes context switching to flip to another, even for a trivial task. Nikhil Kothari, an architect on the Web Platform and Tools team at Microsoft, has created something called Script#, which allows you to program in C# while compiling to Javascript/Ajax. ZDnet has a good blog post on the importance of this technology, and a brief comparison with the Google version which compiles Java to Javascript.
One of the best things software development shops can do to improve productivity is to set Outlook to only check email once every hour (or 30 minutes at least). This is because people tend to take quite a bit of time to get back to difficult tasks. Email, and IMs, are difficult to ignore when that little "pellet dispenser" pops up on the lower left hand side of your screen. And once your mind strays it's hard to get back on task. A recent research project reported in the New York Times ( link - free registration required), bears this out. Here's the money quote:
In a recent study, a group of Microsoft workers took, on average, 15 minutes to return to serious mental tasks, like writing reports or computer code, after responding to incoming e-mail or instant messages. They strayed off to reply to other messages or browse news, sports or entertainment Web sites.
“I was surprised by how easily people were distracted and how long it took them to get back to the task,” said Eric Horvitz, a Microsoft research scientist and co-author, with Shamsi Iqbal of the University of Illinois, of a paper on the study that will be presented next month.
“If it’s this bad at Microsoft,” Mr. Horvitz added, “it has to be bad at other companies, too.”
So, turn off that email while you're coding! (And driving!)
More fun with Vista. I love the OS, and there's so much to recommend it, but I keep running into WEIRD problems! Here's another one... I like to listen to DotNetRocks, Hanselminutes, and other podcasts during my commute to and from client sites. They offer downloads in both WMA and MP3 formats. I've generally used MP3, but thought, "Hey, I should switch to WMA, since that's native to Windows Media. Unfortunately, when I tried to drag any WMA files onto Windows Media 11 in Vista, it won't allow me to drop them onto the 'To Burn List', or add them any other way I was able to see. However, MP3 files can be dragged onto the burn list easily. Weird. So, I guess it's back to MP3s.
NOTE: For those of you writing to tell me what I'm doing wrong and how to fix it so that it works, I appreciate it. However, my main complaint isn't that I can't spend 30 minutes (or even 10) trying to figure it out and making it work, it's taht Vista/WM11 seems to choke on native files, but easily support MP3s.
I've solved the problem with the printer shared via USB on a Windows XP box! I can now print to it from my Vista box. I found the solution at TechArena. You can find it here. Basically, you need to install the printer locally first, then fake it out using a Port that points directly to the shared printer. Then, be sure to disable the "Offline Printer" support so that it prints over the network immediately. UPDATE: And here's another post, which makes things a bit more clear.
I'm trying to get Vista (on my laptop) to recognize a printer shared from my Windows XP desktop box. Unfortunately, it squacks... Telling me that I don't have enough memory. Now, I have 2 Gig on my laptop, and currently 1.5 Gig is free, so I seriously doubt that's REALLY the case. 
 I've searched and come up with a couple solutions, however, they involve hooking up my printer via an LPT port. I don't have that cable anymore. Who uses those things when USB is available? Anyway, the hack is really to hook up old DOS computers to Windows XP, but evidently it works for Vista, too. If you are running into the same problems, and are using an LPT port, check out the Microsoft KB article here. UPDATE: See my post here for the solution!
I'm generally involved in the .NET space, but often work with companies that have both .NET and J2EE running in their enterprise. Because of our focus on Team Foundation Server (TFS) and VSTS (Team System), when we run into Java, it's usually getting them moved over to TFS using TeamPrise. (See Martin Woodward's blog for more on this great product, plus some very valuable insights into TFS and software development in general.) But sometimes the companies we work with have J2EE as their primary servers. I only recently learned of a very interesting product called Visual MainWin for J2EE that allows a company to run their ASP.NET applications without recompilation on WebSphere servers! Now, web developers can get all the productivity, simplicity and maintainability of ASP.NET even before they convince their IT shops to move to a Windows platform! Combine that with TFS and TeamPrise for their Java developers, and we're talking a real Microsoft foothold in hostile territory. Side note: Speaking of Java and .NET, here's a Java Virtual Machine written in .NET!  It's called IKVM.NET!
During my recent upgrade, I moved to Vista and Outlook 2007. I have to say, I LOVE the Outlook 2007 UI. I'm much more productive, and it introduces some very, very nice features, like overlapping calendars and integrated searching (although I still prefer X1, since it is MUCH faster and has a better UI). Still, I ran into this problem... I couldn't use it to connect to my email server hosted on Windows Server 2003. The email downloads were WAY to slow. Retrieving 15 emails with a total of 100 kb took several minutes, and if I had an attachment larger that 1.2 MB I physically couldn't download it, since it would time out every time (after 30 minutes or so). Yuck. It was so bad that we gave up hosting our email on our own servers and found a service that would host all our email addresses, giving us POP3, internet access to our email, calendar and many other features free. I looked all over for a solution to the slowness problem, including contacting Microsoft. No one could help. So we moved, and are quite happy with the new service. Anyway, I've found the solution. It wasn't Outlook 2007, but Vista, and it's a very common problem (based on Live and Google searches), without a well publicized solution. It's the same solution as the last post. Go to the command line as an Administrator (in your Vista client) and execute the following command: netsh interface tcp set global autotuninglevel=disableWorks like a champ! Hopefully, this post will help a few people before they end up having to also migrate off of Windows Server 2003 to another solution. PS. This problem doesn't affect all Windows Server 2003 (Win2K3) installs, only some. Evidently it is a hardware issue. UPDATE: More information here: Outlook is slow, RSS Broken from Tim Anderson's blog. See comments 60-64 for more information and the solution presented here.
I recently "upgraded" to Vista on my laptop. Immediately, I noticed a few things that were very annoying... Primarily, it was the file transfer speed between my Vista box and our Windows Server 2003 box. What used to take about 3 minutes to download now takes well over 4 hours. In addition, the WSS portal we use takes over 1 minute for the home page to come up, versus less than 1 second. Yuck. So, I have to keep a copy of Windows XP around whenever I need to download stuff from our server. I shut down Vista, swap hard drives (laptop) and boot into XP. Then my speeds are nice and fast again. Microsoft recommended that I run the following command as an Admin from my Vista command prompt: netsh interface tcp set global autotuninglevel=disabledI wish I could report that it increased my performance, but, alas, I'm still stuck. I love the Vista experience, and there's so much to like about the OS, but I've run into so many "gotchas" that kill my productivity that I have to recommend staying with XP for now. At least until the first Service Pack is released, or they solve the major interoperability issues. UPDATE: I did a reboot after the netsh command above and NOW I'm moving quickly! It worked! I've still got doubts about the wisdom of moving, at this time, to Vista, but my communication problem with the server is no longer one of them!
We're about to redo the Team System Widgets page, and are looking for any suggestions on improvements. Some things we'd like to add are comments on each widget, and an icon designating which ones are still 'works in progress'. Any other ideas? Tags? Let us know!
Or that's what they say, anyway! Martin Woodward ran across this site, and shot us an email. Interesting!  It's a direct copy/paste of the html from our widgets page (prior to a recent update). I don't see any attribution, but it's in a language that doesn't display on my computer, so I wouldn't know for sure. It's actually good to see that people are using the site. By the way, if you haven't seen Martin's VSTS blog, it's time you do! His post on measurement is one of my favorites! You can find it here. He's a must have on your blog roll!
If you're building a web site that needs to be viewed in multiple different browsers, it has been difficult in the past to really get a good test. No longer. A site called BrowserShots.org provides a way to view screenshots of a web page as seen from over 30 different types of browsers. They actually run the site in the browser, take a screenshot, and post it. Pretty amazing! Here's a list of the browsers and options you can choose from. Color me impressed!
"Bend to Evil" is an anagram of Google's "Don't be Evil" byline. I generally hold Google in high regard for its strong vision of an interconnected world where information is free, open and shared. But I also understand their need to make money. Still, I'm disheartened by their decision to actively censor search results on their newly installed Chinese servers. The Chinese government believes concepts like freedom and democracy are not in the best interests of their subjects, and like any good nanny state, is trying to protect their people from these dangerous thoughts. Enter Google. Google, who proudly proclaimed that it did not censor search results, has decided that to best serve the Chinese market, they'll take direction from the Chinese government as to what people should be able to see. Now, i believe Google has good motives; you can read their defense here. However, I'm still dismayed for a few reasons:
- Google has officially removed their Official Censorship statement. In their FAQ, they had a heading titled "Does Google censor search results?" The very first sentence was "Google does not censor results for any search term." The entire FAQ heading has now been removed. They didn't try to explain their position, or justify why they've decided to censor. Instead, the FAQ term just disappeared. My question, if this was a common Frequently Asked Question before, do they really think it ISN'T now? (Read more: here)
- When a company decides to forgo one of their key foundation principles in pursuit of some other goal (profit, or new markets, or to benefit the Chinese people...), they are stepping down a slippery slope. Sure, maybe censoring for China isn't a big deal (and at least Google, unlike MSN or Yahoo! put a notice on the search results saying the results were censored), but once a concession has been made for China, how long before one is made for Saudi Arabia, Cuba, Canada, the United States?
Of course, there are lot's of folks poking fun, and I'd be remiss not to share a couple of those... Michelle Malkin is running a competition for new Google logos. You can find the first two batches here and here. I'll post just a couple...


Every now and then I REALLY need to replace some text with some other text in a whole series of directories. This is especially true when working with MOC course, with LOTS of references to a server name in all sorts of solutions.
There's a GREAT tool that does simple search and replace, through any number or type of files, regardless of directory depth called ReplaceEm. And, it's FREE! The developer just wants you think of FitSoftware when you need some software development done. Download it here.
Code camp is this month! It comes to the DeVry campus on October 22nd and 23rd. Yep! That's a weekend, and that means you don't have to ask for time off work to attend.

If you missed the Code Camp in Portland, this is your chance. I attended and spoke there, and it was the best conference I've ever attended, including PDC 2005 and TechEd 2005! It's a great idea. Just coders talking to coders! Every presentation includes CODE, and there's no marketing... And the presenters are all coders.
It's FREE to attend! And, if you'd like to speak, you can submit an abstract. You don't get paid for speaking, but you do get to talk about something cool! Here's a quick summary. You can read more about it, and register, here.
Code Camp Details We are going to have 13 tracks and probably 300+ attendees (we have capacity for ~1000). Portland registered 300 in two weeks. This is our first Camp so we don't really know how many will attend. We are looking for about 80-90 talks for the two days. There will be a big publicity push this week and every week till the start of the camp.
Code Camp is devoted to coders, regardless of platform, OS or favorite programming language. That means we are encouraging talks in lots of disciplines. We want to cross-pollinate the developers in the area - exposing them to ideas and tools that they may not have seen before.
Code Camp is open for kids and teens too. At the Portland Camp there were numerous fathers there with their 10-16 year old kids. The younger ones were totally thrilled to be there.
Code Camps encourage new speakers to join in too. Friday night we will have a gathering for speakers which includes speaker training and the opportunity to talk to seasoned presenters.
Dates: October 22,23, 2005 Times: Daytime BBQ: Saturday Evening Location: DeVrys University -- Federal Way WA Cost: Free Payment to Speakers: None Session Length: Variable but most will be 75 minutes Registration: If you are a speaker you must be registered for the event.
Tracks Client Development Database Fundamentals Game Development Hands On Labs Hobbyist Methodology Languages And Frameworks Mobile Security Web Development XML And The Web Migration
Those of you who know me well, likely know I'm a big fan of TradeSports, a marketplace where you can trade options in things like political races, supreme court nominees and European metric football (soccer) matches. (They had the 2004 election nailed prior to the polls closing, unlike the pollsters who were still confused two days later.) So when Google announced on their blog that they were using an internal options exchange to predict their launch dates, when managers would quit and other important internal pieces of information, I was excited. Even more exciting is they've totally geeked out, even showing graphs like entropy of their decision prices over time. But the most exciting thing... IT WORKS! Google is able to predict their launch dates with a remarkable degree of accuracy! Microsoft, can we have some predictive markets for your launch dates? Pretty please?
You can find the article here. (Hat tip: Marginal Revolution)
Ever get tired of pushing numbers on your phone repeatedly just to get through to an operator or helpdesk employee, when you KNOW that your answer can't be handled by the automated system. Sometimes there's a workaround, a fast way to get to a human. And the wonderful folks at Intuit Quickbase have a list of many commonly called companies, along with the secret handshake to get to a human fast! They call it their Find-A-Human -- IVR Phone System Shortcuts list. Find it here.
I especially like this one!!! They make it hard, but it can be done!!!
Dell Customer Service (800-624-9897) : option 1, xt 7266966, option 1, option 4, option 4

I just found out that Martin Danner of Arrowrock (one of the professionals that Accentient has proudly worked with several times) has just passed the Project Management Professional certification exam. It's a 4 hour exam, and that was the last step in Martin's Project Management certification! Even before his certification, Martin has excelled at Project Management. He's managed several of our projects here at Accentient, and I'm proud to say that the one's he's managed have been some of our most successful! Congratulations, Martin!
This adds to his already impressive credentials and certifications, including being an Architecture MVP for Microsoft.
Rich, my business partner and coblogger (his personal blog is here), is presenting a full day on Visual Studio Team System at the Wintellect Devscovery seminar at Microsoft. Great presentation that follows a development lifecycle all the way from Project Manager creation, to Architecture design, to Development and Testing. All the major roles and technologies are covered. Fun stuff!
Listening to Jeff Richter talk about Application Domain and Remoting. He's a good presenter, and very fun to listen to! Lot's of energy, but more importantly, very knowledgeable! I have a weakness for low level computer details (compiler details, behind the scenes optimizations, etc), and Jeff has tons of great nuggets! For instance, the ThreadAbortException is rethrown by the runtime, even if it is caught! In order to stop this, you need to call the ResetAbort() method, which requires certain permissions. Great use! This allows us to load possibly malicious code into an app domain with restricted permission, then any malicious code can't swallow an aborted thread, and continue to consume resources. Cool. See? Neat stuff! If you haven't seen Richter speak, or read one of his books, I recommend it!
Up front: I believe that Lines of Code is a USELESS metric. However, people are often shocked by the raw number of lines of code that are written each day by a developer. What's your guess? 1,000? 200? Try just under 20. This is basically the number of lines of code in a released project divided by the number of programmer days, so, just because you can write 1,000 buggy lines of code per day, that doesn't make you productive! It's the post bug-fix, post integration testing, post-everything lines that count. (You can find some background here and here.)
It's my math background... But I just have to post this!
Google is offering 14,159,265 shares of stock. That's the first 8 digits of the decimal expansion of Pi. Cool.
I've just arrived in Orlando, Florida for TechEd 2005. I'll be giving a full day presentation on Security (Level 300-400) at the Peabody Hotel on Sunday, June 4. Drop by if you'd like!
Martin Danner (web site) of Arrowrock has agreed to assist us in developing Microsoft Official Curriculum (MOC) for Visual Studio Team System (VSTS). He's an expert in process methodologies, UML and project management -- all critical experiences for us right now! Plus he's a smart developer with solid business experience, and an overall great guy.
Looks like he'll also be writing some VSTS Whitepapers for MSDN, and also becoming a general VSTS expert. Welcome aboard, Martin!
Rich Hundhausen (blog) showed me a great site today. It's http://bink.nu/CodeNames.bink. It's got all (or nearly all) of the MS codenames for their various products. Fun site to browse.
Well, we did it! After much hand wringing and deep conversations, we decided to hire our first 1099 employee. Gary Gumbiner has agreed to work for the next few months on a project for Microsoft and Lionbridge. He'll be working on designing (and possible developing) a course in IIS6 for general system administrators. We're not making squat monetarily on the deal, however, it is allowing us more depth and capacity as a company. That's something we're very concerned with since we've been having to turn down a great deal of work lately.
Gary is a great guy, with experience as a Subject Matter Expert (SME) on earlier MS courses. He's also worked with 3Leaf, another great company based in Portland, Oregon. We're happy to have him on board!
I posted earlier that I had installed X1, the fantastic (if expensive) desktop search on an earlier OS install, and that I loved it. Well, Yahoo! has licensed it, and it's available for free download at http://desktop.yahoo.com/. I installed the free version, and LOVE it! Like X1, it handily beats Lookout and Google Desktop. I highly recommend it! By the way, if you ever search emails using the internal Outlook search, or search for files on your hard drive, you NEED a tool! And this one is the best I've found. A great review of Yahoo! Desktop Search can be found here.
Whoops! I've got a Gmail account! Interesting problem. Google was inadvertantly placing random emails into the “Reply To” field of emails. That's right. Whole emails were accidentally being dropped into the “Reply To” field of someone else's email. The good folks at Google have it fixed now. You can read all about it at BetaNews.
Simon Meacham has a wonderful post on performance implications, and profiling applications. When I talk about the importance of caching I often talk about how slow hard drive access is. But this quote really drives it home!
Now 2GHz is a difficult thing to imagine for a human. Put simply that is 2 billion (Dr Evil pose) instructions per second at maximum throughput. So lets put this on our terms. Let's say once processor “clock cycle” is not 1/2,000,000,000 of a second but rather 1 second. On that scale accessing the nearby L1 on-chip cache takes 6 seconds, the off chip (L2) cache 2-3 minutes, and accessing main memory takes 3-4 weeks. Accessing the disk (just one disk access) by comparison takes a whopping 1 year on this timescale.
Read the whole post! http://blogs.msdn.com/simonme/archive/2004/05/31/145024.aspx
“Microsoft Corp. today released a new security patch for its Internet Explorer (IE) web browser which prevents users from accidentally or intentionally downloading the new free, open-source Firefox browser from The Mozilla Foundation.“
No, it's not true. Nor is it an urban legend. Just a very humorous, and very short, article by Scott Ott at ScrappleFace. Regardless of your stand on the browser wars (I'm an IE6 user), it's very funny! You can read the whole article at http://www.scrappleface.com/MT/archives/001990.html
You might also want to check out the other articles at ScrappleFace, too. It's a great humor site in the spirit of The Onion but without the profanity and vulgarity.
|