Schiavo and VB6 expire on the same day

Today, March 31st 2005, marks the final day of free support for VB 6 by Microsoft.  It’s caused quite a stir in some circles, most notably the petition for Microsoft to re-align “it’s long-term strategies with those of its customers.”  Signatories would rather have Microsoft invest money in keeping a parallel VB6 compiler and IDE current (this is part of what the petition suggests) instead of pursuing innovation and improvement in the .Net direction — and don’t give me the “Microsoft should do both” talk because you, too, can do both: keep your VB6 CDs and service packs around and you’ll be able to continue to do VB6 stuff until all the DLLs rot away sometime in 2030.  They run side-by-side with the newer toys, at least it works on my machine.  A company the size of Microsoft can do what the petition proposes, but I’d rather have them looking forward and sort out performance in .Net and improve on SQL Server and enhance the Web Service architecture.  It’s a zero-sum game folks: energy spent on VB6 stuff is energy not spent on all the other products.


We’ve already seen Java saddled with backward compatibility woes (just one example here but there are myriad) and .Net already has some of it’s own (DataGrid replaced by GridView and . . . maybe someday in .Net 3.0 we’ll get the DataGridView that combines the two — the point being a cluttering of the object model and controls).  Let’s not bring VB 6 back from the dead and into the .Net IDE equation.


I just saw where Schiavo was declared dead a few hours ago . . . that’s a ghastly situation that’s now behind us [hopefully].  In the same spirit, hasn’t VB6 been through enough?  Yes, that’s an insensitive comparison — but a bizarre coincidence — just send your comments to Brendan because he lets me keep this blog around.  Yes, I’ve drank the .Net kool-aid but why haven’t you?  I’m much more productive with .Net and my apps are more professionally developed, tested, deployed, and maintained thanks to the .Net family.  Any new development I do is almost always in .Net unless the customer is extending an existing legacy app and even then I’m always looking for ways of strangling the old app with .Net.  As a last resort, I fire up the VB6 IDE and take a trip down memory lane.

Posted in Uncategorized | 1 Comment

3 Lessons from TechEd (and Secret TechEd)

I agree with Brendan that TechEd is too pricey for my blood.  Thanks to INETA, I got to go last year and I had a great time, but it wasn’t my dime.  Let me share some insight and demistify the TechEd experience.



Lesson 1:  There are lots of salespeople at TechEd and, apparently, lots of people keen to collect all the cheesy free things the salespeople are giving away.  I don’t get it since the salespeople must know the leads they get at TechEd are mostly junk, but it must pay off on some level.  Does the company get a viral marketing buzz?  Maybe the salespeople are just as happy to be in a sunny and pleasant town for a week?


Lesson 2:  There are lots of casual techies there — project managers or junior developers, ones who don’t open a technical book or read weblogs or explore technology on their own time very much.  For these folks, the sessions on “what is Sharepoint” and “DataSets vs Custom Objects” are ground breaking and truly new news.


To me, lesson 1 and 2 are NOT worth the $2,000 price tag; especially if you are already up on the latest in technology.  Most of the sessions will be review, but there will still be a few great sessions that you should catch like Jeffrey Richter, Eric Gunnerson, and Don Box – do the math, and even if those 3 guys do 2 sessions each (which they probably don’t), thats 6 great talks for $2,000 . . . I can wait for the DVD.



Lesson 3:  There is a Secret TechEd that takes place beyond the conference rooms.  This is the lunches and after-hours parties, some invite-only, where authors, speakers, and Microsoft big shots talk shop and build relationships.  Sometimes it’s a group of 2 or 3, other times it’s a hotel room overflowing with 50 people.  This is the good stuff, the stuff you can’t get from reading MSDN or taking a few hours each weekend to play with ASP.Net 2.0.  This is fun!  I know many tech-ed attendees who never experience this, and I was only on the periphery of this secret TechEd. 


The catch is, you can’t buy admission to Secret TechEd and you have to be in the right mindset to take advantage of it.  Between WeProgram.Net, CodeBetter.com, and some other projects I’m feeling connected enough to save my money and time for other things.  For example, I will attend the Devscovery conference in Reston where nearly every session is a ball-buster from the likes of Jeffrey Richter and Johnnie “Flash” Robbins and the price tag is closer to Brendan’s $600 threshhold.

Posted in Uncategorized | 3 Comments

Landscape printing your XSL transformed XML

A friend of mine was trying to force a web browser to print in landscape for a specific XSL transformed XML page.  I mulled this over while on my lunch break and put together this little proof-of-concept when I got back; while it doesn’t do ANYTHING to the printer, it renders the page at a different 90 degree angle so when printed it appears to be landscape format:
First, a very simple XML data file (data.xml):



<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<?xml-stylesheet type=”text/xsl” href=”Style.xsl”?>
<data>
 <quote>
  <author>Socrates</author>
  <text>I drank what?</text>
 </quote>
 <quote>
  <author>Anonymous</author>
  <text>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.</text>
 </quote>
</data>


Second, an XSL file that will transform the XML into our landscape view (Style.xsl):



<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform“>
<xsl:template match=”/”>
  <html>
<head>
<style>
div.page {
   writing-mode: tb-rl;
   height: 80%;
   margin: 10% 0%;
}
div.page p {
   margin-right: 80pt;
   filter: progid:DXImageTransform.Microsoft.BasicImage(Rotation=1);
}
</style>
</head>
  <body>
<div class=”page”>
  <h2>Quotes</h2>
  <xsl:apply-templates/>
</div>
  </body>
  </html>
</xsl:template>


<xsl:template match=”quote”>
  <p>
  <xsl:apply-templates select=”author”/>
  <xsl:apply-templates select=”text”/>
  </p>
</xsl:template><xsl:template match=”author”>
  Author: <span style=”color:darkgreen”>
  <xsl:value-of select=”.”/></span>
  <br />
</xsl:template><xsl:template match=”text”>
  Text: <span style=”color:navy”>
  <xsl:value-of select=”.”/></span>
  <br />
</xsl:template>
</xsl:stylesheet>


That’s it.  It’s just a matter of having a DIV tag styled with the appropriate attributes.  The “DXImageTransform.Microsoft.BasicImage . . .” is the critical bit of the style and, unfortunately, locks us into a browser with ActiveX support (basically just Internet Explorer).  The full docs on this BasicImage approach are here: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/basicimage.asp


I’ve put these filters to good use on other projects, creating gradient backgrounds for tables (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/gradient.asp) and other clever UI stuff.  Remember, it’s Internet Explorer specific.


 

Posted in Uncategorized | Leave a comment

If you tolerate something, you insist upon it

Bob “Not Just The Coding Slave Guy” Reselman blogs about his interview with Microsoft and sneaks a real gem of a quote in near the end: If you tolerate something, you insist upon it (by the way, Reselman cites Jim McCarthy as being the source for this remark).


This really got me thinking.  So often in work — and life in general — we’re tempted to settle for the easy way out or to take the path of short term convenience.  In programming it usually bites you in the ass, turning January’s easy fix into March’s nightmare code overhaul.  Since we’ve recently added a new puppy to our household I’m hyper-sensitive to what we let the dog get away with; we can’t tolerate her eating our cats, for example — to the malleable puppy brain it’s the same as if we’re insisting upon her eating the cats!  If you tolerate something, you insist upon it speaks on many levels!


In a way we’re all these malleable puppy brains running amok . . .

Posted in Uncategorized | Leave a comment

Powerful Web Charting with NPlot

I previously considered the free web charting component from Carlos Aguilar to be my main web chart tool . . . but I recently strayed and found a new web chart component.  NPlot has become my new main web charting squeeze because it gives me more control over the chart surface area, plotting behaviour, etc.  Carlos Aguilar’s component is quick and simple and will still be useful for basic web charting, but NPlot is the more sophisticated alternative. 


It’s hard to describe unless you’ve worked with both charting tools, but I’ve got considerably more control when I use NPlot.  NPlot is still in development so you have to make due without much documentation and other polishes, but I really like what they’ve got so far.  NPlot has a much more scientific aspect to it, with Abscissa and other slick math nerdy things.  A project I’m working on requires some scientific data presentation and NPlot gives me the control I need and the customer wants. 


Since the docs aren’t available yet, here’s a snippet that will get you up and running:



  • Set a reference to the NPlot assembly (NPlot.dll) — assuming you’ve downloaded the files from http://netcontrols.org/nplot/

  • Add a PlotSurface2D control on your web form (drag and drop it or manually add it with the Register ASPX Page directive and add the control tag “<cc1:PlotSurface2D id=”surface” runat=”server” Width=”200px” Height=”100px”/>” to your web form

  • Here is the quick-and-dirty sample code for your page Load event (in VB -gasp- since our customer requested we work in it):



surface.Title = “My Title”
Dim lp As LinePlot = New LinePlot
lp.DataSource = New Integer() {1, 5, 3, 4}
lp.Color = Color.RosyBrown
Dim dates As ArrayList = New ArrayList
dates.Add( CDate( “11/1/2004″ ) )
dates.Add( CDate( “11/11/2004″ ) )
dates.Add( CDate( “11/27/2004″ ) )
dates.Add( CDate( “12/1/2004″ ) )
lp.Color = Color.Blue
lp.AbscissaData = dates
surface.Add(lp)
surface.XAxis1.Label = “x-axis label”
surface.Refresh()


Oh yeah, if you want another reason to check out NPlot, it looks like the developers (Matt Howlett and Paolo Pierini) are into the Mono project after a fashion — I don’t know the full pedigree, I just know I can get great web reports out of it.  Keep up the great work!

Posted in Uncategorized | 5 Comments