Expert Texture Home Contact me About Subscribe Digipede Connect on LinkedIn rwandering on Twitter rwandering on FriendFeed

rwandering.net

The blogged wandering of Robert W. Anderson

VS 2005 / SQL Server Launch

I’m here at the Visual Studio 2005 / SQL Server 2005 Launch.

I would have blogged this “live” but there is no WiFi.

The keynote started out with a big bang: Cheap Trick played a song introducing the theme: “are you ready to rock“. Then Steve Ballmer came out and gave the keynote. This launch is certainly a big deal for Microsoft. Steve Ballmer et al are really pushing the scalability of this new platform and suitability for mission critical apps. Intel CEO / President Paul Otellini came on stage to talk about how the Intel compilers are now a part of the VS product launch (critical for the success of the Itanium, I think). After that, it got kind of flat.

I had to fight the feeling that this launch is all old news. I am excited about Vista (and the related Windows Workflow Foundation, Windows Communications Foundation, and Windows Presentation Foundation technologies), Web 2.0, and more. And of course this is a launch event, not an announcement event (like the Windows Live announcement last week).

Don’t get me wrong — I am very happy to be using the new tools announced today and do think this is something big worth celebrating. And of course, I’ve adopted the new Microsoft tools, but Microsoft has to convert / convince a lot of other people.

I suppose this feeling of “old news” is a necessary result of Microsoft’s increased transparency. Product launch used to be the first time a large number of people really started using the new tools — but the first VS beta some time ago now. Of course, this transparency is a good thing.

So I enjoyed this for what it was: a chance to celebrate the latest release of the most productive development platform in the (known) universe. And better: a chance to meet prospective customers and partners.

Plus Cheap Trick really rocks. No kidding, they sounded great. Here are a couple pictures:

Cheap TrickCheap Trick on the monitors.

Congratulations to Microsoft and thanks for a great launch party!

VS Launch Partner Appreciation Party

John Powers (the Digipede CEO) and I went to the Microsoft Partner Appreciation Party at Frisson in San Francisco as prep for the VSLaunch event at Moscone center tomorrow. John and I had a great talk about how the Digipede Network is a great fit for SaaS in general.

The party was fun. They had a custom drink menu for the event:

Drink menu at the Visual Studio Partner Party

The “Visual Studio 05” wasn’t bad.

As we were heading out of the city, we found ourselves driving into a dead-end loading zone.

John said: “What we are doing here is slightly illegal.”

It became clear that If we continued we would have had to drive over a sidewalk.

I said: “No, what you are about to do is illegal. That is what makes you a visionary.”

And, no, we didn’t have too many drinks at the party!

Tags: ,

Hello World from cairene.net

This is the third and, I hope, final destination for my blog. It started out as Mind From R. Wandering at Blogspot. Then over to GeeksWithBlogs as “Expert Texture”. Then here. I moved from Blogger in search of a community (after all, blogger is a bit too broad as communities go: everyone on the planet who blog. I moved here out of a desire for more control over my blog.

This is just a quick post to make sure Feedburner is picking up my new blog correctly.

No time to blog right now — we have a lot to do today to get ready for the Visual Studio 2005 / SQL Server 2005 launch in San Francisco on November 7th. Come by and see us at kiosk NC-12.

Cheers!

Tags:

GeeksWithBlogs changes

I stopped posting over the last few days due to the service changes at GeeksWithBlogs.  They have decided to include advertisements on all of their hosted blogs and feeds.  I can understand their need:  the community is growing rapidly and it’s costing more money to support. 

I would have preferred it if we (as a part of this community) had been given a chance to comment on this change and even been given the option of ponying up some money.  My guess is that many members here would pay in advance for the service or even just donate money to keep it running free of ads.  (Jeff Julian implies that there may be options for an ad-free premium service in the future once they get their new blogging system in place.)

Instead, we received an e-mail on Sunday morning.  By Monday morning, my blog had an advertisement on it.  BTW: I don’t object to advertisements, I just object to having no control over the advertisements. 

This is kind of ironic for me as I have been trying to figure out how to get more control over my blog’s CSS template only to find that I now have less. 

In Jakob Nielsen’s article Weblog Usability: The Top Ten Design Mistakes, he says that you don’t want to let someone else control your blog.  He even sites this very issue as a reason (see issue #10).

Yup.

Now what?  Well, I am evaluating other options.  And maybe I will move again.  If you are a subscriber, please make sure you have subscribed to http://feeds.feedburner.com/MindFromRWandering — this will ensure that if I do make a move, you will come along.

Update:  One thing I forgot to say in this post:  I do appreciate the community that GeeksWithBlogs is building here.  I don’t actually expect service for free (and of course, that is what I have gotten and continue to get from GeeksWithBlogs).  And I do fully appreciate Jeff’s need to make this change.

Tags:

Digipede Webinar, November 1

Dan Ciruli and Nathan Trueblood will be running a webinar on the Digipede Network, showing how to speed up applications. They do a great job of giving an overview of its power and functionality. The focus of this webinar will be financial applications.

Sign up to find out how our product can help you do more. Faster.

Go here for details on what will be covered and to sign up. It is scheduled for 10AM Pacific and will be about 30 minutes.

Tags: ,

2.0 Port Update: Finished (for now)

Now that I am finished with the port to VS2005 / .NET 2.0, I wanted to point out a few final issues I came across. Note that we use the Preemptive Dotfuscator v3.0 here, but the obfuscation issues likely apply to other obfuscators as well:

New files in ASP.NET 2.0

As the compilation model for ASP.NET has changed a great deal, there are also some new files that you must deploy. Of course, this is not an issue if you use VS2005 to deploy directory to a web site, but if you are packaging up all of your files into an installer then make sure you include these new files:

  • *.resx
  • *.compiled
  • PrecompiledApp.config

In particular, I have found that if the *.compiled and PrecompiledApp.config file are not in place, your global events will not get raised.

Obfuscation Issue #1: Don’t rename __ASP

Exclude the __ASP namespace from the renamed. This is a new namespace that is generated by the compiler, so you need to exclude this in your Dotfuscator project file:

  <renaming>
    <excludelist>
        . . .
        <namespace name="__ASP" regex="false" />
        . . .
    </excludelist>
  </renaming>

Note that there is also a new ASP namespace, but I did not have to exclude this one because I was already excluding class names that are automatically placed under this namespace. Obfuscation Issue #2: Don’t obfuscate multiple Web projects at once

Before ASP.NET 2.0, it was possible to obfuscate multiple Web projects at the same time (as long as all of the namespaces are unique across projects). The new namespaces that are generated by the compiler (i.e., ASP and __ASP) will cause a conflict during obfuscation. To solve this problem, you need to break up your obfuscations into multiple projects.

This last part is somewhat non-trivial (or at least a real hassle). I have written many nant scripts that take build output and assemble them into a directory for obfuscation, breaks up the Dotfuscator configuration file, runs multiple obfuscation runs, and finally reassembles the files into individual folders for release.

I am not going to blog on those specifics, but if you are interested in my solutions to these problems, feel free to contact me.

Tags: , , ,

Renaming ASP.NET 2.0 Assemblies Redux

I have posted a bit on merging ASP.NET 2.0 (without aspnet_merge) and also on renaming ASP.NET 2.0 auto-named assemblies. My first solution on renaming was incomplete in that it would only work when there were no dependencies between the renamed assemblies.
This solution is correct and produces assemblies that properly get through Dotfuscator 3.0 / and actually run!   All of the code below are either nant targets or nant tasks.  These should be generally applicable (with the right properties assigned).

  1. Disassemble the assemblies with ildasm.
  2. Get the generated assembly name for a particular folder from a representative file (either an aspx or ascx).
  3. Replace the assembly name for all files (pages, controls, and the il) with a fixed name (e.g., “App_Web_Root”).
  4. Reassemble and rename the assembly’s DLL to the fixed name (using ilasm).

These targets assume the following properties are set:

ProjectPath
the path to your build project directory
ildasm
the full path to the ildasm executable
ilasm
the full path to the ilasm executable

The first part is disassembly (the most straight-forward part):

  
<!-- disassembles all App_Web assemblies to il -->
<target name="disassembleAspNet20Assemblies" >
    <foreach item="File" property="assembly">
      <in>
        <items basedir="${ProjectPath}\bin">
          <include name="App_Web*.dll" />
        </items>
      </in>
      <do>
        <exec program="${ildasm}" 
              workingdir="${ProjectPath}" 
              commandline=
               "/out=${assembly}.il /nobar /raweh /utf8 /quoteallnames /linenumbers ${assembly}" />
      </do>
    </foreach>
  </target>

The second part is to change the files to point to the new name:

  <!-- Renames a generated-assembly for ASP.NET 2.0 -->
  <!-- 'page' property is a representative page or control in the folder -->
  <!-- 'fixedAssemblyName' property is the new desired name of the assembly -->
  <target name="renameAspNet20Assembly">
    <loadfile property="loadedPage" file="${ProjectPath}\${page}" />
    <!-- get the assembly name from the representative page -->
    <regex pattern="(?'assembly'App_Web.+\s*)\042" input="${loadedPage}" />
    <!-- store the assembly name to fixed name mapping -->
    <property name="${assembly}" value="${fixedAssemblyName}"/>
    <!-- copy all of the pages (and il), replacing this 
          assembly name with the fixed name. -->
    <copy todir="${ProjectPath}/tmpBak" overwrite="true">
      <fileset basedir="${ProjectPath}">
        <include name="**\*.as?x" />
        <include name="**\*.dll.il" />
        <exclude name="tmpBak\**" />
      </fileset>
      <filterchain>
        <replacestring from="${assembly}" to="${fixedAssemblyName}" />
      </filterchain>
    </copy>
    <!-- copy them all back -->
    <copy todir="${ProjectPath}" overwrite="true">
      <fileset basedir="${ProjectPath}/tmpBak">
        <include name="**\*.as?x" />
        <include name="**\*.dll.il" />
      </fileset>
    </copy>
  </target>

Finally, the assemblies must be reassembled:

  <!--  Reassembles all the App_Web*il into a new fixedAssembly.  -->
  <!-- This requires that the il's assembly name exists as a property that maps to the new fixedAssembly name.-->
  <target name="reassembleAspNet20Assemblies" >
    <foreach item="File" property="assembly">
      <in>
        <items basedir="${ProjectPath}\bin">
          <include name="App_Web*.dll.il" />
        </items>
      </in>
      <do>
        <!-- get the old DLL name -->
        <property name="dllName" value="${path::get-file-name-without-extension(assembly)}"/>
       <!-- get the old assembly name -->
        <property name="assemblyOnly" value="${path::get-file-name-without-extension(dllName)}"/>
        <!-- get the new, fixed assembly name -->
        <property name="fixedAssemblyName" value="${property::get-value(assemblyOnly)}"/>
        <!-- reassemble -->
        <exec program="${ilasm}" workingdir="${ProjectPath}" 
                  commandline="/out=${ProjectPath}\bin\${fixedAssemblyName}.dll /dll /res=${ProjectPath}\bin\${dllName}.res ${assembly}" /> 
        </do>
    </foreach>
  </target>

Then, for each folder, I call the target like so:

    <!--Dissasemble the assemblies-->
    <call target="disassembleAspNet20Assemblies"/>
    <!-- use Administration.aspx as a proxy for the site's root directory -->
    <property name="page" value="Administration.aspx" />
    <property name="fixedAssemblyName" value="App_Web.ControlRoot" />
    <call target="renameAspNet20Assembly" />
    <!-- use Login.aspx as a proxy for the site's Secure directory -->
    <property name="page" value="Secure\Login.aspx" />
    <property name="fixedAssemblyName" value="App_Web.Secure" />
    <call target="renameAspNet20Assembly" />
    <!-- use Headers.ascx as a proxy for the site's Control directory -->
    <property name="page" value="Controls\Header.ascx" />
    <property name="fixedAssemblyName" value="App_Web.Controls" />
    <call target="renameAspNet20Assembly" />
    <!--reassemble the assemblies-->
    <call target="reassembleAspNet20Assemblies"/>

Tags: ,

VS2005 RTM Available on MSDN Subscriber Downloads

After much speculation by many (on whether or not it would be before the 7th), it is available.

This is good news for those of us exhibiting at the VS launch — we will be able to show off the Digipede Network from the final Visual Studio.

Tags: , ,

Dave Winer’s Geek Dinner for Scoble

Last night, Dan and I went to the geek dinner Dave Winer hosted for Robert Scoble. While I’ve been to many parties and dinners full of geeks, this was my first “geek dinner.”

There was an interesting mix of people: entrepreneurs from Web 2.0 startups, various software developers, many bloggers, and other assorted geeks.

The highlight of the evening for me was the discussion that started just before the restaurant closed. We adjourned to the parking lot to continue until it became too cold and too late (although, apparently Robert and Steve Gillmor kept it going for another hour and a half, see Geek dinner Gillmortastic). It was a little challenging to get Steve Gillmor’s entire point, although I guess Robert finally got it after we all left.

The conversation was, I think, a typical one: why Microsoft doesn’t get Web 2.0 (i.e., how Google will beat Microsoft). Steve Gillmor has some pretty strong views about the mind share that Google has regarding applications. Yet he believes that Office will lose (or has lost) the battle. It appears that he wants to see AJAX-enabled interfaces to everything. All browser-based, all thin-client.

I think the major point of disagreement between Gillmor and many others in the crowd had to do with the utility of browser-based software models. For example:

  • Gillmor wants to do all of his RSS reading on the Web. I don’t. I prefer a model with the advantages of a smart client (rich UI and disconnected operation) that also allows me a surely Web-based interface. Newsgator is a perfect example of this. Both Robert and I use NewsGator in Outlook and from the Web. I also use it from my WM5 device. Even better, they are all synchronized.
  • Gillmor wants to write all his articles in e-mail. He said something to the effect of “e-mail will supplant the use of Word in the next six months”. This comment nearly resulted in a wager. I believe he is talking about a very small group of technologically-savvy early-adopters.

If Gillmor prefers Web-only, then more power to him. And he is right, there are many like him who feel the same way. But there are also a huge number of people (and these are not just corporate users) that prefer the installed-software model.

Google has enjoyed a great deal of popularity as an answer to Microsoft’s dominance. They have a stockpile of goodwill and trust from people simply because they are not Microsoft. This is not permanent. The bigger they get, the more profitable they are (if that’s possible), the more people they piss off with their own kind of over-reaching, the more this is going to wane.

And Microsoft is not standing still. Certainly, they’re concerned about Google (and I hope more concerned about supporting different models of user interaction than just Google). Next year is going to be a big year for Microsoft. I am not ready to count them out of this “Web 2.0” market.

Tags: , , , , ,

Dan is off to Code Camp

Dan is off to Code Camp in Seattle this weekend. He’ll be talking on Sunday @ 3 about grid-object oriented programming (what he calls GOOP). He’ll be talking about that and showing the Digipede Network at the same time.

If you are going to be there drop by and see him.

Tags: ,

« Previous entries · Next entries »