.net

January 4, 2015 .net spout

Handling Orientation Changes in Xamarin.Forms Apps

Handling Orientation Changes in Xamarin.Forms Apps

By default, Xamarin.Forms handles orientation changes for you automatically, e.g.

ss1[5]

ss4

Xamarin.Forms handles orientation changes automatically

In this example, the labels are above the text entries in both the portrait and the landscape orientation, which Xamarin.Forms can do without any help from me. However, what if I want to put the labels to the left of the text entries in landscape mode to take better advantage of the space? Further, in the general case, you may want to have different layouts for each orientation. To be able to do that, you need to be able to detect the device’s current orientation and get a notification when it changes. Unfortunately, Xamarin.Forms provides neither, but luckily it’s not hard for you to do it yourself.

Finding the Current Orientation

To determine whether you’re in portrait or landscape mode is pretty easy:

static bool IsPortrait(Page p) { return p.Width < p.Height; }

This function makes the assumption that portrait mode has a smaller width. This doesn’t work for all future imaginable devices, of course, but in the case of a square device, you’ll just have to take your changes I guess.

Orientation Change Notifications

Likewise, Xamarin.Forms doesn’t have any kind of a OrientationChanged event, but I find that handling SizeChanged does the trick just as well:

SizeChanged += (sender, e) => Content = IsPortrait(this) ? portraitView : landscapeView;

The SizeChanged event seems to get called exactly once as the user goes from portrait to landscape mode (at least in my debugging, that was true). The different layouts can be whatever you want them to be. I was able to use this technique and get myself a little extra vertical space in my landscape layout:

ss2

Using a custom layout to put the labels on the left of the text entries instead of on top 

Of course, I could use this technique to do something completely differently in each orientation, but I was hoping that the two layouts made sense to the user and didn’t even register as special, which Xamarin.Forms allowed me to do.

January 2, 2015 .net spout

Launching the Native Map App from Xamarin.Forms

My goal was to take the name and address of a place and show it on the native map app regardless of what mobile platform on which my app was running. While Xamarin.Forms provides a cross-platform API to launch the URL that starts the map app, the URL format is different depending on whether you’re using the Windows Phone 8 URI scheme for Bing maps, the Android Data URI scheme for the map intent or the Apple URL scheme for maps.

This is what I came up with:

public class Place {
  public string Name { get; set; }
  public string Vicinity { get; set; }
  public Geocode Location { get; set; }
  public Uri Icon { get; set; }
}
public void
LaunchMapApp(Place place) { // Windows Phone doesn't like ampersands in the names and the normal URI escaping doesn't help var name = place.Name.Replace("&", "and"); // var name = Uri.EscapeUriString(place.Name); var loc = string.Format("{0},{1}", place.Location.Latitude, place.Location.Longitude); var addr = Uri.EscapeUriString(place.Vicinity); var request = Device.OnPlatform( // iOS doesn't like %s or spaces in their URLs, so manually replace spaces with +s string.Format("http://maps.apple.com/maps?q={0}&sll={1}", name.Replace(' ', '+'), loc), // pass the address to Android if we have it string.Format("geo:0,0?q={0}({1})", string.IsNullOrWhiteSpace(addr) ? loc : addr, name), // WinPhone string.Format("bingmaps:?cp={0}&q={1}", loc, name) ); Device.OpenUri(new Uri(request)); }

This code was testing on several phone and tablet emulators and on 5 actual devices: an iPad running iOS 8, an iPad Touch running iOS 8, a Nokia Lumia 920 running Windows Phone 8.1, an LG G3 running Android 4.4 and an XO tablet running Android 4.1. As you can tell, each platform has not only it’s own URI format for launching the map app, but quirks as well. However, this code works well across platforms. Enjoy.

January 1, 2015 .net spout

App and User Settings in Xamarin.Forms Apps

App and User Settings in Xamarin.Forms Apps

Settings allow you to separate the parameters that configure the behavior of your app separate from the code, which allows you to change that behavior without rebuilding the app. This is handle at the app level for things like server addresses and API keys and at the user level for things like restoring the last user input and theme preferences. Xamarin.Forms provides direct support for neither, but that doesn’t mean you can’t easily add it yourself.

App Settings

Xamarin.Forms doesn’t have any concept of the .NET standard app.config. However, it’s easy enough to add the equivalent using embedded resources and the XML parser. For example, I built a Xamarin.Forms app for finding spots for coffee, food and drinks between where I am and where my friend is (MiddleMeeter, on GitHub). I’m using the Google APIs to do a bunch of geolocation-related stuff, so I need a Google API key, which I don’t want to publish on GitHub. The easy way to make that happen is to drop the API key into a separate file that’s loaded at run-time but to not check that file into GitHub by adding it to .gitignore. To make it easy to read, I added this file as an Embedded Resource in XML format:

image

Adding an XML file as an embedded resource makes it easy to read at run-time for app settings

I could’ve gone all the way and re-implemented the entire .NET configuration API, but that seemed like overkill, so I kept the file format simple:

<?xml version="1.0" encoding="utf-8" ?>
<config>
  <google-api-key>YourGoogleApiKeyHere</google-api-key>
</config>

Loading the file at run-time uses the normal .NET resources API:

string GetGoogleApiKey() {
  var type = this.GetType();
  var resource = type.Namespace + "." +
Device.OnPlatform("iOS", "Droid", "WinPhone") + ".config.xml"; using (var stream = type.Assembly.GetManifestResourceStream(resource)) using (var reader = new StreamReader(stream)) { var doc = XDocument.Parse(reader.ReadToEnd()); return doc.Element("config").Element("google-api-key").Value; } }

I used XML as the file format not because I’m in love with XML (although it does the job well enough for things like this), but because LINQ to XML is baked right into Xamarin. I could’ve used JSON, too, of course, but that requires an extra NuGet package. Also, I could’ve abstracting things a bit to make an easy API for more than one config entry, but I’ll leave that for enterprising readers.

User Settings

While app settings are read-only, user settings are read-write and each of the supported Xamarin platforms has their own place to store settings, e.g. .NET developers will likely have heard of Isolated Storage. Unfortunately, Xamarin provides no built-in support for abstracting away the platform specifics of user settings. Luckily, James Montemagno has. In his Settings Plugin NuGet package, he makes it super easy to read and write user settings. For example, in my app, I pull in the previously stored user settings when I’m creating the data model for the view on my app’s first page:

class SearchModel : INotifyPropertyChanged {
  string yourLocation;
  // reading values saved during the last session (or setting defaults)
  string theirLocation = CrossSettings.Current.GetValueOrDefault("theirLocation", "");
  SearchMode mode = CrossSettings.Current.GetValueOrDefault("mode", SearchMode.food);
  ...
}

The beauty of James’s API is that it’s concise (only one function to call to get a value or set a default if the value is missing) and type-safe, e.g. notice the use of a string and an enum here. He handles the specifics of reading from the correct underlying storage mechanism based on the platform, translating it into my native type system and I just get to write my code w/o worrying about it. Writing is just as easy:

async void button1_Clicked(object sender, EventArgs e) {
  ...

  // writing settings values at an appropriate time
  CrossSettings.Current.AddOrUpdateValue("theirLocation", model.TheirLocation);
  CrossSettings.Current.AddOrUpdateValue("mode", model.Mode);

  ...
}

My one quibble is that I wish the functions were called Read/Write or Get/Set instead of GetValueOrDefault/AddOrUpdateValue, but James’s function names make it very clear what’s actually happening under the covers. Certainly the functionality makes it more than worth the extra characters.

User Settings UI

Of course, when it comes to building a UI for editing user settings at run-time, Xamarin.Forms has all kinds of wonderful facilities, including a TableView intent specifically for settings (TableIntent.Settings). However, when it comes to extending the platform-specific Settings app, you’re on your own. That’s not such a big deal, however, since only iOS actually supports extending the Settings app (using iOS Settings Bundles). Android doesn’t support it at all (they only let the user configure things like whether an app has permission to send notifications) and while Windows Phone 8 has an extensible Settings Hub for their apps, it’s a hack if you do it with your own apps (and unlikely to make it past the Windows Store police).

Where Are We?

So, while Xamarin.Forms doesn’t provide any built in support for app or user settings, the underlying platform provides enough to make implementing the former trivial and the Xamarin ecosystem provides nicely for the latter (thanks, James!).

Even more interesting is what Xamarin has enabled with this ecosystem. They’ve mixed their very impressive core .NET and C# compiler implementation (Mono) with a set of mobile libraries providing direct access to the native platforms (MonoTouch and MonoDroid), added a core implementation of UI abstraction (Xamarin.Forms) and integration into the .NET developer’s IDE of choice (Visual Studio) together with an extensible, discoverable set of libraries (NuGet) that make it easy for 3rd party developers to contribute. That’s a platform, my friends, and it’s separate from the one that Microsoft is building. What makes it impressive is that it takes the army of .NET developers and points them at the current hotness, i.e. building iOS and Android apps, in a way that Microsoft never could. Moreover, because they’ve managed to also support Windows Phone pretty seamlessly, they’ve managed to get Microsoft to back them.

We’ll see how successful Xamarin is over time, but they certainly have a very good story to tell .NET developers.

November 26, 2011 tools .net

REPL for the Rosyln CTP 10/2011

REPL for the Rosyln CTP 10/2011

I don’t know what it is, but I’ve long been fascinated with using the C# syntax as a command line execution environment. It could be that PowerShell doesn’t do it for me (I’ve seriously tried half a dozen times or more). It could be that while LINQPad comes really close, I still don’t have enough control over the parsing to really make it work for my day-to-day command line activities. Or it may be that my friend Tim Ewald has always challenged csells to sell C shells by the sea shore.

Roslyn REPL

Whatever it is, I decided to spend my holiday time futzing with the Roslyn 2011 CTP, which is a set of technologies from Microsoft that gives you an API over your C# and VB.NET code.

Why do I care? Well, there are all kinds of cool code analysis and refactoring tools I could build with it and I know some folks are doing just that. In fact, at the BUILD conference, Anders showed off a Paste as VB command built with Roslyn that would translate C# to VB slick as you please.

For me, however, the first thing I wanted was a C# REPL environment (Read-Evaluate-Print-Loop). Of course, Roslyn ships out of the box with a REPL tool that you can get to with the View | Other Windows | C# Interactive Window inside Visual Studio 2010. In that code, you can evaluate code like the following:

> 1+1 2
> void SayHi() { Console.WriteLine("hi"); }
> SayHi();
hi

Just like modern dynamic languages, as you type your C# and press Enter, it’s executed immediately, even allowing you to drop things like semi-colons or even calls to WriteLine to get output (notice the first 1+1” expression). This is a wonderful environment in which to experiment with C# interactively, but just like LINQPad, it was a closed environment; the source was not provided!

The Roslyn team does provide a great number of wonderful samples (check the Microsoft Codename Roslyn CTP - October 2011” folder in your Documents folder after installation). One in particular, called BadPainting, provides a text box for inputting C# that’s executed to add elements to a painting.

But that wasn’t enough for me; I wanted at least a Console-based command line REPL like the cool Python, JavaScript and Ruby kids have. And so, with the help of the Roslyn team (it pays to have friends in low places), I built one:

RoslynRepl Sample Download

Building it (after installing Visual Studio 2010, Visual Studio 2010 SP1, the Visual Studio 2010 SDK and the Roslyn CTP) and running it lets you do the same things that the VS REPL gives you:

RoslynRepl

In implementing my little RoslynRepl tool, I tried to stay as faithful to the VS REPL as possible, including the help implementation:

replhelp

If you’re familiar with the VS REPL commands, you’ll notice that I’ve trimmed the Console version a little as appropriate, most notably the #prompt command, which only has inline” mode (there is no margin” in a Console window). Other than that, I’ve built the Console version of REPL for Roslyn such that it works just exactly like the one documented in the Roslyn Walkthrough: Executing Code in the Interactive Window.

Building a REPL for any language is, at you might imagine, a 4-step process:

  1. Read input from the user
  2. Evaluate the input
  3. Print the results
  4. Loop around to do it again until told otherwise

Read

Step 1 is a simple Console.ReadLine. Further, the wonder and beauty of a Windows Console application is that you get complete Up/Down Arrow history, line editing and even obscure commands like F7, which brings up a list of commands in the history:

replbeauty

The reading part of our REPL is easy and has nothing to do with Roslyn. It’s evaluation where things get interesting.

Eval

Before we can start evaluating commands, we have to initialize the scripting engine and set up a session so that as we build up context over time, e.g. defining variables and functions, that context is available to future lines of script:

using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
using Roslyn.Compilers.Common;
using Roslyn.Scripting;
using Roslyn.Scripting.CSharp;
...
// Initialize the engine
string[] defaultReferences = new string[] { "System", ... }; string[] defaultNamespaces = new string[] { "System", ... }; CommonScriptEngine engine = new ScriptEngine(defaultReferences, defaultNamespaces);
// HACK: work around a known issue where namespaces aren't visible inside functions
foreach (string nm in defaultNamespaces) {
  engine.Execute("using " + nm + ";", session);
}

Session session = Session.Create();

Here we’re creating a ScriptEngine object from the Roslyn.Scripting.CSharp namespace, although I’m assigning it to the base CommonScriptEngine class which can hold a script engine of any language. As part of construction, I pass in the same set of assembly references and namespaces that a default Console application has out of the box and that the VS REPL uses as well. There’s also a small hack to fix a known issue where namespaces aren’t visible during function definitions, but I expect that will be unnecessary in future drops of Roslyn.

Once I’ve got the engine to do the parsing and executing, I creating a Session object to keep context. Now we’re all set to read a line of input and evaluate it:

ParseOptions interactiveOptions =
new ParseOptions(kind: SourceCodeKind.Interactive,
languageVersion: LanguageVersion.CSharp6);
... while (true) { Console.Write("> "); var input = new StringBuilder(); while (true) { string line = Console.ReadLine(); if (string.IsNullOrWhiteSpace(line)) { continue; } // Handle #commands ... // Handle C# (include #define and other directives) input.AppendLine(line); // Check for complete submission if (Syntax.IsCompleteSubmission(
SyntaxTree.ParseCompilationUnit(
input.ToString(), options: interactiveOptions))) {
break;
}
Console.Write(". "); } Execute(input.ToString()); }

The only thing we’re doing that’s at all fancy here is collecting input over multiple lines. This allows you to enter commands over multiple lines:

replmultiline

The IsCompleteSubmission function is the thing that checks whether the script engine will have enough to figure out what the user meant or whether you need to collect more. We do this with a ParseOptions object optimized for interactive” mode, as opposed to script” mode (reading scripts from files) or regular” mode (reading fully formed source code from files). The interactive” mode lets us do things like 1+1” or x” where x” is some known identifier without requiring a call to Console.WriteLine or even a trailing semi-colon, which seems like the right thing to do in a REPL program.

Once we have a complete command, single or multi-line, we can execute it:

public void Execute(string s) {
  try {
    Submission<object> submission = engine.CompileSubmission<object>(s, session);
    object result = submission.Execute();
    bool hasValue;
    ITypeSymbol resultType = submission.Compilation.GetSubmissionResultType(out hasValue);

    // Print the results
    ...
  }
  catch (CompilationErrorException e) {
    Error(e.Diagnostics.Select(d => d.ToString()).ToArray());
  }
  catch (Exception e) {
    Error(e.ToString());
  }
}

Execution is a matter of creating a submission,” which is a unit of work done by the engine against the session. There are helper methods that make this easier, but we care about the output details so that we can implement our REPL session.

Print

Printing the output depends on the type of a result we get back:

ObjectFormatter formatter =
new ObjectFormatter(maxLineLength: Console.BufferWidth, memberIndentation: " ");
...
Submission
<object> submission = engine.CompileSubmission<object>(s, session); object result = submission.Execute(); bool hasValue; ITypeSymbol resultType =
submission.Compilation.GetSubmissionResultType(out hasValue); // Print the results if (hasValue) { if (resultType != null && resultType.SpecialType == SpecialType.System_Void) { Console.WriteLine(formatter.VoidDisplayString); } else { Console.WriteLine(formatter.FormatObject(result)); } }

As part of the result output, we’re leaning on an instance of an object formatter” which can trim things for us to the appropriate length and, if necessary, indent multi-line object output.

In the case that there’s an error, we grab the exception information and turn it red:

void Error(params string[] errors) {
  var oldColor = Console.ForegroundColor;
  Console.ForegroundColor = ConsoleColor.Red;
  WriteLine(errors);
  Console.ForegroundColor = oldColor;
}
public void Write(params object[] objects) {
  foreach (var o in objects) { Console.Write(o.ToString()); }
}

void WriteLine(params object[] objects) {
  Write(objects);
  Write("\r\n");
}

replerror

Loop

And then we do it all over again until the program is stopped with the #exit command (Ctrl+Z, Enter works, too).

Where Are We?

Executing lines of C# code, the hardest part of building a C# REPL, has become incredibly easy with Roslyn. The engine does the parsing, the session keeps the context and the submission gives you extra information about the results. To learn more about scripting in Roslyn, I recommend the following resources:

Now I’m off to add Intellisense support. Wish me luck!

May 23, 2010 .net

Spurious MachineToApplication Error With VS2010 Deployment

Often when I’m building my MVC 2 application using Visual Studio 2010, I get the following error:

It is an error to use a section registered as allowDefinition=‘MachineToApplication’ beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

On the internet, this error seems to be related to having a nested web.config in your application. I do have such a thing, but it’s just the one that came out of the MVC 2 project item template and I haven’t touched it.

In my case, this error in my case doesn’t seem to have anything to do with a nested web.config. This error only started to happen when I began using the web site deployment features in VS2010 which by itself, rocks (see Scott Hanselman’s “Web Deployment Made Awesome: If You’re Using XCopy, You’re Doing It Wrong” for details).

 If it happens to you and it doesn’t seem to make any sense, you can try to fix it with a Build Clean command. If you’re using to previous versions of Visual Studio, you’ll be surprised, like I was, not to find a Clean option in sparse the Build menu. Instead, you can only get to it by right-clicking on your project in the Solution Explorer and choosing Clean.

Doing that, however, seems to make the error go away. I don’t think that’s a problem with my app; I think that’s a problem with VS2010.

April 5, 2010 .net

The performance implications of IEnumerable vs. IQueryable

It all started innocently enough. I was implementing a Older Posts/Newer Posts” feature for my new web site and was writing code like this:

IEnumerable<Post> FilterByCategory(IEnumerable<Post> posts, string category) {
  if( !string.IsNullOrEmpty(category) ) {
return posts.Where(p => p.Category.Contains(category));
}
}
...
  var posts = FilterByCategory(db.Posts, category);
  int count = posts.Count();
...

The db” was an EF object context object, but it could just as easily been a LINQ to SQL context. Once I ran this code, it failed at run-time with a null reference exception on Category. That’s strange,” I thought. Some of my categories are null, but I expect the like’ operation in SQL to which Contains maps to skip the null values.” That should’ve been my first clue.

Clue #2 was when I added the null check into my Where expression and found that their were far fewer results than I expected. Some experimentation revealed that the case of the category string mattered. Hm. That’s really strange,” I thought. By default, the like’ operation doesn’t care about case.” Second clue unnoticed.

My 3rd and final clue was that even though my site was only showing a fraction of the values I knew where in the database, it had slowed to a crawl. By now, those of you experienced with LINQ to Entities/SQL are hollering from the audience: Don’t go into the woods alone! IEnumerable kills all the benefits of IQueryable!”

See, what I’d done was unwittingly switched from LINQ to Entities, which takes my C# expressions and translates them into SQL, and was now running LINQ to Objects, which executes my expressions directly.

But that can’t be,” I thought, getting hot under the collar (I was wearing a dress shirt that day — the girlfriend likes me to look dapper!). To move from LINQ to Entities/SQL to LINQ to Objects, I thought I had to be explicit and use a method like ToList() or ToArray().” Au contraire mon fraire (the girlfriend also really likes France).

Here’s what I expected to be happening. If I have an expression like db.Posts” and I execute that expression by doing a foreach, I expect the SQL produced by LINQ to Entities/SQL to look like this:

select * from Posts

If I add a Where clause, I expect the SQL to be modified:

select * from Posts where Category like '%whatever%'

Further, if I do a Count on the whole thing, e.g.

db.Posts.Where(p => p.Contains(category)).Count()

I expect that to turn into the following SQL:

select count(*) from Posts where Category like '%whatever%'

And that’s all true if I keep things to just var” but I wasn’t — I was being clever and building functions to build up my queries. And because I couldn’t use var” as a function parameter, I had to pick a type. I picked the wrong one: IEnumerable.

The problem with IEnumerable is that it doesn’t have enough information to support the building up of queries. Let’s take a look at the extension method of Count over an IEnumerable:

public static int Count<TSource>(this IEnumerable<TSource> source) {
...
int num = 0;
  using (IEnumerator<TSource> enumerator = source.GetEnumerator()) {
    while (enumerator.MoveNext()) { num++; }
  }
  return num;
}

See? It’s not composing the source IEnumerable over which it’s operating — it’s executing the enumerator and counting the results. Further, since our example IEnumerator was a Where statement, which was in turn a accessing the list of Posts from the database, the effect was filtering in the Where over objects constituted from the following SQL:

select * from Posts

How did I see that? Well, I tried hooking up the supremely useful SQL Profiler to my ISPs database that was holding the data, but I didn’t have permission. Luckily, the SQL tab in LinqPad will show me what SQL is being executed and it showed me just that (or rather, the slightly more verbose and more correct SQL that LINQ to Entities generates in these circumstances).

Now, I had a problem. I didn’t want to pass around IEnumerable, because clearly that’s slowing things down. A lot. On the other hand, I don’t want to use ObjectSet because it doesn’t compose, i.e. Where doesn’t return that. What is the right interface to use to compose separate expressions into a single SQL statement? As you’ve probably guessed by now from the title of this post, the answer is: IQueryable.

Unlike IEnumerable, IQueryable exposes the underlying expression so that it can be composed by the caller. In fact, if you look at the IQueryable implementation of the Count extension method, you’ll see something very different:

public static int Count<TSource>(this IQueryable<TSource> source) {
  ...
  return source.Provider.Execute<int>(
Expression.Call(null,
((MethodInfo) MethodBase.GetCurrentMethod()).
MakeGenericMethod(
new Type[] { typeof(TSource) }),
new Expression[] { source.Expression }));
}

This code isn’t exactly intuitive, but what’s happening is that we’re forming an expression which is composed of whatever expression is exposed by the IQueryable we’re operating over and the Count method, which we’re then implementing. To get this code path to execute for our example, we simply have to replace the use of IEnumerable with IQueryable:

IQueryable<Post> FilterByCategory(IQueryable<Post> posts, string category) {
  if( !string.IsNullOrEmpty(category) ) {
    return posts.Where(p => p.Category.Contains(category));
  }
}
...
  var posts = FilterByCategory(db.Posts, category);
  int count = posts.Count();
...

Notice that none of the actual code changes. However, this new code runs much faster and with the case- and null-insensitivity built into the like’ operator in SQL instead of semantics of the Contains method in LINQ to Objects.

The way it works is that we stack one IQueryable implementation onto another, in our case Count works on the Where which works on the ObjectSet returned from the Posts property on the object context (ObjectSet itself is an IQueryable). Because each outer IQueryable is reaching into the expression exposed by the inner IQueryable, it’s only the outermost one — Count in our example — that causes the execution (foreach would also do it, as would ToList() or ToArray()).

Using IEnumerable, I was pulling back the ~3000 posts from my blog, then filtering them on the client-side and then doing a count of that.With IQueryable, I execute the complete query on the server-side:

select count(*) from Posts where Category like '%whatever%'

And, as our felon friend Ms. Stewart would say: that’s a good thing.”

February 7, 2010 .net

Data Binding, Currency and the WPF TreeView

Data Binding, Currency and the WPF TreeView

I was building a little WPF app to explore a hierarchical space (OData, if you must know), so of course, I was using the TreeView. And since I’m a big fan of data binding, of course I’ve got a hierarchical data source (basically):

abstract class Node {
public abstract string Name { get; }
  public abstract IEnumerable<Node> { get; }
public XDocument Document { get { ... } }
public Uri Uri { get { ... } }
}

I then bind to the data source (of course, you can do this in XAML, too):

// set the data context of the grid containing the treeview and text boxes
grid.DataContext = new Node[] { Node.GetNode(new Uri(uri)) };
// bind the treeview to the entire collection of nodes
leftTreeView.SetBinding(TreeView.ItemsSourceProperty, ".");
// bind each text box to a property on the current node
queryTextBox.SetBinding(TextBox.TextProperty,
  new Binding("Uri") { Mode = BindingMode.OneWay });
documentTextBox.SetBinding(TextBox.TextProperty,
  new Binding("Document") { Mode = BindingMode.OneWay });

What we’re trying to do here is leverage the idea of currency” in WPF where if you share the same data context, then item controls like textboxes will bind to the current” item as it’s changed by the list control. If this was a listview instead of a treeview, that would work great (so long as you set the IsSynchronizedWithCurrentItem property to true).

The problem, as my co-author and the-keeper-of-all-WPF-knowledge Ian Griffiths reminded me this morning, is that currency is based on a single collection, whereas a TreeView control is based on multiple collections, i.e. the one at the root and each one at sub-node, etc. So, as I change the selection on the top node, the treeview has no single collection’s current item to update (stored in an associated view” of the data), so it doesn’t update anything. As the user navigates from row to row, the current” item never changes and our textboxes are not updated.

So, Ian informed me of a common hack” to solve this problem. The basic idea is to forget about the magic current node” and explicitly bind each control to the treeview’s SelectedItem property. As it changes, regardless of which collection from whence the item came, each item control is updated, as data binding is supposed to work.

First, instead of setting the grid’s DataContext to the actual data, shared with the treeview and the textboxes, we bind it to the currently selected treeview item:

// bind the grid containing the treeview and text boxes
// to point at the treeview's currently selected item
grid.DataContext = new Binding("SelectedItem") { ElementName = "leftTreeView" };

Now, because we want the treeview to in fact show our hierarchical collection of nodes, we set it’s DataContext explicitly:

// set the treeview's DataContext to be the data we want it to show
leftTreeView.DataContext = new Node[] { Node.GetNode(new Uri(uri)) };

Now, the treeview will show the data we wanted it to show, as before, but as the user changes the selection, the treeview’s SelectedItem property changes, which updates the grid’s DataContext, which signals the textboxes, bound to properties on grid’s DataContext (because the DataContext property is inherited and we haven’t overridden it on the textboxes), and the textboxes are updated.

Or, in other words, the textboxes effectively have a new idea of the current” item that meshes with how the treeview works. Thanks, Ian!

February 6, 2008 .net

.NET Source Code Mass Downloader

On 1/16/08, Microsoft announced the ability to download some of the .NET Framework source code for debugging. This download process was only supported inside of a properly configured Visual Studio 2008.

21 Days Later: Kerem Kusmezer and John Robbins released a tool to download the source code en mass. Frankly, I’m surprised it took so long. : )

December 26, 2007 .net

Microsoft needs you to build Emacs.Net

Interested? Drop Doug a line.
August 17, 2007 .net

Duck Typing for .NET!

For structural typing fans (and they’ll be more of you over time — trust me), David Meyer has posted a duck typing library for .NET. There are many reasons this is cool, but in summary, it allows for many of the dynamic features of languages like Python and Ruby to used used in any .NET language. Very cool.
May 6, 2007 .net

Lutz’s Silverlight 1.1 Alpha Samples

Lutz has ported some of his .NET code to use the Silverlight 1.1 alpha, which includes the mini-CLR (or whatever we’re calling it these days : ). Enjoy.
April 16, 2007 .net

WPF/E == Silverlight

If you haven’t already heard about Microsoft’s new high fidelity, cross-platform application development platform, you just haven’t been paying attention. Silverlight is the new name for WPF/E (although it’s still XAML-based) and does some *amazing* things.

And, if you can wait just a little while longer, you can read about Silverlight in Programming WPF (available now in Rough Cut format and for pre-order from Amazon) in an appendix by my friend and yours, Shawn Wildermuth. Shawn’s been doing a ton of Silverlight work lately, including doing a bunch of Silverlight presentations for Microsoft, so he knows of what he speaks.

February 1, 2007 .net

The Potential of WPF/E

Savas turned me onto an amazing WPF/E application. I don’t speak the language of the web site, but the screenshot on Savas’s site is worth a look…

P.S. I don’t smoke (except for the occasional cigar) and I definitely don’t want to smell smoke while I eat or in my clothes, but the fact that smokers are no longer allowed to smoke most places strikes me as a violation of an important liberty. Have those studies about the effects of 3rd party smoke been verified?

January 30, 2007 .net

WPF XBAP App: British Library Books Online

The British Library is one of the world’s leading libraries and the national library of the United Kingdom. By charter, it holds a copy of every book ever published in the UK, along with 58 million newspapers, 4.5 million maps, and 3.5 million sound recordings. They hold some of the most priceless literary treasures in existence, including the Codex Sinaiticus (one of the oldest New Testaments in existence), the Lindisfarne Gospels, one of Leonardo Da Vinci’s notebooks, the first atlas of Europe by Mercator, the original illustrated manuscript Lewis Carroll’s Alice’s Adventures in Wonderland, Jane Austen’s History of England and Mozart’s musical diary. …

Enter a fantastic new application, developed in partnership between the British Library and Armadillo Systems. The British Library have digitized the pages of fifteen of their most valuable works and created Turning the Pages, a browser-based WPF application that allows you to interact with these books in a virtual environment from the comfort of your home.”

Wow. This is literally the only way to interact with some of this material and it’s enabled with WPF. Nice.

January 26, 2007 .net

API Usability

Don has a piece up about something that I’ve always called API Usability.” The idea when building libraries is to write client code first against some pretend API that you wish existed and then to implement that API. Another good name for this approach would be RAD API Design,” simply because it’s the same way I prefer to design UI — layout the UI the way you’d like it to look and then implement it that way. Of course, I have to admit to preferring Don’s name for this style of programming (I like what he calls my conferences, too : ).

BTW, the comments to Don’s piece mention to startling similarity between this approach and Test-Driven Development (TDD). I’m a huge fan of TDD (NUnit is a wonderful tool I use all day every day). I’d say that TDD is a generalization of my little API usability” technique in that you can use it for all kinds of things, e.g. code coverage, perf testing, stress testing, etc, including API usability.

P.S. If we fix the atmosphere, clean up the water, stop polluting the soil and learn to live in harmony with our environment, what’s to motivate us to move off this rock before we lose our aggressive drive and then, when we’re sipping Mai Thais, the sun explodes? Consuming this planet until nothing’s left but an empty husk and we’re forced, like locusts to move on to the next one, may well be the only thing that keeps our species alive (assuming we survive the coming ice age, of course).

December 4, 2006 .net

XAML Design Tools from Microsoft

If you’re a designer looking for XAML design tools, and you’re a designer type (you know — beret, turtle neck, a wardrobe that extends beyond jeans and t-shirts), you’ve got two choices from Microsoft. You can use Expression Design [1] for static XAML graphics or Expression Blend (aka Sparkle) for dynamic XAML interfaces. Both are available in pre-release form (CTP for Design and Beta 1 for Blend), so give them a try.

[1] Expression Design” is not to be confused with Expression Designer, which is the old name for Sparkle (Blend).

P.S. Can someone give Scoble a hug? He’s obviously a little worked up if he’s recommending physical violence for disagreements about web site design. : )

December 4, 2006 .net

Holy Cow! An Entire WPF/E DevCenter!

I expected eventually to get a WPF/E (Windows Presentation Foundation Everywhere) download or two, but these guys went crazy; they just released an entire WPF/E DevCenter this morning. Here’re just a few highlights:

Enjoy!

P.S. Regardless of whether humans caused global warming or whether it’s part of a natural cycle, it’s happening and we’re going to have to deal with it.

November 7, 2006 .net

.NET Framework 3.0 (aka WinFX) Has Shipped!

After a monumental amount of work, the .NET Framework 3.0 has been completed! It ships out of the box in Vista, but for down level clients (Windows XP and Windows Server 2003) and developer tools, see the links below:

Wahoo!

October 6, 2006 .net

WPF: Enabling Crimes Against Nature in a Good Way

WPF: Enabling Crimes Against Nature in a Good Way

My friend Jeff asked me to do a terrible thing yesterday: How do I show a form in the popup window that a menu shows?” I said, Dude! Don’t do that — write a dialog!” And that’s what he did, but then, like a train wreck, I couldn’t look away. It took me all of 10 minutes of very straight forward coding and here we are:

If you’re familiar with WPF, data binding and data templates, this is all standard stuff. Here’s the data structure:

class Person : INotifyPropertyChanged
{
    string name;
    public string Name
    {
        get { return name; }
        set { name = value; Notify("Name"); }
    }
    int age;
    public int Age
    {
        get { return age; }
        set { age = value; Notify("Age"); }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    void Notify(string prop) { if( PropertyChanged != null ) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }
}

The data template is also bog standard:

<DataTemplate DataType="{x:Type local:Person}">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="auto" />
      <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="auto" />
      <ColumnDefinition Width="auto" />
    </Grid.ColumnDefinitions>
    <Label Grid.Row="0" Grid.Column="0">_Name</Label>
    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Name}" />
    <Label Grid.Row="1" Grid.Column="0">_Age</Label>
    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Age}" />
  </Grid>
</DataTemplate>

Setting up the app itself is nothing special:

<Window ...>
  <Window.Resources>
    <DataTemplate DataType="{x:Type local:Person}">
      ...
    </DataTemplate>
  </Window.Resources>
  <Grid>
    <Menu>
      <MenuItem Header="File">
        <MenuItem Header="Exit" x:Name="fileExitMenuItem" />
      </MenuItem>
      <MenuItem Header="Form" ItemsSource="{Binding}" />
    </Menu>
  </Grid>
</Window>

Notice that the items that make up the menu come from a binding to the ambient data source, which we set in the code-behind:

protected override void OnInitialized(EventArgs e)
{
    ...
    Person tom = new Person();
    tom.Name = "Tom";
    tom.Age = 11;
    DataContext = new Person[] { tom };
}

The only thing at all tricky is that, even though we’re only editing a single object in the popdown window,” it has to be in an implementation of IEnumerable so that the menu can display it (it expects items to come in a list).

That’s it. You can download the RC1 WPF project here.

You might wonder why I would post such a sample, when clearly that’s not a UI we want to foster on folks. The answer is simple: because WPF allows it.

The power of any platform should be judged by how well it lets you write bad code. Early versions of Visual Basic let you write really bad code — but it worked. Likewise, WPF lets me build the worst UIs ever — but they work. This is necessary so that UI visionaries can experiment and get to a place where they’re doing something completely different from UIs of today and we like it.

Do you think the Office folks, who, for all practical purposes, have been setting UI guidelines on Windows for a decade, could use MFC or Windows Forms? No, because they’re not flexible enough. Could they use WPF? Absolutely they could. And so can you.

The crayon box has lots of colors that I don’t like, but in the hands of an artist, they can create beauty.

October 1, 2006 .net

Sept CTP of .NET 3.0

The CTPs are coming so fast and so furious now that I nearly missed the September 2006 .NET Framework 3.0 CTP:

Enjoy!

September 7, 2006 .net

.NET 3.0 RC1 Download

August 13, 2006 .net

WPF Security in 14 Points and Some Extra Words

MikeDub has a nice summary to get you started down the road to WPF ClickOnce deployment, both for stand-alone apps and browser-based apps (XBAPs). Enjoy.
July 30, 2006 .net

On W*F Integration Samples

As you may or may not recall, Doug Purdy and I had some trouble at the last PDC getting Avalon (WPF) and Indigo (WCF) to work together. To save myself from having that trouble again, I came back from the PDC and starting the WinFX Cross-Pillar SDK Samples Working Group,” which is just a fancy name for the PMs in charge of Avalon, Indigo and Workflow samples getting together to make sure that we have a list of simple technology samples showing the three W*F technologies working together.

You can see the results of that work in the .NET 3.0 SDK under the Integration Samples for WinFX Features topic. Right now, there are 9 integration samples and I’m hoping to almost double that by .NET 3.0 RTM. I’d love feedback. Thanks!

June 12, 2006 .net

WinFX + .NET 2.0 Renamed .NET 3.0

The WinFX name is no more. Instead, WinFX (.NET 2.0 + W*F)is .NET 3.0.
May 25, 2006 .net

WinFX Beta 2

Beta 2 signals the beginning of the final drive towards RTM for WinFX:

Enjoy.

February 22, 2006 .net

Feb06 CTP of WinFX

January 6, 2006 .net

Larry O’Brien on WPF

Suddenly, I think Larry O’Brien is smart:

The book, in this case, is Chris Sells and Ian Griffiths’ Programming Windows Presentation Foundation.’ Sells and Griffiths are two top-notch authors, who separately wrote two of the better books on Windows Forms. This book, published by O’Reilly and adorned with a Kudu engraving, probably does about as good a job as possible in introducing a new display framework that is intended to replace, well, everything from User to GDI to GDI+. And, it seems clear, to replace Flash as well.”

You go, Larry!

December 20, 2005 .net

MSDN Mag: Top Ten UI Breakthroughs In WPF

It goes without saying that MSDN Magazine doesn’t let the authors pick the titles (who can forget Don’s The Active Template Library Makes Building Compact COM Objects a Joy? : ), but what Ian and I had in mind here was 10 things that would surprise you when learning WPF and getting them in your face right up front. Enjoy.

December 7, 2005 .net

Updated WPF book code samples for Nov CTP

Here. I’ve uploaded the samples for Programming Windows Presentation Foundation” ported to the November 2005 CTP. The change notes doc is coming directly (so far, it’s a pretty darn short doc).
November 21, 2005 .net

WinFX November 2005 CTP

You’ve probably seen this by now, but I thought I’d post the WinFX Nov05 CTP-related links together in a spot where I could find them later. In addition to being closer to what we plan on shipping, this CTP also works with VS05 RTM:

Enjoy!

November 11, 2005 .net

WPF: Handling Button.Click or defining a command?

If I’ve got an Avalon Button, e.g.

Should I give the button a name so I can handle the event (I would never put the event handler directly in the XAML) like this:

Or, should I define a custom command and invoke it like this:

Defining a command seems like overkill (you do some stuff in the static ctor and some other stuff in the instance ctor), but I like consistency, e.g. my main window’s menu will use commands.

Thoughts on the best practice here?

November 4, 2005 .net

WinFX in the BackRow

Casey Chesnum has put together what is probably the first real WinFX app: a Media Center light” app that looks damn cool. Check it out.
October 24, 2005 .net

WF Activity Context

October 24, 2005 .net

Typed WF Communications Details

October 13, 2005 .net

How is “workflow” different from “visual programming?”

Is there something intrinsic about workflow” that needs to be surfaced to folks or would any visual programming language do? I’m not finding any commercial products in my web searches, but I know that there have been some integrated component”-style programming languages where you lay flow and logic out from a set of components on a toolbox. Is Windows Workflow Foundation one of those that MS just happens to be doing or is there something important about workflow” that interests folks?
October 11, 2005 .net

What interests you about Windows Workflow Foundation?

The PDC was a buzz with folks praising WWF. Please tell me a) what you think is cool about WWF and b) how it will improve your life or the lives of your colleagues or customers. Thanks!
October 9, 2005 .net

John Gossman on Model/View/ViewModel

John Gossman, architect on the Sparkle team, has just made a post about how Sparkle uses data binding to hook up the view of the data to the data itself.

Interestingly, his post isn’t about whether they used data binding — that’s a foregone conclusion. Data binding is so powerful that pretty much every non-trivial Avalon app will use it, and Sparkle (a large app with a very rich UI) uses the hell out of it.

The main thrust of the Model/View/ViewModel architecture seems to be that on top of the data (“the Model”), there’s another layer of non-visual components (“the ViewModel”) that map the concepts of the data more closely to the concepts of the view of the data (“the View”). It’s the ViewModel that the View binds to, not the Model directly.

I’ve been a fan of value converters (implementations of IValueConverter) for this kind of work, but John’s technique has its charms, not least that it allows for much more radical slicing and dicing than value converters allow easily.

September 11, 2005 .net

WinFX Hearts

July 12, 2005 .net

Amazing XAML Tool: Adobe Illustrator -> XAML

Mike Swanson has posted an amazing Adobe Illustrator to XAML conversion tool. You have to check out the eye candy page to really see what Mike’s been able to accomplish; it’s not perfect, but it’s damn good.
May 29, 2005 .net

IanG Builds a Real Magnifying Glass in Avalon

You’ve seen it in the concept videos, now see it for real: Ian has implemented a working magnifying glass in Avalon.
May 23, 2005 .net

Avalon + Indigo Beta 1 Release Candidate

Today Microsoft has published the release candidate of Avalon and Indigo Beta 1. The most interesting features of this release over the CTP releases of the past is that these bits work on Visual Studio 2005 beta 2, both full and express. Enjoy!

May 11, 2005 .net

More Better Avalon Sparklines

Sean Gerety has updated his Avalon sparklines implementation, producing good news, bad news and more good news:

  • good news: the sparklines implementation fits nicely in with the other Avalon elements
  • bad news: MSFT stock is dead, dead, dead
  • good news: sparklines shows how dead MSFT is very nicely!
May 4, 2005 .net

Animating Avalon Card Control Library

April 11, 2005 .net

ZAM 3D: A 3D XAML Tool for Avalon

April 8, 2005 .net

Indigo Software Design Review Online

Gene Webb, Microsoft developer evangelist, has posted the recorded LiveMeeting Indigo SDR (Software Design Review) dry-run videos and slides. And as if that weren’t enough, you can see Steve Swartz, Indigo Architect, give an intro to Indigo on MSDN TV.

I remember a day when SDRs were deep, secret mojo that even folks that knew about them were special, let along actually attending them. Now, we’re posting them on the internet. I love my company.

[from Aaron Skonnard]

April 2, 2005 .net

Omri pulls a Julia Andrews on Indigo

March 31, 2005 .net

Avalon is changing my thinking…

Here. This application demonstrates the two things I’m finding that Avalon has changed about my thinking. The first is that data binding makes itself into even trivial Avalon applications and its presence is appreciated. The second is that I want to push as much stuff into XAML as I can. Keeping the data separate from the code makes a bunch of sense and, for my trivial application, keeping the data inline with the rest of the UI was very useful. It allows for easy maintenance and localization while pushing as much of my application into declarations and out of imperative statements. The more I can tell the computer what I want instead of how I want to accomplish it, the better off I am.
March 30, 2005 .net

The *Official* Place for Avalon and Indigo Bugs!

What with the public availability of the Avalon and Indigo CTPs and our stated goal of pre-beta bit releases to gather feedback, you might wonder, But where should this feedback go?” I’ll tell you where to go — the MSDN Product Feedback Center, which now has entries for Avalon and Indigo. Hog pile on the WinFX API product teams!
March 28, 2005 .net

Steve Maine on Indigo Duplex Contracts

Steve Maine of Brain.Save() has done a really good job on the description of a set of duplex contracts in Indigo, i.e. those contracts where callbacks are specified, using the design of a multi-player game of blackjack. Steve shows the service contract interfaces, a bunch of the messaging code and even what’s on the wire. Recommended.
March 25, 2005 .net

March Avalon/Indigo CTP Available for Public Download

It took a coupla days more than we wanted cuz I was fighting with some internal tools, but the March 2005 Avalon/Indigo CTP is available for public download.

Make sure you follow the instructions on the download page and only use it with the February CTP release of Visual Studio 2005, i.e. don’t use it against the Whidbey beta 2 that’ll coming soon*” to a theater near you.

* for some definition of coming soon…”

March 21, 2005 .net

Chris Anderson’s AvPad for the March CTP

Chris Anderson has updated XamlPad for the March 2005 CTP of Avalon and renamed it AvPad. As a tool for learning and experimenting with XAML/Avalon, it can’t be beat. Enjoy!
March 15, 2005 .net

Smart Client Offline Application Block Demo

March 15, 2005 .net

Updater Application Block v2.0 Released

TheServerSide.NET has a nice summary of what’s new in the Updater Application Block 2.0 from the new Enterprise Library on GDN. If you’re not using ClickOnce from Windows Forms 2.0 yet (maybe because we haven’t shipped it yet…), the Updater AppBlock is your next best bet.
March 11, 2005 .net

Need More Chris Anderson? Don’t We All?

If you’re not getting enough Chris Anderson in your diet (and who is?!?), check out these two new interviews:

Enjoy!

March 10, 2005 .net

New Community Web Site: XAML.net

A new XAML web site enters the fray: XAML.net. How did we miss the boat acquiring this domain name? : )
March 7, 2005 .net

Day of Indigo Videos from VSLive

Did you miss the Microsoft’s Day of Indigo at VSLive? Have no fear — you can trade your personal details for free access to the entire day of videos from the FTP web site, including:

  • Keynote: Introducing Indigo, Eric Rudder, Senior VP of Servers and Tools
  • Programming Indigo, Don Box and Steve Swartz
  • Building Secure Services, Doug Purdy
  • Building Reliable, Asynchronous Services, Shy Cohen
  • Orchestrating Service-Oriented Apps With Indigo and BizTalk, Michael Woods (Microsoft) and Curt Peterson (Neudesic)
  • Indigo Upgrade and Interoperability, Steve Swartz and Anand Rajagopalan
  • Building Service-Oriented Applications Today, Rich Turner

Enjoy!

March 3, 2005 .net

MS Survey: Partial Trust and Code Access Security

As Microsoft gets nearer the gate on the .NET Framework 2.0 and ClickOnce, we want to make double-sure we understand if and how you’re using/would like to use partial trust and code access security (CAS). It would be a great help for anyone building .NET applications, whether they’re web or Windows, whether you’re using partial trust and/or CAS or not, to take this survey so that we can make sure that we’ve got your needs covered. With ClickOnce, we’ve come a long way from my initial set of No-Touch Deployment complaints, but that doesn’t mean we’re where we need to be. Thanks for helping!
March 1, 2005 .net

Clemens Weekend with Indigo

Clemens Vasters, international man of mystery, has given up his normal weekend activities of partying and espionage to give us three pieces exploring Indigo:

Thanks for helping to make the world safe for messaging, Clemens! : )

February 28, 2005 .net

Let MS make sure your .NET 1.x app run on .NET 2.0

Assuming you don’t have the luxury of dipping the machines your .NET 1.x applications run on in Lucite, you are going to have to make sure that your apps run under .NET 2.0. Normally, that means testing your applications under .NET 2.0 and making changes. However, right now, Jay Roxe at Microsoft is beefing up the .NET 2.0 compatibility test suite, so if there are compatibility problems in your apps, there’s a good chance* that MS will actually apply fixes to the .NET 2.0 framework itself instead of requiring you to make changes to your app.

Jay’s especially interested in corporate-scale” applications, but I’m sure he’ll consider whatever you’ve got. Don’t be shy! Get your apps into consideration for the .NET 2.0 compatibility test suite today!

* good chance” == chance > 0, no guarantees, some restrictions apply, void where prohibited, use at your own risk, blah, blah, blah…

February 28, 2005 .net

2D and 3D Chess for Nov. ’04 Avalon CTP

Valentin Iliescu has updated his 2D and 3D Avalon Chess for the November 2004 CTP. Enjoy!
February 21, 2005 .net

The Convergence of Documents Media and Application

Ron DeSerranno, founder and CEO of Mobiform, a company that’s been busy building Avalon and XAML tools since the October 2003 PDC, is giving a talk on how Avalon in conjunction with XAML will revolutionize the user experience on the web and in desktop applications. XAML and Avalon provide a powerful framework that can provide 2D and 3D graphics, fixed document format, animation and multimedia in a single markup language.”

The talk is at the TechVibes MASSIVE 2005 (clearly named by marketing folks : ), March 30th in Vancouver, BC. Drink a pint for me, eh? : )

February 18, 2005 .net

Building a Tabbed Browser with Windows Forms 2.0

Wei-Meng Lee shows you how to take advantage of the new web browser and control support in Windows Forms 2.0 to build a tabbed browser using Internet Explorer.
February 18, 2005 .net

What’s New in the VS05 Toolbox for Windows Apps

Dino Esposito takes you on a whistle-stop tour of the new controls slated for Windows Forms 2.0 to make writing code more productive and pleasant than ever.” Woo-Woo! : )
February 16, 2005 .net

Building Extensible Windows Forms Applications

February 16, 2005 .net

Windows Forms Threading Techniques

It seems that there are any number of ways to do multi-threading in Windows Forms. Here are some of the interesting techniques:

February 16, 2005 .net

Windows Metafile to Avalon XAML Conversion

Cristian Civera, a Microsoft .NET MVP, has posted a preview of a tool to convert Windows Enhanced Metafiles, an existing vector graphics file format, to XAML, Avalon’s new format for describing vector graphics (among other things). Thanks, Cristian!

February 16, 2005 .net

Joe’s Codeless Avalon XAML Samples Updated

Joe Marini, has updated his famous XAML-only Avalon samples for the Nov. 2004 CTP. Thanks, Joe!
February 14, 2005 .net

Fear, Uncertainty and Longhorn

Robert Scoble has some stuff to say about Avalon, Indigo, Longhorn and packaging. Enjoy.

February 14, 2005 .net

VSLive in Vegas Has “SmartClient Live”

The Las Vegas edition of VSLive (May 8-11, 2005) will include smart client coverage: SmartClient Live! - Pragmatic and practical advice on smart client development with VB, C#, and .NET Framework.” There’s no real description of what that really means, but it’s got potential. : )

[via 3Leaf]

February 12, 2005 .net

Service Contracts in Indigo

Don Box has posted an article on the basics of specifying a service contract in Indigo. Enjoy (I plan to : ).
February 10, 2005 .net

Smart Client Patterns & Practices Survey

The Smart Client Team at Microsoft patterns & practices needs your feedback to evaluate the need of guidance for devices based Smart Clients (Mobile solution scenarios based on .NET Compact Framework).”
February 10, 2005 .net

Indigo Day: Mujtaba Syed’s Notes From The Field

February 9, 2005 .net

VSLive Indigo Day Coverage from TheServerSide

Paul Ballard provides a nice summary of the Indigo Day at VSLive. I especially like the acronyms that the Indigo boys were using; the ABCs of Indigo and the CIA of security are damned easy to remember!
February 9, 2005 .net

Introducing Indigo: An Early Look

David Chappell provides an architectural overview of Indigo,’ Microsoft’s unified programming model for building service-oriented applications. The paper covers Indigo’s relationship to existing distributed application technologies in the .NET Framework, the basics of creating and consuming Indigo services, and an overview of Indigo’s capabilities, including security, reliable messaging, and transaction support.”

The first article of a new Indigo programming model since PDC03 (and hopefully the one that’ll stick : ).

February 9, 2005 .net

Video: Soma on Visual Studio 2005 + Smart Clients

Somasegar says a key component of continuing this momentum is creating connected systems’ that work together by using smart clients. Let’s take the best from the Web client world and the best from the rich client world, and—voila!—you have a smart client,’ Somasegar says. Smart clients can allow several applications to share code with one another while using minimal resources, eliminating the need to duplicate coding efforts; essentially, if one application requires a piece of code existing already in another application, it simply can request the code to be sent over. The cheapest piece of code is the piece of code that you don’t have to write in the first place,’ Somasegar says, as smart clients provide interoperability through Web services and leverage existing investments. Enabling developers to reuse existing assets is a key design goal.’ The end result of using a smart client, ultimately, is a rich user experience that requires using minimal resources.”
February 9, 2005 .net

Clemens says “Hello, World” via Indigo

If you looked at the PDC 2003 Indigo bits, you will notice that the [Indigo] programming model changed quite a bit. I think that in fact, every single element of the programming model changed since then. And all for the better. The programming model is so intuitive by now that I am (almost) tempted to say Alright, understood, next technology, please.’”
February 9, 2005 .net

Watch Eric Rudder’s VSLive Indigo Keynote

Eric Rudder, Senior Vice President of Microsoft’s Server and Tools Business, showed off Indigo at this morning’s VSLive! keynote. Indigo, Microsoft’s unified programming model for building service-oriented applications, is a key component of Microsoft’s next Windows release (code-named Longhorn). Rudder asserted that Indigo will provide improved interoperability and productivity, as well as a more flexible security model for developers creating service-oriented applications. He also noted that Indigo will make it easier to build secure, reliable, transacted Web services.”

By far my favorite part of this presentation (except for watching Ari’s heart beat at 155bpm) was watching Eric show the small transitions needed to move existing code to Indigo from ASMX, Enterprise Services, WSE2, MSMQ and Remoting and how well Indigo will integrate with BizTalk and SQL Server in the future. I’m sure it won’t all be changing attributes and removing extraneous code, but if the majority of the porting work fits that model, I’ll be impressed indeed. Of course, as Eric says, there’s no requirement to move your code to Indigo if you don’t want to; the goal of the Indigo team is to make it smooth if you want to.

And finally, Eric says that we’ll be releasing a new WinFX CTP in March, which will include both Avalon and Indigo (although it may be March 38th or March 43rd : ).

February 8, 2005 .net

Allowing Partially Trusted Callers

If you’re not familiar with the AllowPartiallyTrustedCallersAttribute (pronounced apt-ka” by those in the know…) or worse, if you just apply it til stuff works, you need to read this blog post from Shawn Farkas, SDE/T on the .NET CLR team.

[via Keith Brown]

February 8, 2005 .net

Avalon + Scaleable Golf == Hole in N

Mike Marshall over at the 19th hole has been digging into Avalon to experiment with scalable graphics, golf, ClickOnce and 3rd party drawing tools. Check out these installments:

I love that folks have started to document their learning processes on their blogs. There’s no better way for the WinFX folks to get a look at how folks are approaching their technology. Keep it up!

February 4, 2005 .net

DeepWinFX: Avalon Menus

Deepak gives a very simple intro to building menus in Avalon, effectively answering the common questions I normally get about this very subject.
February 4, 2005 .net

Want to be able to step into the Windows Forms source? I do!

Shawn Burke from the Windows Forms team is trying to make the Windows Forms source available for stepping into during a debugging session. Wahoo! He’s pretty sure he can give it to us w/o the comments. That’s a step up from viewing it via Reflector, imo. Leaving in comments requires all kinds of reviewing work that he may not be able to get to. What do you think? Let Shawn know.
February 3, 2005 .net

Keeping the Windows Forms Designer from Eating You

Shawn Burke, Dev. Manager on the Windows Forms team, thinks that MS has finally figured out the problem with controls disappearing from the Designer and points to a fix, mentions an SP for VS03 and promises these fixes applied to VS05.

Shawn, on behalf of the Windows Forms developer community, I’d like to just say: Wahoo!

February 3, 2005 .net

London Avalon Enthusiasts Dinner

Kevin Moore, a PM on the Avalon team, is in London for one night (Feb. 28) and wants to gather the Avalon enthused together for dinner. Microsoftie’s have expense accounts for this kind of thing, so if you can stand to listen to Avalon talk over shepherd’s pie, you should let him know!
January 31, 2005 .net

Aurora XAML Editor Updated for Avalon Nov. CTP

Mobiform has updated their Aurora XAML editor for using on the November 2004 CTP of Avalon.
January 30, 2005 .net

XAML Experience Highly Desired in Concord, MA

Here. Holy cow; there are already jobs for XAML folk
January 25, 2005 .net

Avalon Property Triggers

Joe Marini, the king of code-less Avalon, has done it again, this time adding interactivity to his samples using Avalon property triggers, all w/o a line of code.
January 25, 2005 .net

Ari Bixhorn on Indigo

Ari Bixhorn, Lead Product Manager on the Indigo team, talks about his hopes and dreams for Indigo.
January 25, 2005 .net

I Can’t Promise To Answer All Of Your Prayers, But I Promise To Always Listen

I didn’t know that I’d been nominated, but apparently I was canonized yesterday as the Patron Saint of Smart Client Applications. I promise to be a firm but fair Deity. : )

January 20, 2005 .net

Creating 2-D and 3-D Dynamic Animations in “Avalon

January 20, 2005 .net

JasonW on ClickOnce Permission Elevations

Jason Whittington has some thoughts about ClickOnce and user-managed permission evaluation. Basically, he thinks that the user should have to sacrifice a chicken to get a FullTrust component running on their box via ClickOnce (I’m paraphrasing : ). I definitely see his pov. Thoughts?
January 19, 2005 .net

Telling us we’re Bad and Ugly is Good!

Rod Paddock sat down to use Avalon in a real way and then kept notes.

Some of those notes said good things about Avalon

Some of them said not so good things.

While we appreciate the good things, we need to hear about the bad things. And we appreciate it. Thanks, Rod!

Keep it coming!

January 19, 2005 .net

Let Slip The Dogs of War!

Here.

Ford McKinstry, PM on the Microsoft Indigo team, gives us a hint as to when the next preview release of the Indigo bits will be available:

We are planning a CTP release with Indigo soon after the VSLive event. But  it will not be available simultaneously with VSLive. We’re moving on it as quickly as we can and we appreciate your interest and patience. –Ford McKinstry, Indigo Program Manager”

[via Stuart Celarier]

January 19, 2005 .net

Get Out The Vote: .NET DJ Reader’s Choice Awards

It’s time for the annual .NET Developer’s Journal Reader’s Choice awards. Even better, this year Windows Forms Programming in C# has been nominated (yea!). And while it’s an honor to be nominated, it’d be an even bigger honor to actually win (my birthday’s coming up : ). Voting for MSDN and Visual Studio 2003 would be cool, too. Don’t be shy! Vote!
January 17, 2005 .net

Formatting Web Content for Compact Devices

I just noticed these two posts from Steve Makofsky formatting web content for compact devices:

Mostly, I’d listing these links for myself, as I’ve a hankering for some Smart Phone programming…

January 17, 2005 .net

MSDN Webcast: .NET Smart Client

Here.

If you’re not sure what the heck a Smart Client is, Tim Huckaby explains it like no other:

This webcast defines the smart client’ and explores the implications and opportunities for smart client application development. The session will focus heavily on high level demos of technologies like Windows Forms, Compact Framework, and Office System 2003 technologies. It will delve into the tips and tricks, positives and negatives when designing, developing and deploying .NET Smart Client applications. .NET Smart Client Applications can run on many different types of devices and in many different scenarios. Join this webcast to learn when it’s smartest to create rich or thin client applications and about how each type handles data and connectivity.”

January 17, 2005 .net

MSDN Webcast: .NET Compact Framework 2.0

Here.

I just noticed this on the MSDN Webcast list. I’m hoping to attend myself!

The upcoming 2.0 release of .NET offers many new features and enhancements for the Microsoft .NET Compact Framework and also for the standard Microsoft .NET Framework and Microsoft Visual Studio IDE. In this presentation, Derek Ferguson, Editor-in-Chief of the .NET Developer’s Journal, will provide a complete introduction to writing device-based applications using Compact Framework 2.0. Full coding demonstrations will be presented, so you are ready to catch the next wave in mobile .NET technology! Previous experience writing managed applications is assumed, but no specific experience with the Compact Framework is required.”

January 16, 2005 .net

Getting Started w/ the Public Avalon CTP for Newbies

Samuel Wan has posted an excellent explanation of the various terms involved in the public pre-release of the Nov. 2004 Avalon CTP as well as a step-by-step install overview. Nicely done, Sam!
January 15, 2005 .net

Vote for Balloon Help in .NET 2.0

January 14, 2005 .net

Request for Proposal: ClickOnce Application Series

Do you have a series of simple yet compelling ClickOnce applications in you that you can build and deliver to show off the benefits of Windows Forms 2.0 smart clients? Do you have a track record of delivering top-quality code on time and on budget?

If so, send me a proposal, listing a series of ClickOnce applications, your schedule and your price. You don’t have to be a 3Leaf, a PluralSight, a Relevance LLC, a Wintellect or a DevelopMentor (although I’d be happy to hear from those guys, too!). You just have to have a song in your heart, a snap in your step and a story to tell.

January 14, 2005 .net

Nov. ’04 Avalon CTP Available for Public Download

By popular demand, the Avalon team has provided the November 2004 Avalon Community Technology Preview for the general public. In addition, the team has provided a batch file to enable the Avalon project item templates for use in the beta of Visual Studio 2005 Express Edition, which is also freely available to the general public.

This combination enables folks without an MSDN Subscription to try out Avalon with Visual Studio 2005 without an MSDN Subscription.

Don’t be shy about giving feedback on these bits now that you’ve got em. The Avalon team is standing by in the Avalon newsgroup to answer your questions and take your suggestions.

January 13, 2005 .net

A New WinFX Community Enters the Fray

Deepak Kapoor has launched a new WinFX community: deepwinfx.com. It’s pretty bare right now, but hopefully it’ll flesh out nicely. I’ll be keeping an eye on it. Good luck, Deepak!
January 13, 2005 .net

ClickOnce Love

S. Soma” Somasegar, corporate vice president of the Developer Division at Microsoft, posts about his understandable love of ClickOnce. He’ll be giving the keynote at VSLive and lists three ClickOnce blog entries at which you should take a gander.
January 13, 2005 .net

Microsoft Plans Information Bridge Update

Here. Microsoft is working on an update to its Information Bridge Framework (IBF) for this spring, a company spokeswoman confirmed Tuesday. What had been referred to as IBF 1.5 by partner sources will actually be a service pack for the integration software. The update, to be delivered via MSDN, will add support for two new host applications, InfoPath and Internet Explorer. The current IBF supports Word 2003, Excel 2003, and Outlook 2003.”
January 6, 2005 .net

Avalon Nov. ’04 CTP Sample: SolFx

If you’ve got .NET 2.0 and the Nov. 04 Avalon CTP, click here to play my scaling, vector-based, WinFX version of Solitaire. Features include lovely scaling of the cards as the window resizes, real-time drag n’ drop of the cards, sol-like card stacking, ClickOnce deployment and the source. The performance isn’t yet what I’d like it to be because I’m loading the card back resource 52 times, but it’ll get there. Enjoy!

January 3, 2005 .net

Seeing Stars in Avalon

Savas Parastatidis has posted his early work using Avalon 3D to visualize stars in the galaxy. I don’t believe that I’ve ever seen the stars line up like that, but the screen shots are cool anyway. : )
January 3, 2005 .net

Paint.NET 2.0

And while we’re on the topic of real-world .NET Smart Client applications, you can’t not take a look at the Washington State University course work resulting in Paint.NET, an all-.NET implementation of a painting program that was initially aimed at merely replacing MS Paint Brush, but has long ago far surpassed it with painting features found only in commercial painting applications.

And, like SharpDevelop, if you like what you see and want to know how a feature was implemented, you have only to download the Paint.NET source code.

Also, don’t forget to check back in mid to late January for Paint.NET 2.1!

January 3, 2005 .net

Dissecting a C# Application: Inside SharpDevelop

APress has made Dissecting a C# Application: Inside SharpDevelop, the book that describes the history and design of SharpDevelopfreely available for download and I’m enjoying it immensely.

I’ve only read the 1st 2 chapters, but the authors have already provided me a nice overview of the major features in SharpDevelop and how they came to be over the history of the project. I’m also very much looking forward to the implementation details later in the book, particularly the add-in model, internationalization, implementing the Windows Forms Designer and, of course, code generation.

For anyone building a real client-side .NET application, this book is bound to give you clues on how to do it better. Recommended.

And as if that weren’t enough, because SharpDevelop is an open source project, if any of the features tickle your fancy, you can download the SourceDevelop code to see how they were implemented.

December 30, 2004 .net

“How Do I” Makes Me Smile

I liked the new How Do I…?” section of the references pages in the WinFX SDK before, but when I ran into the How do I make an element spin in place?” section of the System.Windows.Shapes.Rectangle (I mean, I need to make elements spin in place all the time!), I fell in love. : )

December 30, 2004 .net

Fix for VS05b1 Avalon compilation perf problems

Rob has posted a description and a couple of work-arounds to a problem some folks are having w/ 100% CPU utilization after an Avalon project is compiled in Visual Studio 2005 beta 1 + the Nov. 04 Avalon CTP + C#.

If his solution doesn’t work for you (it didn’t for me, but I think I have a weird build), under HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\CSharp\Options\Editor, try setting the UpdateRegisterDesignViewOnIdle value to 0 instead of 1. I don’t know what this turns off, but it makes the problem go away. If you trust me, I’ve put together a reg file that sets this value for you here.

BTW, if you’re wondering what happens when you turn the UpdateRegisterDesignViewOnIdle option off, it’s the feature that notices if you take a random code file and add a System.Windows.Forms.Form as a base class so that when you open the file, it’s opened in the Windows Forms Designer by default. Without this flag, VS will never notice a new Form in a code file and they’ll be no way to edit the Form in the Windows Forms Designer (not even Open With [even though every other editor is in the list…]). If you add a new Form by choosing to Add->Windows Form to the project (as most folks do), all works as expected.

However, if you absolutely need to turn a code file into a file that will open in the Windows Forms Designer, you can close the project in VS, open it in notepad and change the following:



or the following:


    Code


to the following:


    Form


Thanks to Cyrus Najmabadi and Izzy Gryko — hard-working MS employees answering my emails on New Year’s Eve even when they’re officially Out Of Office — for this tips!

December 30, 2004 .net

BackgroundWorker and Sample for Compact Framework

Not only has Daniel Moth implemented the Windows Forms 2.0 BackgroundWorker component for the .NET Compact Framework, but he’s also ported my pi calculation application to use this new implementation as an example of the savings in code that the BackgroundWorker component provides.
December 23, 2004 .net

Mobiform Aurora XAML Editor

Aurora is a graphical designer developed to create and edit Avalon Windows, elements, and controls. Aurora is built on top of Avalon and renders using the Avalon API. Aurora is designed for use with the November 2004 Avalon Technology Preview Community for Windows XP (CTP).”

Cool!

December 22, 2004 .net

Hosting An Avalon Application in a Browser

December 22, 2004 .net

SVG to XAML Converter

The Adobe® Illustrator® SVG Edition of XAMLConverter is now available for free evaluation. The process is as simple is running XAMLConverter, dragging an SVG exported from Adobe® Illustrator® onto the application and the file is automatically converted to XAML. In addition, XAMLConverter runs the XAML file so you may view the results.

This edition can convert SVG created by tools other than Adobe® Illustrator®. But SVG exported from Adobe® Illustrator® is the only fully supported subset of SVG.”

December 16, 2004 .net

Ian Dives Deep Into Animation

I said that animation in Avalon is simple. Ian said that it’s hard. We’re both right (I was talking about the programming model and Ian is talking about the nuts and bolts of the implementation), but Ian seems more right because of those fabulous example pictures that explain why wagon wheels look like they’re going backward. Now if he could only explain why computer screens in movies always look like they’ve been engineered to invoke seizures, we’d have something!

December 16, 2004 .net

JohnMont Wants Feedback on WinForms/Avalon Interop

John Montgomery wants to know:

[W]hen it comes to Avalon and Windows Forms interop, I’m curious: how many people will use it and what will they use it for? What are the scenarios that we’ll see? I have my own opinions, of course, but I’m curious about what you think. I’d like to be able to have a conversation with both teams about what scenarios we should optimize for.”

Don’t be shy! Let him know what it is you’re looking for from Avalon and Windows Form integration!

December 16, 2004 .net

Best of the Blogs: VS Tools for Office 2003

Kevin Schuler and Drew Robbins have compiled a list of dozens of the best VSTO blog entries in 2003 across seven categories ranging from architecture to troubleshooting. If you’re into VSTO, this should provide some pleasant holiday reading for you. Enjoy!
December 15, 2004 .net

Avalon Chess

The Avalon experiments keep on happening. This time, check out Avalon Chess!

December 6, 2004 .net

Edward Tufte + Avalon == Visualization Goodness

I’ve long held the belief that the big deal about Avalon is that it provided a platform for a whole new class of data visualization and manipulation software, stuff that most of us can’t even dream of right now. But Edward Tufte can dream of it and in one of his dreams, he invented Sparklines, a very nice way to integrate graphics directly into a sentence instead of relegating it to a whole other paragraph.

As evidence of the power of Avalon to enable the next-gen UI, Sean Gerety has provided an Avalon implementation of Sparklines. Excellent work, Sean.

December 5, 2004 .net

Dependency and Attached Properties in Avalon

December 4, 2004 .net

Rod’s Avalon Adventures

Read Rod Paddock’s Adventures in Avalon as he installs and binds to a DataSet:

December 3, 2004 .net

More On Avalon CTP Animations

Because Ian doesn’t have blog comments and because the Avalon Animation team doesn’t yet have a blog, Elizabeth Nelson (PM) and Matt Calkins (SDE) have asked that I post the following response to Ian’s recent Animating Custom Types in Avalon post:

I’m happy to report that building custom animations to animate font size is not necessary. (Nevertheless, Ian Griffiths’s sample is a spiffy example of how to build custom animations!) For the time being, TextEffects provides just the font size animation tools he seeks. There’s even a TextEffects sample in the Avalon CTP Announcement that Arik, Karsten and Tim put together. The properties of interest for font size animations are ScaleX and ScaleY.

This isn’t the end of the story on Font animations — we’re still working on hooking a few things up internally to make it easier to use animations. Regardless of what else we cook up for built-in Font animations, TextEffects will come in handy for animating individual characters in a string in a coordinated manner.

As for the concern about rendering artifacts when enlarging text, the issue is definitely on our radar!

Thanks for your enthusiasm for custom animations.”

December 2, 2004 .net

Nixon Knew He Was A Crook…

but it wasn’t until Woodward and Bernstein shared it with the world that he did anything about it. Now that we’ve got an Avalon that works with Windows XP and Visual Studio, if there’s something about it that you don’t like, blog about it or post to the Avalon newsgroup. Cry out loud! Don’t keep it inside. Don’t learn how to hide your feelings…

P.S. I *know* that there are some folks that want the Avalon CTP bits that don’t have MSDN subscriptions. You have my most sincere apologies.

P.P.S. I don’t mean to call the Avalon guys crooks. Those guys work super hard to build the right thing and they’re dying for the feedback. That makes them *very* different than Nixon, who really didn’t want the feedback he got. : )

December 2, 2004 .net

Animating Custom Types in Avalon

Ian Griffiths illustrates the core concepts in Avalon animation by implementing a custom font size animation class. Basically, animation” in Avalon means changing an object’s value over a range in a given time,” e.g. changing a font size from 10 to 72 in 4 seconds or an X coordinate from 10 to 100 in 2 seconds. Animation seemed so fancy to me until I broke it down in my head in this way.
November 30, 2004 .net

Avalon 3D Samples Updated for the CTP

Karsten says: Check out http://www.therhogue.com/WinFX/ for some more Avalon 3D samples.  Robert Hogue is an amazing developer and these are definitely worth checking out.”
November 30, 2004 .net

The 7 Goals of Highly Effective XAML Designers

Rob Relyea, a Lead PM on the Avalon team, has posted the 7 goals that drives the XAML design decisions.
November 27, 2004 .net

Microsoft’s Road Map for Windows Forms and Avalon

John Montgomery, Microsoft Marketing Maven in charge of .NET and WinFX messaging, has posted the road map agreed on by the Windows Forms and Avalon teams about which UI stack to use and when (an excerpt is presented here):

Microsoft’s roadmap for client UI development has three main phases:

  1. Today, use Windows Forms v1.1 and observe the Microsoft Patterns and Practices guidance for maintaining clean separation between UI and other application logic.
  2. When Avalon v1.0 releases (scheduled for mid-2006), we recommend that applications looking to differentiate their user interface such as Web sites and graphically intensive applications such as complex data visualization look closely at Avalon. Other applications should continue using Windows Forms.
  3. Following the release of Avalon 1.0, the next version of Visual Studio following Visual Studio 2005 will contain tools and designers to support Avalon. At this point, customers should start to move their new development efforts to Avalon and use the Windows Forms/Avalon interoperability features.”
November 27, 2004 .net

More Peer Pressure for Ian…

I really wish Ian would port his TopDraw sample to the Avalon CTP
November 26, 2004 .net

DirectX Mesh (.x) to XAML Converter Update for CTP

Ian gives into peer pressure (I love the Internet : ) and posts an update to his DirectX mesh (.x) files to XAML conversion tool that works with the Avalon CTP.

Now that we have an Avalon that works with WinXP and VS05, what’s holding you back?

November 26, 2004 .net

Some Love for the Smart Client Offline App. Block

Richard Childress has posted on his experiences with the Smart Client Offline Application Block as valuable for not only solving his domain-specific problem, but also in getting .NET to be used at all:

Working in IT, where we try to only write code that helps run our business, it’s a Great Thing when you don’t have to write plumbing code. Writing a class here and another class there, while leveraging a big chunk of code that we didn’t write to solve a problem, is golden. This block, itself, is actually helping drive the case for starting to incorporate the framework into our app(s). The value is unquestionable.”

November 25, 2004 .net

Useful Avalon Application: Pong

As cool as XamlPad and Bouncing Boing Ball are, I’ve had at least one blog comment from someone looking for a useful Avalon CTP application (something not targeted at developers, I’m guessing). Well look no more, because we have Pong! What more use can we expect from our computers than that?!? : )

November 24, 2004 .net

Interactive Programming Addiction

So, I’ve never done anything with Python, so I’ve never really figured out what the big deal was. However, if the interactive Python development environment is anything like the experience of XamlPad, I’m glad I haven’t tried it, otherwise I’d never be able to go back.

Oh my god, that interactive model is wonderful! I sat down this afternoon to port my Longhorn Solitaire code to the Avalon CTP and had to completely re-write my GridPanel layout code to use the new Grid because the GridPanel is deprecated. However, I didn’t know a thing about the Grid, so found a great little Grid sample from the WinFX SDK and started the latest version of XamlPad and taught myself how to use the Grid interactively.

Every time I added an element or attribute, I saw the results in real-time. If I screwed up the syntax, I got a red error message in the status bar. I can’t tell you how much pleasure I got adding and elements and setting the Grid.Row and Grid.Column attributes on my cell elements, watching things move around the screen and figuring out Grid the content model. It was fabulous! All development should be like this…

November 24, 2004 .net

Channel9: Way Cool Visual C# Express Demo

It’s amazing to me how much stuff they’ve packed into Visual C# Express. In this Channel9 demo from Dan Fernandez, I learned about a ton of VS05 features that I didn’t know about. I hope they all work from the non-Express product…
November 24, 2004 .net

Getting to the Avalon Visual Tree

It’s a common Avalon question: how does XAML get translated into an Avalon visual tree, i.e. the set of Avalon objects? In this post, Zhanbo Sun, an SDE/T on the Avalon team, not only shows an example of this translation, but provides the code so that you can see it for yourself. Maybe Chris Anderson will add this feature to XamlPad so that you can see it interactively or maybe Gaston Milano will add it to his VS XAML Viewer so that you can see it inside of Visual Studio… [hint, hint]
November 24, 2004 .net

XAML Viewer for Visual Studio 2005 Beta 1

As cool as Chris Anderson’s XamlPad sample is, I think Gaston I’m a VS man” Milano has done him one better with a XAML viewer integrated directly into Visual Studio 2005 beta 1. Wahoo!

November 23, 2004 .net

Avalon CTP Sample: 3D Animation Studio

Karsten has updated his 3D animation play toy to the Avalon CTP.
November 23, 2004 .net

Avalon + WinForms Sitting In A Tree…

Chris Anderson has posted two samples of Avalon and Windows Forms integration (a simple one and a more complicated one). Both are presented in a form that’s easy to use with his ClickOnce XamlPad Clone. Enjoy.
November 22, 2004 .net

Avalon CTP Sample #2: 3D Bouncing Boing Demo

Daniel Lehenbauer, an SDE on the Avalon team, has ported his 3D Bouncing Ball Boing demo to the Avalon CTP. The hits, they just keep on coming. : )
November 22, 2004 .net

Getting to Know Avalon - A Guided Tour of the SDK

Tim Sneath, Avalon evangelist and all around charming fellow (maybe because his name reminds me of a Dr. Suess character?), posted a nice little tour of Avalon via the the WinFX SDK. Enjoy.
November 22, 2004 .net

Using VC#/VB Express w/ the Avalon CTP

Rob Relyea, a Lead PM on the Avalon team, has posted a set of instructions for using the Avalon CTP project templates from Visual C# Express and Visual Basic Express.
November 21, 2004 .net

MSDN DevChat on Real World No-Touch Deployment

Robi Khan and Mark Levison from Databeacon will be doing a MSDN DevChat on their recent commercial application using No-Touch Deployment. It’s on Wednesday, November 24, 2004 at 10am PST. I’ll be watching and you can sign up here.

November 19, 2004 .net

Avalon CTP Sample and Tool: XamlPad Clone

November 19, 2004 .net

November 2004 Avalon CTP Released

Just in case you haven’t noticed, MSDN Subscribers should download the Avalon Community Technology Preview, which enables Avalon to run under Windows XP and Windows Server 2003 and to integrate with Visual Studio 2005. Also, you can access the WinFX SDK that reference Avalon online. And as if that weren’t enough, the Avalon evangelist and product teams have teamed up to give you an overview of what’s new in this pre-release of Avalon. Of course, we’re still on the way to beta, let alone an RTM of Avalon, so there’s still plenty of time to give the Avalon team feedback about what you love and don’t love in the Avalon newsgroup.

And as if that we’re enough, here’s some views and news about the Avalon CTP:

In the words of Chris Anderson, Architect on the Avalon team, This is not the final API set, XAML spec, or anything else - this is a Technology Preview’”. And still, I’ve spent all day installing in on my machine. Wahoo!

November 18, 2004 .net

Scott Garvey’s Discussion of Smart Clients

Channel9 has a nice video of Scott Garvey, a Microsoft Smart Client Evangelist, talking about what’s a smart client and what’s not. Scott also discussed some examples of smart clients, e.g. eBay for power sellers.”

For me, things boil down this way: if it’s something I’ve got to spend significant time in, I really want it to be a smart client, otherwise I’m going to get frustrated. For example, Outlook Web Access is great for occasional use from any PC under the sun, but if I’m using it for more than 5 minutes, I’m guaranteed to press a hotkey like Ctrl+A and get nothing like I expect, forcing me to find my laptop so I can get some real work done in Outlook.

November 15, 2004 .net

Smart Client DevCenter: Rebooted

Jonathan Wells, Matt Lusher and I have re-launched the MSDN Smart Client Developer Center web site, kicking off the new site with four headlines of interest:

Since the Smart Client DevCenter now has a Content Strategist (me), expect to see regular releases of articles and samples exploring smart client-related technologies, including but not limited to Windows Forms, the Compact Framework and Visual Studio Tools for Office.

And don’t hesitate to send Jonathan or me your complaints and suggestions. We don’t put this site up for our health, you know; we do it for you!

November 11, 2004 .net

Bill Wagner Using the Updater App Block

Bill Wagner takes us through using the more extensible Updater Application Block to automatically install and maintain applications. He also discusses the importance of validation and how to use post processing commands.”

[via theserverside.net]

October 29, 2004 .net

First Commercial .NET No Touch Deployment App

Mark Levison of Databeacon talks about the first commercial-grade .NET No-Touch Deployment application to be deployed over the internet (at least, as far as he and I know). I asked Mark what his motivations were for using a smart client instead of a web app. These were his reasons:

  1. Integration with Desktop export to excel, word, send to mail recipient, etc.
  2. The user never has to wait for a round trip to the server. Once the application is up and running everything is done locally, the user is never left waiting by a suddenly slow internet connection.
  3. Our application gets a full blown window with its menu and toolbar, we’re not stuck inside of IE.
  4. Uses the clients CPU do all of work. Our application is graphically and sometimes computationally intensive, if we did all of this work server side, we would eventually run into scaling problems.”

Congrats Mark and Databeacon. This is but the beginning of much greater things to come.

NOTE: I don’t know if this was exuberance at making the instructions for running the sample easy or not, but you should absolutely not [u]se the Microsoft .NET Framework wizard to grant full trust to trusted sites.” Trusted or not, you should not award any code any more permission than it needs. For instructions on how to build an MSI setup for configuring a NTD client for just the right amount of permissions until you can use ClickOnce (which handles permission elevation much better than NTD), you can read this article on the topic.

October 28, 2004 .net

Way Cool Windows Forms 2.0 Samples

My Windows Forms partner in crime, Mike Weinhardt, pointed out to me this morning that the Windows Forms team has posted their way cool Windows Forms 2.0 samples, including:

  • Design Mode Dialog - Mike Harsh
    This is a sample dialog component that allows any form to go into design mode” at runtime. This component highlights the new, easy to consume, designer infrastructure APIs in Whidbey and has the same usage pattern as other common dialogs.
  • Stock Quote Chart Generator - Joe Stegman
    This app uses the sample asynchronously polls a web service for stock quotes and charts the results over a customizable time period.
  • MSN Messenger Clone - Scott Morrison
    This is a Windows Forms app that emulates the functionality of MSN Messenger.
  • Internet Explorer Clone - Joe Stegman
    This is a Windows Forms app that looks like Internet Explorer 6 and uses the new WebBrowser control.
  • Windows Forms RSS Portal - Joe Stegman
    This is portal type application that aggregates RSS feeds asynchronously.
  • Outlook 2003 Clone - Joe Stegman
    This is a UI front end that has the look and feel of Microsoft Outlook 2003.
October 14, 2004 .net

Aaron Skonnard On The Indigo SDR

If you didn’t get to go to the Indigo Software Design Review last week (like most of us), Aaron Skonnard puts you right into the middle of it.
October 14, 2004 .net

.NET Show: Don and Doug on Connected Systems

I’m downloading this now, but anytime I get a chance to see Don Box or Doug Purdy speak, I want to do it. To see them both together?!? Oh la la!

And after watching them together on the latest .NET Show, I get to see them again next week at the Applied XML Developer’s Conference. How lucky am I? : )

October 10, 2004 .net

Rob Relyea on Fixing the XAML Attribute Grammar

Rob’s been talking about fixing various parts of XAML lately, which is exactly the kind of result you want when a bunch of folks work with your technology and give you feedback on it. So, things will change and get better.

However, Rob isn’t telling us just want the changes are likely to be because, as he puts it, I’m not going into great detail in the description of our fix because I’d prefer to be the first company to ship our design.  :-)”

Like Rob, I find this amusing. I grew up in a period of Microsoft’s life where they were much derided for leveraging” ideas from the rest of the world and repurposing them for use in Windows (or *as* Windows in some cases). Now that MS has caught up and passed most of the rest of the world in many crucial areas of technology, it’s nice to see us grow into the role of thought leader instead of follower.

October 7, 2004 .net

Settings, Collections and VS05b1 (oh my)

Here.

The one where I get to try out the interaction between VS05, Windows Forms 2.0, application and user settings (wahoo!), generics and versioning, discovering that, while this combo still in beta, it’s still pretty darn wonderful.

October 6, 2004 .net

Ryan, My Favorite Feedbacker

If I’m doing the calculations correctly, Ryan Dawson is not yet old enough to drink, but he still manages to give the best, most direct, most thorough feedback of anyone in the WinFX/Longhorn developer community (Ian Griffiths is a close second, but he’s got that English polite thing going for him, so it’s hard to know just how much he’s really complaining : ). Ryan’s built apps to test the various pillars and makes his complaints very clear, as in this post about Avalon 3D.

That’s not to say that I agree with everything he says or that the product team agrees, but I wish I had 100 more Ryan Dawson’s banging on the pillars and complaining loudly and clearly so that the product teams can get some crystal clear feedback on what works, what doesn’t and what developers want. If you don’t have a blog, get one or post your complaints on the newsgroups. Come on! Tell us why we suck and what to do to stop sucking! You know you want to. : )

October 4, 2004 .net

Thinking About Developers and Smart Clients

I’ve recently added another castle to my empire by taking on the Content Strategist duties for the MSDN Smart Client Developer Center.

When I step into a new project, my typical mode of operations is to gather goals and issues from as many people as care that I can find, stir it all up with what I think is important, run it up the flag pole, repair the bullet holes a few times and then execute. I’m in the gather” mode on the SCDC right now and I’m curious what your goals and issues are for the SCDC as it stands today and for what you’d hope it to become tomorrow. Feel free to respond to this post (even anonymously if it makes you feel more comfortable) or email me. The idea is that the SCDC becomes a valuable place for Microsoft developers building Smart Clients of all kinds, but particularly using Windows Forms, the Compact Framework, Visual Studio Tools for Office (did you know that they have a ClickOnce equivalent?) and WinFX.

BTW, I’m still the Content Strategist for the Longhorn DevCenter, so don’t go getting your hopes up that I’ll stop beating that particular drum. : )

October 2, 2004 .net

Learn Indigo in 5 Minutes

Well, to be fair, Don leaves some details out, but he wanted to see if he could explain Indigo in 5 minutes or less. Worth the read.

October 1, 2004 .net

Avalon: Modern Day Compositing & Rendering Engine

Brian Pepin, Development Lead on the Windows Forms team, has some interesting observations about Avalon and what it means to developers. I particularly like his take on Avalon vs. Windows Forms for control developers and users:

[Avalon is] needed by control developers everywhere so they can create controls with great usability without hiring an army of Win32 experts. It’s needed by end users because they deserve to have great usability in all their applications, not just the ones that Microsoft threw a bazillion dollars at.”

I also like what he has to say about Avalon vs. Windows Forms for application developers:

It’s also important to realize that from an application developer’s perspective, there is little difference between Avalon and Windows Forms. For years there will be interesting controls built from both technologies.”

In other words, Avalon is the necessary next step to build more powerful controls so that users get the most out of their applications without requiring a giant change in development methodology for application developers.

[via Chris Anderson]

September 22, 2004 .net

Mike Harsh On the Life Left in Windows Forms (Lots!)

Mike Harsh, a PM on the Windows Forms team, gives his opinion on several important Windows Forms and Avalon-related questions:

  • Is [Windows Forms 2.0 as the last version of Windows Forms] a bad thing from a developer perspective?
  • So UI library innovation for Windows Forms is finished.  Does that make it dead? (no)
  • Is it worth investing in Windows Forms? (yes)
  • Will Windows Forms apps be able to integrate Longhorn controls in under 5 lines of code? (absolutely)
  • If I invest in a large Windows Forms app today will I have to rewrite it in 3 years for Avalon?

These are Mike’s opinions and not official Microsoft messaging, but I’ll leave you to decide whether that’s worse or better. : )

September 10, 2004 .net

Joe Stegman on Windows Forms and Avalon Together

Joe Stegman, Lead PM on the Windows Forms team, talks about how tight the integration between Windows Forms and Avalon will be, including hosting Windows Forms controls inside of Avalon, Avalon controls inside of Windows Forms and sharing a data binding model. In other words, developing on Windows Forms is a wonderful way to get tasty managed UI goodness today and long into the future, whether you’d like to target Avalon and/or Longhorn in the future or not.
September 10, 2004 .net

Catching up with Longhorn

That was interesting. I spent all week getting ready for the big announcement, we launched it on a Friday and then I took off for a week of fun in the sun. And now, it’s taken me a week to catch up with what everyone is thinking. People I’ve found particular interesting are:

  • Chris Anderson, Architect on the Avalon team (1, 2, 3, 4, 5)
  • Joe Beda, recently formerly on the Avalon team (1)
  • Jeremy Mazner, Longhorn Evangelist (1, 2)
  • Robert Scoble, MS RSS Filler (1, 2)
  • Miguel de Icaza, Architect on the Mono project, a .NET clone (1, 2)
  • Robert McLaws, a 3rd party developer (1, 2)
  • Jason Olson, a 3rd party developer (1, 2)
  • Jim Allchin, Group VP for Platforms (1)

In the meantime, I’m re-aligning the Longhorn DevCenter content with our new goals, making sure to keep on my toes as things suss out (we’re far from completely sussed on the details or implementations of this announcement, which is why watching internal and external commentary is so interesting right now).

August 30, 2004 .net

Scoble Takes the Pulse of the Developer Community

August 30, 2004 .net

Jim Allchin, Group VP for Windows, on Channel9 Vid

August 29, 2004 .net

Jeremy Mazern on What Happened To Longhorn & WinFS

Jeremy contributes to the news about Longhorn and WinFS. Most interesting is Jeremy’s discussion of the usability studies we did on WinFS and how we’re using that information to improve the API. Check it out.
August 27, 2004 .net

WinFX To Be Available On Down-Level Windows

Lots of interesting news about the plan to make WinFX available on Windows XP and Windows 2003:

Enjoy.

August 22, 2004 .net

Tim Sneath On Building a Longhorn Sidebar

Tim Sneath shares his experiences building a Longhorn Sidebar, including some tips on how to do the work w/o making your shell unusable (always a plus : ).
August 22, 2004 .net

Why Joe Likes XAML

Here.

Joe Marini is working with Longhorn, Avalon and XAML on a Microsoft product team and finds that he really loves XAML. This, in and off itself, is not surprising (I mean, that’s what we’re paying him for : ), but it’s interesting to hear the specifics.

One thing that Joe seems to love (and I can hardly blame him) is that data binding in Avalon is used to build the UI, not just show external data. He expounds on this in his wonderful Data Bound User Interfaces in XAML article.

Another thing that Joe loves is that a Avalon designer’s work is in the same format as what the designer needs and can be dropped right into an app w/o converting from bitmap mock-ups (Peter Stern and I are doing this).

You can read about the work that Joe has done with XAML and download his code samples on his web site’s tutorial section. Joe is definitely one to watch in the Longhorn/Avalon space.

August 18, 2004 .net

Longhorn on Mars

Arun Bhatnagar found Longhorn on Mars today:

I am a software developer who is currently working on C#/.net in Canada. Like so many other developers I am really excited about the features in Longhorn. I am waiting for it and so it is really good to know that Longhorn already exists on Mars. Yes, that’s what USA Today reported today. Read the caption beside the image in this story.”

Apparently NASAs in the early adopter program… : )

August 18, 2004 .net

Don Tours the Indigo Building (aka 42)

It’s easy to forget the real people behind any given project, especially one the size of Indigo with Don as the pretty figure head. In this video, Don (via Robert and Channel9) shows you a fraction of the people that work on the team and they reveal their deepest past implementation shames and triumphs. Put a face on CoInitializeSecurity and enjoy.

August 17, 2004 .net

Nice Concise Overview of MSBuild

While not nearly as extensive as Christophe Nasarre’s 3-part look at MSBuild (part 1, part 2 and part 3), Klaus Aschenbrenner has provided a nice 3-page overview of MSBuild, including the major elements, a hello world” .proj file and even a quick look at building custom tasks.
August 13, 2004 .net

Ohhhh… Imaginary Flying 3D Donut…

Karsten Jzkdliguloiuski has updated his Avalon 3D Donut to be more delicious and interactive and to fly! Enjoy.
August 12, 2004 .net

.NET DJ Interviews Don “The King of COM” Box

Here. In the interview, Don answers questions like How did you get started in computer technologies” and What’s your favorite vegetable,” but he also answers much more interesting questions like I’m perfectly happy using ASMX for Web services - why should I care about Indigo?” and So, how will Indigo be better than WSE 2.0?”
August 12, 2004 .net

“Windows Forms layout coming out of your butt”

Mike Weinhardt lists his favorite new features in Windows Forms 2.0, not only bringing my butt” into it, but making it sound like a good thing. : )

August 12, 2004 .net

Eric Gunnerson Can’t Resist The Pull Of Longhorn

Apparently Eric Gunnerson, confident that C# is now perfect (and who can blame him?) has decided to work on the Longhorn Movie Maker team (and who can blame him?).
August 12, 2004 .net

Scott’s .NET Zen

I find these strangely compelling, especially this one:

Languages Zen Koan:
One day Fred was working with .NET. He overheard a programmer say to his superior, Give me the best programming language you have.” Every language in .NET is the best,” replied the butcher. You can not find any language in .NET that is not the best.” At these words, Fred was enlightened.”

August 12, 2004 .net

3D for the Rest of Us, Part 2: Transforms

Daniel Lehenbauer, SDE on the Avalon team, posts another article on Avalon 3D with fabulous figures. As a guy that relies on screen shots and the kindness of his friends for such luscious figures, I’ve very jealous. Check it out.
August 12, 2004 .net

Monad Architect Presents on the Monad Shell

Only4Gurus.com has posted a presentation by Jeffrey P. Snover, a Monad Architect, entitled Monad Shell — Task-Oriented Automation Framework,” in which he covers the Monad mission, the overall architecture and key developer and admin concepts. I’m a huge Monad fan and so should you be.
August 12, 2004 .net

“Avalon is not going to replace the browser.”

Joe Beda, development lead on the Avalon team, talks about rich vs. reach and where Avalon fits into this picture.
August 12, 2004 .net

DonXML Updates His SVG2XAML Tool For WinHEC LH

DonXML has ported his SVG to XAML conversion tool to the WinHEC build of Longhorn and provides the source as well as the binary on his GotDotNet workspace.

Eventually, we’ll be awash in real tools that output XAML, but until then conversion tools are important so that real artists can use the tools with which they’re already familiar, output them into a vector format supported by that tool and then convert them to XAML for use in Longhorn apps.

August 3, 2004 .net

XAML: Smooth & Satisfying

Peter Stern strikes again, this time with fun XAML t-shirts, coffee mugs and laptop stickers. Ordered.
August 3, 2004 .net

Microsoft Longhorn Employee Blogs

Here. As I post this, 82 Microsoft employees classify themselves as blogging about Longhorn or Longhorn-related topics. I thought I knew them all, but there are some that were new to me.
July 30, 2004 .net

Longhorn Jobs

Here.

Looking for the a job in Longhorn? CareerBuilder.com has 5 Longhorn jobs listed:

  • Software Development Lead, Microsoft
  • Program Manager, Microsoft
  • Application Developer, Microsoft
  • Bussers, Longhorn Steakhouse
  • Trailer Technicians, Lancaster, TX

Those last two look tasty. : )

July 27, 2004 .net

MSDN Designer Posts Fun Longhorn Stuff

Peter Stern, one of MSDNs most excellent user experience and graphic designers, has started up a web site, with a special section just for fun Longhorn-related stuff, including a complete deck of card faces in XAML and his drawings of yours truly from the Longhorn Developer Center in XAML format.

I’ve been corrupting Peter’s thinking toward Longhorn for a few months now and I’ve fabulously happy to have him as the other half of that magical ying/yang designer/developer relationship that Avalon fosters.

July 21, 2004 .net

My Favorite Smart Client App: Robocopy

There’s a smart client app that I’ve found myself using more and more and loving it: robocopy. The UI for robocopy sucks, of course. It’s a command line app with a myriad of options that take experimentation to really figure out, but once it’s started, it works like a champ, providing progress on each file and, most importantly, retrying once it loses it’s network connection.

What this allows me to do is set up long copy operations bringing down the latest internal Longhorn builds (which are huge) over my uncertain VPN connection. When I hibernate my box, I don’t worry about Robocopy dropping bits or getting confused and when I lose my internet or VPN connection, it retires 1 *million* times before giving up, which gives me plenty of time to notice and reestablish the connection.

Slap a friendlier UI on Robocopy and you’ve got a wonderful smart client citizen that should be emulated.

July 21, 2004 .net

Don Norman Consulting on Longhorn?

Here.

According to Computerworld, Don Norman, the design engineer famous for such works as The Design of Everyday Things,” is consulting on Longhorn UI design. Cool! I especially love this statement:

This is not the computer age’ any more; this is the age of very smart chips hooked into a huge worldwide network. Infrastructure is about sharing.” This means two or more incompatible ways of doing things is counterproductive.

I love his characterization of client computers as smart chips,” i.e. storing services and data production on the server, although the smarts” of the client is important, too, i.e. data visualization and manipulation (which is death with a round-trip per click).

July 21, 2004 .net

I Love Ian

In Ian Griffith’s latest post, he shows 3 identical (to my eye) upper case Os next to each other and says, [t]his clearly shows the shortcomings of that implementation” like a normal human can tell the difference!

The funny thing is, I’ve actually noticed that ClearType on Longhorn was generally better, although I never knew if that was my imagination or not. The thing I love about Ian is that he takes that vague sense of this seems better” to let me show you why it’s better and I’ll show you my own implementation of ClearType as a comparison just for fun.” What’s not to love? : )

July 21, 2004 .net

Jon Udell Takes The Long View on Longhorn

After weeks of trying research, floating his thoughts on his blog and taking feedback from the blogging community (including several Microsoft folks), Jon Udell has posted an Infoworld article digging into the pillars of Longhorn (Avalon, Indigo and WinFS) and grading them on their implications. He summarizes nicely, I think:

Indigo, by virtue of its developer-friendly simplification of Web services protocols, could propel Microsoft into the forefront of enterprise middleware. Although Longhorn’s use of Indigo will focus on networks of Windows peers, the technology isn’t bound to Longhorn. Expect to see Indigo-powered enterprise service bus’ offerings from Microsoft and partners.”

If WinFS succeeds in delivering improvements in users’ ability to organize and manage local information, enterprises looking to drive productivity up — and support costs down — will want it. The wild card will be the level of support for legacy document formats and emerging XML formats. Benefits that accrue only to new WinFS-aware applications won’t tip the scale.”

Avalon’s TV-like presentation experiences’ clearly favor the home entertainment center over the business desktop. An accelerated convergence of voice, video, and data could alter that equation, and Avalon is designed to help drive that convergence. But enterprises concerned about reach and lock-in will need to carefully evaluate the trade-offs.”

I think that Jon’s nails the tensions involved in Indigo and WinFS, but misses the boat on Avalon, which represents a much-needed overhaul of our aging presentation sub-system and enables a host of applications that we need to visualize and manipulate the ever increasing amount of data with which we deal. Of course, the existing presentation stack will continue to work just fine, but for those applications that need it, Avalon will be a god send. As we progress over the next decade, more and more apps are going to need what Avalon provides.

However, while I don’t agree with every that Jon says, but I do appreciate the thoroughness that went into his opinions. Folks involved in Longhorn, both inside and outside of Microsoft, should take a look.

July 21, 2004 .net

A Kinder, Gentler Driver Model for Longhorn

According to legend, half the Windows XP BSODs are 3rd party driver crashes, reducing our trustworthiness” to the user (trust is more than security and privacy). Yesterday, DevSource reported on a new driver model in Longhorn that will isolate the OS from driver crashes and simplify the development platform to reduce crashes in the first place. Amen, brother.

[via Dactylmatrix]

July 19, 2004 .net

Avalon 3D Coordinate System

Daniel Lehenbauer, an SDE on the Avalon team, has a nice explanation of the 3D coordinate space in Avalon with some very illustrative pictures. I’ve got absolutely no experience with 3D and I can follow what he’s talking about. Looks like Daniel should be writing a book…

July 19, 2004 .net

Tim Sneath On The Audiences And Tensions O MSBuild

Tim Sneath, a .NET Architect in MS-UK, lays out the audiences and tensions of MSBuild very nicely in this short summary. If you want more information, there are a bunch of MSBuild resources on the Longhorn Developer Center’s Tools & Code Samples page.
July 12, 2004 .net

Needed: Virtual PC Image of Longhorn 4074

Does anyone have a VPC image of Longhorn 4074 (the WinHEC Build) that they could share with me? Every time I try to install, it crashes the VPC. Normally, I wouldn’t ask (I have a machine just for Longhorn), but I have the need to run the latest public and the latest internal builds. Thanks!
July 10, 2004 .net

I want Facetop for Longhorn

Facetop has been all over the web for a couple of days and I’d like to point out two things about it:

  1. This is exactly the kind of thing we’re enabling with the advanced client capabilities in Longhorn that you just couldn’t do in a web app. Until you see something like this, you don’t think of it, but when you’ve got advanced capability in the platform, all kinds of cool stuff happens that the creator of the platform (Apple’s Mac OS X, in this case) never considered. I fully expect the coolest Longhorn apps to come from someone outside of Microsoft.
  2. I want it!
July 9, 2004 .net

Feedster Longhorn Buzz Feed

Suddenly, after having been worthless/dormant since its inception, the Feedster Windows Longhorn Buzz Feed has begun spouting useful information. Subscribed.
July 8, 2004 .net

Richard Turner Answers Common Indigo Questions

Richard Turner, a PM on the Indigo team, answers some of the Indigo questions that came up as a result of his recent Channel9 interview, including:

  • Will .NET Remoting go away any time soon? (no)
  • Will Indigo Services require IIS? (no)
  • We need to support Windows 2000 and XP. Can Indigo Services be hosted on these OSs? (it’s not supported) Will applications running on these OSs be able to act as clients to Indigo Services? (absolutely)
  • We expose some of our remoting assemblies via HTTP and host at least one in IIS.  Will Indigo Services offer interoperability with these configurations? (yes) Will we be able to write an Indigo wrapper around a remoting DLL? (yes)

I’ve just realized that Richard has turned into my most favorite Indigo blogger. He straddles the fence nicely between what is available today and what’s going to be available tomorrow. Thanks, Richard. We need you. : )

July 3, 2004 .net

Ashvil DCosta on How Longhorn Transforms Apps

Ashvil DCosta, a software professional in Bangalore writing a book on outsourcing software product development, posts his ideas about how Longhorn, particularly WinFS, will change the way we think about and develop applications.
July 3, 2004 .net

Jason Nadal on the Longhorn Speech API

The Longhorn speech API offers baked-in functionality for voice commands inside the operating system (OS). This is a giant leap forward in the functionality provided by an OS. With the addition of an alternate user interface, products in the future may have a much different mode of interaction than currently used. Through the course of this article, the basics of voice input and output will be shown, as well as the construction of grammar, and how to act on recognition.”

[via Paul Lamere]

July 1, 2004 .net

Rob Chandler On Longhorn User Assistance Direction

Rob Chandler, a Microsoft Help MVP, has posted a look at where he sees User Assistance heading in Longhorn, both in the UI and in the new help system. I see Longhorn as an opportunity to crank user experience up a notch in every way and user assistance is an important part of that.
June 30, 2004 .net

All About MSH:The Microsoft Shell (Codename Monad)

I’m a big cmd.exe user and was a big Korn Shell user before that, so command shells are an important part of my life and thus, I’m skeptical of new ones. However, I’ve been drooling over MSH (the Microsoft Shell — codename Monad) ever since I first saw it. In fact, when I saw Karsten’s post on getting the Monad bits for Windows XP and 2003, I was much excited. Then, I saw the Fundamentals Pillar topic on The .NET Show, which featured Jeffrey Snover (The Father of Monad) in the back half of the show and I was hooked. The way he told the Monad story motivated me to register for the public beta of Monad via Karsten’s instructions and wait impatiently over the weekend to be awarded permissions to download the bits.

Which I promptly installed on the WinHEC build of Longhorn (build 4074), even though it’s only supported for Windows XP and Windows 2003.

As it turns out, Longhorn comes with an earlier preview of Monad, but it’s much older than the latest Monad drop. So, I installed the latest Monad on the latest Longhorn, hoping that it would work and that I could follow along with my new hero Jeffrey.

And follow along I did, because not only did the latest Monad bits install and run just peachy under Longhorn, but the included Getting Started docs gave me hours of fun! With the functionality that Monad provides, I’m going to have a hard time going back to anything else.

If you’re a command-line person, I recommend getting on the Monad beta, taking it for a spin and letting those guys if there’s anything you don’t like (for example, I miss the start” command, but I think I’ll go build it…).

June 29, 2004 .net

The XAML Clone Wars Heat Up

There are two companies vying to be your XAML vendor today to help you get read for Longhorn tomorrow. Mobiform released an updated XAML viewer today that can convert from SVG to XAML and show XAML on your existing .NET machines. Xamlon has been on a hiring spree, today bringing on Ben Cantlon. I don’t know Ben, but he’s asking for suggestions on what his company can do today to move you to XAML that works on .NET today and Longhorn tomorrow.
June 28, 2004 .net

Avalon 3D Hit Testing Demo

The benefit of 3D support in Avalon is not the 3D support itself (we’ve had various ways to do 3D stuff in Windows apps for a while now, including both OpenGL and DirectX). The benefit is the tight integration we get between 3D and 2D elements in Avalon (and we’ll get even closer integration as we move closer to the Longhorn release).

For example, in his Avalon 3D Hit Testing Demo, Daniel Lehenbauer shows how hit testing can move into a ViewPort3D element (the representation of a 3D scene in an Avalon display) into the specific element being clicked. In other words, you can have a Button right next to a ViewPort3D showing a teapot and your app can easily tell which one was clicked. Handling a teapot click is slightly harder than handling a Button click simple because the Button does it’s own hit testing, but the Avalon 3D hit testing supports advanced features like clicking through the handle of the teapot w/o that being classified as a hit,” all of which Daniel explains nicely in his sample.

June 28, 2004 .net

Using Permutations in .NET

I know this is almost a year old, but the permutations algorithm was my favorite from STL and I’ve had occassion to miss it since moving to .NET, so it was nice to find Dr. James McCaffrey’s Using Permutations in .NET for Improved Systems Security on msdn.com. The security implications are interesting, I suppose, but permutations are useful than that (like if you’re trying to crush librarians…).

June 25, 2004 .net

Longhorn Foghorn: Crazy About Avalon Data Binding

Over the last few weeks, I’ve fallen in love with the power and simplicity of Avalon data binding. In this month’s column, I start a 2 article series by focusing on the basics of data binding in Avalon and tease you with a screen shot of my Longhorn Solitaire application rebuilt using data binding and styles, the details of which I’ll cover in the 2nd part of the series.

June 24, 2004 .net

Richard Turner On Building Web Services Today

Richard Turner, a PM on the Indigo team, has some advice about how to build web services while we wait for Indigo. He didn’t mention WSE2 specifically, but I assume he means for you to use it when you hit the wall on ASMX for web services implementations, e.g. when you need WS-Security support.
June 24, 2004 .net

It’s Almost Always Option B

Choose an existing technology Foo and imagine a newer, better way of doing the same thing called Bar that’s coming in some number of days/weeks/years. Sean and Scott say that you have the following choices:

A. Blissfully continue to use Foo.
B. Continue to use Foo, but research Bar, and architect for its use once it’s available.
C. Don’t touch Foo with a 10 foot pole. It’s dead after all. Touching it is probably illegal in 46 states.

Some folks hold onto option A too long, while some jump into option C too soon. The answer is almost always B within some delta of it’s available” that’s appropriate for your business.

Sean and Scott call Foo and Bar Windows Forms” and Avalon,” but as they point out, these are the decisions we’re always making on new technologies. What’s the best judge of the delta around it’s available” for adoption? That’s all about your specific business needs and don’t let peer pressure sway you either way.

June 24, 2004 .net

RobertM On Consuming XAML From A Web Server

Robert McLaws makes an interesting observation about the possibility of consuming XAML from a web server:

So, if Microsoft wants to blur the lines between a web site and an client-side application, what makes you think that the next version of IIS will not support serving up XAML to the client. Instead of getting a limited browser experience at http://www.longhornblogs.com/default.aspx, what if you could get a super-interactive experience with the full power of the client at http://www.longhornblogs.com/default.xaml? What if, on a mobile device, you could use web services to allow location-aware applications ultra-dynamic, serving up XAML UI code along with data? A thick thin-client? Talk about a contradiction in terms. The possibilities become greatly expanded if you beging looking at what’s in front of you instead of looking behind your shoulder at what’s behind you.”

The future is unwritten.

June 19, 2004 .net

Chris Anderson on Avalon Visual Extensibility

Chris Anderson just did a fabulous job describing what makes Avalon more extensible than existing popular UI frameworks. What Avalon allows is the ability to have a Button instance like so:

<Window>
  <Button>Hello</Button>
<Window>

And then, somewhere else, using Styles, setting the VisualTree of what a Button looks like to be whatever you like, e.g.

<Style>
  <Button />
  <Style.VisualTree>
    <FlowPanel>
      <!-- anything you like in here, e.g. <Text>, <Video>, <Rectangle>, whatever -->
      <ContentPresenter />
    </FlowPanel>
  </Style.VisualTree>
</Style>

Two interesting things about this button style. The first is that you can make a Button look however you want it to look, without worrying whether the Avalon team had that in mind up front. Two, when you want to drop in the content inside the Button tag, e.g. Hello”, you drop in the ContentPresentor and it knows how to display what was placed in the Button (again, which could be anything). Simple and flexible: two things that I’m finding to be true more and more about Avalon the further I dig.

June 19, 2004 .net

Longhorn 4074, MSBuild + GetOutputAssembly

If you’re using Longhorn 4074 and MSBuild is telling you this, The target GetOutputAssembly” does not exist in the project.’, then try these steps to solve the problem:

  • Backup %windows%\microsoft.net\windows\v6.0.4030\WindowsCommon.Target because you’re about to modify it

  • In WindowsCommon.Target, replace all GetOutputAssembly with BuildOutputGroup

  • Save and Close WindowsCommon.Target

  • Re-run MSBuild and enjoy

June 17, 2004 .net

Avalon Data Binding Talk, PADNUG, Thurs, 6/24/04

If you’re familiar with data binding in Windows Forms or ASP.NET, you ain’t seen nothin’ yet. In this presentation, Chris Sells, Content Strategist for the MSDN Longhorn Developer Center Web site, will cover data binding in Avalon, the new UI stack in Longhorn, Microsoft’s next OS. Chris will cover the basics of data binding and then move into transformers, filters and styling. If you’re going to build UIs in Avalon, you’d be crazy not to use data binding to do it.”

Data Binding in Avalon
6/24/2004, 6:30pm
Portland Community College Auditorium, Room 104
1626 SE Water Avenue
Portland, OR

June 17, 2004 .net

Anders On Integrating Database Support Into C#

Some quotes from Anders on Channel9:

On of the things that we are trying to think about deeply in C# 3.0 is this big gap that I still see between general purpose languages and databases… Anyone who’s building an enterprise app is using both worlds… There’s certainly a lot of progress we can make by truly marrying these worlds… It’s nothing but mismatch. We gotta do away with that.”

Now that we’ve removed memory management from my code and between InitializeComponent and XAML, we’ve removed the need to write UI layout code, the next big chunk that gums up the works is data integration code. To have Anders thinking about how to extend C# 3.0 to mitigate this problem has me all a tingle!

June 17, 2004 .net

Chris Anderson on XAML “Aha” Moments

Chris Anderson, Architect on the Avalon team, shows the first XAML Hello, World” code and then describes two big aha” moments to which XAML programmers can look forward. I’ve been to both of the moments that Chris describes and have had one more he doesn’t mention: data binding in Avalon changes everything about how I build my UI.
June 16, 2004 .net

Refining the Versioning Story

Wesner Moise reports on a talk that Jeff Richter did on the .NET versioning story in the Longhorn time frame. Some interesting quotes:

  • a library could not easily be updated since the CLR looked for an exact version match. There was a complex way to solve this problem through policy files; however, even engineers at Microsoft found this approach too difficult.”
  • Microsoft has a new approach for Longhorn and Orcas (.NET v3.0), which divides assemblies into two categories, Platforms and Libraries.”
  • Most assemblies will or should be libraries. Microsoft discourages the use of platform assemblies.”
  • There are actually three types of platform assemblies: System-wide, process-wide, and app domain-wide.”
  • Longhorn will no longer support multiple CLRs. Every managed application will be forced to use the latest version of the CLR on the system.”
  • Whidbey is expected to include an Assembly attribute, AssemblyFlagsAttribute, which allows to developer to specify Library, AppDomainPlatform, ProcessPlatform, SystemPlatform, or Legacy to identify the versioning scheme the CLR uses to load a reference assembly.”

I know that the existing versioning story doesn’t cut it for a lot of folks. Will this new model solve the problems? Is there a complexity danger?

Also, Ian has some thoughts on the new model.

June 12, 2004 .net

Channel9 Videos: Rich Turner On The Road To Indigo

Here.

Rich Turned, an Indigo PM, has some useful things to say about Indigo in his recent Channel9 videos:

Plus, Rich has a blog to which I subscribe (but I wish he were more prolific).

June 11, 2004 .net

Jon Udell’s Questions about Longhorn

I’m really loving Jon’s approach to exploring and questioning the goals and implications of Longhorn:

  1. Questions about Longhorn, part 1: WinFS
  2. Questions about Longhorn, part 2: WinFS and semantics
  3. Questions about Longhorn, part 3: Avalon’s enterprise mission

I don’t have any pithy summaries of his basic points; his posts deserve a read and a think.

June 10, 2004 .net

Avalon Property Invalidation & Custom Measurement

This post is an oldie, but a goody, in which Kenny Lim talks not only about custom Avalon controls catching property changes so that they can re-render themselves, but also about the custom measurement sequence, which is a core piece of a control that does custom layout like, say, a pile of cards (hypothetically, of course : ).
June 9, 2004 .net

Another Cool Visualization

VisitorVille maps your real-time web site data to a SimCity-like environment that you can use to see where folks are going on your site and how they’re navigating from one place to another. It does the other web traffic kinds of analysis, too, but the ability to watch your visitors in real-time looks pretty darn cool. This is the kind of thing that Longhorn should be good at enabling.

[via Jason Whittingon]

June 9, 2004 .net

Addressing Misperceptions About Indigo

Richard Turner, a PM on the Indigo team, addresses the biggest misperception about Indigo in this Channel9 video.

Bottom line: Microsoft is not taking MSMQ, COM+ or Remoting out of the platform; it’s just that Indigo, which subsumes the features of these other technologies, will do it all better.

June 9, 2004 .net

Using XAML As A 3D File Format

Daniel Lehenbauer, an SDE on the Avalon team, has started a wiki providing helpful hints on using XAML as your new 3D file format and has provided a utility to help those playing with 3D in the WinHEC build of Longhorn (build 4074).
June 8, 2004 .net

On The Value and Direction of WinFS

Jon Udell, a writer for InfoWorld, begins a series digging into the value proposition of Longhorn with a look at WinFS. Jeremy Mazner, a Microsoft evangelist focusing on WinFS, provides a counter-point.
June 2, 2004 .net

MyXaml Is Not A Microsoft XAML Clone

Just to be clear, Marc Clifton’s MyXaml framework for adding a declarative UI mark-up language to today’s .NET framework is not a clone/sub-set of Microsoft’s XAML or Avalon targeted at Longhorn. In other words, while MyXaml provides a number of the benefits of declarative UI mark-up for building smart/rich clients today, MyXaml is not a way to write WinForms code today that will seamlessly turn into Avalon code tomorrow.

The reason I mention this is because I’ve seen some folks get a bit confused by the use of Xaml” in the name (Marc is using XAML as the generic Extensible Application Mark-up Language and not as related to Microsoft’s XAML).

On the other hand, there are two other projects that are aiming to clone/sub-set XAML/Avalon on .NET today: Xamlon and Mobiform’s XAML products. I can’t claim that either of these will actually help you transition to Longhorn when it comes along, but I know that Xamlon’s XAML samples work with minor tweaks on their parser and on the WinHEC build of Longhorn.

May 31, 2004 .net

Q: Why Can’t I Unload a .NET Assembly? A:…

Jason Zander, a Microsoft Product Unit Manager, not only points out the implementation problems we have with being able to unload .NET assemblies, he recommends AppDomains as the solution you really want anyway. And then, when his commentors dissent, he’s right back in there asking for more information.

Have you got opinions on this topic? Make hay while the sun shines!

May 28, 2004 .net

A 3-Part, 3-Day Weekend XAML Quiz

Ian posted a fun little snippet of XAML showing off the new support for image effects on anything that Avalon renders, not just images:


  xmlns:def=“Definition” Text.FontSize=“24″>
  This seems clear enough.
 
   
     
   

    This is considerably less clear.
 

I’ve rewritten it using a more compact syntax:


This is considerably less clear.

  1. For 1 free UUID, is this legal XAML? Why or why not?
  2. For 2 free UUIDs, what other popular XAML construct uses the exact same syntax?
  3. For 3 free UUIDs, what popular C# construct has a similar syntax? How is it subtly different? (Hint: I’m not showing the difference in this example.)
May 28, 2004 .net

Got Smart Client Development Questions?

May 26, 2004 .net

Microsoft Car .NET

If the reality is anything like the concept videos, I want it!
May 26, 2004 .net

O’Reilly Takes A First Look At the WinHEC Longhorn

Wei-Meng Lee takes a first look at the WinHEC build of Longhorn for O’Reilly. It’s a user-centric look at Longhorn, but I learned stuff. : )
May 25, 2004 .net

Wesner on XAML as Documents (Again)

As Wesner notes, the Longhorn SDK lists 3 distinct Avalon applications types: Windows/Forms apps, multi-page apps and documents. The beauty of Avalon is that it brings so many together, apps/documents, multi-window apps/multi-page apps, text/images/video/audio, 2D/3D, etc. And to answer Wesner, Microsoft will provide editing tools for Avalon beyond Notepad (someday…).

May 23, 2004 .net

A Gathering of Avalon 3D Materials

Greg Schecter, one of the designers of the new support for 3D in Avalon available in the Longhorn WinHEC build, provides a nice overview and some other links to Avalon 3D resources:

3D support in Avalon is not meant to build Doom 3, but it does shine especially brightly in two places: 1) you can do 3D in a declarative way in XAML, just like the rest of Avalon and 2) as Greg describes, the integration of 2D and 3D in Avalon is nice and clean the way it isn’t in most current 3D APIs. I’m looking forward to taking advantage of the 3D support in my own apps, which isn’t something I ever considered before with DirectX. Thanks, guys!

May 21, 2004 .net

Strengths and Weaknesses

May 21, 2004 .net

WinHEC Avalon Slides

May 21, 2004 .net

The Power of Vector Drawing

Ian blathers on about the power for vector graphics for a while then hits you with this link demonstrating the power of vector graphics. Wow. Some of those pictures are amazing.
May 21, 2004 .net

Interview: Bob Muglia, MS Longhorn Server Sr. VP

ZDNet asks Bob Muglia, the Sr. VP in charge of Longhorn Server, questions like: What does MS think about Linux? When will Longhorn client and server ship? What about WinFS? And my personal favorite: Can you tell us what’s on Blackcomb’s feature list?
May 19, 2004 .net

WinFS StoreSpy v0.8 for the WinHEC Longhorn

Doh! I jumped the gun on this post. The WinFS team doesn’t think that StoreSpy is ready for prime time, so I’ve taken it down. Bad dog. No bone!
May 17, 2004 .net

.NET Rocks: Reflections on Connections

Carl IM’d me to see if I could call into a long conference call. I said that I would, but couldn’t til the brothers Sells had gone to bed (doing the dad thing, don’t you know). Anyway, I called and got to swap conference stories with Carl, Rory, Dan, Bill, Mark, Kathleen and Robert. Then they told me I was actually broadcasting on an episode of .NET Rocks live focusing on conferences and today I got the URL. Ooops. Hope I didn’t say anything I shouldn’t have… : )
May 15, 2004 .net

Channel9 Video: What influenced the design of LH?

Kam Vedbrat, a member of the Longhorn User Experience team (aka the Aero team) talks about the warm, fuzzy tasks that they went through to come up with what innovative” looks like in ways that I admire, cuz I never would have thunk of them.
May 14, 2004 .net

Squarified Treemaps in Avalon and Much, Much More

Today Jonathan Hodgson has posted a very cool article ostensibly about implementing Squarified Treemaps in Avalon, but he goes much further than that. First, he shows us what his Avalon implementation of Treemaps look like, including providing the source and a Maslan-ese video showing off his creation for those folks that don’t have the Longhorn PDC bits.

Then, Jonathan goes compare standard grid and graph visualizations to Treemaps and to describe the intimate details of the Treemap algorithm.

Later he provides the code-by-code description of his Avalon implementation, showing off the flexibility of XAML and Avalon, but before he does that, he gives us his opinion of why Avalon, the new Longhorn User Experience (UX) and XAML are all important and how Windows Forms fits into this new world.

And as if that weren’t enough, Jonathan than goes on to describe other visualization ideas that he thinks (and I agree) should be considered in this new, more flexible world that Longhorn is going to provide. And at the end, he provides an extensive set of references for further reading on these subjects.

All in all, Jonathan provides a 9500+ word tour de force, spanning prose, pictures, opinion, working code and even video! If he’d have done the voice over, he’d have gotten the whole thing. I put my feet up and worked my way through two cups of Chai tea, three biscuits and several pieces of teriyaki turkey jerky on and off during the day while reading his piece and enjoyed the experience very much. Jonathan covers a great deal of the reasons that we’re going to have to see passed our old barriers in Longhorn and he does it well, mixing his own thoughts with references from around the web on these topics. If you only read one piece on Longhorn this month, read this one.

May 13, 2004 .net

Find Yourself with Longhorn P2P

May 13, 2004 .net

WinHEC Avalon NNTP *Dude*

Kenny Lim has posted the source to his WinHEC-compliant Avalon NNTP Reader (screenshot here). It’s stateless right now, but WinFS seems a natural for keeping this kind of state as soon as we’re allowed to extend the WinFS type system. Thanks, Kenny!
May 12, 2004 .net

WinFS: Where Do The Attributes Come From?

May 11, 2004 .net

What Happens When You Surf to WinFX.com?

The right thing happens, imo, but I’m hardly unbiased. : )
May 7, 2004 .net

The WinFS Team on the Status of WinFS

Here.

After Business Week reported the death of WinFS, some folks have been justifiably worried that such a cool feature would, in fact, be missing when their copy of Longhorn showed up at their door. Today Toby Whitney, the Group Program Manager of the WinFS team, stepped in to report that WinFS was alive and well:

WinFS is in good shape and hasn’t been cut from Longhorn.  We’re going to ship it :-).  What we need is your feedback on whether we’re building the right thing.  It’d be great if you went to MSDN and downloaded the newest bits.  They’re much more stable and represent a big evolution of what we’re doing.”

To provide the feedback that Toby is looking for, download Longhorn and the Longhorn SDK from the MSDN Subscriber Downloads section and post your feedback on the WinFS newsgroup, where Toby posted his response and the WinFS team is hangs out waiting for you.

May 7, 2004 .net

I’m loving the WinHEC build of Longhorn

The WinHEC build of Longhorn just seems so much more stable than the PDC build of Longhorn, that I find it a pleasure to use. If you’re an MSDN subscriber into Longhorn, I recommend it.
May 7, 2004 .net

What’s New in Avalon 4074

Nathan Dunlap takes us on a tour of his favorite new things in Avalon in the WinHEC build of Longhorn (4074), including a sneak peak an updated GelButton, his love affair with the  new Grid panel, his lust for real 3D and more. You gotta love that enthusiasm. : )
May 7, 2004 .net

A Huge Variety of Declarative UIs

I had no idea that there were so many declarative platforms for UI. The XUL Grand Coding Challenge 2004 shows off 10 and the XAML app ain’t even posted yet (but it’s coming).
May 6, 2004 .net

Conference In A Box: WinHEC Longhorn Materials

Dave Massy has amassed some information about the new WinHEC Longhorn build (4074) and it’s available on the Longhorn Developer Center in the Conference In A Box.” The idea is to bundle the set of conference-related materials together into a kind of virtual event” so that even folks that didn’t get to go to WinHEC can get the Longhorn information that was provided there. The plan is to gather this same kind of material for future Longhorn community technology preview drops.
May 5, 2004 .net

The Virtual WinHEC

If you can’t be at WinHEC to check out the latest Longhorn information, Paul Thurott’s got you covered with his WinHEC 2004 Show Report and Photo Gallery.
May 5, 2004 .net

Transcript of Jim Allchin’s WinHEC Keynote

Jim Allchin’s WinHEC keynote was entitled, Beyond Better, Stronger, Faster: Innovating around Experiences,” and in it, he talks about the experience that Longhorn is going to enable and how the technology supports that experience.
May 5, 2004 .net

Transcript of BillG’s WinHEC Keynote

BillG’s keynote @ WinHEC this year was entitled Seamless Computing: Hardware Advances for a New Generation of Software,” and is available in transcript form for your enjoyment.

May 5, 2004 .net

Longhorn M7.2 Bits Coming to MSDN Subscribers

Here.

In case you’ve heard the rumors about a new drop of Longhorn coming to WinHEC attendees, you’ve heard right. The Milestone 7.2 (M7.2) drop of Longhorn will be given to WinHEC attendees this week and will be available to MSDN Subscribers for download RSN*. The plan is to provide regular LH Milestone drops to the community as we have them, regardless of whether they really provide more functionality/stability or not. That way, we keep you guys in synch with what we’re doing and you can give us more relevant feedback.

In M7.2, the big deal is the addition of 3D support in Avalon, including declarative support in XAML. There are better things coming in 3D (as there are in the whole of Longhorn), but this is the initial set of functionality and we’d love to know what you think.

To set your expectations properly, WinHEC attendees and MSDN Subscribers will have access to the M7.2 OS and SDK bits, but will not have access to any matching Visual Studio bits. Neither the PDC Visual Studio installation nor the latest Visual Studio 2005 community drop nor even the upcoming Visual Studio 2005 beta will install or run properly on M7.2 Longhorn. We’re hoping for future LH Milestone drops to include the matching Visual Studio bits, but this one doesn’t. Luckily, MSBuild is included along with the compilers, so you can still build LH code under M7.2 like the pioneers did when they were blazing the Oregon Trail. It’ll put hair on your chest and build strong bones and teeth.

* RSN == Real Soon Now

May 3, 2004 .net

*Sweet* Windows Forms 2.0 Features Screen Shots

The Windows Forms team has posted some sweet screenshots and overviews of the major new features in Windows Forms 2.0, including two I hadn’t heard about before:

This is in additional to all of the other cool stuff, like a .NET WebBrowser wrapper, the new DataGridView, the strip controls, even more flexible layout, ClickOnce deployment (my personal favorite) and more.

[via Mike Weinhardt]

May 2, 2004 .net

Lutz Releases Reflector 4.0 (Finally!)

It has been hell keeping this to myself as Lutz has been sending me beta drops for the last coupla months for the completely reworked Reflector 4.0. Two very cool things about this release of Reflector:

  1. It supports any version of the .NET Framework, so it works great on Longhorn and Whidbey
  2. It has a replacement for the Class Viewer tools in the .NET SDK (wincv.exe) that I came to depend on in my writing and that hasn’t been updated for WinFX, so Reflector 4.0 is even more important to me than it would normally be

If you’re a .NET developer, you must use Reflector and if you use Reflector, you must use Reflector 4.0. Thanks, Lutz! We love you, man!

BTW, Lutz has set up a workspace for the Reflector 4.0 add-ins.

UPDATE: Denis Bauer has provided his own Reflector 4.0 Add-In to disassemble an entire assembly to a set of files. This is handy if, like me, you like to curl up with a good chuck of source code, put your feet up and enjoy a good cigar.

April 28, 2004 .net

OSS Groups Teaming Up to Combat Longhorn

It’s interesting to hear what the Mozilla and Gnome guys are thinking about to rally their forces to combat Longhorn. The interesting thing about it for me, a developer and user of software, is that when MS products improve, competitors feel the need to keep up and vice versa. In other words, I think competition is a big win for everyone and I, for one, am glad we have it.
April 28, 2004 .net

Miguel de Icaza On Why Longhorn Matters

If you don’t know him, Miguel is the architect of the Mono open source project whose aim is to implement the .NET CLR and the Framework Class Libraries on Linux (and other places) so that .NET apps can run on OSes other than Windows.

In this essay, Miguel comments on the importance of Longhorn:

″…the combination of Microsoft deployment power, XAML, Avalon and .NET is killer. …

The combination means that Longhorn apps get the web-like deployment benefits: develop centrally, deploy centrally, and safely access any content with your browser.

The sandboxed execution in .NET means that you can visit any web site and run local rich applications as oppposed to web applications without fearing about your data security: spyware, trojans and what have you.

Avalon means also that these new Web’ applications can visually integrate with your OS, that can use native dialogs can use the functionality in the OS (like the local contact picker).

And building fat-clients is arguably easier than building good looking, integrated, secure web applications (notice: applications, not static web pages).”

What I find most interesting is that while Miguel doesn’t cover the entire Longhorn story, e.g. he doesn’t mention WinFS at all, what he does mention, he summaries well. I’m glad to see the message of what’s going to make Longhorn cool is getting out. : )

April 28, 2004 .net

Tic-Tac-Toe for Longhorn

If you can’t wait for Solitaire, he’s a game you can play on Longhorn today, Deepak’s sample implementation of tic-tac-toe in C# and XAML. It also comes with a nice little write-up for your development edification and the source. Enjoy.
April 27, 2004 .net

Edward Tufte + Avalon

It’s my belief that the big deal with Avalon is that it gives us much more powerful tools to deal with data visualization and manipulation. Towards that end, Ward turned me onto Edward Tufte at lunch today and I’ve got Envisioning Information” on it’s way to my house as we speak.
April 26, 2004 .net

Logging Indigo Messages

Roman Kiss has built a little Indigo logging tool that uses Indigo’s ability to drop arbitrary code into the message pipline. Very handy for seeing what’s really going on at the message level w/o changing any of your code. Personally, I’d like to see an Avalon version (or even a Windows Forms version) just cuz I think it’d be prettier. : )
April 25, 2004 .net

A Windows Forms 2.0 Voice in the Wilderness

ASP.NET 2.0 gets a ton of deserved press, but the combination of the doubling in functionality of Windows Forms in .NET 2.0 and the new and improved No-Touch Deployment, now called ClickOnce, make smart clients an enormously compelling alternative to web apps when you know that the client is running Windows and .NET.

Michael Weinhardt, who took over my Wonders of Windows Forms column and is the co-author on the 2nd edition of my Windows Forms book, has dedicated himself to shouting the value of Windows Forms 2.0 from the rooftops. Subscribed.

April 24, 2004 .net

WinFS is a Domain Ontology with Style

Michael Herman caught onto WinFS’s real nature last year and I’m just now catching up. He points to a paper describing ontologies and points out this about WinFS: WinFS is a knowledge repesentation, storage and synch system …a literal implementation of a system strongly based on ontology related concepts.” For the basics of ontologies for our new world-to-be, Michael recommends Ontology Development 101: A Guide to Creating Your First Ontology.
April 23, 2004 .net

Security in Longhorn: Focus on Least Privilege

Keith Mr. Security” Brown kicks off a series of security articles on Longhorn. In this piece, Keith digs into the current plans for making Longhorn a much safer place for applications, only really giving administrator privileges to applications with a special need for them, regardless of the privileges of the user running the applications. This is a core piece of taking back our computers from the world’s hackers and Keith lays out the basics nicely.
April 23, 2004 .net

Overview of MSBuild, Part 1 of 3

Here.

This week, Christophe Nasarre, one of the best reviewers on my Windows Forms book, has written a 3-article series on the new command line build system and the new build core of Visual Studio 2005: MSBuild. In this installment, Christophe starts from the ground floor, building the most basic .proj files and then exploring the advanced features you need to control your builds.

Also, because MSBuild is still under development, this piece covers the details of both the MSBuild in the Longhorn PDC bits as well as the most recent Visual Studio 2005 technology preview.

April 23, 2004 .net

.NET Evangelists on .NET Rocks Today @ 9am PST

I work closely with Vic and Steve on the strategy for Longhorn content and activies, so I’m planning to tune it to today’s .NET Rocks.

April 15, 2004 .net

Another Step Down the Longhorn Road

In the 2nd installment of my series rebuilding Solitaire using Longhorn technologies, I dive into 2 of the 5 Avalon families, specifically controls and panels, and build something that is at least approaching how Sol is supposed to look.
April 14, 2004 .net

I’m on Channel9 Talking About Longhorn + Solitaire

Robert Scoble and I walked around MSDN last week with a camera and here’s the first snippet where I talk about my experiences building Solitaire for Longhorn. Watching it now, it seems to me that I need to chill a bit and maybe take a breath now and again. : )

April 14, 2004 .net

Fundamentals #2: The New Registry

Karsten continues his dig into the Fundamentals Pillar of Longhorn by describing the 3 main points of the new configuration settings infrastructure of Longhorn:

  1. Configuration schema, which allows settings to be schematized based on XML
  2. Configuration engine that has a suite of APIs for reading and writing configuration settings
  3. Optimized configuration store that can be synched with legacy stores such as the registry, INI files, etc.

Karsten also points out a tool (wcmedit.exe) for browsing the configuration store and a sample (Longhorn SDK->Samples->WMI->WMI.Configuration Sample 1).

Personally, I’ve never been happy with the various configuration settings stories of any of the Windows OSes, so I’m happy to see this problem tackled again. And if this new way of handling application and user configuration settings doesn’t meet your needs, let us know!

April 14, 2004 .net

Jeremey Mazner on the Real Status of WinFS

I’ve been silent myself on the real status of WinFS simply because I didn’t know enough to really say (although I did ask some of my internal friends who knew more to speak out). One person I didn’t even think to ask was Jeremey Mazner, a Longhorn Technical Evangelist who spends quite a bit of time WinFS.

Jeremey’s bottom line: none of the cuts affect the message from the PDC or the slides or code samples that he uses to show off the benefits of WinFS. He goes on to provide supporting evidence from inside and to speculate on where the stories to the contrary came from in the press.

That doesn’t mean that WinFS or any of the other Longhorn features we showed off at the PDC won’t take cuts in the future as we drive for our ship date, but as of right now, Jeremey has detected any real cuts in WinFS.

April 12, 2004 .net

Karsten on The Fundamentals Pillar

Karsten J rebel’s against the lack of coverage of the Fundamentals pillar of Longhorn, sketching an overview of why the Fundamentals in Longhorn are cool and also delving into a specific feature he likes (the nextgen Longhorn Event Log).

Also, if you’re looking for more Fundamentals resources, check out the Fundamentals Pillar page on the Longhorn Developer Center, which lists the Fundamentals PDC Talks, several fundamentals articles (including a nice overview of ClickOnce for Longhorn) and the WinFX Fundamentals newsgroup.

April 10, 2004 .net

Joe Beda on All Kinds of Avalon

April 9, 2004 .net

Longhorn Concept Video: Manufacturing

Carter’s got another concept video for us, this time for manufacturing.

In general, if you haven’t seen the concept videos, they’re a fantastic way to see what the heck we’re trying to enable with Longhorn.

April 9, 2004 .net

Jason Olson on Threading in Avalon

Jason Olson, an enterprising 3rd party, posts a look at the benefits of knowing about threading when building an entire UI stack from scratch. Instead of requiring you to transition from a worker thread to the UI thread to talk to a control, Avalon lets you grab the UI context that owns the control and party on:

void ShowProgress(int secondsElapsed) {

     try {

          this.Context.Enter();

          txtSeconds.Text = secondsElapsed.ToString();

     }

     finally {

          this.Context.Exit();

     }

}

This is far simpler code than what would be required in code based on User32. Nice.

UPDATE: Ian Griffiths points out that the code can be even sweeter!

April 8, 2004 .net

“Avalon Is Not Going To Replace The Browser”

There seems to be a common misconception that since Avalon windows/pages are/can be declared in markup (XAML), it must be a web killer/reach solution. It’s not.

In this short video, Joe Beda, answers the question of whether Avalon is meant to replace HTML/the web (it’s not) and what’s Avalon’s message of best of the web/best of Windows” message is really about, e.g. ease of deployment for Avalon apps like web apps, accessing central services for data and functionality (using web services instead of client UI generation), etc.

April 8, 2004 .net

Longhorn Blogs Wiki Page

Channel9 has a Longhorn Wiki and on it, Adam Kinney has started a list of Longhorn Blogs. Want to add your own? Click on the Edit link on the top left.
April 6, 2004 .net

Looking For the .NET Source Code Crawling Guy

I gave a talk at the Twin Cities .NET User Group in Minneapolis in January and I met a guy there building a web sit to crawl .NET source code on the web. I didn’t get his contact info and he didn’t email me, so I don’t know how to get a hold of him. If that’s you, please drop me a line. Thanks!
April 6, 2004 .net

MS Developer Tool Roadman: ’05 and Beyond

Wow. I’ve seen bits and drops of Whidbey (I’m limited to builds that work on Longhorn), so haven’t seen the grand, overall vision of it. In the latest Microsoft Developer Tool Roadmap, they whole darn thing is laid out and the new stuff goes on forever! Details are presented for IDE enhancements, language enhancements for VB, C#, C++ and J#, Windows Forms, ASP.NET, devices, ADO.NET, web services, Office, SQL Server, Analysis and Design (aka Whitehorse”) and even a bit about what’s coming in Longhorn on the tools side. Holy New Stuff, Batman!
April 6, 2004 .net

Longhorn Sample: RSS Reader (Like, Out Loud)

April 5, 2004 .net

Is This One Better? Now Cover the Other Eye…

Here.

Kevin Lindsey has been exploring Avalon and posting some things he didn’t expect. I love how he posts pictures of what he expected alongside of what he actually got:

Keep it up, Kevin!

April 5, 2004 .net

Ryan on Getting Starting Building Longhorn Help

Ryan has posted a nice, consise write-up of getting started writing help in Longhorn.
April 4, 2004 .net

Windows Forms Has At Least Another Decade In It

Apparently Robert had a conversation with a customer that was holding up .NET adoption because Longhorn was coming with Avalon. If you’re already planning on building Longhorn-only applications, more power to you, but most folks will need to write apps that run on other versions of Windows for some time to come. For those folks, we have .NET and Windows Forms today and for at least another decade. Let’s do the math:

  • According to recent industry rumor, Longhorn won’t ship til 2006.
  • According to our internal OS folks, a new OS isn’t ubiquitous enough to target it as a base for new consumer application work for 6 years.
  • Even 2 years after .NET was available everywhere, people are still actively doing the MFC and VB6 thing.
  • 2 years til 2006 + 6 years til ubiquity + 2 years not doing the new thing = 10 years of good, strong life left in Windows Forms at least.

In spite of my love on Avalon, I’m so confidendent that Windows Forms has a life left that I’m working with Mike on Windows Forms Programming 2/e. A book is hard enough that you don’t do it if the topic is dead, so that’s me putting my time (and Addison-Wesley’s money) where my mouth is.

April 3, 2004 .net

Why Longhorn So Soon?

Here.

Robert Hess, that .NET Show guy, talks about why he’s so into Longhorn in the recent .NET Shows lately:

What you -do- need to pay attention to, is how Longhorn’ will evolve the users concept of exactly what a Windows application is all about, and what features and functionality it should be providing them with. Many application developers should be starting to think about this TODAY, and how to begin incorporating some of these features into their application moving forward. Just the schematized file system that WinFS will introduce alone can represent not only a big jump in the potential functionality of an application, but also a considerable change in how your existing application might want to begin thinking about data storage.”
March 31, 2004 .net

Avalon Perf Tips: Properties, Resources & Triggers

March 31, 2004 .net

*This* Is Why We Released LH to Developers Early

Marc Clifton, a concerned 3rd party, provides thoughtful criticism of XAML.

Chris Anderson, Avalon Architect, takes Marc’s criticism and provides a thoughtful response.

Because of where we are in the Longhorn release cycle, i.e. a long way from a release, if the Avalon team agrees with Marc, they can make real changes.

As a result, Longhorn gets better because it’s able to accept early, critical feedback. Perfect.

March 30, 2004 .net

Avalon: From All Code to No Code And In Between

Today, Joe Marini, a Microsoft PM on a project that dare not speak it’s name, posts a blog reader built entirely in XAML, i.e. no .NET code.

Last week, Chris Anderson, an Architect on the Avalon team, showed us that Avalon requires no XAML at all if you don’t want to use it.

However, closer to the truth are Don and ChrisAn, Longhorn architects, on using a mixture of XAML for declarative UI tasks and code for handling events.

My own preferred model is to do just as much as I can in XAML, because I find declarative style coding more flexible, but to put into code what makes sense, e.g. most event handling. My line in the sand is this: if I would have to embed code in the XAML, I go to real code, otherwise, I use XAML.

March 29, 2004 .net

Rory Hosts .NET Rock While Chris Adds Color

The tables are well and truly turned from when I interviewed Carl with Rory acting as color man to where Rory is hosting and I’m just there to fill a seat. The guest is Tony Bain, who is new to me, and the topic is SQL Server apps, which, while I’m familiar with the technology, hasn’t been part of my production quality app work since embedded SQL was the rage (and I miss it!). Should be interesting at the very most. : )
March 29, 2004 .net

Is Microsoft Bollixing Up XAML?

Marc Clifton, author of the MyXaml open source project, publishes a series of articles exploring opportunities for improvement for the Avalon architects to consider:

I only wish that he would post his thoughts of how XAML should look.

March 29, 2004 .net

HTTP.SYS, IIS, Indigo, and Windows XP SP2 oh my!

Don Box expands on his explanation of HTTP.SYS, IIS and XPSP2, including providing a .NET Whidbey sample that uses HTTP.SYS along side of IIS6 running on XPSP2.
March 26, 2004 .net

Do Not Install VS2005 on Longhorn!

While it’s true that a new preview version of Visual Studio 2005 is available for MSDN Subscribers, DO NOT INSTALL THIS BUILD OF VS2005 ON LONGHORN. It won’t work.
March 25, 2004 .net

Taking Advantage of Enterprise Features in Indigo

In this piece, Karsten digs into some of the advanced features of Indigo, building the code to start from scratch on the client and server, then adding the code to add state management, reliability to the messages and asynchronous messaging.
March 25, 2004 .net

I’ve Seen Monad and I Am Pleased

The most concise description of what I love most about Monad, the next-gen Windows command line, comes from Jeffrey Snover, a Microsoft Architect, in a Peter Coffee article:

We keep the idea of A pipe to B pipe to C,’ but we pass .NET objects instead of structured text. We can pass ADO, other kinds of objects, and we can create reflection-based utilities.”

Just the idea of not having to deal with ambiguous from standard input or reparse the data at every stage of the shell pipeline makes me giddy with anticipation.

March 25, 2004 .net

XAML is VB’s “With” on Steroids

Marc’s post made me connect VBs With statement for performing multiple operations on a single variable with XAMLs terse, but powerful, syntax.
March 25, 2004 .net

XAML is Not Your Father’s HTML

Jason Olson talks about dock, absolute and relative positioning in Avalon and shows XAML mark-up examples that make his points nicely.
March 25, 2004 .net

Don Answers: Does Indigo Need IIS?

Don Box talks about how Indigo services are hosted and how that interacts with IIS (or not, as the case may be).
March 25, 2004 .net

Adam Kinney on Avalon Property Triggers

Adam has a nice, concise sample of property triggers in Avalon, which are a XAML way to change the properties of an object based on an action, e.g. implementing rollover. He also shows a small example of using property triggers with animations to build pleasing transitions.
March 24, 2004 .net

Tom Barnaby on Preparing for Indigo

March 18, 2004 .net

WinFS Scenario #4: Easing Development Process 2

March 18, 2004 .net

Brent’s Chapter 6: Indigo

Read chapter 6 of Introducing Longhorn for Developers, where Brent dives into the Indigo pillar of Longhorn, including an architectural overview, programming web services, programming remote objects, securing Indigo endpoints, reliable and durable messages and transactions.
March 18, 2004 .net

WinFS 101: Introducing the New Windows File System

Thomas Rizzo, Director (!) on the SQL Server Product Management team, kicks off his WinFS column with an overview of why we need it and what it is. I always love the first piece in any column, as it sets the grounding information for what readers are going to need to understand reading future pieces. I especially love them from internal folks, as it really gives a flavor of what the product team (WinFS, in this case), had in mind that drove them to build their thing the way they did. Check it out.
March 13, 2004 .net

Chat with the VC++ Team about Longhorn on Monday

Here. If you’re a C++ programmer and have questions or concerns about where C++ is going in Longhorn, you need to be at this chat on Monday, 3/15 from 11a - 12:30p PST.
March 12, 2004 .net

Thumbs Up for Longhorn Security Lockdown

I’m just happy to see security + Windows = good for a change. : )
March 12, 2004 .net

Indigo Lingo: Digging Into Channel Types

Yasser Shohoud digs into Indigo even further, this month using channels” to build different kinds of message exchange patterns into your applications, including one-way, duplex (incoming and outgoing messages on different ports) and request/reply, as well as adding reliability.
March 12, 2004 .net

What is WOW64 and How Does It Relate to .NET?

Here.

Josh Williams, an SDE on the CLR team, kicks off his 64-bit blog with an introduction to WOW64 and what it means for .NET programmers. Here’s the summary:

  • WOW64 isn’t the OS per se, but a subset of the Win64 OS which enables a 32bit application to run inside of a 32bit process on a 64bit OS while using 32bit system dlls and such.
  • Whidbey CLR will include both 32bit and 64bit versions, both of which will be installed on 64bit machines. This allows both 32bit and 64bit managed applications to run in bitness correct native process depending on how the assemblies are tagged at compile time.
  • Once a process is started up as either 32bit or 64bit all of the dlls/assemblies that are loaded into that process have to be compatible with that bitness.
  • If you have a 32bit managed app which has dependencies on 32bit unmanaged code then you’ll need to either find a 64bit version of the unmanaged code or tag your managed app as x86 at compile time to make sure that you don’t float up to a native 64bit process. This will result in you having to live with your process running under the WOW64.
March 10, 2004 .net

Interview: Longhorn User Experience Gurus, part 2

Paul Thurrott finishes his 2-part series of interviews of Hillel Cooperman and Tjeerd Hoek, Longhorn User Experience mavens. The interview covers just how hard it is to make an entire OS usable and just how much work MS does to get it right.

However, one thing that Hillel said struck me particularly as someone fairly new to working at MS:

Actually, that was the shocking thing about coming here: The problems weren’t simple. The number of people that I met who were humble, that cared deeply and passionately about making the user experience better for customers and weren’t just saying, Hey, here’s a new API’–not that I don’t love a new API–was surprising. These people were really deeply concerned about how they could make customers’ lives better and had thought a lot about this, way more than I had. I was blown away. I just couldn’t believe it.”

That’s exactly how I felt coming to MS. We have a PR problem, but we definately do not have a care-about-the-customer problem.

March 10, 2004 .net

Paul Thurrott’s Longhorn Activity Center

Paul Thurrott is more of a user guy then a developer guy, but you have to be a user before you can be a developer, and his stuff is often interesting. Now he’s created a spot on his site to gather his Longhorn content. My only question: where’s the dang RSS feed?!?

March 10, 2004 .net

Avalon vs. Quartz Extreme

If you read Ian’s article on Avalon Graphics Composition before the fireworks, you missed a wonderful discussion of how Avalon compares with Apple’s Quartz and Quartz Extreme. Not only does Ian respond to the ever popular Doesn’t Mac OS X already do today what Longhorn will do tomorrow?” with a resounding No!” but he does it in such a thorough manner, that you can’t help be admire it.

You go, Ian! : )

March 10, 2004 .net

Ryan Dawson on RTC in Longhorn

This time, Ryan digs into the RTC stack in Longhorn to build an IM app to enable synchronized browsing and chatting. Includes source code and a meaty write-up, including Ryan’s complaints about the current RTC stack.
March 10, 2004 .net

Benjamin Summarizes Service Boundary Guidance

I’m really getting to like Benjamin’s Mitchell’s blog as a Reader’s Digest of various issues that he’s following. This time, he summarizes advise from across three MS architects providing guidance on where to draw boundaries between services.
March 9, 2004 .net

C# Corner on the WinFS Data Model

Jesus Rodriguez provides an overview of the WinFS data model, including using it for searching and notifications.
March 9, 2004 .net

Interactive XAML Editor Preview from Mobiform

Mobiform is one of two 3rd party vendors that have been building a XAML parser that runs under the current version of .NET. Today, Mobiform went one better by releasing a working preview of an interactive XAML Editor that runs under the current version of .NET. Plus, the XAML that I created in the editor works on the PDC Longhorn bits.

Now there’s something other than the 101-Key Text Wizard to use when designing XAML for Longhorn. Mind you, what Mobiform has put together isn’t Illustrator or even Paint Brush yet, but it’s an amazing start.

March 8, 2004 .net

Ian on Graphical Composition in Avalon

Normally I like to consume something before I recommend it, but his stuff is always so good that I’m going to point out Ian’s new piece on graphical composition in Avalon before I’ve even read it. Here’s the conclusion to whet your appetite:

The new composition model in Avalon removes many of the visual design constraints that applied to most Win32 applications. It also improves performance by making more effective use of modern graphics cards, reducing the frequency with which the OS has to call the application back to keep the display up to date, and enabling a much higher quality of user interface.”

Enjoy.

March 8, 2004 .net

Using Windows Forms Markup (WFML)

Love markup but can’t wait for Longhorn/Avalon/XAML? Check out Joe Stegman’s WFML (Windows Forms Markup Language).

[via Chris Anderson]

March 8, 2004 .net

WinFS Scenario #3: Easing the Development Process

Jeremy Mazner has posted another in his series of compelling WinFS scenarios. Personally, this is one of my favorite, simply because it talks about the massive developer benefits of having an object-based stored built into the OS.
March 7, 2004 .net

European Longhorn Tour

The slides from the European tour showing off Longhorn are available on codezone.info. The usual topics are covered, i.e. Avalon, Indigo, WinFS, as well as an overview of Whidbey and a keynote from David Chappell on the foundations of creativity. I wish the vocals were up, too, but the slides are informative all by themselves.
March 7, 2004 .net

Rich Turner on Preparing Today for Indigo Tomorrow

Rich Turner, PM on the Indigo team, answers lots of FAQs related to Indigo and how to prepare for it today, including:

  • How do I prepare my code and systems to ease my adoption of Indigo?
  • Which current technologies should I use, where and when?
  • How will Indigo interoperate with systems based on existing platform and technologies?
  • How much of my code will I have to change to migrate my code to Indigo?
  • How will Services Perform & Scale?

Thanks for pointing me at Rich, folks. I’m enjoying his Indigo blog a great deal!

March 7, 2004 .net

Rich Turner on Is .NET Remoting Dead?

Rich Turner, a PM on the Microsoft Indigo team, has a pretty firm answer to the question of whether .NET remoting is dead: no.
March 7, 2004 .net

Looking for WinFS Bloggers

My call for Indigo bloggers was very successful (although most recommendations came via email), providing several interesting Indigo web blog possibilities. On the WinFS side, I only know about Mike Deem, and he seems to have gone into hybernation. Does anyone have anyone else that they’d like to recommend as a WinFS blogger? Thanks!
March 7, 2004 .net

Longhorn Animations and Timelines

One of the features that Jason built into his ImageStack application was animated zooming using timelines, which he describes in some detail here.
March 7, 2004 .net

Sample: Longhorn ImageStack

March 6, 2004 .net

How the Longhorn SDK is Built

Lori Pearce, the Matriarch of the Longhorn SDK, describes what goes into the LHSDK and how it’s built. The scope is beyond belief. 
March 5, 2004 .net

Automating Windows Forms for Testing

Brian McMaster from the Windows Forms team provides an article on how to automate Windows Forms applications for testing via tools like Visual Test. Check it out if that’s the kind of thing you want to do.
March 5, 2004 .net

Longhorn Concept Video: Financial Services

March 3, 2004 .net

Sample: Hello Longhorn on CodeProject

Looks like CodeProject is getting into the Longhorn act with a nice Hello, Longhorn sample by Deepak Kapoor.

March 2, 2004 .net

The .NET Show: I’m Green With Envy for Indigo

Before watching this episode of The .NET Show, I used to think that Don’s speaking ability made the Indigo team somehow special, but after watching this episode on Indigo and seeing John Shewchuk and Steve Swartz wax elopquent about the high level interop and functionality goals of Indigo as well as the programming model goals, I think Don is just the guy that’s willing to be publicly naked (not that I can really point that finger : ).

John and Steve provide *such* a compelling story. If you haven’t heard the Indigo story or even if you have, this is the place to get it.

Following up on Steve’s places to go for more:

BTW, does anyone have some recommendations for Indigo bloggers? I subscribe to Don, Yasser and Aaron, but don’t see much Indigo traffic on those sites.

March 2, 2004 .net

Short, but Revealing, Interview of David Treadwell

David doesn’t get many questions to answer about the present and future of .NET, but the ones he gets asked, he answers well. My favorite:

As for code identity, I love the vision. But I’ll acknowledge that it hasn’t taken off as we’d hoped. When people tried to write partial-trust apps, it always turned out there was one thing they needed to do and couldn’t. We have to do more work to find the right scenarios where you can do a functional smart-client app that runs in partial trust and doesn’t require the user to micromanage permissions. In WinFX, I want to make it viable to write partial-trust apps that can do real things.

The emphasis is mine.

[via Don Box]

March 2, 2004 .net

Jon Udell Sends Home the .NET Report Card

I’m always nervous about going to see the teacher about my kids’ performance this year. They’re both very bring, but the older one is easily bored (like his father) and the younger one is social and emotional charged (like his mother). Also, I’m of the belief that at this age (9 and 8), the parents still have an enormous influence over their children, which includes how well they do in school. All of that is wrapped up into that 20-minute meeting at those tiny little desks and it’s nerve-wracking.

On the other hand, I find myself pleasantly surprised by Jon Udell’s .NET Report Card. To be sure, there is room for improvement (Don always says, The largest room in the world is the room for improvement” : ), but two As and two Bs is pretty damn good in this age of very high expections, so I’m a proud 2nd cousin right now (the product teams are the real parents, of course).

March 1, 2004 .net

Sample: Avalon DawsonDraw

Ryan Dawson posts a nice sample showing the basics of a drawing program in Avalon, including a floating toolbar and the ability to draw and select lines, rectangles and circles. He also provides the source.

BTW, Ryan’s pretty darn prolific on Longhorn and I recommend his blog in general. Also, if I remember correctly, he’s 19, so you’re getting pure enthusiasm and uncensored truth. Recommended.

March 1, 2004 .net

How fast does Avalon need to be?

Markus Mielke, one of the guys making Avalon go just as fast as possible, posts his guidelines and goals for Avalon performance.
March 1, 2004 .net

Starting from Scratch: The Visual Basic.NET Coach

Sometimes I get aspiring programmers stumbling onto my web site and asking me how to get started having no programming background. I can’t really tell them to do what I did, i.e. spend 4 years programming Applesoft Basic, so instead I recommend The Visual Basic .NET Coach,” which is supposed to introduce .NET programming from the ground up, assuming no previous programming experience. Does anyone have any experience with this book or other similiar titles?
February 27, 2004 .net

Introducing the New Avalon Graphics Model

Ian Griffiths has a very nice piece about the new drawing model in Avalon and how it differs from the drawing model that’s we’ve known and loved since 16-bit Windows. It also includes such tidbits as a reference for the currently under-documented Path.Data attribute. Highly recommended.
February 26, 2004 .net

The .NET Show’s Got a Blog

Since it’s inception, I’ve been a big fan of the .NET Show and I’ve seen most of the episodes. Now, the host, Robert Hess, has got himself a .NET Show-related blog. Subscribed.

February 26, 2004 .net

The Selling Point of Indigo

Here.

Right on, Benjamin:

The selling point of the Indigo Service model is that it is simple and easy to use.  The benefits for developers is that they get all the benefits of enterprise-quality features such as transactions, reliable messaging and security without having to write any code.  Letting Microsoft do the plumbing allows developers more time to write code that focuses on solving complex and interesting business problems.”

February 24, 2004 .net

MSBuild Preview Quickstart Tutorials

Alex Kipman, PM on the MSBuild team, was kind enough to provide several tutorials on MSBuild, each of which includes sample projects and documentation. If you’re looking to get up to speed on MSBuild, the nextgen .NET build engine, there’s no better way. Enjoy!
February 24, 2004 .net

Time for some Longhorn DevCenter Feedback

It’s been about 5 months since the Longhorn Developer Center was launched and I’m curious what you guys think of it. Do you like it? What about it don’t you like? How could it support your current Longhorn development goals better? What can I do for the budding Longhorn developers that we’re not doing? Don’t be shy; call it like you see it.

February 24, 2004 .net

Benjamin Summarizes WS Alphabet Soup

Benjamin Mitchell does such a good job summarizing Jon Udell’s WS Alphabet Soup article that I felt no need to read the actual article. : )
February 24, 2004 .net

O’Reilly Dedicates More Energy to Windows

The one and only time that I ever met Tim O’Reilly, I turned into fan-boy, telling him how I used to be a Unix guy and I would just buy every single animal book,” even if I didn’t know what the topic was because the quality of the books was so high that I knew I needed to know whatever was between the covers.

Now a days, ORA produces too many quality books to purchase (or even read) them all, but I’ve been very happy to see them turn more and more of their attention towards Windows, where I’ve put all of my developer energies for more than a decade. In fact, I’ve written one book for ORA myself and I’ve got two more in the works, so I continue to be a big fan. Today they launched the Windows DevCenter, where they are concentrating and aggregating all of their considerable Windows juice. And, of course, they have an RSS feed. Subscribed!

February 23, 2004 .net

Chat: Longhorn Roadmap for Existing C/C++ Apps

On Monday, March 15th between 11am and 12:30pm PST, the VC++ product team will be hosting a chat on what to do with your existing C, C++ and MFC applications in the Longhorn time frame, starting with what to do now to best prepare yourself and your applications. If you’re a VC++ developer, don’t miss it!
February 23, 2004 .net

Avalon Bezier Spline Designer Code

Here. By popular demand, Nikhil Kothari, a PM on the ASP.NET team, has posted the source code to his most excellent Avalon Bezier Spline Designer. This is the coolest real Longhorn thing I’ve seen that comes with soure. Thanks, Nikhil!
February 21, 2004 .net

Ryan Dawson on Indigo

Ryan Dawson turns his attention to Indigo, building a client and server and then adding security and reliability. In his writing, he also points out a number of pitfalls for you to avoid when getting starting with Indigo in the PDC bits.
February 20, 2004 .net

Exploring New WinForm Controls in VS .NET Whidbey

Long before Longhorn, we’ll have Whidbey and an updated Windows Forms (as well as a bunch of other updated things, but I like Windows Form : ). This article enumerates some of the updated controls in Windows Forms Whidbey. Also, stay turned for an MSDN Magazine article by Michael Weinhardt and me with a broader look at what’s new in Whidbey Windows Forms (in fact, Michael has already tackled the new GridView control).
February 20, 2004 .net

WinFS Scenario #2: Event Planning

Jeremy Mazner presents his second scenario for WinFS, this time describing his idea app for event management that would be cake to implement using WinFS. In fact, I’m pretty sure you could do the whole thing in the shell.

On a related note, I was watching an internal training video on WinFS yesterday and it excited me in a way that’s not appropriate for humans to feel about technology. The enumeration, update, serialization, relationship, extensibility and notification models just all seem so *right*. I’m looking forward to another drop of the bits that enables me to extend WinFS so I can really start building stuff.

February 19, 2004 .net

Prepare for Longhorn: Architecture Strategy Series

Steve Kirk has updated the Architecture Developer Center with a series of streaming video presentations about the core architectures that motivated Longhorn. Topics range Pat Helland on comparing technology architectures with city architectures to Gurdeep Singh Pall talking about real-time collaboration, which a wide range of subjects in between. If you’d like to get your head in the same place that Microsoft’s architects were when the conceived of Longhorn, while still getting information that you can use today, check these out.
February 19, 2004 .net

Registration Open for WinHEC

If you need a look at Longhorn, but you couldn’t make the PDC (or you’re just dying for *another* look at Longhorn), WinHEC in May is the place to be. Of course, it’s also the place to be if you’re a PC h/w vendor, but then, you guys already know that. : )
February 19, 2004 .net

What The Heck Is a “Smart Client” Anyway?

In the most recent Microsoft Architecture Update newsletter, David Hill defines just what the heck Microsoft means when the sling around the term smart client.” Worth reading for the Ven diagram alone.
February 19, 2004 .net

Monkeying For Rory at PADNUG

Rory has graciously allowed me to volunteer as his code/slide monkey at his Portland Area .NET User’s Group meeting talk on Thursday, 2/26 at 6:30pm. The topic, in his words: 2/3 Stuff you can use right now’ and 1/3 When pigs fly (Longhorn)’.” I miss monkeying with my DM brethren, so I’m looking forward to this very much.
February 19, 2004 .net

Anon Delegates and Higher Order Procedures in C#

February 19, 2004 .net

Avalon DataTransformer Sample

Jason Nadal posted a description of the DataTransformer. A DataTransformer is a handy way to transform data-bound data into another format, like a number into a formatted string or a string into a background color. Make sure to download the B sample, which shows things a little more completely.
February 19, 2004 .net

Ben Charts A Road to Indigo

If you haven’t gotten the Indigo bug yet, Benjamin Mitchell lays out a nice, easily digestible Indigo intro on what all the fuss is about. I especially like the picture showing all communications roads leading to Indigo while maintaining the advantages of multiple styles of programming. Looking forward to reading more, Mr. Mitchell.
February 19, 2004 .net

Longhorn Sample: RSS Aggregator

Adam Kinney is at it again, this time with a sample RSS Aggregator that uses Avalon’s adaptive flow layout and some WinFS. Things are starting to get interesting…
February 18, 2004 .net

Karsten Answers Some Indigo Questions

Karsten *Januszewski* has some answers to questions about Indigo as related to ASMX, .NET Remoting, RPC and firewalls.
February 17, 2004 .net

WinFS Senario #1: Adding Music to Movies

On his quest to find non-bad WinFS scenarios” (ironically, because he was called out by another Microsoft employee — I love it when we fight in public : ), Jeremy Mazner, Longhorn Technical Evangelist, starts with his real life use of Windows Movie Maker and trying to find music to use as a soundtrack. Let Jeremy know what you think.
February 16, 2004 .net

Basic Principles of Code Access Security

If you don’t already know the basics of .NETs Code Access Security model, you shouldn’t wait any longer. Not only is CAS key to No-Touch Deployment today, but it’s key to ClickOnce deployment in Whidbey, which will also be a huge part of the Longhorn deployment story tomorrow (or maybe the day after tomorrow : ).
February 16, 2004 .net

Exploring Visual Trees in Avalon

Kenny Lim posted an article about Visual Trees in Avalon that was down right inspirational. In fact, I spent all morning building a little app that will dump the portion of a the current version is available here for the adventurous.
February 16, 2004 .net

Whidbey Beta Schedule

If you care about Longhorn, start first with Whidbey. According to Scott Guthrie, the first Whidbey beta will be available in June.

[via Kent Sharkey]

February 15, 2004 .net

Smart Client Language Translation in Longhorn

Jason Nadal builds a useful smart client application in Longhorn for language translation. It’s a simple front-end to a web service, but it’s the first real custom app for Longhorn I’ve seen that doesn’t have to do with demonstrating or building for the platform.

February 13, 2004 .net

Avalon Resizable Panels with Splitter Bars

Here.

Nathan Dunlap and Jonathan Russ work together as designer and coder to build splitting bars in Avalon:

Boy was I happy when he got back to me with a really simple solution that I have found is really easy to reuse in a lot of scenarios. I love experiences that really show me that the designer/developer split is going to be really graceful. It’s pretty cool when the design can start with me mocking up something and handing it off to the developer who can then build logic into it. It’s even better when the developer logic isn’t so intertwined with my styles and layout that I can hardly touch it without breaking something. This way I get to use my design skills at the prototype stages and early skeletal stages, and I also get to get my hands dirty in the real code at the fit and finish stages. All you designers who have spent hours refining your designs only to have your designs mangled when they get implemented in real code… your day is coming.

BTW, if it seems like a list a lot of community Avalon pieces on my site, it’s because there’s a lot of community activity in Avalon. If you’re doing WinFS or Indigo work and I’m not seeing it, please let me know!

February 13, 2004 .net

A Man Named “Stuart Longhorn”

February 13, 2004 .net

Ian on Zooming XAML

Ian Griffiths posts the beginnings of a XAML editor (it supports squares and elipses and saving, but not loading XAML, so no source yet). Especially interesting, however, is how he handles zooming. He wrote an explanation with source on that bit.

BTW, if you haven’t figured it out yet, Ian is quite the Avalon boy. If you’re into such things, you should subscribe to his blog.

February 12, 2004 .net

Bezier Spline Designer using Avalon

Here. This looks *very* cool. Can’t *wait* to see the source code. Hurry up, Nikhil! So long as it compiles and runs, we’ll be forgiving. : )
February 12, 2004 .net

Rory’s Tile Sample Uses Sidebar as It’s Meant To

While Rory’s virtual pet sidebar tile sample isn’t especially useful for a corporate desktop (although maybe a virtual employee” version could be used to screen potential managers before they’re inflicted on unsuspecting real” employees… : ), it does show off the intended usage for the sidebar: stuff that you absolutely, positively have to look at all day long.

As an example of what I mean, consider a typical example: the weather tile. Do you really need to know what the weather is all day long? Do you need to know it enough to take up valuable screen real estate to show it to you? I know I don’t.

But, do you need to see a virtual pet all day long? You do if it’s important enough to want to run it and keep it happy. Do you want to remember to flip to it all day long as an app running in the background? Nope. And that’s why it’s a perfect tile sample. If you run it at all, it’s important enough to take up screen real estate all day long.

You can read about these and other interesting sidebar guidelines in the sidebar section of the Longhorn User Experience guide (still under construction, of course). If you’ve got any feedback, the UX team would *love* to hear it.

February 11, 2004 .net

Kenny Linn on Intro Animation in XAML

Not only does Kenny show a cool little XAML animation sample, he does it in my favorite writing style.

I’ve always loved writers that start with something I’m familiar, in this case, a star defined in a hunk of XAML, and then build it up to add new features, in this case color, opacity, scale and rotation animations. The reason I love this style is that if I’m at a computer, I can follow along, folding the new features into my code and learning how things work by doing it. Or, if I’m reading the piece in the bathtub (which happens surprisingly often), I can build the code in my head (at least, til I get one of those cool waterproof military laptops).

Kenny’s piece almost does that, but the initial showing of the is shown without context, so it’s hard to know where it goes in the growing piece of XAML I was working on. Still, he follows it up a few sentences later with the entire XAML sample, so I can see the context. If he’d have been a little more explicit about the details of the animations he was applying and had wrapped it up with a summary, it would’ve been nearly perfect.

Oh, and animations in Avalon are cool, too. : )

February 11, 2004 .net

Adam Kinney on Dynamic Animation in Avalon

Adam Kinney’s at it again, this time with a sample of changing an Avalon object’s animation properties dynamically to develop an interactive game-like effect. Very cool.
February 10, 2004 .net

Longhorn Foghorn: A Journey of a Thousand Miles

A journey of a thousand miles starts with a single step.”
Unknown (to me : )

In this installment of the Longhorn Foghorn, I start my Longhorn implementation of the venerable Windows Solitaire. There is no interesting code yet, but I have explored some of the same decisions any developer will face when starting their first Longhorn application from scratch. Enjoy.

February 9, 2004 .net

Custom Avalon Spell-Checked TextBox Control

February 8, 2004 .net

Scoble Interviews on MS’s Longhorn Search Plans

Here. Robert Scoble, Longhorn Evangelist at Microsoft, is interviewed on Microsoft’ search engine plans, including those provided in Longhorn by WinFS. Take this with a grain of salt like all advance info on Longhorn, but interesting nonetheless.
February 6, 2004 .net

IanG on Rubber Band Selection Outlines in Avalon

Ian and I are writing an Avalon book for O’Reilly and Associates together, but he’s way out in front of me, writing cool stuff like how to get rubber band selection outlines in Avalon. He also starts with a wonderful history of the XOR technique we used to use in Windows and why we no longer need it. In fact, we don’t even need XOR in Windows Forms and GDI+ today, although lots of folks don’t know that.

The key trick in Ian’s implementation is putting a hidden element into your XAML document so that when it’s time to do the rubber hand outline, you can show it, move it and resize it based on where the mouse is, hiding the Rectangle again when the mouse button is released. This lets Avalon take care of the drawing, making this technique a thing of beauty.

February 6, 2004 .net

Mitch Walker on Avalon Skinning

Here. Mitch Walker, the Terrarium guy at MS, posts some tantalizing screen shots from the Longhorn version of Terrarium under development and uses them to discuss the three steps to building skinning support into your Avalon apps. Thanks, Mitch, and when are we going to get Terrarium.Longhorn? : )
February 6, 2004 .net

Longhorn Concept Video: Health Care

Here. In this concept video, Carter Maslan, Longhorn evangelist, shows off secure, peer-to-peer networking using pub/sub in Indigo, Longhorn’s identity management, organizing data using WinFS metadata relationships, using DRM to keep patient data confidential and some more ClickOnce s/w installation. The application itself shows off a specialist working remotely on a set of real x-rays showing a real case of a person incorrectly sent home having inhaled something he shouldn’t and who could have really used a specialist on demand.
February 6, 2004 .net

The Longhorn Team is Listening

As I’ve mentioned, the reason we’re put the Longhorn preview bits out so early is so that we can get feedback at a time when things can still change. So, when you see Brad Abrams, Chris Anderson or any of the other dozens of MS PMs and Architects hanging out on the web ask for feedback on what they can do to make things better, take them up on it! Don’t be shy. If you hate something, tell us so we can change it! If you love something, tell us so we don’t change it!

Even if there isn’t any specific blog entry to which you can reply, start or your or post something to the WinFX newsgroups. We’ve got members of the Longhorn team looking everywhere for your feedback. For example, yesterday Dino posted a theory he had about developer reaction to some particular aspect of the new Longhorn programming model. Rob Relyea saw that post and today he’s soliciting more feedback on XAML compound property syntax and XAML as a whole, the latter specifically becase of Dino’s post.

If you care enough about Longhorn to be running it at this stage, you really should take these guys up on their offers and use the newsgroups. And if you’re afraid that you’re not getting your feedback seen, drop me a line. I can’t guanartee that your feedback will be incorporated, but I can make sure the right folks see it.

February 6, 2004 .net

Design Considerations on XAML Syntax

Rob Relyea, a Lead PM on the Avalon team, talks about the chief design motivation for XAML, describes the current compound property syntax and then asks if developers would like it to change. Personally, I really like the current compound property syntax, especially given the choices, but Rob doesn’t care what I think, he cares what you think. Go tell him.
February 5, 2004 .net

Dino on Longhorn “Un-programming”

Dino’s gotten some interesting feedback from his XAML-based articles. Apparently he’s hearing from real programmers” that don’t want to recycle themselves as web designers.” This feeling Dino has dubbed un-programming” and it’s the idea that XAML takes away the need to code.

XAML is most of what’s needed to build trade-show apps, that’s true. But look at your apps today: How much of your web app is HTML and how much is C# or VB.NET? How much of your Windows Forms app is in the InitializeComponent method and how much is code? While XAML can also be used for general-purpose object creation and initialization, as far as the UI of your app is concerned, all XAML does is replace the HTML or InitializeComponent method. The power of what Avalon can do is separate the UI from the code so that trained designers can work on the specifics of the UI, while real developers work on the specifics of handling events and hooking up the business logic and talking to the back-end datastore.

I know that as a Microsoft flunky, the value of my reasoning is now suspect. So don’t listen to me. Listen to Dino:

XAML is the hot new toy for app developers, and articles inevitably emphasizes that. However, there’s life beyond XAML. And by life here I mean code, managed code, classes, methods, delegates, events and the like. XAML is a shortcut much like ASPX tags in ASP.NET. Believe me, you wouldn’t do much with XAML alone and without smart C# or VB.NET code.

XAML (and the Longhorn programming style) is not the negation (and let alone the death) of programming.”

February 5, 2004 .net

Sample: WinFS for CRM

February 4, 2004 .net

Longhorn Migration & Interop: WinForms & Longhorn

February 3, 2004 .net

Preparing Today for Fewer LH Privileges Tomorrow

Karsten Jkdjflksjdf (or however you spell his last name : ) pointed out two excellent security articles today. The first is Developing Software in Visual Studio .NET with Non-Administrative Privileges.” Longhorn applications are going to run much better assuming fewer privileges, so getting yourself out of the habit of testing and running your own code as an Administrator is something you can do today to prepare for Longhorn tomorrow.

Another excellent article on this topic is from Keith Brown, a DevelopMentor colleague and security arch-Nemesis of mine (he never did like my plan of branding bad” applications by setting the first bit to 1 instead of 0… : ). Item #7 in Keith’s online book in progress, A .NET Developer’s Guide to Windows Security, is entitled How to develop code as a non-admin” and well worth the read for the practical advise as well as Keith’s pleasant writing style.

February 3, 2004 .net

“We’re full speed ahead on the R&D for speech”

Here.

Oliver Drobnik extracted a question out of a Q&A session with BillG asking about speech recognition in Longhorn. After BillG makes a very funny comment, he talks about the current state of speech recognition and synthesis today and a bit about the plan for Longhorn.

And Oliver? I’d rather not know what you’re planning on commanding your computer to do… : )

January 31, 2004 .net

MarkupCompilation: XAML, BAML, .g.cs Details

Rob Relyea, a Lead PM on the Avalon team, posts some history of XAML as well as a description of how it’s compiled into BAML and then into code. He also talks about CAML, which is used today in the PDC bits, but going away in the future.

I love these kinds of posts (and these kinds of articles) because they provide insight into what the designers of a particular technology had in mind, making it so much easier to learn. Having spent years of my life reverse-engineering the intentions of the COM designers out of the header files (because the docs and marketing materials actually pointed us in the wrong direction), it’s great when the folks behind the technology spill their guts. Thanks Chris and Jeff and Rob (and Mike and Don and the rest of the MS bloggers).

January 30, 2004 .net

Dino on Longhorn Tiles

The shell-meister himself, Dino Esposito, digs into the one of the most prominent of the new shell features in Longhorn — the Sidebar — by showing you how to add your own tile, including how to create the flyout and properties views and how to extend the context menu. Sample code included. Enjoy.

January 30, 2004 .net

U.K. bank sees browserless future

Here. It’s interesting to see an Internet-based company talk about using smart client technologies to provide their customers with a richer experience than they could provide over the web. I roamed the country for years talking to folks about Windows Forms and No-Touch Deployment for their internal stuff and they ate it up. When Whidbey ships and provides ClickOnce capabilities for Windows Forms apps, attaining Internet-reach with smart clients becomes feasible *much* sooner than Longhorn.
January 29, 2004 .net

Longhorn Meetup

I don’t know what a Meetup” is, but I signed up for a Longhorn Meetup” in 97007 (and I wasn’t the first). Will it hurt?
January 29, 2004 .net

The .NET Show: Longhorn Overview

Robert Hess kicks off a series of Longhorn episodes on The .NET Show with a Longhorn overview, featuring some of the major movers and shakers behind the technology and then, of course, some shenanigans from none other than the poster children of coding for Longhorn, Don Outofthe” Box and Chris Mr.” Anderson.
January 28, 2004 .net

XAML as Documents

Wes muses on whether XAML could become a standard” document format for even custom types. Certainly, if a document was serialized in XAML using custom types instead of in a custom format, it would save some translation to/from the Avalon object model…

January 28, 2004 .net

Announcing the Longhorn Developer FAQ

If you’ve noticed Stuart Celarier stalking the WinFX newsgroups lately, it’s because he’s been gathering the best stuff for use in his new Longhorn Developer FAQ.

Plus, Stuart’s got all kinds of cool FAQ features, like expanding/contracting items and URLs for each category and for each item. Even cooler, the source document is a WordML document that Stuart authors in Word and then translates into HTML for the MSDN site using an XSLT. It’s a very cool model for FAQs in general and I know that Stuart’s planning to share the FAQ framework on his site.

And, if you’ve got an feedback on the FAQ items or would like to see new ones (or would like to hire him — he’s amazing with all things XML), feel free to send him an email.

January 27, 2004 .net

Brian Noyes on .NET Rocks about ClickOnce

Here.

Carl interviews developer and author Brian Noyes. Brian has focused his studies and development efforts on Smart Client development, and in this interview brings us from AutoDeployment of Windows Forms applications into ClickOnce, the next-generation deployment and update technology from Microsoft that will ship with the .NET Framework 2.0. We talk about the issues around AutoDeployment, and how Microsoft is addressing those issues with ClickOnce.”

ClickOnce debuts in Whidbey and will be a big part of the deployment story in Longhorn.

January 27, 2004 .net

System Stats Using Avalon Animation Lingo

Ryan Dawson built a fun system stats utility showing off the Avalon’s animation of object rotation, position, translation and opacity. And more importantly, he describes how he did it.
January 26, 2004 .net

Win32 -> .NET Framework API Map

Tim Tabor points out a new find, a mapping from Win32 API functions to the closest equivalent in the .NET Framework class library. This is an amazing resource for folks making the switch.
January 26, 2004 .net

MSBuild in 30 Minutes or Less

Here. I just learned today that one of the most interesting conversationalist in the Windows development world has started a PDF newsletter. In this issue, he provides a quick guide to writing build scripts in MSBuild, the new build engine in Whidbey and Longhorn. Subscribed.
January 23, 2004 .net

Paul Thurrott Talks to the Longhorn Aero Team

Here. Hillel Cooperman and Tjeerd (‘cheered’) Hoek are two of the key figures in the Windows User Experience team at Microsoft, and they’ve worked on some the company’s more advanced user interface projects over the past several years, including MSN Mars,” Internet Explorer/shell, Windows Neptune,’ Windows XP, and now Longhorn. While my first (somewhat humorous) run-in with the Windows User Experience folks came during a Windows XP Beta 2 event in Seattle three years ago, the team has been working tireless toward Longhorn since the early days of Windows 95, when it moved Windows to the Explorer shell.

This interview is the first in a series highlighting the personalities behind the technology. It’s often all too easy to depersonalize a company as large as Microsoft, but there are real people behind these products, and they care very deeply that the products they create are as aesthetically beautiful, functional, secure, and reliable as they can be.”

I agree, Paul. Thanks.

January 22, 2004 .net

MSBuild on MSDN TV

Here. Alex Kipman, a Microsoft PM, talks about changing the VS.NET Whidbey build process using it’s new build engine: MSBuild. If you’re interested in batch building or extending your own build process, MSBuild is worth your attention.
January 22, 2004 .net

Introducing Microsoft WinFX by Brent Rector

Brent Rector’s PDC book on Longhorn/WinFX is now available for purchase. We’re posting the chapters on the Longhorn DevCenter, but atoms are nice, too, especially when they come in the shape of a book.

[from Adam Kinney’s blog]

January 21, 2004 .net

Setting DataGrid Styles for Custom Types

I was data binding an ArrayList of objects of a custom type, e.g. class Person { public string Name; public DateTime BirthDate; public int Teeth; }, to a DataGrid today and everything working great til I wanted to filter one of the columns out (who cares how many Teeth a person has?). I was all set with table styles and grid styles like so:

void Form1_Load(object sender, EventArgs e) {
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.DataGrid = this.dataGrid1;
tableStyle.MappingName = "Something???";
this.dataGrid1.TableStyles.Add(tableStyle);
  string[] columns = { "Name", "BirthDate" }; // Skip Teeth
foreach( string column in columns ) {
DataGridTextBoxColumn columnStyle = new DataGridTextBoxColumn();
columnStyle.HeaderText = column;
columnStyle.MappingName = column;
tableStyle.GridColumnStyles.Add(columnStyle);
}
  // Create ArrayList of Person objects...
  this.dataGrid1.DataSource = personList;
}

The problem was the table style’s MappingName. When DataBinding to a DataTable, it’s just the table name, but what is it when I’ve got a collection of objects of a custom type? Daniel Herling, a Software Design Engineer at Microsoft and the man” of the DataGrid, came to my rescue:

If you bind to an ITypedList (say, System.Data.DataTable) then the mapping name should be ITypedList::GetListName(). For a System.Data.DataTable this would be the name of the data table.

If you don’t bind to an IList that is not ITypedList then the mapping name should be list.GetType().Name where list is the list the data grid is bound to.

So, all I had to do was set the table style mapping name to the type of my custom class:

  tableStyle.MappingName = typeof(ArrayList).Name;

This wasn’t bad at all to bind a DataGrid to exactly the properties of my Person objects that I want w/o having to hack another custom shim type or changing the Person type itself to accommodate the data binding. Thanks, Daniel!

January 21, 2004 .net

Creating Drop Shadow Text in Avalon

Here. Nathan Dunlap posts another great example of Avalon effects. This time, he shows adding drop shadows to text in Avalon.
January 20, 2004 .net

A Gathering of Longhorn Code Samples

Folks have been posting Longhorn code samples on their blogs, which is great. Also, I’ve been collecting bigger code samples on the Longhorn Developer Center on the Tools & Code Samples section as well as with the PDC talks.

Also, I just noticed a Longhorn sample in the unedited section of CodeProject.com, one of my favorite user contribution sites.

Of course, you can post your sample on GotDotNet.com using the Longhorn category and there are already a coupla GDN Longhorn samples for your edification.

January 20, 2004 .net

Rory Blyth on the .NET Rocks! Internet Radio Show

Here. I’m a big Rory Blyth fan, so I’m downloading this show as I type this. Enjoy.
January 19, 2004 .net

WinFX in Detail: Inside XAML

Here. Ian Griffiths shows some of the basics of XAML, including complex properties and how code is generated and integrated behind the scenes.
January 18, 2004 .net

Longhorn Articles in Italian

Devleap.com, a site dedicated to Windows development for Italian developers, has added a new Longhorn section. Even though I can’t read Italian, I like the idea of Longhorn articles in a language of romance. Read them with your sweetheart over a candle lit dinner. I know that’s my plan. : )
January 17, 2004 .net

Glowing Image Effects in Avalon

Here. Robert Wlodarczyk posts another sample dedicated to showing off the glowing image effects in Avalon. Sweet.
January 16, 2004 .net

Avalon Image Effects Sample

Robert Wlodarczyk, a software engineer on the Avalon testing team, has posted a most excellent sample showing off the wide variety of effects you can apply to images in Avalon. Very cool.
January 16, 2004 .net

“Windows is cool again”

In talking about recent developments at Microsoft, Mary Jo sums up my own feelings nicely:

Windows is cool again, thanks to all the excitement around Longhorn.”

But I’m hardly unbiased. : )

January 15, 2004 .net

Give Your Feedback on the WinFX Docs

Here. Brad Abrams, Lead PM on the .NET Framework team, is asking how you’d like to see Microsoft improve the WinFX documentation. Don’t be shy; complaining now can improve your life later.
January 15, 2004 .net

WinFS on MSDN TV: Schemas and Extensibility

Here. Patrick Thompson, a PM on the WinFS team, talks about how types are defined in WinFS and how to extend them and create your own (although the extensibility of WinFS isn’t enabled in the PDC bits).
January 15, 2004 .net

Intro’ing Longhorn for Developers Ch4: Storage

Here.

In this chapter, Brent Rector provides his overview of WinFS, including the programming model and how to access items from the WinFS API and via SQL directly (the latter sounds a lot more fun that it is : ).

January 14, 2004 .net

Inside Avalon: Timing Is Everything

Here. Jeff Bogdan, one of the chief architects on the Microsoft Avalon team, kicks off the new Avalon column that he shares with Chris Anderson, the other chief architect on the Avalon team. These guys know Avalon because they had a hand in inventing it, so I’m *very* much looking forward to this column. Recommended.
January 14, 2004 .net

Creating Indigo Applications with the PDC Bits

Here. Yasser Shohoud, a member of the Indigo team at Microsoft, kicks off his new Indigo column with a walk-through of how to get started programming Indigo using the Visual Studio .NET templates that come with the Longhorn SDK. Yasser is also the author of the well-regarded Real World XML Web Services: For VB and VB .NET Developers, so I’m looking forward to more discussions of how to apply Indigo in the real world. Recommended.
January 14, 2004 .net

Don Box on Indigo

January 13, 2004 .net

Passing the Torch on Wonder of Windows Forms

Here. This month, Mike Weinhardt takes over for me on the Wonder of Windows Forms column so that I can concentrate on Longhorn. Mike is the co-author on the 2e of Windows Forms Programming book and a co-author with me on a couple of Windows Forms Designer integration pieces for MSDN Magazine, so he’s well qualified. Plus, as an Ozzie, he’s got quite an interesting outlook. Recommended.
January 12, 2004 .net

Joe Hewitt on What Longhorn Needs for Developers

Here.

Joe has a particularly dim view of where we’ve come with GUIs in the last 10 years. In fact, it’s much more dim than my own view. On the other hand, I think he nails one point:

There is a core set of patterns that are repeated over and over in thousands of applications, each of which has their own subtly different behavior and visuals. Back and forward, undo and redo, delete, find, bookmark, etc… And there are a core set of graphical objects like images, text, maps, and calendars, which everybody has to reinvent every time they need one in their application, and they usually do a lousy job of reinventing it. Sure, there are classes for some of these things in GUI libraries, but the user doesn’t see that - they see the programmer’s personal interpretation of how they think it should look and work.”

As a app builder in my heart, I absolutely want the tools to build *good* applications, not just *pretty* applications.

January 12, 2004 .net

My Windows Forms Book On Amazon’s Top 10

Holy cow! Windows Forms Programming in C# is #10 on the list of best-selling Microsoft-related books. I’d like to thank the academy…
January 12, 2004 .net

WinFX 247 Web Site Beta

From the same folks that brought you dotnet247.com comes winfx247.com. Since half of my .NET coding research yields answers at dotnet247.com, I’m excited to see the Longhorn/WinFX equivalent. It’s new, but I’m sure it will be a very useful site over time.
January 9, 2004 .net

MSDN TV: Introducing ClickOnce

ClickOnce is the install-on-demand technology for Longhorn, but makes it’s debut in the next version of the .NET Framework, codename Whidbey.” Hear Jamie Cool from the Windows Forms team introduce the technology he first built in prototype form as the AppUpdater Component.
January 9, 2004 .net

Developers Shrug Off Longhorn Delay Rumors

Here.

 : )

January 7, 2004 .net

Vector Graphics & Declarative Animation w/ Avalon

Don XML shows how to use graphic primitives and animation declaratively in Avalon, building an analog clock in the process. Cool!
January 6, 2004 .net

Breaking the Mental Logjam

Here.

As I’ve mentioned, one of the biggest problems I see with Longhorn is deciding exactly what to do with all of the new capabilities. So, when Carter Maslan showed me some internal training videos showing off some uses of Longhorn in potential real-world applications, I just knew we had to get them out to the world.

The first such concept video” is centered around commercial real estate (available at 320x240 and 640x480) and Carter’s got more planned in other industries, including manufacturing, telecom, financial services and more. The goal is to help break the mental logjam around how we build Windows and web applications today to get folks thinking about the possibilities that Longhorn provides. Enjoy.

January 5, 2004 .net

Don Box on .NET Rocks!

Here. I haven’t heard this yet, but I just know it’ll be fun. Once you get Don started talking, it’s hard for me to stop and interesting things almost always pop out. : )
January 3, 2004 .net

On Genghis, WinForms and Moving Towards Avalon

Here. Inspired by my pending interview of Don Box, Paolo Severini sent along an interview for me on Genghis, WinForms and how to move towards Avalon (although not in that order). The questions were so good, I thought I’d share them. Thanks, Paola!
January 3, 2004 .net

WinFS: Stamping out the Roach Motel

For those of you unfamiliar with Don’s reference, a roach motel” lets roaches in, but never lets them out. That’s exactly what most apps do today, i.e. take data in from users or import routines, but never let it out again. As Don states, one of the chief benefits of WinFS is that data that apps store in it will be available to other apps, thereby letting the roaches out of the hotel. Where Don’s analogy breaks down is that in the case of application data, letting the roaches back out of the hotel is actually a good thing. : )

December 31, 2003 .net

A Programmer’s Introduction to Visual Studio .NET

Here. Sean Early” Campbell & Scott Adopter” Swigart lay out their top 10 new IDE features of Visual Studio .NET Whidbey”.
December 29, 2003 .net

3rd Party XAML Viewer #2!

We’re not even to beta yet, but we already have not one, but two 3rd party XAML viewers targeting existing versions of the .NET Framework. Wow.

[From Don XML (donxml.com)]

December 29, 2003 .net

3rd Party XAML Viewer #2!

We’re not even to beta yet, but we already have not one, but two 3rd party XAML viewers targeting existing versions of the .NET Framework. Wow.
December 26, 2003 .net

10 Better Questions for Don Box

In a recent interview of Don Box by Mary Jo Foley, I expressed my disappointment over the dullest of both the questions and the answers. Uncharacteristically ducking criticism, Don provided details of my frequent stays at his house suggesting an unhealthy love of his pets (which I love the normal amount, I promise). While this was amusing, it doesn’t give anyone any more information than Mary Jo’s interview did.

Anyway, talking about it on the phone just now, Don agreed with me that the interview turned out much less interesting than he intended and promised to make amends. Specifically, he said, Chris, send me 10 questions and I’ll answer them.” So, here’s your chance. Reply to this post with the hardest hitting, most revealing questions and I’ll pick the best 10 to send along to Don. Don’t hold back — all questions are fair, although I’ll focus first on Indigo, then Longhorn, then technology in general before getting to Don’s own love of his pets (for example). Here’re some questions to seed your thinking:

-How does the version of Indigo shipping with Longhorn relate to what’s currently being used internally at MS? How does it relate to what you actually plan on shipping?

-What should an ASP.NET or WSE programmer *really* do today to prepare for Indigo?

-What’s the biggest surprise about the inner workings at MS?

-If you could do one thing to change MS, what would it be?

-If you could do one thing to change the IT industry, what would it be?

-How can ISVs be successful in the current IT industry?

-What’s the next big thing that’ll change the IT industry?

-What do you think is cool that doesn’t get enough attention?

-Has family scrutiny caused you to stop dressing your pugs in clown suits before expressing your love for them?

December 24, 2003 .net

Salon.com on Longhorn and Blogging

Scott Rosenberg appreciates how important blogs are when it comes to exposing Microsoft inards as Longhorn is developed. Except for the fact that Scoble’s not a programmer and I’m not an architect, he does a pretty good job.
December 22, 2003 .net

MSDN Article Submission for Budding Authors

With the increasing number of folks pinging me about submitting Longhorn articles, I thought I’d point folks to the MSDN Article Submission Guidelines, which describe how to establish a relationship with MSDN Developer Centers for article submission (MSDN Magazine has a separate process for now). Unless you’ve got a track record and can talk a Developer Center into a series right off the bat, you’re likely going to be working gratis on the first few articles til you’ve established a reputation, but it’s a nice way for new authors to see their name in lights. If you’ve got a Longhorn-specific article idea, you can also send it directly to me for a slightly quicker way to get it into my hands.
December 22, 2003 .net

Chris Sells on Longhorn for the TC .NET User Group

I’m in Minnesota over the holidays, so I thought I’d drop in on the Twin Cities .NET User Group for a short discussion of Longhorn. Please keep in mind that this talk is purely shelfish on my part — I learn best by telling the story.

December 22, 2003 .net

Mary Jo Interviews Don Box

Here.

Mary Jo Foley interviews Don Box on the origins of Indigo, the status of SOAP, the definition of SOA and Miguel de Icaza. Unfortunately, Mary Jo doesn’t dig for any dirt and Don doesn’t volunteer any, so it’s a relatively boring interview. Luckily, it’s short.

December 22, 2003 .net

Announcing The Longhorn Developer Platform Survey

Here. Give Microsoft formal feedback on Longhorn so that we can act on it more effectively.
December 22, 2003 .net

Microsoft “Longhorn” Help Highlights

Here. Matthew Ellison, from WinWriters.com, discusses his highlights of the new help system in Longhorn.
December 19, 2003 .net

Chris Anderson & Don Box sing Longhorn Xmas Carols

Here. And plus they talk about XAML… Have a Merry and a Happy!
December 19, 2003 .net

Visual Studio Magazine: Get a Grip on Longhorn

Here. Roger Jennings provides a nice overview of the major bits of Longhorn for folks that haven’t seen them yet.
December 12, 2003 .net

WinFS Overview on MSDN TV

Here.

Apparently it’s Longhorn day for MS videos:

Quentin Clark provides an overview of WinFS, including what benefits it produces, what it is, and how it’s put together. This episode introduces WinFS as a basis for more detailed presentations.”

December 12, 2003 .net

New .NET Show: Longhorn @ the PDC

December 12, 2003 .net

Avalon Resource Variety Sample

Here.

And than Nathan posts another sample showing off the various kinds of resources to be defined in Avalon and how to define them on top of one another. I’m loving this guy!

BTW, this is post 1000 on this feed. I can’t keep  up with Scoble, of course, but I had no idea I was *that* wordy. : )

December 12, 2003 .net

Avalon Video Clipping Sample

Here. Nathan Dunlap kicks off his new Avalon design blog with a sample on how to clip video to arbitrary shapes. I don’t know for what I’d use this, but it’s nice to know it’s there. : )
December 12, 2003 .net

Avalon Blog: Design Eye for the Dev Guy

And from heaven, the thing that budding Longhorn programmers most need falls to earth. Nathan Dunlap, a designer on the Avalon team, has taken up blogging. He’s covering design tips as someone that understands Avalon *and* design inside and out. Welcome, Nathan! Subscribed.
December 11, 2003 .net

Xamlon samples look interesting

If you haven’t seen it, Xamlon is a .NET 1.1 implementation of Longhorn’s XAML. And while I was under the impression that it was just XAML, i.e. a language for declaring and defining objects, it looks like Xamlon is an attempt to implement Avalon, too. I haven’t downloaded it, but looking at the Xamlon samples and code online, it looks like a subset of Avalon. Interesting…

December 10, 2003 .net

WinFX: An All-Managed API by Ian Griffiths

Here. I can’t believe a missed the first piece of Ian Griffiths’s new column! Ian is a DevelopMentor instructor, co-author on three books with me (two still in development) and a long-time friend. Check out his opinion on WinFX and what it means for developers and please point me at the RSS feed so I don’t miss the next one!
December 10, 2003 .net

WinForms Prog. in VB.NET: Design-Time Integration

Here. FTP has posted the Design-Time Integration chapter from Windows Forms Programming in Visual Basic .NET. Enjoy.
December 9, 2003 .net

Photo Organization App Build Entirely with .NET

Here. Of course, consumers won’t care that the Electronic Showbox photo organization, editing and sharing software was built from the ground up using the .NET Framework (and Genghis), but I understand from the CTO that he shudders” to think what it would have been link to develop in native code. Plus, he gives free copies to his favorite bloggers. Enjoy.
December 9, 2003 .net

Longhorn-Specific PDC Presentations, Slides & Code

If you’re overwhelmed by the huge number of PDC talks, I’ve split out the Longhorn-specific talks, including streaming video presentations, slides and demo source code as available.
December 9, 2003 .net

Graphic Designer + Coder + Longhorn = Goodness

Adam Kinney seems to be that rare combination of graphic designer and coder that I want to be to survive in the brave new world of Longhorn. I’m following his blog avidly.

December 3, 2003 .net

Avalon’s Dependency Properties

Drew Marsh describes the internals of the XAML dotted attribute syntax that I described a few days ago as well as contrasting it with the existing .NET IExtenderProperty model.

December 2, 2003 .net

Avalon Dissected: A 3-Part Series by Drew Marsh

Here.

Drew’s documenting what he discovers as he digs into Avalon.

December 2, 2003 .net

More Love for XAML Syntax: Dotted Element Names

Don Box simplified my XAML code using resources and styles. He also illustrates another XAML-ism that I’m coming to love: dotted element names. When you see something a dotted element name in XAML:

<GridPanel>
  <GridPanel.Resources>...</GridPanel.Resources>

  ...
</GridPanel>

what you’re looking at is a more convenient way of specifying an XML attribute using XML element syntax. For example, while you can specify a menu item like s

<MenuItem Header="New" />

However, if you’re doing anything fancy, like specifying an access key, you can do this using the dotted element name syntax:

<MenuItem>
  <MenuItem.Header>

    <FlowPanel>
      <AccessKey Key="N" />
      <SimpleText>ew</SimpleText>
    </FlowPanel>
  </MenuItem.Header>
</MenuItem>

In the first case, we’re just specifying a string, so declaring the Header attribute inline makes sense. In the second case, we’re composing the Header for the MenuItem as a FlowPanel, combining an AccessKey and a SimpleText element. Underneath the covers, XAML attributes translate into properties, so for those properties more complicated than strings, the dotted element name syntax allows properties to be specified as sub-elements.

December 2, 2003 .net

Indigo and Star Trek

Here. I’ve always been a big fan of wacky analogies to illustrate points and Steve’s got a good one.
December 1, 2003 .net

New Longhorn Site for Academics

Here. There are many sites on the web related to Longhorn already, but none that are geared towards academia. In fact, the most common sites like LonghornBlogs.com are made up largely of Microsoft employees. We think that an independent site where users can share their knowledge but also opinion will go a long way towards making Longhorn a better product for everyone!” LonghornBlogs.com is for anyone, but a site for academics interested in Longhorn is a good thing, too. Welcome!
November 30, 2003 .net

Another Great Set of WinForms Controls

Here. Duncan [1] points out Tim Dawson’s set of WinForms controls, all of which are either free or cheap for commercial apps. Not only are the controls well-designed and flexible, they’re also documented with a set of tutorials and provide an extensive design-time experience. I don’t know how someone can make a living giving this stuff away, but that doesn’t mean we can’t enjoy Tim’s generosity. [1] http://weblogs.asp.net/duncanma/posts/40415.aspx
November 30, 2003 .net

Interesting Ex-Microsoftie Blogs on Longhorn

Here. I read a post yesterday that pointed at Wesner Moise, an ex-Microsoftie, and now I’m hooked. I’m enjoying how he applies his technical riguor to Longhorn. I also want to know about SoftPerson, his software company that develops desktop applications based on AI.” Subscribed.
November 29, 2003 .net

XAML’s Extended Attribute Syntax

Here. The one where I fall in love with XAMLs extended attribute syntax.
November 26, 2003 .net

Avalon Performance Tips and Tricks on Build 4051

Here. Markus Mielke, a PM doing performance for the Avalon team, lists some pointers on perf in the PDC build of Longhorn and provides a place for you to send in your perf complaints (him).
November 26, 2003 .net

ComputerWorld: Orbiz Developer’s View of Longhorn

Here. ComputerWorld corralled an Orbiz developer and took down his observations about Longhorn from a developer point of view. It’s interesting to see the perspective.
November 26, 2003 .net

Best of the Microsoft PDC 2003

Here. If you missed the PDC, the WSA is sponsoring a day-long Best of” in Redmond on December 16, 2003. Learn about the new technologies coming in Microsoft’s Longhorn”, Whidbey” and Yukon” directly from the leaders driving the evolution of the Microsoft platform and tools, including Don Box, Scott Guthrie and John Shewchuk.
November 26, 2003 .net

Xamlon Beta: XAML for the .NET Framework 1.1

Here. XAML is the Longhorn mark-up language for declaring object types and instances and hooking them up to code. While it’s most often used for declarative Avalon UI, it’s useful for more than that. In fact, one enterprising 3rd party has just released a beta tool that provides a XAML subset for .NET 1.1. It’s not quite the same, but interesting never the less.
November 24, 2003 .net

I don’t know UIs, but I know what I like…

Here. The one where I declare an official, immediate need for all those unemployed web site designers to get to work on Avalon ASAP.
November 24, 2003 .net

SYS-CON RADIO @ the PDC

Here. SYS-CON interviewed me and a bunch of my friends at the PDC. It’s somewhat painful to listen to me with a cold, but fun to listen to folks like Dan Appleman, Scott Hanselman, Chris Kinsman, Jeff Prosise, Ingo Rammer, Brent Rector, John Robbins, David Treadwell, Shawn Wildermuth and a whole bunch more.
November 21, 2003 .net

Chris Anderson: Must Read Avalon Blog

Here. I’m going to save myself a lot of posts and just tell you now: if you’re into Avalon, read Chris Anderson’s posts.
November 21, 2003 .net

Chris Anderson on the History of the Avalon Team

Here. Chris Anderson, an architect on the Avalon team, talks about the history of the Avalon team, including how it was formed, the goals for Avalon and the rearchitecture a year before the PDC.
November 21, 2003 .net

A Sneak Preview of Visual C# Whidbey

Here. While things will most definately change before VS.NET Whidbey is released, this document provides a great list of new features in both C# Whidbey and VC# Whidbey. And it’s much more than generics, partial types, anonymous methods and iterators. [weblogs.asp.net/duncanma]
November 20, 2003 .net

Mike Deem: Must-Read WinFS Blog

Here. To save myself linking to nearly every single one of his posts, I’ll just tell you now: If you’re doing WinFS or curious how it works or what it means, you *must* read Mike Deem’s blog.
November 20, 2003 .net

Longhorn SDK Annotations

Here. If you haven’t noticed, the Longhorn SDK site on MSDN [1] has a new area at the bottom of each page. We call the entries in this area annotations.” This area is broken up into three parts: 1. Microsoft official” annotations, like what you’d find in a ReadMe, but associated with the specific piece of content itself 2. General group discussion, like in a newsgroup, but again, associated with the content itself 3. 3rd party annotations The 3rd part come from a client-side component that acts as an RSS aggregator, pulling annotations for a specific piece of content from the RSS feeds that you subscribe to via the component. O’Reilly was nice enough to provide an RSS feed at the launch of the annotations project to both demonstrate it’s usefulness and provide real annotations to about 50 pieces of content on the Longhorn SDK. In addition, they’ve posted a nice article about how other 3rd parties can provide their own annotations via RSS to nestle at the bottom of the MS Longhorn SDK content. If you’d like to provide annotations for folks to subscribe to as annotations,” you can do so without any permission or special support from MS. If you’d like to be considered as a Recommend” source of annotations, drop me an email: csells@microsoft.com. [1] http://longhorn.msdn.microsoft.com
November 20, 2003 .net

Unofficial, Unsupported Longhorn Tweaks Page

Here. Normally I wouldn’t point this page out, because it’s *unofficial* and *unsupported*, but some folks have used the guidance on this page to fix issues with the PDC Longhorn bits, especially as related to networking. USE AT YOUR OWN RISK.
November 20, 2003 .net

Document-Centric Applications in WinForms, 3 of 3

Here. Here’s the third and final part of my document-centric applications in WinForms piece. In this part, I present the FileDocument component from Genghis [1] and show how it can be used in SDI and MDI applications. Enjoy [1] http://www.genghisgroup.com
November 20, 2003 .net

C++ templates vs. CLR generics

Here. Under Whidbey, VC++ supports both CLR generics and C++ templates for managed code. In this post, Brandon Bray, a PM on the VC++ team, lays out the differences, while also laying out the differences between C++ templates and CLR generics in general.
November 18, 2003 .net

Infragistics UltraGrid for Avalon: Technology Demo

Here. How cool is this? Infragistics, UI component giant, has released a technology demo of their UltraGrid control for Avalon, including source! Apparently it took 2 guys 1 month to build this control from a standing start, i.e. no previous Avalon experience. There are a bunch of limitations and Infragistics is clear that you shouldn’t use this code as a template for writing your own components, but it’s still fun to see. Thanks, Infragistics!
November 16, 2003 .net

The WinFX Newsgroups are *Hot*

Here. If you have questions or comments about Longhorn/WinFX development, be sure to post them on one of the WinFX newsgroups. Digging through the recent activity, I’m hard-pressed to find a post that isn’t addressed by a member of the appropriate MS product team. These guys are *dying* for your feedback, so post away!
November 16, 2003 .net

WinFS = Windows Foo System

Here. Mike Deem, PM on the WinFS team, lays out the core story of WinFS. It’s an object store, not a file system. WinFS uses XML to describe the types of items that can be stored and then exposes .NET types for creating and finding items in the store. Also, and this is where the confusion comes from (and the codename of the technology doesn’t help), when a file is created in a certain part of the system (\\localhost\DefaultStore), an item is created in the underlying store automatically. This item is used to allow the same finding code to work for things that are file-backed, like images, and for things that aren’t file-backed, like contacts. Unfortunately, the story that Mike tells isn’t complete yet, because custom item types can’t be added using the PDC Longhorn bits, but a few of today’s facts shouldn’t ruin a good story of tomorrow. : )
November 14, 2003 .net

Paul Thurrott Previews PDC Longhorn Thoroughly

Here. Paul Thurrot digs deeply into the PDC build of Longhorn, including impressions, screen shots and videos. Of course, since this is a developer release, the user experience isn’t nearly what we plan it to be, but even developers need to know how to use the OS for which they’re developing. : )
November 13, 2003 .net

Brad Abrams of MS Solicits Feedback on WinFS

Here. Brad Abrams, a Lead PM on the WinFX team at Microsoft, *begs* for your feedback on the WinFX API: “Don’t complain later if you don’t help me fix it now ;-) Please comment or drop me an email or IM.”
November 12, 2003 .net

Windows XP Service Pack 2: A Developer’s View

Here. While it’s not Longhorn specific, certainly the changes made to security for users and application developers in WinXP SP2 are going to impact those same decisions made in Longhorn. Prepare yourself now!
November 12, 2003 .net

The XML Application Mark-up Language Reference

Here. Curious what all of the noise about XAML is about? This page in the Longhorn SDK is a complete reference to XAML as of the PDC03. There are all *kinds* of interesting things to check out in XAML. My personal favorite is the Bind element, which is the tip of the data binding iceberg in Avalon. Enjoy.
November 12, 2003 .net

The Root of All Avalon Apps

Here. If you’re building an Avalon application, the one thing you won’t be able to live without is an instance of the MSAvalon.Windows.Application object. It’s the core of all Avalon apps and where you should start when digging into Longhorn development.
November 12, 2003 .net

Complete Namespace Listings for WinFX

Here. Check out the complete list (as of the PDC03) of the namespace listings on WinFX in the Longhorn SDK. Not only are old favorites listed, like System.Collections, but there are lots of new friends, like MSAvalon.* Some of these namesspaces will change name and most of them will change in functionality before they ship, but there’s just a treasure-trove of information in them (I’m all excited about digging into System.Speech.Synthesis myself…) Enjoy.
November 11, 2003 .net

The Motivation for WinFS

Here. Mike Deem posts his opinion on why WinFS is so important. +1.
November 10, 2003 .net

VS.NET Whidbey Shortcut Expansion

Here. Jeff Key shows a sample custom shortcut for expansion, but he doesn’t show what you get. Digging through C:\Program Files\Microsoft Visual Studio .NET Whidbey\VC#\ExStencil\expansions.xml shows all *kinds* of interesting pre-defined shortcuts to expand. For example, type the following: class Foo { property[TAB] } And VS.NET Whidbey expands the text to the following: class Foo { private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } } } And not only that, but the int”, myVar” and MyProperty” are really fields in a little ad hoc dialog that VS.NET holds with the programmer to fill in these values one at a time separated by the Tab key. Explaining it is way harder than actually using it. It rocks. But wait, there’s more. Adding custom shortcuts is merely a matter of adding a new XML file of the appropriate form (see the existing ones for examples) and restarting VS.NET, i.e. no need to edit out-of-the-box VS.NET files, just add your own. Enjoy.
November 10, 2003 .net

Visual Editor for MSBuild

Here. For those of you that don’t like writing raw XML if you can help it and that Don and Tim haven’t yet converted, there’s a Visual Editor for MSBuild. Of course, it’s not VS.NET, but what is? : )
November 7, 2003 .net

New SharpReader uses Genghis

Here. Luke wanted to add a new feature to SharpReader (which was just updated today [1]), so he turned to Genghis. Come one, come all. Genghis offers free features for everyone! BTW, the new feature was toast windows. [1] http://www.sharpreader.net
November 7, 2003 .net

Don Box Shows K&R Hello, World in XAML

Here. I think Don wins the prize for most obfuscated Hello, World” implementation, but he does drive the point home nicely that XAML has nothing to do with Avalon and everything to do with declaring classes in .NET. Of course, most folks will think of XAML for declaring Avalon UI, but who knows what fun things will come out of the truth?
November 7, 2003 .net

WinFX Application Written in Standard ML

Here. I have no idea how this SML application works, but it’s cool that it does.
November 7, 2003 .net

MSDN TV: What is WinFX?

Here. Watch Brad Abrams and learn the object-oriented, managed API for the breadth of Windows Longhorn” and how it relates to the work you are already doing on the .NET Framework.
November 7, 2003 .net

Cool Longhorn Diagrams from the PDC

Here. Check out the Longhorn Architecture Diagram and the WinFX Namespace Diagram from the PDC for a look at what we’re building. Also, check out an early snapshot of the WinFS Schema: http://download.microsoft.com/download/2/7/a/27ab8218-e3d8-4261-b8e4-6ffc7bd8f199/winfsschemadiagram.vsd
November 6, 2003 .net

DonXML Dives into XAML

Here. Don XML Demsak has been diving into XAML head first, using it for it’s graphics language features and comparing it to SVG along the way. Very cool stuff.
November 5, 2003 .net

A List of What Makes WinFS Cool

Here. Serge posts a list of what he thinks makes WinFS cool along with links to more info.
November 5, 2003 .net

Develop Managed VSIP Extensions to VS.NET

Here. Want to develop deep extensions to VS.NET as a Visual Studio Integration Partner for free? Want to develop those extensions using managed code with new managed samples and a new wizard? Then check out the VSIP Extras Beta and have fun!
November 4, 2003 .net

PDC Break-Out Session Videos

Here. Looks like the folks that video taped the break-out sessions at the PDC have a DVD of the videos. Even if you did get to go, like me, you probably didn’t get to see everything you wanted. Now just gotta talk to boss into it…
November 4, 2003 .net

.NET Rocks! hosted by MSDN

Here. Because of increasing popularity, Carl Franklin asked the community for some help mirroring the audio from his .NET Rocks! internet talk show. MSDN has answered the call and is now mirroring the audio for each of the past .NET Rocks! shows and will be mirroring it into the future. Enjoy (I know I do).
November 4, 2003 .net

Preview: Microsoft’s Windows Longhorn

Here. ExtremeTech has a review of the PDC Longhorn bits. [radio.weblogs.com/0001011/]
November 4, 2003 .net

XAML’s not your father’s UI mark-up

Here. Don Box says it nicely: XAML is just an XML-based way to wire up CLR types - no more no less.”
November 3, 2003 .net

All about Longhorn

Here. John Carroll says it nicely, I think: “Longhorn will be the first operating system where ALL functionality is designed to be accessed through managed code. WIN32′s reign as the Windows API has ended, replaced by managed .NET APIs. … WIN32 will still exist for backwards compatibility, of course, and native access APIs will exist for those applications which need it… However, Microsoft intends to ensure that all Longhorn functionality is accessible from a 100% managed program.” He goes on to say other things that I think are interesting for the Longhorn developers of the future to know.
November 3, 2003 .net

My First PDC as a Microsoftie

Here. The one where I look behind the curtain, see the wizard and like it.
October 31, 2003 .net

ChrisAn posts a brief history of XAML

Here. In general, anyone interested in XAML/Avalon/Longhorn should just subscribe to Chris’s blog: http://www.simplegeek.com/blogxbrowsing.asmx/GetRss?
October 31, 2003 .net

Hang Out in The Longhorn Newsgroups

Here. I’ll be hanging out in the Longhorn newsgroups, as will MVPs and the product groups. Come on, come all!
October 31, 2003 .net

Document-Centric Applications in WinForms, 2 of 3

Here. Chris Sells expands on his first installment of this series by showing you how to integrate an SDI application into a shell while providing support for double-click document opening, a custom document icon, and adding documents to the Start->Document menu in the shell.”
October 31, 2003 .net

PDC Session Slides & Code

Here. Not all PDC sessions have slides and/or code yet, but most do. Enjoy!
October 31, 2003 .net

Paul Thurrott’s Windows SuperSite @ the PDC

Here. Paul’s site has all kinds of Longhorn screenshots and videos from the PDC.
October 31, 2003 .net

The Business of Software

Here. One of the major goals of Windows has always been to provide a platform on which ISVs and shareware authors can make money and on which corporate developers can save money. Towards that end, I’ve set up an experimental section of the Longhorn Developer Center called The Business of Software.” It’s aimed at collecting resources related to Windows business issues. Check it out and let me know what else you’d like to see there.
October 31, 2003 .net

Eric Sink Tells the Story of His First BoS Column

Here. I’m very pleased to have Eric Sink of SourceGear fame writing for the experimental Business of Software section [1] of the Longhorn Developer Center. He’s not only a successfuly ISV, but also a wonderful communicator and I look forward to reading more of his stuff, in spite of the minor communication problem we started off with. : ) [1] http://msdn.microsoft.com/longhorn/community/business/
October 31, 2003 .net

Updated CLR Profiler

Here. The CLR Profiler includes a number of very useful views of the allocation profile, including a histogram of allocated types, allocation and call graphs, a time line showing GCs of various generations and the resulting state of the managed heap after those collections, and a call tree showing per-method allocations and assembly loads.”
October 31, 2003 .net

Transcript of Bill Gates at the PDC03

Here. My favorite bit: “Certainly we believe in this next wave, and we’re not just saying that, we’re showing with our investment level how sincere we are about that. Over the last four years Microsoft’s R&D budget has more than doubled, and that budget is focused on the things you’re going to hear about today. It’s focused on making Longhorn’ real, and all the milestones that get us to that point.”
October 31, 2003 .net

Chris Sells Living La Vida Longhorn

Here. Chris Sells kicks off his inaugural installment of the Longhorn Foghorn column by defining the pillars of Longhorn,’ the next generation of the Windows operating system, and providing an overview of each pillar.”
October 31, 2003 .net

DevelopMentor Launches Longhorn Mailing List

Here. DevelopMentor launches their Longhorn mailing list.
October 31, 2003 .net

Where Is Windows Going?

Here. Lots of details from PC Magazine on Longhorn.
October 31, 2003 .net

The Longhorn SDK Online

Here. If you haven’t seen it yet, or weren’t able to get the CDs from the PDC, you’ll want to check out the online Longhorn SDK. Even if you do have the offline LHSDK, you’ll want to check out the online version, as it includes experimental support for MSDN Annotations, which lets readers comment on each page.
October 31, 2003 .net

Longhorn Promises Major Advances

Here. If Microsoft succeeds with even a portion of the ambitions expressed, Longhorn will be more secure and reliable by orders of magnitude over all previous versions of Windows.” I sure hope we succeed, then. : )
October 31, 2003 .net

Inside Longhorn: The Details

Here. Don Kiely provides a brief overview of the pillars of Longhorn.
October 31, 2003 .net

Chris Anderson & Don Box Do A Lap Around Longhorn

Here. Before they hit it big on the stage during their keynote demo, Chris Anderson and Don Box recorded their now famous Lap Around Longhorn” demo for MSDN TV. Enjoy!
October 31, 2003 .net

Microsoft Ushers in ‘Longhorn’ Era

Here. Catching up on Longhorn in the news. This article provides a brief discussion of each of the pillars.
October 31, 2003 .net

Longhorn Drivers

Here. The new stuff in Longhorn ain’t just for developers. In addition, the Microsoft Windows Hardware Central site has a bunch of resources dedicated to building drivers in Longhorn, including details of the Driver Developer Conference coming up in November.
October 31, 2003 .net

The MSDN Longhorn Developer Center Web Site

Here. Sorry for the delay in announcing this, but I had a devil of a time posting blog entries from the PDC. Anyway, the thing I’ve been working on for the last six months in now live and I’ve you to take a look and tell me what you think. If you’re a developer interested in knowing about Longhorn so that you can make decisions on your current projects or so you can dive right in and program against the PDC bits, this is the site for you. The LHDC includes community news on the Editor’s Blog (the Longhorn” category of this blog), tons of articles and whitepapers (with more to come), links to Longhorn samples, directions for MSDN subscribers that want the bits but weren’t able to come to the PDC, the Longhorn newsgroups hosted on the web in case you don’t like using a newsreader, the Longhorn SDK (with live annotations) and more as I think of it. Enjoy.
October 26, 2003 .net

Off Topic .NET Development Tools

Here. Chris Burrows compiled a list of recommended .NET development tools from the Windows Development Off Topic list’s thread on that subject. Some very cool stuff on this list that I’d never heard of.
October 24, 2003 .net

Case Study: Porting SourceOffsite from Java to C#

Here. When SourceGear needed to move its SourceOffSite product away from the Microsoft® Java Virtual Machine (MSJVM), which Microsoft is no longer able to fully support as a result of a legal agreement with Sun Microsystems, SourceGear turned to C# and the Microsoft .NET Framework.”
October 24, 2003 .net

The .NET Show: Managed DirectX

Here. I love the idea that I can marry fast performing graphics with managed code. Don’t know if it actually works well enough to build Doom, but I imagine I’ll know after watching this episode of The .NET Show.
October 23, 2003 .net

Why Showing Longhorn at the PDC Isn’t Too Early

Here. Robert lays out why it’s important that MS show off our current Longhorn thinking ASAP: so that we can incorporate as much of your feedback as humanly possible. Unfortunately, Robert frames his post in terms of hatred for MS, which is a bit more negative then necessary, I think. Still, given his current status as the I-hate-MS-lightning-rod, I’m not surprised that he covers his head on his way outdoors… : )
October 22, 2003 .net

Chris Anderson Sets Up Longhorn-ish Wiki

Here. This Wiki is hosted by ChrisAnderson. The topics for this Wiki will be anything that we all want - mostly Longhorn, Windows, Microsoft, .NET, and other technology..”
October 15, 2003 .net

Scott Guthrie’s ASP.NET Whidbey Demo

Here. ScottGu describes his ASP.NET Whidbey demo at the ASP.NET Connections conference. I’m no ASP.NET programmer, but that *is* one tasty dish…
October 14, 2003 .net

Use VS.NET to install .NET w/ your app

Here. The VS.NET teams has placed a preview” version of their VS.NET .NET Framework Bootstrapper Plug-In up on GotDotNet. [weblogs.asp.net/duncanma]
October 7, 2003 .net

More on Generics in the CLR

Here. Jason Clark digs further into C# generics, including the niftiness of constraints and why they’re so important (nicely told, Jason!).
October 3, 2003 .net

Use Rory Blyth as your own personal PDC reporter

Here. Rory Blyth, potentially the most entertaining writer in the bloggesphere, has offered to be your own personal PDC reporter, attending the topics that you can’t and writing them up for you. I’m not sure if he’s willing to do this, but maybe you could talk him into wearing your clothers while he does it. I’m XXL, Rory, and like neon colors. I’ll send my session schedule later today and you just hit all the ones I can’t, OK? Great. Thanks!
October 2, 2003 .net

PDC Pre-Con Tutorial: Windows Forms

Here. I don’t think I’ve mentioned it here, but I’m really looking forward to the Windows Forms pre-conference tutorial I’m giving with Rocky Lhotka at the PDC. I’ve never spoken at a PDC before but it’ll be just like old times with Don, Tim and Martin down the hall. Also, I’ve never spoken with Rocky before, but he’s also a big Midwesterner with a strong opinion, so it should be fun. Plus, he prefers semi-colonless languages, so all kinds of sparks should fly as I attempt to convert him to the one, true way and he does the same to me. We may have trouble remembering there’s an audience. : )
October 1, 2003 .net

LonghornBlogs.com

Here. LonghornBlogs.com is a community initiative to help spread the word with factual information about the next version of Windows, straight from the people that are building it. Because of this, the majority of people posting here (at least for now) will be Microsoft employees. Our intention here was to keep the signal-to-noise ratio extremely low. You won’t find too many personal posts here, just good solid information about Longhorn.”
October 1, 2003 .net

.NET Resource Kit CD

Here. While the .NET Resource Kit is targeted at VB programmers, it comes with tons of real 3rd party controls for free that work just as well for C# programmers as well as VB.NET programmers.
September 19, 2003 .net

Visual Studio .NET 2003 Upgrade Offer ’til 9/30

Here. There’s only 11 days left on this: “Microsoft is pleased to offer Visual Studio .NET 2002 Professional, Enterprise Developer, and Enterprise Architect customers a corresponding upgrade to a Visual Studio .NET 2003 product for only $29 US. This offer is open until September 30, 2003.”
September 19, 2003 .net

All Consuming Windows Forms Programming in C#

Here. This site is cool. It rolls up helpful info on my book, along with blogger mentions. Nice.
September 16, 2003 .net

See MSBuild.exe at the PDC

Here. MSBuild is the next generation build engine that delivers scalability and flexibility for the entire range of build scenarios, from the basics to complex build-lab scenarios. Drill into the capabilities of this universal build engine for Visual Studio Whidbey’ and the Longhorn’ operating system”
September 16, 2003 .net

The Future “Longhorn” Developer Center

Here. Watch this space.
September 15, 2003 .net

Be Interviewed by Sys-Con Radio @ the PDC

Here. Got something to say about Longhorn or .NET at the PDC in October? Sign up to be interviewed with the likes of Ken Getz, Jonathan Zuck, Scott Hanselman and Ingo Rammer.
September 15, 2003 .net

Longhorn Rocks!

Here. Just testing…
September 12, 2003 .net

Where do you want to go today, fritter?

Here. Hilarious PDC03 Red vs. Blue video!
September 12, 2003 .net

PDC2003 Blogging Site

Here. Speaking at the PDC? Going to the PDC? Missing out on the PDC? Check out the PDC Bloggers site, which should keep you neck deep in news (but if you’re not there, you’re still missing a massive love fest… : ).
September 11, 2003 .net

Implementing Drag and Drop in … WinForms!

Here. Steve Hoag gives a nice overview of various kinds of Windows Forms drag-n-drop, including text, pictures, files and between lists. The code is in VB.NET, but we’re all one big happy family!
September 6, 2003 .net

PDC/post-PDC Longhorn Online Plans?

Here. Does anyone have any PDC or post-PDC plans for books, articles, conference talks, user groups, web sites, blogs, etc. on the topic of Longhorn? If so, please email me (csells@microsoft.com) so that I can compose a list for the MSDN Longhorn Developer’s Center web site. Thanks!
September 3, 2003 .net

Handy .NET Generics Terms to Impress the Chicks

Here. From Eric Gunnerson.
August 25, 2003 .net

PDC03 Conference Tracks and Breakout Sessions

Here. Don’s glad that the PDC conference tracks and breakout sessions have been posted so that he doesn’t have to be the first to say indigo” in public. I’m similarly happy about no longer worrying about whether I’ll inadvertently say avalon” where I’m not supposed to. : )
August 20, 2003 .net

Permutations in .NET

Here. Dr. James McCaffrey provides a nice introduction to permutations” along with some .NET to generate them. He further goes on to use permutations for security purposes, but that’s not all they’re good for.
August 19, 2003 .net

Buffering .NET Console Output

Here. The one where I can’t believe that .NET Console output isn’t buffered by default, then come to appreciate why they did it that way and finally figure out how to turn buffering back on at will, keeping the best of all worlds.
August 16, 2003 .net

Introducing Generics in the CLR

Here. Jason Clark on generics in the CLR. Can’t wait!
August 13, 2003 .net

Brent Rector on .NET Rocks!

Here. Brent Rector is my long-time friend and co-author of ATL Internals. Don’t miss his unique perspective on the world. : )
August 8, 2003 .net

Visual Studio .NET Code Generator Shim

Here. Atif Aziz built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method. Cool.
August 6, 2003 .net

Format Specifiers Appendix from C# in a Nutshell

Here. By request, O’Reilly and Assoc. has posted the Format Specifiers appendix from C# in a Nutshell by Drayton et al. It’s a wonderful reference to the String.Format/ToString format specifiers that I’m constantly searching for on MSDN. Thanks, ORA!
August 5, 2003 .net

Don Box Sings

Here. You haven’t lived til you’ve had Don Box call you at home to sing you the fresh lyrics from a new parody to be performed by the Band on the Runtime at the next major MS event. PDC is going to rock.
August 1, 2003 .net

More Free, Cool WinForms Controls

Here. Includes a document manager, docking windows, menus and toolbars, outlook bar and wizards. Looks cool and they’re free. Enjoy.
July 31, 2003 .net

Magic: The User Interface Library for .NET

Here. If you haven’t seen it yet, you should check out Magic: The User Interface Library for .NET. It’s got a ton of the UI stuff you always want, e.g. docking windows, menus with graphics, control styles and tons more. And the price is right — it’s free! BTW, there is some overlap in the UI department with Genghis [1], but Genghis has some other non-UI stuff worth checking out, too. [1] http://www.genghisgroup.com
July 29, 2003 .net

The Original .NET Redneck

Here. Shawn Morrissey captures Eric Sink in a rare photo op.
July 29, 2003 .net

My First .NET Show

Here. The one where I have my first shoot on the .NET Show.
July 28, 2003 .net

SlashDot Review of Essential .NET

Here. Of course, there is the question of whether this book will actually improve your .NET development skills, but in riposte, you can honestly say that no volume details the CLR and its potential so well, and that this alone is worth the book’s cover price.”
July 23, 2003 .net

Active Scripting for .NET

Here. With the support for scripting built into .NET [1], I’m surprised it took this long for someone to rebuild the COM-based Active Scripting for .NET (although I wish it’d been us and that it was free : ). [1] http://msdn.microsoft.com/msdnmag/issues/02/08/VisualStudioforApplications/default.asp
July 21, 2003 .net

.NET Delegates Are More Powerful Than You Think

Here. Don has a nice write-up of delegates vs. interfaces as points of extensibility. Bottom line: delegates are more flexible than interfaces.
July 18, 2003 .net

HTML Writer for .NET

Here. Lutz Roeder (of Reflector fame) has started a workspace around WYSIWYG HTML editing in .NET.
July 13, 2003 .net

.NET Games Development Forum

Here. With DX9, I can see lots of games embracing .NET in the future. This is where it’ll start.
July 10, 2003 .net

Quake II.NET in Managed C++

Here. These guys demonstrate not only a cool application of Managed C++, but also what a fabulous bridge that MC++ is between the unmanaged and managed worlds. Folks that haven’t moved to VS.NET because they’re doing C++ are *really* missing out.
July 1, 2003 .net

Registration-less COM to .NET Wrapper Tool Beta

Here. Aurigma has posted the beta for a COM to .NET wrapper generation tool that doesn’t require the COM server to be registered, which is nice for hosted scenarios. It also generates the wrapper code for you to see and edit for your own purposes. Interesting.
July 1, 2003 .net

VS.NET Project & Solution Converter

Here. I just know that folks are going to need to be able to convert between VS.NET 2002 and 2003 projects and solutions for a while yet, so here’s a free, extensible conversion tool to do the job.
June 18, 2003 .net

Hosting Windows Forms Designers

Here. This article comes with the full source for hosting the WinForms Designers to enable form design in your own app. To my knowledge, none of this stuff is supported, but that doesn’t make it any less cool! [mikedub.net/GalleySlave]
June 16, 2003 .net

Releasing Nested Objects in Rotor

Here. ChrisT continues to make progress in the Adding Ref-Counting to Rotor” project.
June 14, 2003 .net

nprof - Open-source .NET profiler

Here. From Matthew Mastracci: I just released the fifth alpha version of my free, open-source .NET profiling application. It supports everything I’ve thrown at it so far (multi-threaded programs, NAnt, SWF apps) and is getting close to feature-complete. It comes with a basic VS.NET add-in that lets you profile from DevStudio. There is a complete source package on the downloads page for those who are interested in learning how a profiler works, or just want to tinker.
June 12, 2003 .net

Windows Forms Programming in C# on Amazon

Here. I don’t know how long it’s but up, but the C# version of my WinForms book is up on Amazon. If you were a reviewer, please post a review. Thanks!
June 11, 2003 .net

PowerToys for Visual Studio .NET 2003

Here. From Andrew Webb:
June 8, 2003 .net

BinaryComboBox .NET released!

Here. From : A handy ComboBox control for developers!
June 6, 2003 .net

Yet another C# feature creeps into Java

Here. From Keith Wedinger: Java SDK 1.5 (code named Tiger) is going to support variable length argument lists. In C#, this is accomplished via the params keyword. In Java, they are going to use an ellipsis token.
June 6, 2003 .net

Agile .NET Development mailing list

Here. From Bernard Vander Beken: A new list where Agile Software Development using the .NET Framework can be discussed. Example topics: Unit Testing, Refactoring and Continuous Integration.
June 5, 2003 .net

Ref-Counting + Rotor Status

Here. ChrisT got finalizers working. The wonder of the ref-counted programming model in .NET is coming into focus. Wahoo!
June 3, 2003 .net

Launching NTD Apps. w/ Command Line Args.

Here. Easily one of the questions I get asked the most once folks start using no-touch deployment (NTD) applications, that is Windows Forms applications that can launched with an URL, is how they can pass command line arguments to them. This article lays out the client-side and server-side code needed to make this happen. Enjoy.
June 1, 2003 .net

SmartConsult .NET

Here. From Sundaranarayanan Subramaniam: Binarymission offers SmartConsult .NET — a cost-effective custom component development programme! Are you in need of a custom .NET component to be developed? And you want it to be cost effective and at the same time be of the best possible quality? And above all, you just don’t have the time to develop it yourself? We can hear you say — “Absolutely!”. You have just come to the right place! We have the right solution for you! Read on, to find out what our new SmartConsult .NET programme can do for you! What is this plan all about? In simple words - You get your custom .NET components developed for one simple flat fee! Period!
May 31, 2003 .net

Code Library for .Net 3.0

Here. From fish: Helps you to find and use the code snippet.
May 31, 2003 .net

Feature packed “Date Picker” control for .NET!

Here. From Sundaranarayanan Subramaniam: Binarymission proudly presents BinaryDatePicker .NET (Version 1.0) - An advanced Microsoft© Outlook© styled, date picker WinForms© .NET control. BinaryDatePicker .NET Ver. 1.0 is an advanced Microsoft .NET WinForms© Component, providing an Outlook© styled, feature-rich and highly configurable, calendar (date picker) functionality for Microsoft WinForms© .NET platform. Also checkout our newly released .NET component prodcut-line!
May 23, 2003 .net

C#Builder and Borland Data Providers for .NET

Here. From Pär: Connecting Borland C#Builder to DB2 UDB with Borland Data Providers for the Microsoft .NET Framework.
May 16, 2003 .net

Customer Debug Probes and CLR SPY

Here. Adam Nathan posts the source to a new .NET 1.1 debugging tool. Thanks, Adam!
May 7, 2003 .net

.Net develops advantages over Java

Here. From Keith Wedinger: Java development has a number of advantages over traditional environments which output machine language. .Net has the advantage of hindsight, however, and has improved on Java in a number of areas.
April 30, 2003 .net

Reflector.NET Author Starts a Blog

Here. Lutz Roeder, the author of Reflector.NET, caves in and starts his blog. And what a way to start: he posts a decompiler plug-in for Reflection.NET. Welcome, Lutz.
April 29, 2003 .net

Updated XsdClassesGen for VS.NET 2003

Here. I’ve updated XsdClassesGen for VS.NET 2003. For those of you unfamiliar with it (it’s never been as popular as CollectionGen for some reason), XsdClassesGen is a VS.NET Custom Tool that generates C# or VB.NET wrapper class source code from an XSD. It’s just like running xsd.exe from the command line, but integrated into VS.NET (which is where all tools belong, afaic).
April 29, 2003 .net

Updated CollectionGen for VS.NET 2002 & 2003

Here. I’ve updated CollectionGen with code to support both VS.NET 2002 & 2003. It has no dependencies on any VS.NET design-time DLLs, so one binary works for both versions. If you’re building custom tools, this should form a good base to support both environments.
April 25, 2003 .net

Hippo.NET Build Tool Released

Here. From Jan Tielens: Hippo.NET is a tool for streamlining the build process of .NET projects in a team envirionment. It provides continuous integration by monitoring the shared Visual SourceSafe database and starting the build process when changes are detected. An important design goal is to provide a nice and easy-to-use user interface, to monitor builds and trigger the build process when needed. Now you can download a stable version of this tool, with full source code. Current features are: - Client/server model - Trigger build from remote clients - Implements the build process proposed by Microsoft - Automatic build number updates in AssemblyInfo files - Build history information - Current activity information - Fully configurable - Rich Windows Forms UI
April 23, 2003 .net

Programming WinForms with MC++

Here. Sam Gentile and I wrote a piece on building WinForms apps in MC++ using the new designer support in VS.NET 2003. Unfortunately, it acquired some small errors along the publishing path, e.g. STA does not stand for spanning three algorithm” in this case. However, the errors are minor and C++ programmers interested in the .NET forms engine should definately take a look.
April 22, 2003 .net

C# Builder sneak preview

Here. From jt: Borland is pleased to offer a preview of its premier enterprise solution for C# development on the Microsoft .NET Framework….”
April 22, 2003 .net

Borland details .NET development tools

Here. Yet another signal of the inevitability of .NET.
April 19, 2003 .net

New OpenGL binding for .NET

From Randy Ridge: New OpenGL binding for .NET from the CsGL people, supporting GL 1.1, GLU 1.3, and GLUT 3.7.6. CLS-compliant, cross-platform, yada, yada.
April 17, 2003 .net

WinForms Design-Time Integration, Part 2

Here. This is the second of two articles discussing the extremely rich design-time features of the .NET Framework. Part 2 continues the journey by concentrating on design-time functionality that you can implement beyond your components and controls, including TypeConverters, UITypeEditors, and Designers.”
April 16, 2003 .net

Essential .NET Nominated for Reader’s Choice Award

Here. If you liked Don’s Essential .NET (I know I did), then you should vote for it on the .NET Developer’s Journal Reader’s Choice Awards. You also get the opportunity to vote in all kinds of other categories besides books.
April 15, 2003 .net

C# Programmers Out-Earn VB.NET Programmers by 26%

Here. Visual Studio Magazine posts the results of their latest salary survey. Average Visual Studio programmer salary is $76K, up 12% from last year. Unfortunately, layoffs and such like are still the order of the day.
April 10, 2003 .net

Visual Studio .NET 2003 now available

From Keith Wedinger: It is now available as a download for MSDN Subscribers. There are 3 versions: Enterprise Architect, Enterprise Developer and Professional.
April 10, 2003 .net

Source Code to RegexDesigner .NET

Here. Due to popular demand, we’ve released the source code to RegexDesigner .NET in a GotDotNet workspace. We’ve also posted all the issues” that we know about (and fixed the code generation problem), so this is a good release even if you’re just a RegexD user. Enjoy.
April 10, 2003 .net

.NET Framework SDK Version 1.1

Here. From Andrew Webb: Though does anyone use the SDK without VS.NET ?
April 9, 2003 .net

.NET Framework Version 1.1 Redistributable

Here. And the hits, they keep on comin’…
April 9, 2003 .net

.NET v1.1 Changes from v1.0

Here. Full type information is *so* cool. In this case, it provides the full list of changes from .NET v1.0 to v1.1. [blogs.gotdotnet.com/brada]
April 4, 2003 .net

ORM.NET v1.4 - auto-generate an ADO.NET data layer

Here. From Olero Software: Olero Software has released ORM.NET version 1.4 ORM.NET - .NET Object Relational Mapping Tool - is a powerful development application that auto-generates a data layer object model based on your SQL database schema. The generated run-time component exposes all tables as classes and columns as properties. Using the built-in DataManager object, users can easily retrieve data from multiple tables based on complex criteria without using stored procedures or embedded SQL code. In addition, data updates, inserts, and deletes can be saved to the database with one call. ORM.NET will save your hours of time and development cost. Download a free trial at: www.olero.com/ormweb/index.aspx?mp=sells
April 3, 2003 .net

ISO Certification of C# and the CLI

Here. From Andrew Webb: Broader reach than ECMA
March 31, 2003 .net

Great .net resources article

From Mitch Gallant: Chris, Great article on .net resources at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms02202003.asp The MSDN articles are rather confusing on resources, but your article clarifies a lot. Here is an easy to use drag/drop utility to view any assembly resources: http://pages.istar.ca/~neutron/ViewResources/
March 27, 2003 .net

C# Futures

Here. From Andrew Webb: from Don Box’s spoutlet
March 18, 2003 .net

Design-Time WinForms Component Integration, part 1

Here. Part 1 of 2 of Michael and my treatment of integrating WinForms components and controls into VS.NET.
March 15, 2003 .net

NEW C# LANGUAGE FEATURES

Here. At OOPSLA late last year, the C# team made a splash by announcing some of the features they’ll be adding to the compiler in the next next version of C# (not Everett). This link has that presentation as well as a very nice white paper discussing the new features in detail.
March 12, 2003 .net

Serialization Basics, Part 3 of 3

Here. My 3rd installment of the basics of serialization, this time covering how to customize the serialization process.
March 8, 2003 .net

nprof - Open-source .NET profiler

From Matthew Mastracci: I just released the third alpha version of my open-source .NET profiling application. It supports everything I’ve thrown at it so far (multi-threaded programs, NAnt, SWF apps) and is getting close to feature-complete. It comes with a basic VS.NET add-in that lets you profile from DevStudio. There is a source package on the downloads page for those who are interested in tinkering. Download it at http://nprof.sourceforge.net
March 7, 2003 .net

What’s New in WinForms 1.1

Here. This article presents the new features in WinForms, including new namespace features, new IDE features and how to develop apps that support multiple versions of the .NET Framework itself.
March 7, 2003 .net

Serialization Basics, Part 2 of 3

Here. Continuing the discussion of serialization in .NET using formatters for custom types.
March 7, 2003 .net

Serialization Basics, Part 1 of 3

Here. This is the first of a 3 part series I wrote as an appendix to my WinForms book because I couldn’t find the topic of object serialization covered adequately elsewhere in any of the popular texts. This part covers the basics of text and binary serialization for simple types.
February 22, 2003 .net

The Last Configuration Handler I’ll Ever Need

Here. From Craig Andera: I’m sure someone, somewhere has already written this, but I figured it out on my own today, and it’s just too cool not to share. Basically, it’s a bit of code that lets me store objects in my application or web configuration file, and all I have to do is write the type that holds the values.
February 21, 2003 .net

.Net Patent Bid Prompts Concern

Here. Here’s how my full quote [1] was cut down for publication. That’ll teach me to be thorough. : ) [1] http://www.sellsbrothers.com/spout/#mspatents
February 19, 2003 .net

Understanding ThreadAbortException

Here. From Shawn Wildermuth: This is a link to Chris’ new article on how he figure out why ThreadAbortException was being thrown by using the Rotor code…Like he’s always said, the real documentation in in the source code…
February 19, 2003 .net

eXtensible C#© Is Here!

Here. From Pierre Nallet: I just released eXtensible C# (XC#), a companion to Visual studio and C#. XC# supports - Obfuscation - Code coverage - Declarative assertions - Partial code verification - and more… XC# can be downloaded for free at www.resolvecorp.com
February 18, 2003 .net

.NET Reverse Engineering Techniques

Here. From Michael Box: Understanding .NET reverse engineering techniques: file examination, disassembly, spying, using a Debugger and other tools.
February 16, 2003 .net

dotEASY

Here. From Juan Esteban Suarez: Academic project. Free download from www.doteasy.addr.com. Abstract: dotEASY” is a Visual Studio .Net Add-in that evaluates C# source code and performs advices” in order to improve software quality. The configuration and programming of the advices” is invisible to the developer, the tool’s final user, who only requests for code evaluation. A new advice” can be created defining metrics, thresholds and optionally programming validation classes and execution classes to automatically modify the code. The export and import capabilities allow one person to create an advice”, which can be configured and exported, so it can be used by many other people.
February 16, 2003 .net

No touch deployment

From David Taylor: I just read Chris Sell’s Distributed .config Files with Smart Clients” article: http://www.ondotnet.com/pub/a/dotnet/2003/01/27/ztd.html Here is another problem I just came across. I often use System.Diagnostics.Process.Start(“http://www.sellsbrothers.com”) to launch a website (or mailto, etc). However when deploying a simple URL shortcut to the actual application (on a web server), the assembly gets hosted by IEEXEC.exe. The problem is that the Process.Start method then returns a file not found error! I did get it working by directly invoking Internet Explorer, but I needed to know it’s directory from the registry because it is not always in the path (and there were some other strange behaviors). So I have ended up using a minimalist setup.msi file that leaves a 5-10 line Loader.exe program on the users computer which in turn loads the assembly from the web server. That way it is *not* hosted in IEEXEC and Process.Start works as expected.
February 14, 2003 .net

More Safe Serialization for .NET

Here. From Dominic Cooney: This library provides similar functionality to the .NET Framework’s binary serialization (although unlike Chris Sell’s SafeFormatter, it’s not a drop-in replacement for the binary formatter; you have to implement an interface). It works on the .NET Compact Framework, and in downloaded code with only Internet’ permissions. Unlike SafeFormatter, this library preserves the object reference graph.
February 14, 2003 .net

Distributed .NET Newsletter

Here. From Ingo Rammer: Starting with February 2003, I will publish a free, bi-weekly newsletter on distributed programming with .NET which covers architecture, design and development guides and tips as well as links to other free material I consider as must reads”.
February 14, 2003 .net

Data Tier Modeler for .Net - O/R mapping tool

Here. From Sébastien Ros: This new tool is an object-relational framework fully integrated in VS.Net. Its main features are true UML importation, automatic object cache, database specific generation, transparent data encryption and bidirectional relations navigation.
February 13, 2003 .net

Oracle Data Provider for .NET

Here. From Mihies: The Oracle Data Provider for .NET (ODP.NET) features optimized data access to the Oracle database from a .NET environment. Unlike OLE DB .NET and ODBC .NET, ODP.NET is a native driver and does not use a data access bridge, which can reduce performance. ODP.NET allows developers to take advantage of advanced Oracle database functionality. The data provider can be used from any .NET language, including C# and Visual Basic .NET.
February 12, 2003 .net

TaskVision: Web Deployed WinForms Sample

Here. TaskVision is a full-featured WinForms sample that supports auto-updating over the web and online and offline functionality, as well as some other cool .NET stuff. It includes most of the source for the client and the server as well as a lengthly write-up on just what makes it cool. Worth checking out as an alternative to href-exes (TaskVision requires one install and auto-updates after that).
February 12, 2003 .net

eXtensible C# Provides Compile-Time Attributes

Here. eXtensible C# provides a set of compile-time attributes to do things like inject code (like to check for a null value), analyze code at compile-time and even obfuscate. Very cool.
February 11, 2003 .net

.Net Microsoft patent

Here. From Sorin J: This may be yesterday’s news, anyway, Microsoft has applied for a patent covering many .net related technologies.
February 11, 2003 .net

Windows Forms Smart Client Sample

Here. From David: A new microsoft sample that demonstrates the following: Application offline and online model Application update model via HTTP (no-touch deployment) Authorization to control user access to application features Data collision handling Printing and Print Preview Windows XP Themes Dynamic properties Localization support Accessibility support (limited) Forms authentication using a database for user names/passwords Asynchronous XML Web service class ADO.NET data access using SQL stored procedures Graphics development using GDI+ Integration between .NET Framework-based code and COM applications (COM interop)
February 7, 2003 .net

Running Multiple Versions of .NET Side-by-Side

Here. A nice summary of what’s going on when you attempt to run two versions of .NET side-by-side.
February 6, 2003 .net

.Net Framework XML Namespaces and Classes

Here. From Matthew Lewis: First of a series outlining the core namespaces and classes that cohesively implement the standards based XML processors in the Microsoft .NET Framework. This session will discuss each class in detail.
January 31, 2003 .net

.NET Bugs Registry

Here. It’s nice to see that somebody is tracking and publishing bugs on my most favorite technology, although I suspect that many are as yet unlisted…
January 30, 2003 .net

Sam .NET Blog has changed locations and technology

From Sam Gentile: For people who were reading my .NET Radio Blog. I have moved to an ASP.NET based solution. The new location and feed are at: http://dotnetweblogs.com/sgentile/
January 28, 2003 .net

Editor for Web.Config files in ASP.NET

Here. From Jim Corbin: Hunter Stone has created a useful tool for managing one or multiple Web.Config XML files in an ASP.NET application.
January 24, 2003 .net

ASP.NET: Tips and Tricks

Here. From Ben Kohn: See demonstrations of a variety of useful techniques and approaches that can be leveraged to help build powerful ASP.NET Web applications and Web Services. Learn about: debugging, tracing, event logging, performance counters, error handling, Web form session state, sending email from, file upload and others.
January 22, 2003 .net

Free VS.NET Trial DVD

Here. If you haven’t done .NET yet because your company hasn’t upgraded to VS.NET or you don’t want to spend the money if you’re not going to like it, you can get a 60-day eval copy on this link in exchange for giving up some personal details.
January 22, 2003 .net

CodeSmith Integrated into VS.NET

Here. Eric Smith has integrated his CodeSmith code-generation tool directly into VS.NET. Very nice.
January 21, 2003 .net

Another C# Refactoring Tool

Here. A VS.NET add-in that provides the following C# refactoring operations: -Encapsulate Field -Extract Method -Inline Temp -Introduce Explaining Variable -Move Method new -Rename Field -Rename Method -Rename Property -Rename Local Variable -Rename Parameter -Replace Magic Number with Symbolic Constant -Replace Temp with Query It seems to be implemented in Java and then ported to .NET via J# and the web site has the coolest little visitor counter control.
January 21, 2003 .net

Talking C#/CLR with Microsoft

Here. An interview of Peter Hallam, the dev. lead for the C# compiler. Most of the interview covers stuff you’re likely to already know, e.g. the design goals for C# and the CLR, etc, but Mr. Hallam does spend some time talking about generics and his opinion on mono (he likes it).
January 20, 2003 .net

COM & WinForms…Happy together?

Here. From Shawn Wildermuth: Chris has a new article up on http://ONDotNet.com on Hosting your Windows Forms controls in COM Containers? Wouldn’t you love to use the DataGrid inside your MFC project?
January 20, 2003 .net

C# and Java: Comparing Programming Languages

Here. This is a pretty comprehensive, and pretty even-handed, comparison (Java gets kudos for doing some things better than C# and vice versa). If you’re still curious about how the other half lives, check it out, but I’ll bottom line it for you: C# and Java are pretty much the same language. The real differences are in the respective libraries, not the languages.
January 16, 2003 .net

25 silly reasons why .NET is better than java

Here. From Hun Boon Teo: This is just for a laugh, don’t take it seriously. Alternatively access it at http://www.geocities.com/hunboonteo/misc/silly.htm . Regards.
January 13, 2003 .net

.NET Rocks Interview: .NET Success Stories

Here. This is the first of a series of shows we are going to do this year highlighting .NET Success Stories; companies that have implemented .NET applications successfully as either pilot projects or production projects. In this show we hear from two different companies.” It’s stories like this that are going to finally turn the masses away from the unmanaged world to the managed world. And they’ll never, ever want to go back…
January 13, 2003 .net

ASP.NET: Blackbelt Web Form Programming

Here. From Vaclav Novak: Push your ASP.NET Web Forms to the extreme. This session focuses on advanced tips and tricks for ASP.NET page development, including UI that morphs based on the data it displays, dynamic templates, passing values from page to page, adding client events to server controls, and more. Assumes a basic understanding of ASP.NET pages and controls.
January 12, 2003 .net

Dynamic Aspect-Weaving with .NET

Here. From Hun Boon Teo: Another research paper from Wolfgang Schult and Andreas Polze, part of abstract: Within this paper, we focus on dynamic management of aspect information during program runtime. We introduce a new approach called dynamic aspect weaving” to interconnect aspect code and functional code. Using our approach, it is possible to decide at runtime whether objects living inside a compoent should be instantiated with support for a particular aspect or not. We have implemented our approach in contect of the langauge C# and the Microsoft .NET environment.”
January 12, 2003 .net

Aspect-Oriented Programming with C# and .NET

Here. From Hun Boon Teo: A research paper from two German scholars, part of the abstract: Within this paper, we discuss the usage of aspectoriented programming techniques in context of the .NET framework. We focus on the fault-tolerance aspect and discuss the expression of non-functional component properties (aspects) as C# custom attributes. Our approach uses reflection to generate replicated objects based on settings of a special fault-tolerance” attribute for C# components.”
January 11, 2003 .net

25 pathetic attempts to make .NET look bad

Here. I just like to read JasonW, but this one was particularly nice. He refutes some pretty wild claims from one member of the Java community. Along these same lines, I spent a day of onsite consulting having a .NET vs. Java debate. I was the outsider .NET guy and the company already had three Java guys already on staff (one was the VP of Engineering). Needless to say, .NET won. : ) It boiled down to what to do with the existing ATL/COM/C++ code base and the .NET interop story wins there hands down.
January 11, 2003 .net

What’s New in VS.NET 2003

Here. A somewhat wordy list of what’s new in VS.NET 2003. It figures that just after I’d learned to use the Designer for event handling that MS would add C# code spitting” for the override keyword and the delegate += operator…
January 11, 2003 .net

.NET ResourceExplorer

Here. In writing the resources chapter of my WinForms book, I found that there was no single utility for displaying the resource contents of assemblies, .resx files and .resource files (even embedded .resources files) in a way that made sense to me. So, I built one. Enjoy.
January 10, 2003 .net

Jeff Key’s .NET Samples

Here. I just stumpled onto a set of very cool .NET samples from Jeff Key and *had* to share them. There are too many cool things to pick a favorite.
January 6, 2003 .net

Conferences Re-Tooled for .NET?

Here. From Chris Sells’ Marketing Guy: The Pioneers of WinForms PhoneCon is a new method for attending Chris Sells’s popular DevCons. The whole unit can share a PC and speakerphone to attend a PhoneCon conference cheaper than 1 person can attend a regular conference. PhoneCons are spread over 8 weeks to give you time to absorb the conference information, instead of having your head crammed full of too much information in just 1-2 days. Best of all, you get to conduct conversations with leading .NET experts as well as your fellow attendees, offering a virtual hallway’ before, during, and after each session!
December 31, 2002 .net

“When I first heard about .NET, I held my nose”

Here. I did an interview a long time ago and just noticed that my most fun quotes were actually printed in USAToday. Cool!
December 30, 2002 .net

Xopus.NET

Here. From Jesse Ezell: I have put together a Xopus wrapper for .NET. Basically, it isolates you from having to know all the Xopus details: just drag, drop, and set the designer properties.” Xopus is an opensource browser based WYSIWYG xml / xsl based editor that works natively in IE 5.5+ / Mozilla 1.3+ / Netscape 7+. Pretty cool stuff.
December 28, 2002 .net

.NET Wrappers for NVIDIA’s Cg API

Here. From Ben Houston: This simple wrapper, written in Managed C++, allows for developers to make use of NVIDIAs new Cg shader language from within a C# or VB.NET application. It is simple to use with existing OpenGL wrappers such as Llyod Dupond’s CsGL. A sample application that makes use of OpenGL and Cg via C#, ExoEngine, is available for download on the same site.
December 24, 2002 .net

ADO.NET PowerToys

Here. My friend and author of Pragmatic ADO.NET has released a package of his tools to the community, including: -A general library of ADO.NET utilities -A new release of my Improved DataSet Generator -A Stored Procedure Wrapper Class Generator Shawn says that contributions are welcome.
December 20, 2002 .net

DirectX 9.0 Release with .NET Support

Here. I’m not much of a graphics programmer, but I know folks have been anxiously awaiting DX9, which includes MDX (Managed DirectX) the managed API to DirectX for .NET programmers. This release provides a bunch of non-.NET enhancements as well.
December 18, 2002 .net

AspectC#: An AOSD implementation for C#.

Here. From Hun Boon Teo: A master dissertation by Howard Kim from Dept. of Computer Science, Trinity College Dublin. His paper covers topics such as AOP(AspectJ,Hyper/J) in Java and .NET (CLAW,AOP#), comparision of the different implementations for both platforms. A alpha version of the implementation can be downloaded from http://aosd.dsg.cs.tcd.ie/AspectCSharp/AspectCSharpHomepage.htm
December 18, 2002 .net

Jabber for Mono .NET

Here. From Jesse Ezell: We’ve just announced our .NET Jabber SDK for Mono. Our SDK now lets .NET developers build cross platform instant messaging applications that target Linux, Windows, Solaris, FreeBSD, Windows CE, and Windows Pocket PC 2002. This release also supports multiple character sets such as Chinese, Japanese, Korean, Spanish, and Italian.”
December 16, 2002 .net

.NET Data-Bound TreeView Control

Here. DataViewTree is a UserControl that can load hierarchical datasets into a Windows Forms TreeView control. The included sample project shows how to load an xml file into a dataset which is then passed to the DataViewTree control for display. Complete source for the DataViewTree control and sample project is included in the download.” I know lots of folks want to data bind hierarchical data and this one includes the source if it doesn’t do exactly what you’re after.
December 16, 2002 .net

Alintex Script Host brings scripting to .NET

Here. From Alintex: Alintex Script Host lets you run scripts written in three Microsoft .NET languages - VB, C# and JScript. One can take full advantage of the power of the .NET Framework Class Library (FCL) to produce lightweight, yet powerful applications and utilities. Amongst other features, it allows you to mix and match all three supported .NET languages in the same script, yet optionally produce a single XML based Portable Script file for easy distribution. Alintex Script Host is FREE for both personal and commercial use.
December 13, 2002 .net

Windows Forms Layout

Here. Chris Sells discusses how controls are scaled and arranged on a form, and how the scaling and arrangement features are used to meet the needs of different users with respect to system font size and the size of the data being entered.”
December 12, 2002 .net

Microsoft Releases MapPoint .NET Version 3.0

Here. I’m a big fan of both the MapPoint .NET web service specifically (it’s a model in several areas) and of the idea of commercial web services in general. Someday I hope to be able to afford this one. : )
December 12, 2002 .net

.NET Image Re-Coloring

Here. This code first sets up an array of ColorMap objects, each of which contain the old color to transform from and the new color to transform to. The color map is passed to a new ImageAttribute class via the SetRemapTable. The ImageAttribute object is then passed to the DrawImage function, which does the color mapping as the image is drawn.”
December 12, 2002 .net

Current Project Command Prompt for VS.NET

Here. Another answer from the VS.NET Info Center Q&A Forum describing how to start a command prompt and the file explorer in the directory of the current project.
December 12, 2002 .net

VS.NET 2003 Pre/Post-Build Steps in C# Projects

Here. [I]n VS.NET 2003, the latest version that supports the .NET Framework 1.1 and available in beta version to MSDN subscribers, C# projects allow you to add your shell commands to the pre-build and post-build events during the project build.” A cool VS.NET trick from my VS.NET Info Center Q&A Forum.
December 12, 2002 .net

High Perf. Image Processing in .NET Clients

Here. Not so many years ago, serious image processing meant using highly specialized hardware when same-day service was required. However, microprocessor manufacturers have consistently delivered exponential performance improvements for so long that even relatively modest client systems can now perform non-trivial image manipulation very quickly. These client capabilities were especially aided by the introduction of Streaming SIMD (Single Instruction Multiple Data) Extensions to Intel® processors a few years ago, along with Intel’s highly-optimized libraries for exploiting the technology. This article shows how to take advantage of these libraries in .NET client applications.”
December 10, 2002 .net

Info.NET, similar to Dashboard on MSN 8

Here. From Ryan Dawson: I had talked earlier in the week to Chris about an application I was developing, and I said I would post it as a news item when it was finsihed (I should say just started, I am not close to being finished). If you are interested in advancing this program, please contact me -rd933@msn.com.
December 10, 2002 .net

.NET Passport Manager Source Licensing Program

Here. From Spencer Harbar: The .NET Passport Manager Source Licensing Program enables developers and other interested individuals to access and use Passport Manager Source code for both commercial and noncommercial purposes, including the creation and distribution of derivatives of the licensed source code for non-Windows applications. Licensees are free to use the source code also to develop, debug, and support their own commercial software for integration with .NET Passport. Passport Manager Source code is available for installation with any version of .NET Passport.
December 9, 2002 .net

Mono Runs ASP.NET

Here. From Jesse Ezell: Ximian released mono 0.17 today: “Many new features as well as plenty of bug fixes. Many new System.Data providers and a more mature System.Web (ASP.NET) which can now be hosted in any web server. A simple test web server to host asp.net has been released as well.”
December 9, 2002 .net

Web Services Enhancements 1.0 for Microsoft .NET

Here. From John Bristowe: Web Services Enhancements 1.0 for Microsoft .NET is the released and supported version of the Web Services Development Kit Technology Preview (WSDK).”
December 9, 2002 .net

Web Services Enhancements for .NET

Here. Web Services Enhancements 1.0 for Microsoft .NET (WSE) provides advanced Web services functionality for Microsoft Visual Studio .NET and Microsoft .NET Framework developers to support the latest Web services capabilities. Enterprise ready applications can be developed quickly with the support of security features such as digital signature and encryption, message routing capabilities, and the ability to include message attachments that are not serialized into XML. Functionality is based on the WS-Security, WS-Routing, WS-Attachments and DIME specifications.” In their own wonderful way, Microsoft has changed the name yet again to the set of classes that they’ve put together to do heavy-duty web services stuff. It was GXA, then WSDK and now it is, finally and officially, the Web Services Enhancements (WSE). If you liked it with the old names, you’ll love it with the new name. : )
December 3, 2002 .net

Browse Rotor source code online

Here. When I started looking at the source code for rotor, I couldn’t believe how invaluable it was. I also wanted to have an easy way of viewing classes in the files. So I wrote this little utility to help me out, to find common namespaces, classes, delegates, enums, etc in the source files.” This is an online browsable resource for digging into the source for a lot of the CLR base class library. Fabulous! [JasonW or SamG — it’s hard to know]
November 29, 2002 .net

.NET Rocks Interviews Chris Sells

Here. Chris talks with Carl and Mark about COM and .NET components, finalizers, disposing, Smart Client Windows Forms Applications (we still don’t know what to call these things), how to navigate sellsbrothers.com, interview weed-out questions, and why he calls it Sells Brothers. Also, Chris finally clears up the age-old question of why C++ programmers feel so superior to mere humans.”
November 26, 2002 .net

The .NET Show: The Compact Framework

Here. A new episode of The .NET Show shipped today on the Compact Framework. More and more I want to use WinForms for smaller and smaller devices. I am looking forward to programming CF apps on my cell phone!
November 22, 2002 .net

.NET Refactoring Tool Enters Beta

Here. C# Refactory is a revolutionary new tool which enhances Microsoft’s Visual Studio.NET IDE. It performs a number of complex refactorings automatically, allowing you to shape and re-shape your code as needs arise. It also helps you identify code which needs attention by calculating metrics, from lines of code’ all the way up to cyclomatic complexity’. It is fully integrated with the IDE - no external tools means that refactorings are always ready at your fingertips.” As I’m writing a bunch of book code just now, I’m not a good beta tester for this tool, but the descriptions of what it does look yummy. I would especially love Extract Method and Rename Type.
November 19, 2002 .net

Building Secure ASP.NET Applications

Here. From Hun Boon Teo: From MSDN library: Summary: This guide presents a practical, scenario driven approach to designing and building secure ASP.NET applications for Windows 2000 and version 1.0 of the .NET Framework. It focuses on the key elements of authentication, authorization, and secure communication within and across the tiers of distributed .NET Web applications. (This roadmap: 6 printed pages; the entire guide: 608 printed pages)
November 18, 2002 .net

‘Essential .NET’ is shipping in the UK

Here. From Andrew Webb: It’s in stock at the PC Bookshop.
November 17, 2002 .net

Download the Visual Studio .NET 2003 Final Beta

Here. Be the first to try Visual Studio .NET 2003, which is currently in Final Beta and available for download from MSDN® Subscriber Downloads.” “With integrated support for the .NET Compact Framework, Visual Studio .NET 2003 brings mobile and embedded devices such as the Pocket PC, as well as other devices powered by the Microsoft Windows CE .NET operating system, to .NET. Now, developers can use the same programming model, development tools, and skills to build applications that span from small devices to the largest data center.” The final beta of Visual Studio .NET 2003, aka the Everett version of VS.NET, is available for download by MSDN subscribers. Wahoo!
November 14, 2002 .net

WinForms Data Validation

Here. A little essay on the WinForms Validating event.
November 14, 2002 .net

WinForms Auto-Scaling

Here. That cool auto-scaling that WinForms does when moving between system font settings baffled me til I sat down to really understand it.
November 14, 2002 .net

Increasing Permissions for WinForms Smart Clients

Here. Chris Sells discusses permissions in .NET and how you can adapt the object model to protect smart clients while allowing well-known assemblies or sites to have additional permissions to provide users with additional services.”
November 14, 2002 .net

Runtime code generation in JVM and CLR

Here. From Hun Boon Teo: The Java Virtual Machine (JVM) and the Common Language Runtime (CLR) are bytecode-based abstract stack machines. Since modern implementations include highly optimizing just-in-time (JIT) compilers, these machines are excellent targets for runtime code generation: the generation of new program code just prior to its execution.”
November 14, 2002 .net

C# and Java: The Smart Distinctions

Here. From Hun Boon Teo: Article by Dominik Gruntz from Journal of Object Technology (Nov-Dec 2002 Issue), this article shows some of the subtle difference between C# and Java.
November 13, 2002 .net

New C# features: whitepaper now available

Here. From Andrew Webb: The whitepaper (a Word file) is now available. And the Demo Files link, previously dead, now works.
November 11, 2002 .net

The Everett Visual C++.NET features

Here. Sam Gentile’s got the scoop on the Everett release updates to VC++, which he lists as: -98% ANSI/ISO Compliance -Forms Designer for Managed C++ -Security Features -Optimizer Improvements particuarly in floating point He’s got the details. Check it out.
November 9, 2002 .net

New C# Language Features (someday)

Here. On November 7th, at the OOPSLA Conference in Seattle, WA, C# creator Anders Hejlsberg unveiled several potential language features for the next major release of Visual C# .NET. The four primary features Anders spoke about were: -Generics, a form of C++ templates that makes reusing existing code easier -Iterators, a construct that makes traversing collections of data significantly faster and easier -Anonymous methods, an easier way to perform simple tasks using delegates -Partial types, a means for programmers to split code across multiple files” All of these features sound really cool (not just generics), but unfortunately the presentation included no mention of when they’d actually ship…
November 8, 2002 .net

Pragmatic ADO.NET in stock!

Here. Shawn Wildermuth’s new book, Pragmatic ADO.NET: Data Access for the Internet World, is awailable now. Shawn’s a long-time friend of mine and I wrote the forward to the book, so I’m hardly unbiased, but it rocks! Enjoy.
November 8, 2002 .net

Visual C++ and C# Updates In Everette

Here. From Jesse Ezell: That release of Visual C# will include four new features: support for generics,” which is a form of a C++ template that can help C# developers build software more quickly; support for iterators,” which help developers create new code; anonymous methods, which ease development of what’s known as event-driven” code; and support for partial types,” which make it easier to use C# for building large projects.
November 6, 2002 .net

Essential .NET, by Don Box, in stock!

Here. According to the AW web site, Essential .NET, by Don Box, with Chris Sells, is in stock and ships within 24 hours, and Amazon seems to agree. Enjoy!
November 6, 2002 .net

Beta 2 of the Microsoft .NET Speech SDK

Here. From Razvan Caciula: Microsoft announced the availability of beta 2 of the Microsoft .NET Speech Software Development Kit (SDK).
November 5, 2002 .net

Rotor 1.0 Released

Here. The 1.0 release builds and runs on Windows XP, the FreeBSD operating system, and Mac OS X 10.2. In addition, the release contains many bug fixes, more documentation, new samples and additional test suites.” For low-level .NET weenies (like me : ), this is the stuff, baby!
November 5, 2002 .net

Project Mono Does SQL / Windows / ASP.NET

Here. From Jesse Ezell: Project Mono can now execute SQL statements on MS SQL Server through TDS and has a bit of Windows.Forms code running on both Linux and Windows as well as a good deal of ASP.NET support. Looks like things are coming along at a decent rate.
October 31, 2002 .net

New Editor for ORA’s .NET DevCenter

Here. Shawn’s a long-time friend of mine and an excellent writer who understands the importance of story, even for technical pieces. Congrats, Shawn!
October 29, 2002 .net

Pet Shop 2.0: Java vs. .NET

Here. The Middleware Company ran a comparison between the Pet Shop v2.0 application for both Java and .NET, both with the same features and both with the same aim at building something to use as a best practice” sample while still being as responsive and scalable as possible. Pet Shop v2.0 was both company’s attempt at winning the comparision run by the Middleware Company. My reading of this report is that .NET kicked Java’s hinder in every single measure, from through-put and responsiveness to lines of code and lines of configuration required to build and run the app.
October 29, 2002 .net

X-Code .NET: writing code with code for .NET

Here. X-Code .NET is a successor to the popular X-Code” codegen language, which was included as part of the excellent-but-now-defunct product from DevelopMentor known as Gen. X-Code .NET is like classic X-Code, except that it’s based on JScript .NET instead of classic JScript.” I’m very happy to see Shawn, a valued member of the DevelopMentor Software team that built Gen in the first place, take up this project. You go, Shawn!
October 29, 2002 .net

Visual Studio .NET Info Center

Here. If you’ve got a VS.NET question, I’m now the official SearchVB site’s VS.NET expert”, which seems strange on a site with VB in the title, but .NET is about language-neutrality, after all. : )
October 29, 2002 .net

.NET Pet Shop 2

Here. .NET Pet Shop 2.0 is a reference application for building highly scalable ASP.NET Web applications. The application is functionally equivalent to the Sun® Microsystems Java™ Pet Store 1.2 blueprint application, and can be used to compare the coding concepts, basic application server features, and architectures of .NET and J2EE™. It also includes benchmark data for comparison.”
October 29, 2002 .net

Essential .NET Security

Here. Keith Brown has *finally* decided to write Essential .NET Security and he’ll be posting it to HTML as he writes it. He’s already got the ASP.NET security chapter posted. Wahoo!
October 29, 2002 .net

Free, Non-Commercial Edition of Eiffel for .NET

Here. Eiffel ENViSioN!TM is a plug-in for Visual Studio .NET - its icon appears in the same place the other languages do, but that’s where the similarity ends. Eiffel ENViSioN! enables you to use the powerful features of the Eiffel language, including Design by ContractTM (a means for making super-robust software, native only to Eiffel), multiple inheritance, generics, and many others. You can use it to be more productive than you ever dreamed. (Eiffel users report that they can produce 3-10x as much high-quality software as they can using any other language and/or tools.)” Eiffel has two features that I wish C# had: design by contract and generics. While the free edition is limited when compared to the non-free edition, it won’t expire. If you’d like to see how Bertrand Meyer thinks you ought to program w/o leaving the comfort of .NET, check it out.
October 13, 2002 .net

The .NET Show: The Developer Roadmap

Here. In today’s episode, we talk with Thomas O’Grady and Kerry Carnahan about the .NET Developer Roadmap that they have developed to help Enterprise developers understand the best ways for them to properly acquire the skills they need for developing applications using .NET.” I haven’t seen this episode yet, but I generally watch all episodes of The .NET Show and enjoy them.
October 12, 2002 .net

ISO close to approving C#, CLI as standards

Here. From Husein Choroomi: The programming language C#, as well as the CLI (Common Language Infrastructure), have passed through a working group within the ISO (International Organization for Standardization) and will likely be approved by January, said John Montgomery, group product manager with Microsoft’s .Net developer platform group.
October 11, 2002 .net

Microsoft’s singing in C#

Here. From Keith Wedinger: Microsoft and its allies have quietly expanded an effort to gain acceptance for C#, the software giant’s competitor to Java and a foundation for its next-generation Internet services.
October 11, 2002 .net

SQL Server Centric .NET Code Generator

Here. SQL Server Centric .NET Code Generator (code named OlyMars) is both a flexible and powerful code generator based on database modeling. It allows instant generation of both SQL and .Net code providing a complete library of stored procedures, .NET classes and ready-to-use Windows/Web form controls (including associated documentation). SQL Server Centric .NET Code Generator is also fully extensible to use one’s own custom templates and consequently can be adjusted to generate any custom code respecting a homogeneous implementation scheme within the company (can be written either in VB .NET or C# .NET).” This isn’t particularly new, but it’s new to me and it’s from Microsoft France. I also saw that Justin Rudd has used it. Can anyone contribute any comments about OlyMars? [pinetree-tech.com/weblog]
October 8, 2002 .net

.NET Rocks Interviews Mark Anders

Here. Carl and Mark talk with Mark Anders about ASP.NET, Framework v1.1, Languages, IIS 6.0, and other great topics. This week we had some celebrity callers: Developmentor’s Chris Sells and MSDN Regional Director Stephen Forte ring the show, making for some great tech talk.” I couldn’t resist calling Mark and giving him a hard time. : )
October 4, 2002 .net

.NET Saves Boy Down Well

Here. What’s that .NET? You say Jimmy’s fallen down a well? [Sam Ruby: radio.weblogs.com/0101679]
October 1, 2002 .net

.NET Evangelist

Here. From Hussein: Microsoft’s wireless desktop
September 30, 2002 .net

Apache Support For ASP.NET Web Services

Here. Apache, the world’s most widely deployed Web server, now supports the Microsoft ASP.NET Web services development platform through the Covalent Enterprise Ready Server. This gives enterprise customers who wish to use ASP.NET the freedom to deploy Apache, thus enabling development and operations groups to independently utilize technologies that meet their needs. Covalent has written a white paper describing the technology in more detail.” The Covalent guys have added ASP.NET support to the open source Apache using a lot of elbow grease to map between the differences between the two processing models and the ASP.NET hosting stuff, which Microsoft arguably implemented for just this purpose. If we could get ASP.NET as part of Rotor and Rotor on Linux, you could run ASP.NET-based web servers for free (except for the money you’d pay Covalent for their bits, of course, but since they hired me to help advise them on the implementation of those bits, that works for me : ).
September 27, 2002 .net

Caught in .NET

Here. From Andrew Webb: However, in the absence of some well-founded objections, the terrible murmur that I keep hearing, the one with apocalyptic consequences for the thinking programmers of the world, will come to be accepted as Gospel. You know, the one that says that, in .NET, Microsoft has made a pretty good implementation of a rather elegant design…”
September 24, 2002 .net

.NET Rocks Interviews Juval Löwy

Here. .NET Rocks is a radio-style program that features interviews from various developer luminaries, e.g. Billy Hollis and Dan Appleman. This episode is an interview of Juval Löwy, who’s way into .NET Enterprise Services, the .NET interop layer with COM+.
September 23, 2002 .net

$50 million from HP, Microsoft for .Net

Here. From Michael Weinhardt: Hewlett-Packard and Microsoft plan to invest $50 million in a joint effort to sell corporate customers on the software giant’s .Net Web services efforts.”
September 23, 2002 .net

Why .NET will conquer the world

Here. From Keith Wedinger: .NET clearly bears a strong resemblance to Java. It offers many of the same features, while adding interesting additions of its own (code metadata, versioned assemblies, etc). Microsoft, however, is better positioned to create a cross-market software unification framework than Sun Microsystems ever was (or is).
September 19, 2002 .net

.NET Framework 1.1 Beta Available

“The beta of the .NET Framework version 1.1 SDK and Redistributable is now available, along with the add-on to build and run J# applications. We encourage you to download these and provide us with feedback. You may register for the beta program to access these downloads at http://www.betaplace.com. Use the following userID and password to gain access to the site: ID: SDKBETA Password: SIGNMEUP” [Brian Harry, DOTNET-CLR]
September 19, 2002 .net

.NET Framework 1.1 Beta Overview

Here. From Andrew Webb: Even if you don’t want to download the beta, this article gives a nice overview of what to expect in the 1.1 version of .NET Framework. Note the Developer Tools Roadmap’ link at top-right of the Beta Overview page. www.gotdotnet.com has an article about forwards and backwards compatibility between 1.0 and 1.1.
September 17, 2002 .net

Keep your Beans out of .Net

Here. From Keith Wedinger: What if your current application is currently a Java EJB (Enterprise JavaBeans) implementation? Is it worth the cost and effort to migrate to Microsoft’s new platform?
September 16, 2002 .net

.NET Compact Framework Tools and Samples

Here. From Jim Wilson: The DevelopMentor .NET Compact Framework Tools and Samples page is finally available. Check it out to see if there is something that you need or if you have something that you think would be helpful to others please post it.
September 13, 2002 .net

QuickCode for .NET

Here. QuickCode is a VS.NET add-in that expands phrases into code, e.g. prop int test would expand to an entire property implementation. It works for C# and VB.NET and appears to be very flexible.
September 12, 2002 .net

KDE To Support .NET

Here. The KDE Project has emerged as possibly the first real-world adopter of Project Mono for application development. Mono is an open source alternative to .NET for Unix and Linux desktops, initiated in July 2001 by Ximian Inc.” The reason that this is interesting for Windows developers is that with both of the major Linux desktops, i.e. Gnome and KDE, supporting .NET, it’s possible that a simple .NET application or component could actually work across Windows, Gnome and KDE. Now .NET becomes the OS. Shades of Java, which failed in this space I know, but still interesting…
September 12, 2002 .net

foreach is Your Friend: Part 2

Here. Just when you’d thought you’re learned everything there was to know about foreach in part 1, I’ve got more in part 2! This part (the final : ) discusses implementing support for foreach in your own custom types as well as how to patch holes in the framework where they forgot to add foreach support. Enjoy.
September 12, 2002 .net

Multithreaded .NET Web Service Clients

Here. Ian Griffiths and Chris Sells “Unresponsive programs are extremely frustrating to use. Applications that sometimes freeze for a moment are a source of much irritation, especially if they don’t provide any feedback on what they are doing, or how long it is likely to be before they start responding again. This behaviour can be particularly common among applications that use remote facilities such as Web services. This article describes how to maintain responsiveness in .NET Windows Forms rich client applications, even when invoking potentially long-running Web services, by using multiple threads.”
September 12, 2002 .net

Rich Client Database Interactions with ADO.NET

Here. Shawn Wildermuth and Chris Sells “In the .NET Framework, rich clients can bring database servers to their knees, just like Web-based applications. But with the disconnected nature of ADO.NET, your rich clients can manipulate and analyze database data without impacting the database server. Once you have the data in the rich client, you can do high-performance analysis of the data—including sorting, filtering, and querying—without expensive server calls. In this article we will show you how to use DataSet, DataView, and XmlDataDocument to make your rich clients work with database data in a disconnected way.”
September 10, 2002 .net

Standard Conformance Features in Visual C++.NET

Here. From Razvan Caciula: Bobby Schmidt wraps up his three-part review of standard-conformance features missing from Microsoft Visual C++ .NET.”
September 5, 2002 .net

A Second Look at Windows Forms Multithreading

Here. [O]ne thing doesn’t make users happy—not having full control of any processing that their applications are performing. Even though the UI is responsive while pi is being calculated, the user would still like the option to cancel the calculation if they’ve decided they need 1,000,001 digits and they mistakenly asked for only 1,000,000.” In this article, I add canceling to my asynchronous pi calculating WinForms app.
September 5, 2002 .net

Bamboo.Prevalence: a .NET object prevalence engine

Here. Bamboo.Prevalence is a prevalence engine” for .NET. If you don’t know what that means (I didn’t), you can check out [1], which gives a good intro and then provides a FAQ for the skeptical. In a nutshell: “For many systems it is already feasible to keep all business objects in RAM. … To avoid losing data, every night your system server saves a snapshot of all business objects to a file using plain object serialization.” I admit to still being skeptical after reading the FAQ, but it’s mostly a this feels wrong, I’ll think of a reason later” kind of a skepticism. : ) [1] http://www.prevayler.org/wiki.jsp?topic=ObjectPrevalenceSkepticalFAQ
September 4, 2002 .net

Updated VS.NET Fun Facts

Here. I know I don’t organize things well for finding what’s new in my list of VS.NET Fun Facts, but if you haven’t checked back in a while, I add new tips and tricks all the time. Today I added Nick Hodapp’s tip on reducing the amount of time VC7 spends checking included header files for changes and another on Shawn Van Ness’s grokking” of the VS.NET clipboard ring. If you have a fun fact, send it along!
September 4, 2002 .net

New .NET Remoting Open Source Project

Here. We like .NET Remoting and its extensibility model. We want to show the world that you can do some pretty useful (and some weird) things with this model. We also like the ideas behind SOAP and web services but somehow believe that .NET Remoting is a superset of them and offers features which are needed by today’s developers.” This open source site for .NET remoting extensions continues to grow with a new bi-directional TCP channel to work in firewall environments.
September 2, 2002 .net

ASP.NET View State Decoder

Here. Have you ever wondered what was *really* stored in the view state of your .aspx pages? Well, now you can find out with the free view state decoder utility [1]. Just type in the URL of the page whose view state you would like to decode, and view the contents of the view state through a tree-view, as raw text, or as parsed XML. You can also copy and paste the view state string by hand to decode it. For a screenshot of this utility in action, check out: http://staff.develop.com/onion/images/decoderscreenshot.gif” I’ve used this and loved it. It works a treat!
September 1, 2002 .net

“Spend a Day with .NET” Judges Judging

Here. Thanks for the submissions, folks! People reported exhaustion after spending 24 hours rushing to finish their entries, but uniformly thanked me for having them do it (and thus the power of .NET is revealed : ). The judges are judging and I will the results as soon as I have them.
August 30, 2002 .net

Day w/ .NET: Join us on IRC undernet channel #c#

Here. Download mIRC, connect to a Random US/EN Undernet Server” and join the #c#” channel (it may not be listed).
August 30, 2002 .net

Today’s the Day to Spend with .NET!

Here.
August 29, 2002 .net

free .NET development environment

Here. From Hussein: As a Java developer, I was curious about the release of C#. Unfortunately, the list price of more than $1,000 for Microsoft’s developer environment, Visual Studio .NET, extinguished the appeal. I wanted to play with the language, but I couldn’t afford the investment. Thankfully, I discovered a free .NET development environment called SharpDevelop.
August 29, 2002 .net

“Spend A Day With .NET” Tomorrow!

Here. I’ve heard from folks from all over the world that are using tomorrow as an opportunity to either dive into .NET for the first time or to build their pet project with .NET. People are splitting into teams, designing their entries and looking for 3rd party libraries to get them started, all without writing a single line of code until the stroke of midnight on the morning of August 30th in their local time zone. The competition is fierce, and while the prizes seem to have attracted people’s attention, I think it’s the competition that is getting folks excited. Should be fun! : )
August 25, 2002 .net

“Spend A Day With .NET” on August 30th

Here. I’ve heard from individuals and teams all over the world who are going to participate in the Spend A Day With .NET coding contest on August 30th. And as the fever spreads, the prizes increase, now including five different software packages, 12 books, a free year of MSDN Universal and the grand prize, free admission to the Web Services DevCon. It’s not too late to call in sick and send in your entry!
August 23, 2002 .net

foreach is Your Friend, part 1

Here. Of course, the flexibility and expressiveness of C++ that allowed this kind of thing to be built at the library level, instead of directly into the language itself, was both its best feature and its worst problem. C# eschews this kind of flexibility, and the complexity that follows, by simply building a foreach statement into the language that knows how to handle both arrays and custom types.”
August 22, 2002 .net

Second .NET Framework Service Pack

Here. From Razvan Caciula: The .NET Framework Service Pack 2 (SP2) release focuses on security issues and other problems Microsoft has found since SP1′s release; this release also includes all the fixes from .NET Framework SP1.”
August 15, 2002 .net

Only Two More Weeks ’til Spend A Day With .NET!

Here. There’s only two more weeks to prepare (reading only - no coding!) for the Spend A Day With .NET Coding Content on August 30th. Grand prize is free admission to the Web Services DevCon, but other prizes include a year subscription to MSDN Universal, a signed box copy of VS.NET, a half-day of consulting and free software and t-shirts galore!
August 14, 2002 .net

Borland Announces .NET with Delphi 7

Here. From Razvan Caciula: This product also feature full support for new and emerging Web Services, integrated model driven development, and preview capabilities for the Microsoft.NET Framework. Delphi 7 supports a first true model driven architecture with new UML solutions bundled in, updated cross-platform testing capabilities and Linux support with KylixTM 3.”
August 13, 2002 .net

Wahoo! reinstated for .NET SP1!

SP1, as far as I can tell, introduced a bug wherein applications that had specific code groups granting them permissions with a membership determined by a strong key could not run when launched via the href-exe/moble code technique. Keith Brown did some spelunking and determined that ieexec.exe (the hosting process for such an app) would (mistakenly?) require that code from the site as a whole had at least Execution permissions before taking any of the other permissions for the specific assembly into account. The upshot is that to let wahoo.exe run on a .NET SP1+ box, you had to have two code groups, one that gave Internet permissions or greater to assemblies w/ a strong name and one that awarded at least Execution permission to all assemblies from sellsbrothers.com. I’ve updated the Wahoo! site w/ an MSI that creates both of these code groups along with the full source so that you can do the same for your own assemblies. Enjoy!
August 12, 2002 .net

WD-Mag Newsletter: Chris Sells on .NET

Here. I plan on holding forth on smaller .NET programming topics in this bi-monthly newsletter.
August 8, 2002 .net

.Net name ties Microsoft in knots

Here. We still get people saying to us, What is .Net?’” Gates said at a conference held two weeks ago specifically to answer that question. It’s one of those great questions that people can say, Yes, it’s come into focus at the infrastructure level,’ but a little bit where we go beyond that has been unclear to people.” You’d have thought they would have learned their lesson from COM, OLE and ActiveX before this. I guess the slack caused by the Internet boom has taught even Microsoft bad habits.
August 8, 2002 .net

Delphi for .NET compiler preview

Here. From jt: A first look at the Delphi for .NET compiler features and Delphi’s new language syntax
August 7, 2002 .net

.NET Framework Service Pack 2

Here. This article provides information about the bugs that are fixed in Microsoft .NET Framework Service Pack 2 (SP2).”
August 5, 2002 .net

WinForms Over the Web

I did a talk at the local Portland Area .NET User’s Group on zero-setup deployment of WinForms applications over the web, including versioning, caching, optimization, debugging and security. This talk is also an excerpt from DevelopMentor’s Essential WinForms course, which I highly recommend (although I’m hardly unbiased : ).
August 4, 2002 .net

.NET Compact Framework Discussion List is Online

Here. From Jim Wilson: The .NET CF Resource site has been substantially updated and we now have the discussion group online. If you have a questions about the .NET Compact Framework, information that you would like to share or you just want to see what other people are doing with the .NET Compact Framework, this is the list for you.
August 3, 2002 .net

Mike Lehman’s BugTracker.net Released

Here. From Michael Lehman: Mike Lehman’s BugTracker.net” is an open-source Windows Forms, XML, ADO.net bug tracking application written in C#.
July 31, 2002 .net

.NET FxCop Updated to Version 1.072

Here. What’s new: “1) UI updated (i.e. exclude tracking info, bold `new’ violations, application settings +more) 2) nearly every rule has been touched, most improved 3) addition of 40+ new rules 4) cmd-line version of tool greatly stabilized and improved 5) new, complete set of documentation” [Maciek Sarnowicz via Off Topic]
July 31, 2002 .net

Mastering Visual Studio .NET sample chapters

Here. Mastering Visual Studio .NET, by Jon Flanders and Chris Sells “Most developers can perform the basics inside Visual Studio .NET, like creating a project, typing some code, compiling and debugging. Although Mastering Visual Studio .NET covers these topics, it does so very quickly. This book enables intermediate and advanced programmers the kind of depth that’s really needed, such as advanced window functionality, macros, advanced debugging, and add-ins, etc. With this book, developers will learn the VS.NET development environment from top to bottom.”
July 31, 2002 .net

Visual C++ 7 speed vs Visual C# speed

Here. I did a rough experiment the other day with strange results. I created two console apps one is C# and the other if Visual C++ 7. The apps do calculations for Generation of the Mandelbrot Set and time how long it takes. The strange thing is that the Visual C# App is much faster than the C++ App. (1.5 secs per set for the C# App and 1.9 secs per set for the C++ App). This seems totally bizarre to me as I would have thought it would be the opposite. It puts me in the strange situation of thinking about rewritting my C++ fractal generator in C# to get more speed !!” [Windows Technology Off Topic Mailing List]
July 27, 2002 .net

ASP.NET state management with style (& attributes)

Here. Now *this* is the way that state should be managed in ASP.NET!
July 25, 2002 .net

VS.NET Update

Here. From Michael Weinhardt: Microsoft plans to deliver this fall a minor update to its Visual Studio.Net suite of development tools, said Eric Rudder, senior vice president of Microsoft’s developer and platform evangelism.”
July 25, 2002 .net

.NET HandleCollector source and sample

Here. Basically the class keeps track of the list of outstanding handles, and when it reaches a certain threshold it can force a GC. Basically the goal here is to do a cheap and easy extension to the GC to try and teach it about the relative expensive of unmanaged objects.” This is the way that GDI+ deals with unmanaged resource reclamation and can be used for your own non-memory resources.
July 25, 2002 .net

The Rotor Architecture Revisited

Here. Microsoft’s Rotor project, recently refreshed on June 25, 2002, includes source code for the Common Language Infrastructure (CLI) execution engine and frameworks, as well as compilers and other developer tools. The Rotor code can be used, modified, and re-distributed, for non-commercial experimentation, as a basis for courseware or lab projects, or as a guide to those who are developing their own CLI implementations under a simple shared-source license.” [radio.weblogs.com/0105852/]
July 25, 2002 .net

George Shepherd’s Windows Forms FAQ

Here. Welcome to the Windows Forms FAQ. Questions & Answers in this FAQ are from newsgroup posts, various mailing lists and the employees of Syncfusion. I have tried to mention the source wherever I could.” George is a long-time colleague of mine at DevelopMentor as well as the chief author on MFC Internals, which spawned ATL Internals. [radio.weblogs.com/0105852/]
July 25, 2002 .net

Wonders of Windows Forms: You Can Take It with You

Here. Guest columnist Jim Wilson shows you how the .NET Compact Framework and Smart Device Extensions enable you to develop rich Windows Forms applications for mobile devices.”
July 24, 2002 .net

ASP.NET - It’s not just for IIS anymore….

Here. From Rick Childress: Microsoft will soon be announcing a deal with Covalent to bring ASP.NET to Apache.
July 23, 2002 .net

J2EE versus .NET Part I

Here. From Keith Wedinger: Rumble in the jungle: J2EE versus .Net, Part 1 from JavaWorld.com. Heard a lot about .Net versus J2EE (Java 2 Platform, Enterprise Edition)? Wondering what that conflict means for you? Well, we wondered the same thing. So, drawing on our combined experiences from both sides of the fence, we put together an unbiased explanation as to how J2EE and .Net match up. Make no mistake, finding unbiased opinions is difficult—both camps’ marketing hype has kicked into overdrive. This two-part series will help you better understand how the two technologies differ and how they are alike, all in the context of building a Web application from design right through to deployment.
July 19, 2002 .net

.NET Compact Framework Reference Site

Here. The .NET CF Resource Site is a joint venture between Developmentor and JW Hedgehog, Inc. We’ve been working fevereshly to bring things online. We are very proud of our Compact Framework Reference Page, which is the most complete reference of .NET CF supported classes and methods we know of.”
July 16, 2002 .net

Microsoft improving .Net Framework

Here. MICROSOFT IN THE late-2003 timeframe plans to release the next version of the .Net Framework, code-named Whidbey, a company spokesman confirmed on Monday. The major release of the company’s Web development framework is expected to feature rapid application design for Web services, based on work from the company’s Global XML Web Services Architecture toolkit team, according to a Microsoft spokesman.” [DOTNET-CLR]
July 16, 2002 .net

Microsoft Maps Out Next .Net Framework

Here. Microsoft Corp. is mapping out the next major version of its .Net Framework, with features designed to make it easier for enterprise developers to deploy .Net applications and Web services.” [DOTNET-WINFORMS]
July 9, 2002 .net

Dynamic Forms for .NET

Here. This is a process that creates forms dynamically. The form description is held in an XML file, you pass the name of the file as a parameter to the process.”
July 4, 2002 .net

URL Rewriting with ASP.NET

Here. As more and more websites are being rewritten with ASP.NET, the old sites which had been indexed by google and linked from other sites are lost, inevitably culminating in the dreaded 404 error. I will show how legacy ASP sites can be upgraded to ASP.NET, while maintaining links from search engines.”
July 3, 2002 .net

Library for reading CLI files

Here. This library has been implemented to provide access to the raw format of CLI files. The library is still under development, so you can find some problem in its use. The library has been developed using CLI standard documentation. Because fast access to files is a goal I use memory mapping in order to have fast access to the file.”
July 1, 2002 .net

Updated .NET CollectionGen

Here. CollectionGen is a Custom Tool Add-In to VS.NET to generate type-safe collections. The updates are as follows: “-Finally someone has figured out the XSLT garbage bug! Thanks, Matthias Hess! “-Removed the need for a .reg file, so now registration is just regasm /codebase collectionGen.dll’. “Also, Jon Flanders put together a collection gen project item wizard that adds a new XML file with the Custom Tool property pre-set. I’m having a little trouble packaging it for distribution, but if anyone wants to hack on it, send me an email.”
June 29, 2002 .net

Safe, Simple Multithreading in Windows Forms

Here. Chris Sells: It all started innocently enough. I found myself needing to calculate the area of a circle for the first time in .NET. This called, of course, for an accurate representation of pi. System.Math.PI is handy, but since it only provides 20 digits of precision, I was worried about the accuracy of my calculation (I really needed 21 digits to be absolutely comfortable). So, like any programmer worth their salt, I forgot about the problem I was actually trying to solve and I wrote myself a program to calculate pi to any number of digits that I felt like.”
June 28, 2002 .net

SML.NET: Functional programming on the .NET CLR

Here. SML.NET is a compiler for the functional programming language Standard ML that targets the .NET Common Language Runtime and which supports language interoperability features for easy access to .NET libraries.”
June 28, 2002 .net

Autonomy.NET

Here. Chive Software have released Autonomy.NET - a continuous integration service for .NET. The tool was inspired by the excellent CruiseControl for Java and has been released under a BSD-style licence. “The current system has the following features: “o Is capable of handling multiple projects “o Polls CVS, initiates builds and emails results “o Is fully configurable via an XML file”
June 27, 2002 .net

CoolBars.NET v. 1.1 released

Here. The suite is complete solution for toolbars and menus creation. Some features of the product: -Menus and toolbars. -Docking and floating. -Run-time customization. -Skins engine. -SDI and MDI support.”
June 26, 2002 .net

Creating a Design Surface in .NET

Here. Techniques used to create a GDI+-based design surface for the user to create and position various graphic elements within a Windows Forms control in Microsoft .NET. Includes downloadable sample code.”
June 25, 2002 .net

Shared Source CLI Update

Here. This beta refresh continues the Rotor team’s commitment to our growing community and we are very excited to watch the community develop and the source base evolve in new directions. There have been more than 30,000 downloads of the Shared Source CLI to date. I encourage you to download the latest Shared Source CLI archive and explore the possibilities it presents. Follow the links from the download page to explore the growing community.”
June 20, 2002 .net

Under the Lid of Open Source .NET CLI Impls

Here. Cross-platform .NET development is imminent, but the purpose, the feature set, and the platform support varies. We were curious about the development of the various open source implementations of Microsoft .NETs Common Language Runtime, so we talked to the key developers in charge of each of three CLI implementations—Mono, Rotor, and Portable .NET—to find out what exactly they’ve built, how they did it, and how they compare. What we found might surprise you.”
June 19, 2002 .net

Melbourne .NET User Group Hosts WDN RSS Feed

Here. MDNUG would like to thank Chris Sells for making the RSS feed freely available to the masses. We’re too slack to write our own.”
June 19, 2002 .net

VS.NET Google Search Macro

Here. Drew Marsh posted a VS.NET macro that will launch a search for selected text on Google.
June 19, 2002 .net

Flat Controls for WinForms

Here. Many people feel that flat UI look of web pages is desirable. Catering to this market, Ivar Lumi has written a library of flat controls. In the attached .zip file are flat DateTimePicker, EditBox, SpinEdit, ComboBox, ToolBar, Button, Label, CheckBox controls. Also included is an OutlookBar control.”
June 19, 2002 .net

WANTED! Starting Work on a Windows Forms Project?

Here. Are you starting work on a Windows Forms project and need that extra jump start? The Windows Forms development team is hosting a hands-on development lab on the Microsoft campus for companies who are actively starting Windows Forms work. If you are about to start a Windows Forms project or recently started a project, please apply to attend.”
June 19, 2002 .net

A Windows Forms Application Desktop Toolbar

Here. This sample demonstrates how to create a Windows Forms application that registers itself as a desktop toolbar. The behavior of your desktop toolbar can exactly mimic that of the Windows Taskbar.”
June 18, 2002 .net

The .NET Cost: Who Pays? (3 of 3)

Here. The .NET platform provides developers with an unprecedented level of language interoperability—at a price. Luckily, it won’t cost you an arm and a leg to participate. Part 3 of 3.”
June 17, 2002 .net

The ASP.NET Web Matrix Project

Here. ASP.NET Web Matrix is a community-supported, easy-to-use WYSIWYG application development tool for ASP.NET. It can be installed via a quick 1.2 MB download (about 5 minutes using a 56Kb modem). Best of all — it’s absolutely free!”
June 11, 2002 .net

Adding Ref-Counting to Rotor

Microsoft has granted Sells Brothers, Inc. a research grant to add ref-counting to Rotor and to study the performance effects. There’s been a lot of speculation about just how we’re planning to add ref-counting to Rotor.”

June 11, 2002 .net

A compiler-writer’s guide to C#

Plan:

  • Give overview of language from point of view of compiler writer
  • Code generation for CLR is trival, so we’ll focus on type checking
  • Specification is 410 pages, almost no formal methods, and frustratingly verbosely written
  • We’ll boil much of it down to five parts”
June 9, 2002 .net

Pragmatic ADO.NET, Chapter 6: Typed DataSets

In Chapter 5, I extolled the virtues of setting up your DataSets like in-memory databases. Unfortunately I asked you to write quite a bit of code to do all the work. I was only teasing you. This chapter will show you how to use Typed DataSets to make that job a lot easier while at the same time creating type-safety at compilation time.”

June 8, 2002 .net

Mono 0.12 is out!

More classes! More working code! Better compiler! Faster runtime! Less bugs!”

June 7, 2002 .net

BoxDB for .NET - Beta Testers Needed

We are currently conducting an open beta-test.

Built Software recently released the first beta of BoxDB for .NET, a library designed to simplify database application development. BoxDB is an abstraction layer that sits between your application and a SQL database. The purpose is twofold: First, BoxDB eliminates the type of repetitive SQL programming that you might otherwise cut & paste throughout your app. Second, BoxDB creates a simpler interface for persisting application data to the database.”

June 5, 2002 .net

Updated .NET Instant Messager Client Library

Harry Pierson has made a number of updates to this core code to support his full-blown .NET IM client application. Check it out!

May 30, 2002 .net

F#

F# is the CLR language [c]ombining the speed, safety and productivity of ML and Caml with the libraries, tools and cross-language working of .NET

Don used to say that F was invented for things that there was no F-ing way to do in other languages…

May 29, 2002 .net

Microsoft .NET Pet Shop vs. Sun Java Pet Store

″…the .NET Pet Shop performs over 10 times faster than Oracle’s Java Pet Store based on Oracle’s latest (questionable) published data.”

May 28, 2002 .net

noMadMap: Compact .NET + MapPoint .NET

One man’s journey to hook up two beta technologies and the hilarity that ensues.

May 27, 2002 .net

MonoLOGO: An implementation of LOGO for .NET

MonoLOGO provides access to all .NET constructs from within LOGO. Its goal to be 99% compliant with Berkeley LOGO (there are a few internal UCBLogo directives that won’t make sense to support). Eventually I hope to extend the LOGO syntax to support most if not all of .NETs constructs.”

May 26, 2002 .net

Demeanor for .NET, Enterprise Edition

Demeanor for .NET Enterprise Edition provides the most sophisticated obfuscation and optimization available for your .NET applications. Demeanor for .NET performs three categories of obfuscation - symbol obfuscation, metadata obfuscation and control flow obfuscation. All forms of obfuscation are lossy. In other words, the process throws away information making it unavailable for a decompiler.”

May 23, 2002 .net

Adding Custom VB.NET Project Item Template Wizards to VS.NET

Adding Custom VB.NET Project Item Template Wizards to VS.NET

by Michael Weinhardt

This article describes how to implement a VB.NET version of Chris Sells’s Project Item Template sample for C#. As with Chris’s sample, we leverage the VB.NET wizard infrastructure using various template files and script. There is a fair degree of crossover between the two approaches. Accordingly, I quote/paraphrase Chris where required.

The Sample

The VB.NET Project Item Template Wizard sample used in this article is called MyWebForm. It adds a custom WebForm and Webform codebehind class, over-riding the default wizard behavior of dynamically creating a codebehind class for you. Chris’ sample was the inspiration for the VB.NET version, and it implements the same codebehind over-ride logic by leveraging the Microsoft VB.NET wizard infrastructure.

NOTE: If you’re going to use this sample in VS.NET 2003, you need to append a .7.1” onto the Wizard = VsWizard.VsWizardEngine line in the .VSZ file located in the VBProjectItems directory, other you’ll get a Wizard can’t run error in VS03 (and thanks to Randy Brown for pointing this out).

The following diagram is what we’ll hopefully end up with:

How You Do It

  1. Go to the VB7\VBProjectItems directory beneath your Microsoft Visual Studio.NET install folder. This is where you’ll add all your wizard files.
     
  2. Create a .vsz file to configure your project item wizard. There are a bunch of others you can copy from, or you can create your own. The sample creates MyWebForm.vsz, and contains the following text:

    VSWIZARD 7.0
    Wizard=VsWizard.VsWizardEngine
    Param="WIZARD_NAME = MyWebForm"
    Param="WIZARD_UI = FALSE"
    Param="PROJECT_TYPE = VBPROJ"
    As with the C# sample, we’re leveraging VS.NET’s built-in COM-based VsWizardEngine to do all the work for us. Also, the wizard basically uses the WIZARD_NAME parameter to map to the \VB7\VBWizards\ directory that contains the template and script files used to create your project item.

    See VS.NET’s MSDN for more information about .vsz files. And take a look here for a list of parameters you can use in the .vsz file.
     
  3. You need to add a .vsdir file to whichever of the subfolders beneath the \VB7\VBProjectItems folder you’d like to be able to use your wizard from. Once you do this, your project item wizard will automagically appear in the Add New Item” dialog. The MyWebForm sample adds a MyWebForm.vsdir to both the \WebProjectItems and \WebProjectItems\UI folders.

    \WebProjectItems\MyWebForm.vsdir contains one line:

    ..\MyWebForm.vsz| |My Web Form|1|My Very Own Web Form|{164B10B9-B200-11D0-8C61-00A0C91E29D5}
      |4533|0|MyWebForm.aspx
    \WebProjectItems\WebProjectItems\UI\MyWebForm.vsdir contains the same line, apart from an update to the relative file path to MyWebForm.vsz:

    ..\..\MyWebForm.vsz | ...
    Check out Chris’s article or VS.NET’s MSDN for a discussion of the different fields declared in .vsdir files.

    The DLLPath and IconResourceID parameters differ from the C# sample since it appears the underlying implementation differs.
     
  4. At this point, VS.NET can display your Wizard in the Add New Item” dialog (.vsdir files), and you’ve told VS.NET what wizard to call, passing it the information it needs through a group of parameters (.vsz file). What you’ve got left to do is to create the templates that the wizard will use, and implement a small script that does the work of converting those templates into the MyWebForm.aspx and MyWebForm.aspx.vb (codebehind) files that are finally added to your project. As with C#, the wizard engine converts symbols like [! Output SAFE_CLASS_NAME] into strings like NoClass. The sample demonstrates the use of symbols in both the MyWebForm.aspx and MyWebForm.aspx.vb files.

    Navigate to the \VB7\VBWizards folder, which contains the VB.NET wizards. Each wizard is stored in a group of subfolders that make a home for your templates and script. The sample creates the MyWebForm folder:

    MyWebForm uses two template files: MyWebForm.aspx and MyWebForm.aspx.vb, which reside in \Templates\1033. The script file, default.js, hangs out in\ Scripts\1033.

    Note: You don’t need a MyWebForm.aspx.vb codebehind template. I started this exercise by copying the VB.NET default WebForm wizard template and script, changing the relevant names to MyWebForm. The \Template\1033 directory only contained the MyWebForm.aspx file. When the wizard runs, it automatically generates the codebehind class from a default codebehind template file, NewWebFormCode.vb, stored in the \VB7\DesignerTemplates folder.
     
  5. We, however, do want to use a custom codebehind. The key to making this work lies in extending the default WebForm script to delete the auto-generated codebehind class and replace it with our own, using the same fundamental logic as the C# sample. When it comes down to it, it’s pretty simple: MyWebForm leverages functionality contained in \VB7\VBWizards\1033\common.js to make it happen. Take a look at the sample’s default.js file to see how.

Acknowledgements

Thanks to Chris Sells for the C# solution, and the chance.

May 21, 2002 .net

Windows Forms message board

May 21, 2002 .net

.NET Component Inspector

Have you ever wished you could explore the behavior of a component or some code without having to write any code? To watch events occur on any object and examine the history of events? To quickly try something and see how it affects the component? To look at the visual behavior of a component as you adjust not only its properties, but execute its methods? If so the nogoop .NET Component Inspector is the tool you have been seeking.”

May 21, 2002 .net

Wonders of WinForm: State Sanity & Smart Clients

I’d like to welcome you to the inaugural article of my new MSDN Online column. From the title of this column, you can probably tell two things right off. It’s about Windows Forms, and it’s a technology I like quite a bit. Of course, as with any technology, Windows Forms has its good points and its opportunities for improvement.’ In this column, I’ll explore the various ins and outs of Microsoft .NET as it relates to building stand-alone applications, as well as the client side of client-server and n-tier applications.”

May 21, 2002 .net

Adding Ref-Counting to Rotor

I’ve just been awarded a grant from Microsoft Research in Cambridge for Studying the Performance and Memory Usage Effects of Adding Reference Counting to Rotor.” Now we’ll see whether they were right to leave ref-counting out of the CLR or not. Wahoo!
May 20, 2002 .net

.Net Data Provider for PostgreSQL Announced

Npgsql .Net Data Provider for PostgreSQL. It is written entirely in C#. This data provider supports the version 2.0 of PostgreSQL protocol.

It is in a very early stage. For now, just the connect/disconnect functionality is working. It parses and validate the connection string and makes the connection.

Any help, suggestion, recommendation is welcome.”

May 18, 2002 .net

JasonW on Rotor (very cool!)

“With over 9,000 files, and including some 1300 public classes to pore through, the Shared Source CLI can teach you quite a bit about the internal workings of the CLR. But the sheer amount of source code included can make just starting your exploration a monumental task. This article discusses some of the things you can learn from the source code facsimile of the CLR, like how JIT compilation works. It will also help you understand how to control execution along with debugging and loading classes. A walk through the steps involved in setting up the runtime will let you become familiar with the process.”
May 17, 2002 .net

XML Comments Let You Build Docs from C# Source

“C# allows developers to embed XML comments into their source files—a useful facility, especially when more than one programmer is working on the same code. The C# parser can expand these XML tags to provide additional information and export them to an external document for further processing. This article shows how to use XML comments and explains the relevant tags. The author demonstrates how to set up your project to export your XML comments into convenient documentation for the benefit of other developers. He also shows how to use comments to generate help files.
May 17, 2002 .net

Data Binding in Windows Forms Applications

Dino expounds on a subject near and dear to my heart — databinding in WinForms.
May 14, 2002 .net

Fujitsu NetCOBOL™ for .NET Ready To Ship

Don’t miss COBOL for .NET!

NetCOBOL ™ opens doors to leverage existing COBOL code while taking advantage of the innovative Microsoft .NET platform.”

May 14, 2002 .net

SQL Server Centric .NET Code Generator

SQL Server Centric .NET Code Generator (code named OlyMars) is both a flexible and powerful code generator based on database modeling.

It allows instant generation of both SQL and .Net code providing a complete library of stored procedures, .NET classes and ready-to-use Windows/Web form controls (including associated documentation).

SQL Server Centric .NET Code Generator is also fully extensible to use one’s own custom templates and consequently can be adjusted to generate any custom code respecting a homogeneous implementation scheme within the company (can be written either in VB .NET or C# .NET).”

This seems to have punted on the multi-language issues, however. sigh.

May 14, 2002 .net

.NET ANY where, ANY time and on ANY device

From Razvan Caciula:

The objective for the iNET development team is to re-create the complete .NET deployment framework entirely in Java.”

For instance with iNET, corporations can deploy .NET based applications integrated with a J2EE server hosted completely on an IBM mainframe and/or Linux instead of Windows.”

Anyone has used this mixture? :)

May 13, 2002 .net

C# samples to customize the WebBrowser control

C# samples by Ted Faison of hosting the WebBrowser control and using ICustomDoc, IDocHostUIHandler and IDocHostShowUI to achieve complete control over WebBrowser.”
May 13, 2002 .net

Generics for C# and CLR

From Razvan Caciula: You have all here about parametric polymorphism in the CLR using an extended version of C#.
May 10, 2002 .net

Adding Custom Project Item Templates to VS.NET

Adding Custom Project Item Templates to VS.NET

This article describes how to add a custom project item wizard to the Add New Item dialog in Visual Studio .NET. Instead of building a custom implementation of IDTWizard and generating the code ourselves, however, we’re going to leverage Microsoft’s implementation using strategically placed template files and script.

The Sample

The sample project item template wizard I built to go along with this article is called My Web Form and adds a custom aspx file along with a custom aspx.cs file (the latter being the hard part), as shown below. It also advertises the Web Services DevCon. Enjoy.

NOTE: If you’re going to use this sample in VS.NET 2003, you need to append a .7.1” onto the Wizard = VsWizard.VsWizardEngine line in the .VSZ file located in the CSharpProjectItems directory, other you’ll get a Wizard can’t run error in VS03 (and thanks to Randy Brown for pointing this out).

The Steps

Feel free to follow along:

  1. Under your VS.NET installation folder, find the ProjectItems folder for the type of template item you’d like to add, e.g. VC#\CSharpProjectItems is the directory for C# project items.
     
  2. Create a .vsz file to configure your project item wizard, e.g. here’s a sample CSharpAddMyWebFormWiz.vsz:
    VSWIZARD 7.0
    Wizard=VsWizard.VsWizardEngine
    Param="WIZARD_NAME = CSharpAddMyWebFormWiz"
    Param="WIZARD_UI = FALSE"
    Param="PROJECT_TYPE = CSPROJ"
    Notice that the Wizard value looks like a COM ProgID. It is. Specifically, it’s VS.NET’s built-in VsWizardEngine. That’s so I can skate by using their template expansion engine and their script hosting without having to build it all myself.

    In the part that says WIZARD_NAME, give that the name of your own custom template, e.g. CSharpAddMyWebFormWiz. This name will be used later.

    Click here for more information about .vsz files.
     
  3. The directory structure underneath the ProjectItems folder mimics the folders in the Add New Item dialog. Navigate to the one you like and add a new  .vsdir file to reference the wizard you created in the vsz file above, e.g. here’s a sample mywiz.vsdir for under ProjectItems\WebProjectItems\UI (this is all on a single line):
    ..\..\CSharpAddMyWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|
    My Web Form|0|A special web form|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|
    WebForm.aspx
    We’ve got several fields here, all separated by old fashioned pipes. The 1st field is the relative path the vsz file we created earlier. The 3rd field is a short description for the Add New Item dialog. A long description (also shown in the dialog) can be provided in the 5th field.

    The 4th field is the sort order, smaller means close to the top. I assume since you’re going to all the trouble to add a custom project item that you think it’s important, so we’ve promoted it all the way.

    Notice also the last field. It shows the general format of the file to be generated and added to the project. The other fields are GUIDs that we copied from the VS.NET CSharpAddWebFormWiz.vsz to leverage” their icon for display.

    Click here for more information about .vsdir files.
     
  4. The mywiz.vsdir file shown above will show your custom template item under the folder you picked, but will not show it at the global level. To show it at the global level, you need to copy your .vsdir file up to the just under LocalProjectItems or WebProjectItems, remembering to update the relative file path, e.g.
    ..\CSharpAddMyWebFormWiz.vsz|{FAE04EC1-…
  5. Once you’ve set up the pointers to your new project item template, you will need the template that will form the output of your wizard. This information is placed into a folder under the type of template item you’re building, e.g. VC#\VC#Wizards is where the C# wizards live. The directory structure for your item will look like this:



    The contents of the Template\1033 directory is the manifest for the file to generate for your project item in a file called templates.inf and the file that you would like to use as the template. The template file and the templates.inf file use wizard-provided symbols to example statements like [!output SAFE_CLASS_NAME] into strings like MyClass”. Click here for more information about the template language.

    The following is an example templates.inf file with a single file in it:
    WebForm1.asmx
    By default, all project items have a single file as specified in the Add New Item dialog, which is why we only have a single file in this templates.inf file. When running, the wizard will expect a file named WebForm1.asmx in the Template folder to serve as the template.
     
  6. The templates.inf file turns out to be a convention and is not at all required. The default.js file in the Script\1033 directory of your wizard is what uses the templates.inf file to process each template file. Unfortunately, even a simple default.js file is too complex to reprint here, so I recommend that you find one from a wizard that’s close to what you want to do and copy it. If you just want a single file as determined by the templates.inf file, you’re all set.
     
  7. On the other hand, if you want more, you’re going to be doing some spelunking. For example, I wanted to produce a project item template wizard that output a custom aspx file and the corresponding aspx.cs file. I started by duplicating the CSharpAddWebFormWiz folder, renaming it CSharpAddMyWebFormWiz and following steps 1-6. Then I added another file to the templates.inf file and all heck broke loose.

    First, the default.js file that I duplicated from the Add Wizard Form wizard assumed that it was generating a single file, e.g. WebForm1.aspx, so when I added another file to generate, it reused that file name and VS.NET didn’t like it one bit.

    Second, the IDE itself generates files when certain kinds of files are added to a project, e.g. aspx files. For C# projects, those files live in VC#\DesignerTemplates. Since the aspx.cs file is auto-generated when an aspx file is added to a project, VS.NET didn’t like it when I tried to generate another one right over it.

    Finally, deleting the file in the middle just after the aspx.cs file was generated didn’t work too well either, because default.js tells VS.NET to open the aspx file as soon as it is generated, which causes VS.NET to look for the code behind file, which causes more problems, since we just deleted it.

    So, after digging through the undocumented common functions in VC#\VC#Wizards\1033\common.js that the C# default.js uses to do its work [1], I was able to produce a project item template wizard that produced both an aspx file and an aspx.cs file. See the default.js in the sample for the details.

[1] The VC++ team actually documented the functions in the VC wizard’s common.js. Thanks!

Acknowledgements

Thanks to XP Systems for asking me to help them solve this problem. Also, thanks to Elton Wells for pointing me at some of the docs and the common.js files that the wizards use.

January 6, 2002 .net

VS.NET Fun Facts

After about a month of banging my head on it, Visual Studio.NET has become my favorite IDE of all time. To save you the bruising, I thought I’d post some productivity tricks and traps I’ve learned [1] that make VS.NET useful. If you’ve got your own, send them to me and I’ll post the good ones.

DISCLAIMER: I always leave the standard VS.NET key bindings, i.e. I don’t set it to VC6 style. In general, I just learn the default keystrokes for things instead of changing them. Saves me time when repaving my machines or sitting down at strange machines. If you’ve changed key bindings in your VS.NET, these keystrokes aren’t likely to work, but the tricks will still be useful if you can figure out what the key bindings are.

Download

If you don’t already have VS.NET, run, don’t walk, to MSDN to download a 60-day evaluation of VS.NET Professional.

Tricks

  • The most important thing I’ve done to make VS.NET useful for me is to unpin all of the windows. This gives me tons of room for the source or design view. This, combined with the keystrokes to pull out the windows (below) as I need them, is probably my favorite feature of VS.NET.
     
  • The 2nd most important thing to know is that VS.NET can be invoked from Start->Run using its name devenv” (no quotes). Therefore, to start VS.NET, type Ctrl-Esc, R, devenv, Enter. Much better than digging into the deep Programs menu.
     
  • Make sure to move the Visual Studio .NET Command Prompt” that’s buried deep inside of Start->Programs->Microsoft Visual Studio  .NET->Visual Studio .NET Tools to somewhere more handy, e.g. the Quick Launch toolbar, so that you can get to it easily. You’ll be using the command shell often in your .NET development.
     
  • Let the IDE implement the stubs of an interface function in a class (not a struct):
    1. Type the name of the interface after the name of the class, e.g. class Foo : IDisposable”.
    2. In the Class View (Ctrl-Shift-C), navigate to the class, e.g. Foo, and choose the interface you’d like stubs for under Bases and Interfaces for that class.
    3. In the context menu (Shift-F10), choose Add->Implement Interface.
    4. Bask in the glory of Don Box (who showed me this trick).
       
  • Let the IDE implement the stub of an virtual function override:
    1. In the Class View (Ctrl-Shift-C), navigate to the class, e.g. Foo, and choose the method on the base class you’d like to override under Bases and Interfaces for that class.
    2. In the context menu (Shift-F10), choose Add->Override.
    3. Bask in the glory of me, who found this all by myself. I found this digging through the .VSZ files on my system. It looks like you can add your own context items to the menus, which sounds like fun…
       
  • If you’d like some samples of VS.NET Add-Ins, MS provides some. MSDN Magazine provides an add-in article that you may find useful.
     
  • Likewise, Leo A. Notenboom has written a thorough article about how to write an add-in to VS.NET.
     
  • Also, in A Designable PropertyTree for VS.NET: Russell Morris has built an implementation of the PropertyTree control that you see in VS.NET’s Project Properties dialog. What makes this really cool is that Russell’s control is a great example of what to do to integrate with the VS.NET Forms Designer.
     
  • If you’d like to add to the Solution, Project, Project Item or Context Menu wizards for VC++, VC# or VB.NET, you can. Here’s an example of a project item wizard that produces a custom aspx file and a custom code behind file to go with it.
     
  • While ildasm.exe is very thorough, if you’d like to have a prettier view of the types in an assembly, you can load it into the VS.NET Object Browser. Using the file open dialog, click the drop-down and choose Open With and select the Object Browser. Once it’s loaded, you can unload it by choosing the Remove item from the context menu of the assembly in the Object Browser.
     
  • This isn’t a tip so much as an observation. If you use an #if with a compilation symbol, e.g. DEBUG or TRACE, notice that as you move from configuration to configuration that the editor will gray out the code path that won’t be taken. Is that cool, or what?!?
     
  • Read the online documentation. It’s *so* much more useful than the online documentation of old.
     
  • Brock Allen showed me the 3rd tab (Projects) in the Add References dialog for adding references from one project to the target of another. This works *so* much better than hard-coding .NET references to a specific output folder.
     
  • Ed Stegman pointed out that the Toolbox can be used to store snippets of code. Simply select some and drag-n-drop it on the Toolbox. To paste, drag-n-drop from the Toolbox to your editor. Of course, this is great for duplicating bugs as well. : )
     
  • Ed really likes regions, marked using #region/#endregion compiler directives, too. Now that’s he’s clued me into the keystrokes (below) for expanding and collapsing them, I really like them, too. : )
     
  • Ed also reminded me of the Task List and how anything marked with TODO, HACK or UNDONE will be included in your list of tasks. Andrew Stopford reminded me that you can set up your own keywords via Tools -> Options -> Environment.
     
  • If, on the other hand, you hate the Task List, Kevin Perry suggested the followings steps to turn if off after a build:
    1. Go to Tools -> Options -> Environment -> Project and Solutions.
    2. Uncheck the Show task list window if build finishes with errors” option.
    3. Make sure the Show output window when build starts” option is checked.
    4. Now go and close the task list window and it’s gone for good!
       
  • Several folks have sent along macros that are life savers to them. If you’d like to do that, I’m happy to post them here along with your name and a brief description. Please send attached files instead of inline text, however. Thanks!
  • Drew Marsh pointed out that Ctrl-S works in any of the output windows, e.g. build, debug, etc, to save the contents to a file.
     

  • It’s cool to have MS folk reading this list. Kevin Perry sent me to procedure to bypass the Attach to Process” dialog that asks what kind of debugger you’d like to pick, i.e. CLR, T-SQL, Native and/or Script, when you click on the Attach… button in the Debug Processes dialog. Ctrl-clicking on Attach… will give you the Native debugger without asking.
     

  • My good friend Tim Ewald reminded me that one of the coolest features of VS.NET is that the solution explorer is really just a view of your actual project folders in the shell. This is especially useful if you choose Show All Files, so that you can add files to your project that are already in your project directory simply by using the context menu. If you’d like to add a file that isn’t in your project, you can do so by opening the file and choosing Move into Project” from the context menu. This is a poorly named item, however, as it actually links to the existing file outside the project instead of moving it in the file system (although the linking is the correct behavior).
     

  • To speed the IDE start-up time, you want to avoid the browser being loaded. To do that, from the Start Page, choose My Profile and set At Startup to Show empty environment. Also, close the Dynamic Help window and the Start Page. Now IE will only be loaded on demand.
     

  • If you like the tabs showing the various files you have open, but miss the ability to show multiple files at the same time, right-click on one of the tabs and choose New Horizontal/Vertical Tab Group. Both tab groups will show simultaneously and you can move tabs (and therefore the window that the tab represents) between tab groups by right-clicking on the tab.
     

  • Maria Abreu points out that VS.NET, by default, neglects to colorize strings (an omission, IMO). You can colorize them via Tools->Options->Fonts and Colors and it really helps. Thanks, Maria.
     

  • Graeme Foster posted this tip on the DOTNET mailing list for getting VS.NET to copy the application .config file during the build: simply name the file app.config and put it in the main project directory. At build time, VS.NET will copy the file into the output directory with the build output.
     

  • Dominick Baier reminded me that by typing ///” (no quotes) above the declaration of a method or property, the C# editor will give you the template for the C# XML documentation tags with all parameters and return value. The IDE will compose these comments into (fairly ugly) HTML-based documentation for your classes using the Tools->Build Comment Web Pages menu item. A much nicer set of documentation from these comments can be generated by NDoc.
     

  • Kunal Cheda pointed out that if you’ve got multiple things you’d like to start when running or debugging a solution, you can do so at Solution Explorer->Solution Properties->Startup Project->Multiple Startup Projects. *Very* handy for client-server testing.
     

  • Nick Hodapp passed along this tip on how to exclude included files that don’t change from VC++ dependency checking:
     

    1. Add header file directory names (using full, absolute paths) one per line, to SYSINCL.dat.

    2. Exit the development environment.

    3. Restart the development environment.

    4. Click Rebuild for changes to take effect, noticing a reduction in build times.
       

  • Shawn Van Ness thinks that the clipboard ring is so cool, it should be back-propped into all of Windows”: Using Ctrl+Shift+V as an alternative to the usual Ctrl+V paste command, will cycle” through the last dozen or so bits of text you’ve copied onto the clipboard. This simple user scenario demonstrates:
     

    1. Copy #if DEBUG onto the clipboard.

    2. A few lines below, copy #else” onto the clipboard.

    3. A few lines further below, copy #endif” onto the clipboard.

    4. Scroll down many hundreds of lines… or open a different file, etc.

    5. Ctrl+Shift+V to paste #endif”.

    6. Ctrl+Shift+V, Ctrl+Shift+V to paste #else”.

    7. Ctrl+Shift+V, Ctrl+Shift+V, Ctrl+Shift+V to paste #if DEBUG.
       

  • Scott Hanselman pointed out that you can set the font size to VS.NET from the command line using the /fs argument, e.g. devenv.exe /fs 14”. This is great for presenters!
     

  • For the complete list of key bindings, MS provides a Keybindings Table Add-In. Here it is already compiled. Just drop it anywhere, register it as a COM server and the next time you start VS, you’ll have a KeyMap command in the Help menu.
     

  • Russell Sinclair has provided his favorite key bindings in an Excel spreadsheet that prints and folds nicely for keeping it handy.
     

  • Here are my favorite key bindings:
     
    Keys Binding
    F8/Shift-F8 Navigate compilation errors
    Ctrl-D Move to mini-buffer
    Ctrl-Shift-G in mini-buffer or
    Ctrl-O in mini-buffer
    Open file name in mini-buffer (Ctrl-O seems to open stuff Ctrl-Shift-G does not)
    > command” in mini-buffer Execute command
    Ctrl+/ Move to mini-buffer, typing the leading > for you
    Ctrl-Alt-A Open the command window
    Ctrl-PageUp in HTML Design View Open source view
    Ctrl-PageDown in HTML Source View Open design view
    F7 in Form Design View Open source view
    Shift-F7 in Form Source View Open design view
    Ctrl-Alt-L Solution Explorer
    F4 or Alt-Enter Properties of selected item
    Ctrl-Shift-B Build
    F5 Debug
    Ctrl-F5 Run, but not debug
    Ctrl-Alt-J Object Browser
    Ctrl-Shift-C Class View
    Ctrl-Space when typing a symbol Complete the symbol you’re currently typing or give you a choice of possibilities
    Ctrl-Space when entering arguments Show the function prototype
    -” (no quotes) as the name of a menu item Menu item becomes a separator
    Ctrl-K Ctrl-F Reformat selection
    } Reformat scope being closed
    Ctrl-K Ctrl-C Comment out selected lines
    Ctrl-K Ctrl-U Uncomment selected lines
    Ctrl-} Match braces, brackets or compiler directives
    Shift-Ctrl-} Select match between braces, brackets or compiler directives
    Ctrl-L or Shift-Del or
    Ctrl-X w/ no selection
    Delete entire line
    Ctrl-Del Delete next word”
    Alt-F6 Next visible pane (not for use with all windows unpinned)
    Ctrl-Shift-F12 Jumps to next *whatever*, depending on what’s active, e.g. next find result, next task, next error, etc.
    Ctrl-“-”/Ctrl-Shift-“-” (no quotes) Jumps to last/next place you worked
    Ctrl-C in the Class View Copies fully qualified name to the Clipboard
    Ctrl-M Ctrl-M Collapse or expand a region or outlined block (as marked by the [+] and [-] on the left hand side of the editor).
    Ctrl-M Ctrl-O Collapse everything in the current file
    Ctrl-M Ctrl-L Expand everything in the current file
    F12 Jump to the current symbol’s declaration
    Ctrl-G, line #, Enter or
    Ctrl-D, line #, Ctrl-G
    Jump to line
    Ctrl-I/Ctrl-Shift-I + string Incremental search for string
    Ctrl-R+Ctrl-R Turn on/off word wrap
    Ctrl+Up/Down Arrow Scroll window up/down without moving the cursor away from the current line
    Shift+Alt+Arrows
    (Alt+Mouse works, too)
    Column selection (include of line selection)

Traps

  • VS.NET’s Copy Project uses FrontPage Extensions to publish a web site from a local testing machine to the deployment machine. This is virtually important if you don’t want to hack on your live web sites. However, Copy Project sends everything every time instead of sending the deltas, so it’s pretty worthless as far as I can tell. Instead, Brad Wilson clued me into the FrontPage Publish Web command, which only publishes deltas.
     
  • The command window (or > in the mini-buffer) seems really cool, but I don’t know any good commands to type. Do you?
     
    • Joe Bauer points out that you can, of course, use the command window to print fields or call methods using the ?, e.g. > ? objMyClass.GetCount()”.
    • Richard Birkby pointed out the shell” command, which seems a bit unwieldy for me, but you may like it. >shell /?” in the mini-buffer will show usage (now that’s cool!).
    • Drew Marsh points out that the command window (or the mini-buffer with a > prefix) allows you to execute any command provided by the shell, add-ins, or macros. Anything you don’t bind to a key combination or toolbar button, you can go into the command window to execute. Also, it supports auto-completion for those of us with poor memories.
    • Richard Broida pointed out the use of the ?” command to print variables at debug time.
    • John Lam showed me where the docs are for the pre-defined command aliases. He also points out that you can create your own aliases, but you need cool commands first before you can do that. : )
    • Ramakrishna Vavilala recommends a cool alias >alias ! shell /command cmd /c” which reduces the syntax of the shell command considerably and sends the command output to the Command window.

    • Don Box pointed me at two commands that forces me to learn the keyboard shortcut to put focus in the command window (Ctrl-Alt-A):
       

      • >open will give Intellisense on the file system, e.g. >open c:".
         

      • >File.NewFile will open a new file with the appropriate name and syntax highlighting, e.g. >open foo.cs”. This is even handier when you alias new” to File.NewFile, e.g. >alias new File.NewFile”, because you can just do this >new foo.cs”.
         

  • As far as I can tell, there is no way in a C# project to run custom pre or post-build commands, either on a project or a file level. If the VC++ wizards still had a Utility project, that could be used, but the closest I’ve seen in VS.NET is a Makefile project. Anyone have ideas on this one?
     
    • Several folks have recommended a VS.NET Add-In Sample that is supposed to provide this capability.
    • Kevin Perry showed me where the UI scrambler put the Utility project in this version of the IDE:
      1. Run the makefile appwizard to create a makefile project.
      2. Bring up the project properties for the project and look at the general page
      3. Select Utility” in the Configuration Type” property drop down.
      4. Click Apply.
        POOF! Instant Utility project.
        BTW: C++ Static Library projects can also double as utility projects in a pinch.
         
  • As cute as the Add Reference menu item is on a project’s context menu, your going to have to avoid Add Reference for COM servers and build the references by hand if you sign your assemblies (which you should always do). Apparently a signed assembly is not allowed to reference an assembly that’s not signed and the Add Reference menu item doesn’t sign the generated assembly. All Add Reference does is the moral equivalent of the tlbimp command line tool anyway, so get used to calling it yourself using the /keyfile command line argument. If you import COM Controls, e.g. the WebBrowser control, you’ll need to use aximp instead of tlbimp, but the /keyfile argument is the same.

    However, Jerry Dennany points out that you can have VS.NET itself sign your interop assemblies by going to the Project Properties, and under Common Properties / General there will be a section for wrapper Assembly for ActiveX / COM Objects.” You may place your path to the Key File here, and everything still works from the IDE.
     
  • There are no wizards for standard SDI, MDI or Explorer-style applications in WinForms as there were in VC++ for MFC applications. However, the wizard stuff is there, although it’s obscure, so maybe I’ll build one. I’ve certainly done my share of that kind of work…
     
  • Likewise, there is no built in support for MFC-style document handling, separation of data and view, command line processing or command UI handling. I’ve done my share of that kind of work, too, and I *will* be building that stuff. Anyone want to volunteer to help?
     
  • I don’t seem to be able to get a custom control on the toolbox unless it’s part of a separate assembly. What if I have a custom control in my application? Can I make it show up on the toolbox somehow?
     
    • Bob Beauchemin pointed out that I can customize the toolbox and point it at a built version of my EXE, which sounds kind of awkward, but works.
       
  • I can’t tell. Is everything being recompiled every time I build, regardless of whether the source has changed or not?
     
    • Drew Marsh pointed out that the Incremental Build option in a C# project will decide whether you rebuild only if it is changed or not.
       
  • If a file is thought of” internally by the IDE as one text, e.g. Text, and you try to save it as another type, e.g. XML, if you’re not very careful the save dialog will append the extension of the type it thinks it is, e.g.  .txt. To enforce the extension you want, put double quotes around the file name, e.g. foo.xml”.
     
  • Neither BeginInvoke nor EndInvoke is shown when calling methods on a delegate in C#, even though they do in VB.NET. This just seems wrong…
     
  • Docs on the built-in VsWizardEngine that VS.NET provides would be nice.
     
    • Jon Flanders says that they’re documented as part of Enterprise Templates.
       
  • By default, adding a new project to an existing solution wants to put the new project in a peer directory instead of in a sub-directory. This seems strange if you’re trying to keep these things together (which, presumably, you are if you’re grouping multiple projects into a single solution). Certainly, I’ve seen users dig through several peer directories looking for the solution file. I put sub-projects into sub-directories by hand, but it would be nice if the IDE did this automatically.
     
  • Cleaning a project of it’s output files doesn’t actually work for C# or VB.NET projects (although the UI shows it as an option, as does the command line). Tomas Restrepo has provided an add-in that provides the missing Clean functionality, along with a rant on what problems he had building the add-in.
     
  • In spite of CodeWright and every other 3rd party editor supporting it for years, VS still doesn’t support keyword expansion, e.g. expanding if( into if( | )\n{\n}”, so I use Dexter, from NilgiriHouse. I don’t have to change my typing habits at all, but I get tons o’ text for free.
     
  • The macro recorder is pretty stunted. For example, if I want a macro to switch between some editor settings, e.g. my normal code formatting style and my prose code formatting style, and I record a macro to watch me change the settings, all the recorded macro does is record that the dialog was shown, not what settings I changed. What a let down…

[1] I’ve learned a ton of these tricks and traps from my fellow DevelopMentor instructors, my students and the .NET mailing list, all of which I can heartily recommend.

May 18, 2001 .net

Generics for C# and .NET CLR

This is a small site dedicated to the .NET generics research, including a version of the whitepaper describing their research updated as of 5/2/02.