<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Where did the time go? - Rant</title>
    <link>http://blog.j-maxx.net/</link>
    <description>Brain Powered</description>
    <language>en-us</language>
    <copyright>Jeff Klawiter</copyright>
    <lastBuildDate>Wed, 21 Oct 2009 22:51:23 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>Jeff.Klawiter@sierra-bravo.com</managingEditor>
    <webMaster>Jeff.Klawiter@sierra-bravo.com</webMaster>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=90f2c743-caa7-4a37-bf17-8c153f6425a1</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,90f2c743-caa7-4a37-bf17-8c153f6425a1.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,90f2c743-caa7-4a37-bf17-8c153f6425a1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=90f2c743-caa7-4a37-bf17-8c153f6425a1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I write this as I’m sitting here working on a .NET CF 2.0 project in Visual Studio
2005 while installing Visual Studio 2010 Beta 2 onto my laptop which is running windows
7 installed on a vhd file booted natively. I look at the list of components being
installed with 2010 Beta 1 and I’m just left feeling inadequate. The one that really
tipped it was Visual F# 1.0. F# has been out in for a while now and I’ve only seen
talks on it. I haven’t written a line of code in it. I can also say the same for Work
Flow and many other MS/.NET technologies.
</p>
        <p>
I sat in on an interview today with a rock star programmer. His code sample he sent
in to us was the best we’ve ever seen. He’s got strong ASP.NET (and MVC) skill along
with HTML/CSS-fu. Then I ask the questions about what else he has done in .NET.. barely
any WinForms, no compact framework, little WPF. I do not hold any of this against
him, I know full well what it is like to try and keep up with things when your current
job doesn’t entail them. Here at Sierra Bravo my job does entail them, sometimes.
We do such a large variety of projects I’ve had to learn almost everything under the
.NET sun and I still feel like I’m behind. 
</p>
        <p>
I’ve spent the last few months trying to write a talk on Visual Studio 2010 Extensions
and I sure hope my talk goes well but I’m not optimistic. After getting into doing
the extensions, hoping for a nice easy to use SDK as was promised, I found still a
complex system of interfaces, attributes and unclear APIs. Mind you, it is still beyond 
what was available in 2008. I also gave a talk on SQL CLR programming and have been
working on learning ASP.NET MVC. Beyond that, reading a WPF certification book and
hoping to one day expand my certifications passed the VS 2005 realm. I spend nearly
every minute of my spare time reading, coding and learning. 
</p>
        <p>
Things I have done
</p>
        <ul>
          <li>
.NET CF 1-3.5 (about 10 applications)</li>
          <li>
ASP.NET 1.1 – 3.5 (lost count of how many sites)</li>
          <li>
.NET WinForms 1.1 – 3.5 (about 20 applications)</li>
          <li>
Windows Services (around 10)</li>
          <li>
ASMX (lost count)</li>
          <li>
WCF ( a few)</li>
          <li>
SQL Server 2000-2008 (full and express)</li>
          <li>
SQL Reporting Services</li>
          <li>
SQL CLR</li>
          <li>
SharePoint integration (2)</li>
          <li>
Visual Studio Extensions (a few)</li>
          <li>
Command line Programs (20+)</li>
          <li>
Library development (HtmlAgilityPack, Sierra Bravo Connector aka PickDB)</li>
          <li>
TCP Client/Server protocols</li>
          <li>
Serial Port controlled vending machines</li>
          <li>
RFID integration</li>
          <li>
Surface</li>
          <li>
Silverlight 1.1-3.0</li>
          <li>
C# and VB.NET</li>
          <li>
Dabbled in XNA</li>
          <li>
Dabbled in MVC</li>
          <li>
Office Integration</li>
          <li>
LINQ to SQL, LINQ to Entities</li>
          <li>
T4 programming</li>
          <li>
Got MCTS WinForms/ASP.NET 2.0 and MCPD ASP.NET 2.0 certified</li>
        </ul>
        <p>
Things I still need more experience in, have yet to do, work with or even look at
</p>
        <ul>
          <li>
TDD/DI/IoC – I’ve dabbled a bit but feel like I’m really falling behind with these
dev patterns</li>
          <li>
Micro Framework</li>
          <li>
F#</li>
          <li>
Work Flow</li>
          <li>
TFS</li>
          <li>
Full WPF Application</li>
          <li>
Full Mono application</li>
          <li>
M/Oslo</li>
          <li>
Parallel Extensions</li>
          <li>
Tons of the new stuff in VS2010/.NET 4.0 (like the asp.net 4 features)</li>
          <li>
Write a LINQ provider</li>
        </ul>
        <p>
While the latter list seems small, I’m sure it will grow again. The first list covers
4 1/2 years of work. To me it is mind boggling that I’ve done so much and also a testament
to how powerful the .NET framework is. In the PHP world there are a couple great frameworks
these days but it has taken many many years to get to that point. Also PHP 6 is turning
into PERL 6 with it being on the horizon for many years now. It also has the issue
of only being a web language. 
</p>
        <p>
I really hope after VS2010 Microsoft slows down for a bit and waits until VS2015 or
something. I’m not sure if I can keep up on this pace much longer. Some days I wish
for a job where I’m working on a product, or in a slower paced project. Other days
I think I’d go crazy if I was working on the same thing all the time. One thing is
for certain, I need to start doing things outside of work again.
</p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=90f2c743-caa7-4a37-bf17-8c153f6425a1" />
      </body>
      <title>The overloaded .NET developer</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,90f2c743-caa7-4a37-bf17-8c153f6425a1.aspx</guid>
      <link>http://blog.j-maxx.net/2009/10/21/TheOverloadedNETDeveloper.aspx</link>
      <pubDate>Wed, 21 Oct 2009 22:51:23 GMT</pubDate>
      <description>&lt;p&gt;
I write this as I’m sitting here working on a .NET CF 2.0 project in Visual Studio
2005 while installing Visual Studio 2010 Beta 2 onto my laptop which is running windows
7 installed on a vhd file booted natively. I look at the list of components being
installed with 2010 Beta 1 and I’m just left feeling inadequate. The one that really
tipped it was Visual F# 1.0. F# has been out in for a while now and I’ve only seen
talks on it. I haven’t written a line of code in it. I can also say the same for Work
Flow and many other MS/.NET technologies.
&lt;/p&gt;
&lt;p&gt;
I sat in on an interview today with a rock star programmer. His code sample he sent
in to us was the best we’ve ever seen. He’s got strong ASP.NET (and MVC) skill along
with HTML/CSS-fu. Then I ask the questions about what else he has done in .NET.. barely
any WinForms, no compact framework, little WPF. I do not hold any of this against
him, I know full well what it is like to try and keep up with things when your current
job doesn’t entail them. Here at Sierra Bravo my job does entail them, sometimes.
We do such a large variety of projects I’ve had to learn almost everything under the
.NET sun and I still feel like I’m behind. 
&lt;/p&gt;
&lt;p&gt;
I’ve spent the last few months trying to write a talk on Visual Studio 2010 Extensions
and I sure hope my talk goes well but I’m not optimistic. After getting into doing
the extensions, hoping for a nice easy to use SDK as was promised, I found still a
complex system of interfaces, attributes and unclear APIs. Mind you, it is still beyond&amp;#160;
what was available in 2008. I also gave a talk on SQL CLR programming and have been
working on learning ASP.NET MVC. Beyond that, reading a WPF certification book and
hoping to one day expand my certifications passed the VS 2005 realm. I spend nearly
every minute of my spare time reading, coding and learning. 
&lt;/p&gt;
&lt;p&gt;
Things I have done
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET CF 1-3.5 (about 10 applications)&lt;/li&gt;
&lt;li&gt;
ASP.NET 1.1 – 3.5 (lost count of how many sites)&lt;/li&gt;
&lt;li&gt;
.NET WinForms 1.1 – 3.5 (about 20 applications)&lt;/li&gt;
&lt;li&gt;
Windows Services (around 10)&lt;/li&gt;
&lt;li&gt;
ASMX (lost count)&lt;/li&gt;
&lt;li&gt;
WCF ( a few)&lt;/li&gt;
&lt;li&gt;
SQL Server 2000-2008 (full and express)&lt;/li&gt;
&lt;li&gt;
SQL Reporting Services&lt;/li&gt;
&lt;li&gt;
SQL CLR&lt;/li&gt;
&lt;li&gt;
SharePoint integration (2)&lt;/li&gt;
&lt;li&gt;
Visual Studio Extensions (a few)&lt;/li&gt;
&lt;li&gt;
Command line Programs (20+)&lt;/li&gt;
&lt;li&gt;
Library development (HtmlAgilityPack, Sierra Bravo Connector aka PickDB)&lt;/li&gt;
&lt;li&gt;
TCP Client/Server protocols&lt;/li&gt;
&lt;li&gt;
Serial Port controlled vending machines&lt;/li&gt;
&lt;li&gt;
RFID integration&lt;/li&gt;
&lt;li&gt;
Surface&lt;/li&gt;
&lt;li&gt;
Silverlight 1.1-3.0&lt;/li&gt;
&lt;li&gt;
C# and VB.NET&lt;/li&gt;
&lt;li&gt;
Dabbled in XNA&lt;/li&gt;
&lt;li&gt;
Dabbled in MVC&lt;/li&gt;
&lt;li&gt;
Office Integration&lt;/li&gt;
&lt;li&gt;
LINQ to SQL, LINQ to Entities&lt;/li&gt;
&lt;li&gt;
T4 programming&lt;/li&gt;
&lt;li&gt;
Got MCTS WinForms/ASP.NET 2.0 and MCPD ASP.NET 2.0 certified&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Things I still need more experience in, have yet to do, work with or even look at
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
TDD/DI/IoC – I’ve dabbled a bit but feel like I’m really falling behind with these
dev patterns&lt;/li&gt;
&lt;li&gt;
Micro Framework&lt;/li&gt;
&lt;li&gt;
F#&lt;/li&gt;
&lt;li&gt;
Work Flow&lt;/li&gt;
&lt;li&gt;
TFS&lt;/li&gt;
&lt;li&gt;
Full WPF Application&lt;/li&gt;
&lt;li&gt;
Full Mono application&lt;/li&gt;
&lt;li&gt;
M/Oslo&lt;/li&gt;
&lt;li&gt;
Parallel Extensions&lt;/li&gt;
&lt;li&gt;
Tons of the new stuff in VS2010/.NET 4.0 (like the asp.net 4 features)&lt;/li&gt;
&lt;li&gt;
Write a LINQ provider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
While the latter list seems small, I’m sure it will grow again. The first list covers
4 1/2 years of work. To me it is mind boggling that I’ve done so much and also a testament
to how powerful the .NET framework is. In the PHP world there are a couple great frameworks
these days but it has taken many many years to get to that point. Also PHP 6 is turning
into PERL 6 with it being on the horizon for many years now. It also has the issue
of only being a web language. 
&lt;/p&gt;
&lt;p&gt;
I really hope after VS2010 Microsoft slows down for a bit and waits until VS2015 or
something. I’m not sure if I can keep up on this pace much longer. Some days I wish
for a job where I’m working on a product, or in a slower paced project. Other days
I think I’d go crazy if I was working on the same thing all the time. One thing is
for certain, I need to start doing things outside of work again.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=90f2c743-caa7-4a37-bf17-8c153f6425a1" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,90f2c743-caa7-4a37-bf17-8c153f6425a1.aspx</comments>
      <category>Rant</category>
    </item>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=948219d5-1884-4bb2-ad08-4cefbf0c5c5e</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,948219d5-1884-4bb2-ad08-4cefbf0c5c5e.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,948219d5-1884-4bb2-ad08-4cefbf0c5c5e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=948219d5-1884-4bb2-ad08-4cefbf0c5c5e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the advent of ASP.NET MVC 2.0 and the new templated helpers we’re once again
having to write out our entire data objects. This is something that ORM tools like
LINQ to SQL and LINQ to Entities were supposed to alleviate. Even better is we must
now implement a class in 3 files.
</p>
        <p>
Case in point: <a title="http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx" href="http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx">http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx</a></p>
        <p>
The idea of “Partial Properties” follows the convention for Partial Classes and not
Partial Methods. With Partial classes you can have the same class defined in two files.
This is extremely helpful with extending generated code. With Partial Methods, one
partial class file defines a method and another partial class file may if it choose
implement that method. If the method is never implemented then the compiler completely
throws away any code that may have referenced that method. 
</p>
        <p>
During a PDC talk Anders said that he couldn’t see a reason why we should implement
Partial Properties but it’s becoming clear to me that we are starting to have the
need. 
</p>
        <p>
Here’s the current situation:
</p>
        <ol>
          <li>
You create your models with LINQ to SQL or LINQ to Entities. 
</li>
          <li>
You have no control over the auto-generated code so you implement partial classes
for each class made in a separate file 
</li>
          <li>
You need to annotate the properties in the generated classes so you then have to create
a buddy class 
</li>
          <li>
You take all the properties of the generated class and type them in and add attributes
to them and thus mostly defeating the purpose of #1 
</li>
        </ol>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8f971c51-66e4-493d-9173-de64c9ef9dd2" class="wlWriterEditableSmartContent">
          <pre name="code" class="c#">//GeneratedClass.Designer.cs (the generated file)
public partial class GeneratedClass
{
	private string _name;
	public string Name
	{
		get{return _name;}
		set{_name = value;}
	}
}

//GeneratedClass.cs (your file)
[MetadataType(typeof(GeneratedClass_Metadata))]
public partial class GeneratedClass
{
	
}

//GeneratedClass.cs or GeneratedClass.Meta.cs (your other file)
public partial class GeneratedClass_Metadata
{
	[Required(ErrorMessage="Name Required")]
	public string Name{get;set;}
}</pre>
        </div>
        <p>
In the end you end up with 2-3 files and 3 implementations of your class. You also
end up with the compiler generating more classes that their only use are for attributes. 
</p>
        <p>
With a “Partial Property” generated code could expose all of the public properties
like so
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f1d9d2d5-92bf-4e76-8245-30bac85bf0a7" class="wlWriterEditableSmartContent">
          <pre name="code" class="c#">//GeneratedClass.Designer.cs (the generated file)
public partial class GeneratedClass
{
	private string _name;
	public partial string Name
	{
		get{return _name;}
		set{_name = value;}
	}
}
//GeneratedClass.cs (your file)
public partial class GeneratedClass
{
	[Required(ErrorMessage="Name Required")]
	public partial string Name;
}</pre>
        </div>
        <p>
This may all be moot if we can at least get some tooling support for MetaDataType.
We could use a Refactor –&gt; Generate Buddy Class. This could auto-gen the metadata
class for you so all you have to do is write the attributes in. Maybe even Class Diagram
support?
</p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=948219d5-1884-4bb2-ad08-4cefbf0c5c5e" />
      </body>
      <title>The Case for Partial Properties</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,948219d5-1884-4bb2-ad08-4cefbf0c5c5e.aspx</guid>
      <link>http://blog.j-maxx.net/2009/09/14/TheCaseForPartialProperties.aspx</link>
      <pubDate>Mon, 14 Sep 2009 22:18:17 GMT</pubDate>
      <description>&lt;p&gt;
With the advent of ASP.NET MVC 2.0 and the new templated helpers we’re once again
having to write out our entire data objects. This is something that ORM tools like
LINQ to SQL and LINQ to Entities were supposed to alleviate. Even better is we must
now implement a class in 3 files.
&lt;/p&gt;
&lt;p&gt;
Case in point: &lt;a title="http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx" href="http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx"&gt;http://blog.pagedesigners.co.nz/archive/2009/08/06/asp.net-mvc-2-ndash-buddy-classes-for-your-models.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The idea of “Partial Properties” follows the convention for Partial Classes and not
Partial Methods. With Partial classes you can have the same class defined in two files.
This is extremely helpful with extending generated code. With Partial Methods, one
partial class file defines a method and another partial class file may if it choose
implement that method. If the method is never implemented then the compiler completely
throws away any code that may have referenced that method. 
&lt;/p&gt;
&lt;p&gt;
During a PDC talk Anders said that he couldn’t see a reason why we should implement
Partial Properties but it’s becoming clear to me that we are starting to have the
need. 
&lt;/p&gt;
&lt;p&gt;
Here’s the current situation:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
You create your models with LINQ to SQL or LINQ to Entities. 
&lt;/li&gt;
&lt;li&gt;
You have no control over the auto-generated code so you implement partial classes
for each class made in a separate file 
&lt;/li&gt;
&lt;li&gt;
You need to annotate the properties in the generated classes so you then have to create
a buddy class 
&lt;/li&gt;
&lt;li&gt;
You take all the properties of the generated class and type them in and add attributes
to them and thus mostly defeating the purpose of #1 
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8f971c51-66e4-493d-9173-de64c9ef9dd2" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;//GeneratedClass.Designer.cs (the generated file)
public partial class GeneratedClass
{
	private string _name;
	public string Name
	{
		get{return _name;}
		set{_name = value;}
	}
}

//GeneratedClass.cs (your file)
[MetadataType(typeof(GeneratedClass_Metadata))]
public partial class GeneratedClass
{
	
}

//GeneratedClass.cs or GeneratedClass.Meta.cs (your other file)
public partial class GeneratedClass_Metadata
{
	[Required(ErrorMessage="Name Required")]
	public string Name{get;set;}
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
In the end you end up with 2-3 files and 3 implementations of your class. You also
end up with the compiler generating more classes that their only use are for attributes. 
&lt;/p&gt;
&lt;p&gt;
With a “Partial Property” generated code could expose all of the public properties
like so
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f1d9d2d5-92bf-4e76-8245-30bac85bf0a7" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="c#"&gt;//GeneratedClass.Designer.cs (the generated file)
public partial class GeneratedClass
{
	private string _name;
	public partial string Name
	{
		get{return _name;}
		set{_name = value;}
	}
}
//GeneratedClass.cs (your file)
public partial class GeneratedClass
{
	[Required(ErrorMessage="Name Required")]
	public partial string Name;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
This may all be moot if we can at least get some tooling support for MetaDataType.
We could use a Refactor –&amp;gt; Generate Buddy Class. This could auto-gen the metadata
class for you so all you have to do is write the attributes in. Maybe even Class Diagram
support?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=948219d5-1884-4bb2-ad08-4cefbf0c5c5e" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,948219d5-1884-4bb2-ad08-4cefbf0c5c5e.aspx</comments>
      <category>C#</category>
      <category>Rant</category>
    </item>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=e5cb71ba-7715-4b6a-8d22-391d9953c85c</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,e5cb71ba-7715-4b6a-8d22-391d9953c85c.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,e5cb71ba-7715-4b6a-8d22-391d9953c85c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e5cb71ba-7715-4b6a-8d22-391d9953c85c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The other day I was posed with a problem
to implement a "Send as Attachment" feature to an existing application. I thought,
well this should be easy I've seen many other do it before. I quoted the work at a
few hours, figuring some quick searching would give my my answers. I was wrong.<br /><br />
Sending an email using the default email client is very easy with the mailto: protocol.
The problem lies in adding an attachment. Common mail programs like Outlook and Thunderbird
do not support the attachment option. So, I started looking at MAPI the native API
for doing this. I could not find any .NET wrappers. I did find that there were controls
created by MS for VB6. Most of the .NET examples I found used COM interop with the
ActiveX controls. But after trying these controls (which look like they were last
updated in 98) I found them to not work in XP SP3. I'd get random exceptions and was
never able to actually get an email dialog to pop up.<br /><br />
After failing with the ActiveX controls I was out of time. The MAPI native commands
may have worked but it would take too long to set up the native calls and test it.
After discussing with the client we ended up coming up with a bit hackish but workable
solution. I would use the mailto: protocol and then launch explorer with the attachment
selected. To them this is a minor annoyance that is acceptable. To me this an unfortunate
sign of the times. 
<br /><br />
Things that were once "easy" for native applications become complicated and buggy
for managed. It seems too often that I must make use native calls or old unsuported
COM objects to get the job done. While MS has done a great job building up the .NET
Framework. It seems that many native API's still remain unwrapped. Furthermore some
places I read that the MAPI api is unstable on Vista. It seems that some API's are
slipping through the cracks.<br /><br /><br /><p></p><img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=e5cb71ba-7715-4b6a-8d22-391d9953c85c" /></body>
      <title>Deprecation of API's and Native Calls</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,e5cb71ba-7715-4b6a-8d22-391d9953c85c.aspx</guid>
      <link>http://blog.j-maxx.net/2008/10/24/DeprecationOfAPIsAndNativeCalls.aspx</link>
      <pubDate>Fri, 24 Oct 2008 02:15:23 GMT</pubDate>
      <description>The other day I was posed with a problem to implement a "Send as Attachment" feature to an existing application. I thought, well this should be easy I've seen many other do it before. I quoted the work at a few hours, figuring some quick searching would give my my answers. I was wrong.&lt;br&gt;
&lt;br&gt;
Sending an email using the default email client is very easy with the mailto: protocol.
The problem lies in adding an attachment. Common mail programs like Outlook and Thunderbird
do not support the attachment option. So, I started looking at MAPI the native API
for doing this. I could not find any .NET wrappers. I did find that there were controls
created by MS for VB6. Most of the .NET examples I found used COM interop with the
ActiveX controls. But after trying these controls (which look like they were last
updated in 98) I found them to not work in XP SP3. I'd get random exceptions and was
never able to actually get an email dialog to pop up.&lt;br&gt;
&lt;br&gt;
After failing with the ActiveX controls I was out of time. The MAPI native commands
may have worked but it would take too long to set up the native calls and test it.
After discussing with the client we ended up coming up with a bit hackish but workable
solution. I would use the mailto: protocol and then launch explorer with the attachment
selected. To them this is a minor annoyance that is acceptable. To me this an unfortunate
sign of the times. 
&lt;br&gt;
&lt;br&gt;
Things that were once "easy" for native applications become complicated and buggy
for managed. It seems too often that I must make use native calls or old unsuported
COM objects to get the job done. While MS has done a great job building up the .NET
Framework. It seems that many native API's still remain unwrapped. Furthermore some
places I read that the MAPI api is unstable on Vista. It seems that some API's are
slipping through the cracks.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=e5cb71ba-7715-4b6a-8d22-391d9953c85c" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,e5cb71ba-7715-4b6a-8d22-391d9953c85c.aspx</comments>
      <category>Rant</category>
    </item>
    <item>
      <trackback:ping>http://blog.j-maxx.net/Trackback.aspx?guid=3bbd92fc-f5d7-4445-9c64-8ec69279c6a9</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,3bbd92fc-f5d7-4445-9c64-8ec69279c6a9.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,3bbd92fc-f5d7-4445-9c64-8ec69279c6a9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3bbd92fc-f5d7-4445-9c64-8ec69279c6a9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Ok in the last few years I've had to take
over a number of websites written in VB.NET, or I should say written in VB but somehow
using .NET. My issue really isn't with VB.NET itself. It's obvious the developers
that did these sites (none of them affiliated in any way) came from doing classic
ASP and moved onto ASP.NET. The problem is they continued with their classic ASP practices
and did not seem to come close to grasping what ASP.NET really was. 
<br /><br />
Issues I've had:<br /><ul><li>
None of the sites will compile in Visual Studio</li><li>
All of the sites were running in ASP.NET 2.0 but none used master pages. They all
used Server-Side Includes (which should be banned) to include common blocks. 
<br /></li><li>
No use of controls or classes.</li><li>
No use of code-behind</li><li>
All SQL is dynamic and full of SQL Injection vulnerabilities</li><li>
All used include files which set up global variables and functions to be used in the
page lifecycle (one of the main reasons the sites wont compile)</li><li>
One of the sites had every folder set up as it's own application in IIS. Their hosting
provider has no interface for even seeing this, the developer used to call in to have
this set up. More on this site later (refered to as BS1)<br /></li><li>
Most of the sites only make use of the most basic controls</li><li>
One site (BS1) tried to use more advanced controls like Formview but failed miserably.
In this instance, used all over the site, the developer made a formview, used an EditTemplate
and bound a dataset to the formview. Sounds decent so far right? The issue came in
after I made some changes that my data was not being updated in the dataset. Tracking
down the issue was very hard to do when you have no "Go to Definition" and there are
tons of "Include Files" that are copied and pasted throughout the site. I found that
there was a  "Magic" function that did what databinding is supposed to do. It
looked for any controls in the formview that matched the exact name of a column and
bound the data. 
<br /></li><li>
BS1 includes so many functions that recreate .NET functionality that his developer
seemed to give up on getting to work within an hour or trying. I want to go home sick
everytime a change comes up on this site.</li></ul>
Basically on every one of these sites we have pitched rewrites. Most of them on grounds
of security, which is completely true. One of the sites we've had to take down due
to rampant SQL Injections. It wont be up until the client decides on which overhaul
to rewrite proposal they want to to sign off on.<br /><br />
If the BS1 rewrite ever happens I hope I am not the one to do it. While the site needs
it, the business rules and database behind it are majorly complex and in some points
completely bonkers. Redesigning the database will be completely out of the question
due to the amount of time to migrate that and other business apps the client uses
to work with it. 
<br /><br />
After all of the things I've seen I'm scared of how many classic ASP developers have
moved to ASP.NET without taking the time to understand what ASP.NET (or even .NET)
is all about. The thing that scares me the most is that it has been 6 years since
.NET was released. Some of the sites were even written starting with ASP.NET 2.0.
Yet the developers probably used Visual Studio as nothing more than a bloated notepad. 
<br /><br />
I came from doing site development in PHP 3/4. Classic ASP and PHP 3/4 development
were alike in many ways. One would use server side includes to include headers/footers
for the page. There would more than likely be a main include script that set up all
the functions/classes and global variables to be used on the page. All the HTML was
generated with inline code. I can understand moving from an environtment like that
to ASP.NET you may start out recreating what you know. 
<br /><br />
What I don't understand why these developers never felt a need to move beyond that
when there is overwhelming evidence that ASP.NET can do so much more. The old way
is horrible to maintain, can take a long time to develop and there are much better
practices out there. While I was a PHP developer I started using Smarty templates.
I loved having templates that abstracted the presentation from the real code. Smarty
has become one of the defacto standards in PHP development over the years. It gave
me the introduction to using "controls" and "master pages". It made reuse easier and
presentation cleaner. To go so long continuing the same bad practices is unfathomable
to me.<br /><br />
Another thing that amazes me is ASP.NET actually works with server side includes.
The dynamic compiler for the site will included the code and build a DLL for the page.
I'm a bit pissy at MS for even allowing this. The included code is compiled into every
DLL and whenever a change is made every one of those pages must be recompiled. 
<br /><p></p><img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=3bbd92fc-f5d7-4445-9c64-8ec69279c6a9" /></body>
      <title>Rant: Some VB.NET developers...</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,3bbd92fc-f5d7-4445-9c64-8ec69279c6a9.aspx</guid>
      <link>http://blog.j-maxx.net/2008/09/29/RantSomeVBNETDevelopers.aspx</link>
      <pubDate>Mon, 29 Sep 2008 19:14:14 GMT</pubDate>
      <description>Ok in the last few years I've had to take over a number of websites written in VB.NET, or I should say written in VB but somehow using .NET. My issue really isn't with VB.NET itself. It's obvious the developers that did these sites (none of them affiliated in any way) came from doing classic ASP and moved onto ASP.NET. The problem is they continued with their classic ASP practices and did not seem to come close to grasping what ASP.NET really was. &lt;br&gt;
&lt;br&gt;
Issues I've had:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
None of the sites will compile in Visual Studio&lt;/li&gt;
&lt;li&gt;
All of the sites were running in ASP.NET 2.0 but none used master pages. They all
used Server-Side Includes (which should be banned) to include common blocks. 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
No use of controls or classes.&lt;/li&gt;
&lt;li&gt;
No use of code-behind&lt;/li&gt;
&lt;li&gt;
All SQL is dynamic and full of SQL Injection vulnerabilities&lt;/li&gt;
&lt;li&gt;
All used include files which set up global variables and functions to be used in the
page lifecycle (one of the main reasons the sites wont compile)&lt;/li&gt;
&lt;li&gt;
One of the sites had every folder set up as it's own application in IIS. Their hosting
provider has no interface for even seeing this, the developer used to call in to have
this set up. More on this site later (refered to as BS1)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Most of the sites only make use of the most basic controls&lt;/li&gt;
&lt;li&gt;
One site (BS1) tried to use more advanced controls like Formview but failed miserably.
In this instance, used all over the site, the developer made a formview, used an EditTemplate
and bound a dataset to the formview. Sounds decent so far right? The issue came in
after I made some changes that my data was not being updated in the dataset. Tracking
down the issue was very hard to do when you have no "Go to Definition" and there are
tons of "Include Files" that are copied and pasted throughout the site. I found that
there was a&amp;nbsp; "Magic" function that did what databinding is supposed to do. It
looked for any controls in the formview that matched the exact name of a column and
bound the data. 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
BS1 includes so many functions that recreate .NET functionality that his developer
seemed to give up on getting to work within an hour or trying. I want to go home sick
everytime a change comes up on this site.&lt;/li&gt;
&lt;/ul&gt;
Basically on every one of these sites we have pitched rewrites. Most of them on grounds
of security, which is completely true. One of the sites we've had to take down due
to rampant SQL Injections. It wont be up until the client decides on which overhaul
to rewrite proposal they want to to sign off on.&lt;br&gt;
&lt;br&gt;
If the BS1 rewrite ever happens I hope I am not the one to do it. While the site needs
it, the business rules and database behind it are majorly complex and in some points
completely bonkers. Redesigning the database will be completely out of the question
due to the amount of time to migrate that and other business apps the client uses
to work with it. 
&lt;br&gt;
&lt;br&gt;
After all of the things I've seen I'm scared of how many classic ASP developers have
moved to ASP.NET without taking the time to understand what ASP.NET (or even .NET)
is all about. The thing that scares me the most is that it has been 6 years since
.NET was released. Some of the sites were even written starting with ASP.NET 2.0.
Yet the developers probably used Visual Studio as nothing more than a bloated notepad. 
&lt;br&gt;
&lt;br&gt;
I came from doing site development in PHP 3/4. Classic ASP and PHP 3/4 development
were alike in many ways. One would use server side includes to include headers/footers
for the page. There would more than likely be a main include script that set up all
the functions/classes and global variables to be used on the page. All the HTML was
generated with inline code. I can understand moving from an environtment like that
to ASP.NET you may start out recreating what you know. 
&lt;br&gt;
&lt;br&gt;
What I don't understand why these developers never felt a need to move beyond that
when there is overwhelming evidence that ASP.NET can do so much more. The old way
is horrible to maintain, can take a long time to develop and there are much better
practices out there. While I was a PHP developer I started using Smarty templates.
I loved having templates that abstracted the presentation from the real code. Smarty
has become one of the defacto standards in PHP development over the years. It gave
me the introduction to using "controls" and "master pages". It made reuse easier and
presentation cleaner. To go so long continuing the same bad practices is unfathomable
to me.&lt;br&gt;
&lt;br&gt;
Another thing that amazes me is ASP.NET actually works with server side includes.
The dynamic compiler for the site will included the code and build a DLL for the page.
I'm a bit pissy at MS for even allowing this. The included code is compiled into every
DLL and whenever a change is made every one of those pages must be recompiled. 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=3bbd92fc-f5d7-4445-9c64-8ec69279c6a9" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,3bbd92fc-f5d7-4445-9c64-8ec69279c6a9.aspx</comments>
      <category>Rant</category>
    </item>
  </channel>
</rss>