Scott Hanselman

Hanselminutes Podcast 104 - Dave Laribee on ALT.NET

March 21, '08 Comments [6] Posted in ASP.NET MVC | Learning .NET | Nant | NCover | NUnit | Podcast
Sponsored By

RWS2-Big My one-hundred-and-fourth podcast is up. In this episode I talk to the always thought-provoking David Laribee (blog) who coined the term ALT.NET just last year. It's turned into a Open Spaces Conference and continues to challenge the status quo, reminding .NET developers of the importance of being agile and enabling processes for continuous improvement.

What does it mean to be to be ALT.NET? In short it signifies:

  1. You’re the type of developer who uses what works while keeping an eye out for a better way.
  2. You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
  3. You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
  4. You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles 

Subscribe: Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

If you have trouble downloading, or your download is slow, do try the torrent with µtorrent or another BitTorrent Downloader.

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate about Telerik is their commitment to completeness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Hanselminutes Podcast 54 - Squeezing Continuous Integration

March 9, '07 Comments [2] Posted in Nant | NCover | NDoc | NUnit | Podcast | Programming | Tools
Sponsored By

My fifty-fourth podcast is up. In this episode we continue the discussion started in Episode 4 - Continuous Integration. We're fortunate to be joined by Jay Flowers, maker of CI Factory, a Continuous Integration Accelerator that lets you get a continuous integration build running in minutes, not days. It's a generator that creates build scripts, CruiseControl server files, project structure and more. Take a look at version 0.8 and the screencast on installation and setup. We believe that there's more to just Build and Test...you can automate everything and even have your build server pop out ISO images, CDs, or complete configured Virtual Machines. Enjoy.

ACTION: Please vote for us on Podcast Alley! Digg us at Digg Podcasts!

Links from the Show

Jeff finally gets with it (mm0)
Backup Package (mm5)
How to make a CI Factory Package (mma)
Code Churn, Predicting how may bugs (mm1)
Playing for Real, More Than a Scoreboard - Threshold Package (mm6)
CI Factory Installation (mmb)
VSTS Integration (mm2)
Analytics Package - Xsl exsl:document or multi-output (mm7)
Phil Haack A Comparison of TFS vs Subversion for Open Source Projects (mmc)
Updated AsyncExec stuff (mm3)
Analytics Package Screen Capture (mm8)
Traceability and Continuous Integration (mmd)
AsyncExec stuff (mm4)
A Recipe for Build Maintainability and Reusability (mm9)

Subscribe: Feed-icon-16x16 Subscribe to my Podcast in iTunes

Do also remember the archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Our sponsors are Telerik and /n software.

Telerik is a new sponsor. Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate about Telerik is their commitment to completeness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

  • The basic MP3 feed is here, and the iPod friendly one is here. There's a number of other ways you can get it (streaming, straight download, etc) that are all up on the site just below the fold. I use iTunes, myself, to listen to most podcasts, but I also use FeedDemon and it's built in support.
  • Note that for now, because of bandwidth constraints, the feeds always have just the current show. If you want to get an old show (and because many Podcasting Clients aren't smart enough to not download the file more than once) you can always find them at http://www.hanselminutes.com.
  • I have, and will, also include the enclosures to this feed you're reading, so if you're already subscribed to ComputerZen and you're not interested in cluttering your life with another feed, you have the choice to get the 'cast as well.
  • If there's a topic you'd like to hear, perhaps one that is better spoken than presented on a blog, or a great tool you can't live without, contact me and I'll get it in the queue!

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Sandcastle - Microsoft CTP of a Help CHM file generator on the tails of the death of NDoc

July 30, '06 Comments [12] Posted in PowerShell | DasBlog | Subversion | NUnit | NCover | Nant | XML | Bugs | Tools
Sponsored By

Sandcastle1Moments ago (my time) the Sandcastle CTP was released. Here's the Sandcastle Blog and here's a PowerPoint presentation on the new project. This is a very early CTP from Microsoft that supports generating documentation from any .NET language, much like NDoc.

It's great that Microsoft is paying attention to the whole "need for help files thing." However, be warned, this is uber-early stuff, and not very smooth. Actually, it's pretty darned rough. The instructions on what your batch/build/msbuild/powershell/whatever is going to need to orchestrate is here. The instructions are ghetto. Here's a slightly less ghetto Powershell script that will at least compile the example, assuming you have Powershell.

  • Assuming you have .NET 2.0 SDK and Powershell...you'll need to, of course, enable scripts via something like set-executionpolicy unrestricted
    • Note: Powershell has nothing to do with Sandcastle. I just did the script because it's wicked easy in PSH.
  • Download Sandcastle July CTP.
  • Run this Powershell script of mine to build the example: File Attachment: sandcastledoc.ps1 (1 KB)

Remember you'll need HTML Help Workshop if you're going to make CHMs (Compiled Help files). Here's the compiled example test.chm: File Attachment: Test.chm (31 KB)

Sandcastle for .NET 1.1

One note, I was able to get Sandcastle to generate help for a .NET 1.1 application, which is a very important developer scenario I hope they don't forget about. However, Sandcastle linked the 1.1 help up to the Framework 2.0 XML help for the .NET Framework BCL (Base Class Library) by default. If you change the sandcastle.config to refer to
<data files="%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\*.xml" /> (line 48 in this CTP)
it appears to link up nicely for 1.1 apps even though Sandcastle uses .NET 2.0 for its reflection.

NDoc: The Death of a (great) Open Source Project

On a related note, it's going to take a while (6 months to a year?) for Microsoft to really get Sandcastle to the point where Kevin Downs got NDoc. Will this new tool be as rich and useful? Or will it be forgotten like HTML Help Workshop?

Recently Kevin Downs, the leader of NDoc, emailed a NDoc folks announcing that NDoc is dead. I was shocked to get this email, but sadly, not surprised. Here's an important part of his email:

Unfortunately, despite the almost ubiquitous use of NDoc, there has been no support for the project from the .Net developer community either financially or by development contributions. Since 1.3 was released, there have been the grand total of eleven donations to the project. In fact, were it not for Oleg Tkachenko’s kind donation of a MS MVP MSDN subscription, I would not even have a copy of VS2005 to work with!

To put this into perspective, if only roughly 1-in-10 of the those who downloaded NDoc had donated the minimum allowable amount of $5 then I could have worked on NDoc 2.0 full-time and it could have been released months ago! Now, I am not suggesting that this should have occurred, or that anyone owes me anything for the work I have done, rather I am trying to demonstrate that if the community values open-source projects then it should do *something* to support them. MS has for years acknowledged community contributions via the MVP program but there is absolutely no support for community projects.

Apparently Kevin started getting threats - yes, you heard right, threats - about a .NET 2.0 version and has been email-bombed. He's rightfully decided to bow out after a successful run.

If you're a fan of the whole N* stack, you've used NAnt, NUnit, NDoc, NCover, for years. We take for granted that these programs just work. They are fundamental. Some folks think they are our right to possess, but they forget about the real people with real lives that write this Open Source stuff in their spare time.

Hanselman Editorial Aside: It's a shame that Microsoft can't put together an organization like INETA (who already gives small stipends to folks to speak at User Groups) and gave away grants/stipends to the 20 or so .NET Open Source Projects that TRULY make a difference in measurable ways. The whole thing could be managed out of the existing INETA organization and wouldn't cost more than a few hundred grand - the price of maybe 3-4 Microsoft Engineers.

Phil makes a good point when it compares Open Source to "Source Available" with regards to Community Server. It's great that some OS products can turn into commercial apps with an OS "lite" version.

For "base of the pyramid" fundamental stuff like Build, Test, Coverage, Docs, will we pay for them? We should. Should we have given the NDoc project $5? Did NDoc help me personally and my company? Totally. Did I donate? No, and that was a mistake. I agree with Phil. Support those 5, 10, 20 truly Open Source projects with a little of your time or money.

Personally, as an Open Source project co-leader, I'd much rather folks who use DasBlog pick a bug and send me a patch (unified diff format) than give money.  I suspect that Kevin would have been happy with a dozen engineers taking on tasks and taking on bugs in their spare time.

We are blessed. This Open Source stuff is free. But it's free like a puppy. It takes years of care and feeding. You don't get to criticise a free puppy that you bring in to your home.

Goodbye Kevin and thanks for your hard work on NDoc.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Open Source versus Source Out in the Open

April 25, '06 Comments [8] Posted in DasBlog | NUnit | NCover | Nant | XML | Bugs
Sponsored By

An interesting point came up during my talk at Deeper In .NET on Saturday. (Korby Parnell has a flattering writeup as does Avonelle, BTW)

There's a difference between "Open Source" and "Source in the Open."

I've seen folks copy and paste directly from Google Groups and when prompted for a bit of code's origin they announce "It's Open Source."

Despite what many folks may have gleaned from some recent thinking out loud, I'm a fan of Open Source. Within the context of just .NET, I think that the (Windows Development) world is a much better place due to widely successful Open Source applications like NAnt, NUnit, log4net, NCover, Subtext, SharpDevelop, etc.

These projects are great places to learn how to code in .NET.

I made a comment at a conference once, where a lot of folks were badmouthing XML, complaining that the XML spec misses a number of important, albeit edge, cases and that it was generally a mess. Not meaning to be snarky (but succeeding) I introduced our next talk saying "I can't talk to the previous speakers concern about XML, but at Corillian we use success as a metric."

That's really what it comes down to. When you copy/paste/refactor/beg/borrow/steal someone else's code and put it into your application it's important that you know at least two things:

A. What it does.
2. That it works.

When one finds code in production (and you know you've found this yourself) with a link to a Google Group's thread embedded within the code's comments, you might want to pause a moment.

I'm much more likely to snarf an algorithm or technique from NUnit or SharpDevelop because I know those applications work and work well. They are successful by virtue of the fact that they are used. What they lack in Unit Tests they make up in sheer code coverage.

DasBlog has a number of nasty bugs lurking, some we know about, most we don't. However, it's tested every day on this blog and others. I know what it's good at and what it's not.

When an application is a trusted, used, successful "Open Source" Application, chances are it's code is more trustworthy than "Source in the Open."

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web

Leaning on the Language and Leaning on the Libraries

February 23, '06 Comments [2] Posted in ASP.NET | Web Services | XmlSerializer | NCover | CodeRush | HttpHandler | Tools
Sponsored By

Coderush2What fun I'm having. I'm collaborating on a project for work. We're still using Visual Studio 2003 and .NET 1.1, but we're still wildly productive.

One interesting thing I've learned is that I lean on the libraries, while Paul, my counter-part leans on the language. He knows what language constructs to use and I know what BCL methods to use. Together we make an effective pair, but this realization helped us both better understand our weak areas. One can write lots of C in C#, if you know what I mean.

Do you lean on the language or the libraries?

We've been doing some fun stuff with XML lately, you might have noticed. We've used:

Also. we're using:

class KindOfPartialSgmlButMoreOfAnOfxXmlWriter : XmlWriter

{

    public KindOfPartialSgmlButMoreOfAnOfxXmlWriter(TextWriter w)

    {

        _htmlWriter = new HtmlTextWriter(w);

    }

 

    public override void Close()

    {

        _htmlWriter.Close();

    }

 

    private Stack _tags = new Stack();

    private HtmlTextWriter _htmlWriter = null;

    private bool _suppressNextEndElement = false;

    private bool _suppressNextText = false;

    private string _previousElement = null;

 

    public override void WriteStartElement(string prefix, string localName, string ns)

    {

        _htmlWriter.WriteFullBeginTag(localName);

        _previousElement = localName;

        _tags.Push(localName);

    }

 

    public override void WriteString(string text)

    {

        if (_suppressNextText == false)

        {

            _htmlWriter.Write(text);

            _suppressNextEndElement = true;

        }

    }

 

    public override void WriteEndElement()

    {

        string endtag = _tags.Pop() as string;

        if (_suppressNextEndElement && endtag == _previousElement)

        {

            _suppressNextEndElement = false;

        }

        else

        {

            _htmlWriter.WriteEndTag(endtag);

        }

    }

 

    public override void Flush()

    {

        _htmlWriter.Flush();

    }

 

    public override void WriteWhitespace(string ws)

    {

        _htmlWriter.Write(ws);

    }

 

    public override void WriteRaw(string data)

    {

        _htmlWriter.Write(data);

    }

 

    public override void WriteChars(char[] buffer, int index, int count)

    {

        _htmlWriter.Write(buffer, index, count);

    }

 

    public override void WriteQualifiedName(string localName, string ns)

    {

        _htmlWriter.WriteBeginTag(localName);

    }

 

    public override void WriteEndAttribute()

    {

        _suppressNextText = false;

    }

 

    public override void WriteStartAttribute(string prefix, string localName, string ns)

    {

        _suppressNextText = true;

    }

 

    public override void WriteRaw(char[] buffer, int index, int count)

    {

        _htmlWriter.Write(buffer,index,count);

    }

 

    public override void WriteProcessingInstruction(string name, string text)

    {

        _htmlWriter.Write(text);

    }

  

    #region Stubs

 

    ...here are overriden versions of everything else from XmlWriter, stubbed and not used. Removed for tidiness

 

    #endregion

}

 

 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Page 1 of 3 in the NCover category Next Page

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.