January 2004 - Posts

Collaboration in the IDE

The ACM Queue has an interesting article on Building Collaboration into an IDE. The authors have been prototyping a version of Eclipse where IM, source control, screen sharing, and email augment the IDE. The goal is to give you more time to code while you spend less outside the IDE or away from the desk. Another goal is to provide additional context and traceability between code artifacts (source code files) and collaborative artifacts (IMs and emails).

I couldn’t stop thinking of questions and ideas while reading, particularly along the lines of how easy it might be to build this with Longhorn technologies.

This made me think of WinFS:

“For example, metadata that links source code with e-mail needs to be stored somewhere—perhaps with a special header field or with an URL. Where to store collaborative artifacts is another issue: You could try to juggle multiple stores (e.g., one for e-mail, one for source code, one for discussion forums, one for chat transcripts, one for bug tracking, etc.), or you could attempt to consolidate everything into a single store (e.g., the source-control repository).‘

This made me think of Indigo:

“An IDE augmented with collaboration requires some kind of supporting network infrastructure. Designing such an infrastructure raises the interoperability issues mentioned earlier (e.g., support for directory services, standards for messaging, etc.).”

Some things I read I just wish were already in VS.NET, like hovering over a checked-out file will tell you who has the file checked out, instead of just “another user”. It would be nice to put a watch on a file and have the IDE notify me when the other user checks the file in.

Being a Visual Source Safe user, it would also be great if the source control product didn’t feel 8 years old. I know MS is working on updating VSS, but I think there is a lot of catching up to do just to make it a solid and trustworthy product. Then I want all the all the bells and whistles and extensible plug-in support.

posted by scott with 0 Comments

Reporting Services Launch

Reporting Services has an online launch web cast tommorow (the 27th).

I’ve never, ever, ever, been excited about report writing software, nor about integrating report writing software into a product. It is one of those mundane tasks you have to get tough and do now and then, like going to your bi-annual dental checkup. However, there is something about a web service API and an XML based report definition language that makes me want to give it a go soon and replace the “other” reporting software in a current application I work on.

I’m not alone in thinking the “other” reporting software drives programmers to shout vulgarities. An informal poll shows if the “other” reporting software was a person, a majority of developers would want to “give it a sharp kick in the knee”.

I think some of backlash comes from the “it is so easy anyone can do it” hype. I once had to monitor a 2 day training class (subject for another story) where unsuspecting victims were trained to use the “other” reporting software. None of these four had ever seen a SQL statement before in their lives. The expectation was for the trainees to be able to start cranking out ad-hoc reports on a 100+ GB data warehouse immediately afterwards. Can you say stress test?

The beta looked pretty solid. I’m sure reporting services is going to make some big inroads by the end of the year.

posted by scott with 0 Comments

.NET not Rocking on my Sony

I’ve just about had it with my Sony MiniDisc Walkman. It’s not the hardware – it’s the bundled OpenMG Software.

My latest disappointment comes when I try to listen to .NET Rocks! The Sony doesn’t actually play MP3 and WMA files - you need to use OpenMG to record the audio content to a MiniDisc which uses ATRAC encoding.

This is how it all works in theory.

.NET Rocks was the first chance I’ve had to record a WMA to the player. It turns out the OpenMG algorithm for WMA decoding looks something like this:

            DisableCancelButton();
            while(true)
            {
                  AllocateBigChunksOfMemory();
            }
 

It is both impressive and terrifying to watch the diagonal line in task manager’s graph of page file usage.

Even MP3s are a pain. I’ve installed a plethora of re-sampling software because OpenMG decodes MPEG1 44100 Hz Stereo only. I like to listen to audio books during my commute and most spoken word recordings are done at less than CD quality sampling, or in mono, or both. OpenMG designers were thinking music only. I just finished a Robert Heinlein novel (Starman Jones), and if I ever get this working the .NET Rocks! Rory Blyth interview is up next. Somehow mentioning these two in the same sentence doesn’t seem that odd.

Some other good (but getting old) technical audio content is available at Dr. Dobb’s Technetcast. DDJ seems to not be updating the content anymore, but some of my favorites are Scott Guthrie’s Why We Built ASP.NET, a pre-Microsoft Don Box talk about shifting to .NET, and the Shared Source vs Open Source Panel Debate where David Stuz and Craig Mundie of Microsoft face a pro-GPL, anti-patent, anti-Microsoft crowd and manage to escape without physical harm. Mundie did a remarkable job handling some tough questions in front of a tough crowd. Very eloquent answer to a question about “what is the Microsoft Community?”

Of course there are also talks like “Getting to Grips With Secure DNS”. Fortunately, fellow commuters in the Baltimore/DC metro area are quick on the horn when they sense a driver asleep at the wheel.

posted by scott with 0 Comments

In Synch With Sells

In my last post I was wondering how to set the MappingName property of a DataGridTableStyle object with some generic code. This morning I fire up my aggregator only to find Chris Sells was thinking along the same lines, and being Chris Sells – he also provides the answer I needed.

 I love blogs - especially the ones from inside Microsoft.

Once again I updated the Auto Resizing Columns In A Windows Form DataGrid article with the new found information.

posted by scott with 0 Comments

Auto resize DataGrid columns

I just updated an article on OdeToCode which resizes the columns in a Winforms DataGrid to match the longest content. Although I'm fairly happy with the reflection method - I'm still wondering how to determine the MappingName property without an ugly switch statement. This feature was in the early beta of VS.NET - I wonder why it dropped?
posted by scott with 2 Comments

Uptime

I know people who will laugh at me but I am positive Windows gets a really bad rap on uptime. I was in crunch mode recently and hammering on my 2000 Server desktop at the office. I’d actually terminal service into the machine on my desk (while at my desk) so when I had to leave I could just disconnect the session. Later I’d terminal service from home over a VPN and pick up right where I left off.

At one point I began thinking it had been a long time since I logged out of this terminal service session, much less rebooted the computer. I grabbed an UPTIME utility and saw it was 89 days since the last reboot.

Around day 98 my co-workers began to become annoyed with me talking about hitting “the big 1 – zero – zero”. One person threatened to come into the office some night and power the machine down.

The real problem started around 110 days of uptime. I received an internal CD writer drive for the machine. I wanted to see how long I could keep the machine up, so I hid the drive under my desk.

Around day 120 I was getting very nervous. A co-worker started asking if I was ever going to use the drive. When working at a startup you can’t just leave unused resources laying around. People will scavenge any piece of extra equipment that isn’t tied down, bolted, duct taped, and labeled clearly with your name in permanent ink. You can’t even leave a spare CAT5 cable laying around much less a CD burner. After some ceremony, I powered down, opened the case, and installed the drive.

I’ll never know how long the machine could have gone – but I do know current uptime is 32 days, 10 hours, 55 minutes, and 16 seconds. Still a long way to go to catch up to the servers with the longest uptime on the net.

posted by scott with 0 Comments

Nifty New Downloads

I found a few interesting downloads over the last couple days.

The Open Watcom C/C++ compiler 1.2 Get the binaries and source code here. I have not used a Watcom compiler for 10 years but I am curious to peek around the source code. (via Slashdot).

Microsoft has a 45 day trial download for Virtual PC. If you are a dev and not running a VPC of some sort, you probably should be.

For those of you into OLAP:

Creating Large-Scale, Highly Available OLAP Sites is a must read if you are rolling out a mission critical solution with Analysis Services. Many good pratical answers on how to cluster, stage and setup a solid enviornment.

The OLAP Scribe is a Word macro that uses DSO to dump OLAP database metadata into a nicely formatted Word document.

posted by scott with 0 Comments

Best Whidbey Feature Found So Far

I was experimenting with Whidbey and found some really nice new features. My favorite feature, however, is the new File-system web site. You can keep all the files for an ASP.NET app in a simple folder – no dependency on IIS!

This is great news. On several occasions I’ve been driven to screaming fits of hysteria with Visual Studio and where I want a web application to be. I’m tired of editing virtual directory properties and hacking .webinfo files. Simply copying code to a different location or computer should not be this hard (or this hard). The first time I put an ASP.NET app into source control for team development it was quite the ordeal – but that long before they started publishing 17 page and 30 page white papers on the subject.

 

posted by scott with 0 Comments

Robot, Heal Thyself

So I follow a medical informatics blog since it is sometimes relevant to software I’m currently working on. The blog had a post about an Alabama Hospital trying out an “RN Robot”. This reminded me of a Wired article last year about a Hopkins trail with a “robotic medical surrogate”. I found this article interesting but also amusing because of the following two excerpts:

"People love it. I was very surprised how much our patients enjoy remote video interactions via the robot," says Dr. Louis Kavoussi, a Johns Hopkins professor of urology and a pioneer in robotic surgery

… One patient said she barely noticed Kavoussi had been replaced by a robot.

Obviously amusing to read. Also:

"Even the patients with dementia seemed unsurprised by (the robot's) presence,"

I can imagine there are some patients with illnesses where you just don’t want an android rolling into the room unexpectedly.

In any case, this got me to thinking about some of the hospitals I’ve been in with my current job. The number of nurses who have moved into IT departments initially surprised me. After talking to them, it is pretty obvious why. After ten or fifteen years of being on call and working the midnight shift on a holiday weekend before a major blizzard, any position which is (in theory, anyway) a 9-5 job looks pretty swell. Nurses are highly educated people who can learn new concepts.

What also surprised me was the reporting software some of these nurses / IT people need to use. The report language looks something like:


…
@Est.buf(BUF,@ptemp),
IF{@occupation!@emp.status @occupation_IF{@emp.status " ("_@emp.status_")"}^/MV["P",Q+1^Q,5]},
IF{@employer^employer,
…


Egads. I thought I was back in a mainframe college course 15 years ago. This is not legacy software - this stuff is sold and installed today.

But that’s ok – wherever there is inefficiency there is opportunity…

posted by scott with 0 Comments

Good and Bad Software

Currently on my bad software list is the MSDN search engine. It seems it has been many months since the search engine worked well. Last night a search produced results where the same article appeared about 100 times in the result list. Search results never seem to find MSDN Magazine articles, unless you go to the home page and search just magazine content. It used to find them. It seems very broke.

On the good software list is Virtual PC.

I currently have the following Virtual PCs setup:
  • Whidbey - Windows 2000 Server with the Whidbey beta installed
  • RSBETA - Windows 2000 with the Reporting Services beta and SQL 2000 installed
  • Mandrake - Mandrake 9 distro of linux. Complete with a functional Mono .NET environment.
  • Longhorn - The PDC build of Longhorn, with Whidbey and the SDK installed.
  • Experiment 2000 - My Win 2000 plaground for trial software, etc.
  • Exchange - Where I installed Exchange Server 2003 to play around.
  • CSK2000 - Where I play with the ASP.NET Community Starter Kit on Windows 2000
  • CSK2003 - Where I play with the ASP.NET Community Starter Kit on Windows 2003 WebEdition

Virtual PC is a great way to experiment with software, test, use different browser versions - there are so many possibilities. It has an undo feature to reset any changes you've made - so even the worst software install can be undone. I keep a Virtual PC image of a Windows 2000 SP4 install around, and whenever I need a new virtual PC I make a copy of the file, attach it to a Virtual PC, and I'm off.

Best of all it keeps my primary OS (2003 Enterprise Server) nice and tidy.
posted by scott with 1 Comments

Improving .NET Application Performance and Scalability

A newsgroup posting caught my eye and took me to the home of the Microsoft Performance Team. They are working on a guide for anyone interested in the performance and scalability of .NET applications and soliciting feedback.

After reading just two of the chapters (on ASP.NET and ADO.NET) I realized this guide is going to be the reference for .NET performance. It leaves very few stones unturned and mentions or references almost every perf tip I know of (and quite a few I did not). Why do jagged arrays perform better than multidimensional arrays? When could an ASPX page get compiled into a single asembly? The guide is super.

I thought of a few ideas while reading through, and since they are soliciting comment I sent some along. I'm interested to see or hear if they have an impact.

posted by scott with 0 Comments

Who Is The Mole?

Watched the season premier of Celebrity Mole. I think the first season of the Mole (no celebrities) was much better – the puzzles and games were more interesting and harder for the players to solve. On the other hand, there is a lot more comedy in the celebrity version. There are some genuinely funny moments, but I keep wondering, with celebrities, that some of what happens is scripted (or at least encouraged).

So my first guess at the Mole? Dennis Rodman. Usually the Mole has a reserved personality. Most people would not describe Dennis as reserved - but - the “I really don't care what happens” attitude works pretty well for someone who wants to cover thier mole tracks...

posted by scott with 0 Comments

HttpModule Catch-22

I have the .Text engine running in an application underneath the ASP.NET Community Starter Kit. This required a bit of fiddling, because the CSK installs an HttpModule at the application root. When a request goes to the Blogs directory (.Text), the ASP.NET runtime doesn't find the CSK module in the .Text /bin directory and throws an exception (the assembly is in the CSK /bin directory - one level higher).

I thought this would be easy to fix with a tweak in the <httpModules> section of the .Text web.config:

    <remove name=“CommunitiesModule“ />

However, I was still getting an exception. After some google searches I determined the workaround is to place the assembly with the HttpModule into the /bin directory of the application which doesn't use the assembly in order for it to then be removed with the above entry.

This makes sense in a Joseph Heller sort of way....

There was only one catch and that was Catch-22, which specified that a concern for one's safety in the face of dangers that were real and immediate was the process of a rational mind. Orr was crazy and could be grounded. All he had to do was ask; and as soon as he did, he would no longer be crazy and would have to fly more missions. Orr would be crazy to fly more missions and sane if he didn't, but if he was sane he had to fly them. If he flew them he was crazy and didn't have to; but if he didn't want to he was sane and had to. Yossarian was moved very deeply by the absolute simplicity of this clause of Catch-22 and let out a respectful whistle.
"That's some catch, that Catch-22," he observed.
"It's the best there is," Doc Daneeka agreed. 

posted by scott with 4 Comments