<?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? - CodePlex</title>
    <link>http://blog.j-maxx.net/</link>
    <description>Brain Powered</description>
    <language>en-us</language>
    <copyright>Jeff Klawiter</copyright>
    <lastBuildDate>Tue, 15 Sep 2009 16:02:42 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=8338593d-c072-440d-b928-314e7de18cc4</trackback:ping>
      <pingback:server>http://blog.j-maxx.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.j-maxx.net/PermaLink,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</pingback:target>
      <dc:creator>Jeff Klawiter</dc:creator>
      <wfw:comment>http://blog.j-maxx.net/CommentView,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.j-maxx.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8338593d-c072-440d-b928-314e7de18cc4</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For a few months now I’ve been working on a VS2010 extension I’m calling Funky Search.
It’s basic intent is to bring tag based search and replace functionality to Visual
Studio. My first order of business when creating this extension was the need for an
HTML Parsing Engine. I had used <a title="HTML Agility Pack Codeplex" href="http://htmlagilitypack.codeplex.com" target="_blank">HTML
Agility Pack</a> (HAP from now on) in the past. One downside of it is that it uses
XPATH for querying the HTML. While in it’s day XPATH was a decent solution for searching
XML structures, there are better searching solutions available today namely LINQ. 
</p>
        <p>
I set out and updated HAP to have all of it’s Node and Attribute collections to inherit
from IList&lt;T&gt; instead of implementing their own Enumerators. I then added many
helper methods to mimic LINQ to XML. With this I could now work on creating dynamic
LINQ statements to power my extension. 
</p>
        <p>
While working on this I got into the community of people using HAP and I came across
a larger issue, it had not been updated in years and the creator and other developer
on the project had seemed to abandon it. I sent many emails to the creator Simon Mourier
(former MS employee, and current CTO of SoftFluent) over the summer with no reply.
I finally found his work email and discovered he was on vacation until early September.
I was finally able to get in contact with him today and he added me as a developer
on the project. 
</p>
        <p>
This will mark the first time in about 5 years I’m a developer on an open source project.
Before coming to Sierra Bravo I was huge into open source, also at that time MS had
no free versions of Visual Studio. I was working as a PHP developer and had contributed
to some small projects and even worked on part of the Mozilla project adding in an
easier way to code-sign your Mozilla/Firefox extensions.
</p>
        <p>
I’m looking forward to advancing HAP, fixing bugs and making it easier to use. It
sits in a unique position as being the only freely available HTML parser that works.
While it can be used for dubious purposes as a page scraper it can also be used for
good. I’ve used it in the past where we had a client that had their hosting provider
go out of business, their site was going to only be up for another day and we had
no direct access to their database server. We had FTP access to get the code of the
site and access to a readonly front end that displayed the contents of the tables
in html with no export functionality. I wrote a scraper with HAP to get those tables
and put them into an importable format. With it I was able to download and import
their database and save their site. 
</p>
        <img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=8338593d-c072-440d-b928-314e7de18cc4" />
      </body>
      <title>HTML Agility Pack - Contributor</title>
      <guid isPermaLink="false">http://blog.j-maxx.net/PermaLink,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</guid>
      <link>http://blog.j-maxx.net/2009/09/15/HTMLAgilityPackContributor.aspx</link>
      <pubDate>Tue, 15 Sep 2009 16:02:42 GMT</pubDate>
      <description>&lt;p&gt;
For a few months now I’ve been working on a VS2010 extension I’m calling Funky Search.
It’s basic intent is to bring tag based search and replace functionality to Visual
Studio. My first order of business when creating this extension was the need for an
HTML Parsing Engine. I had used &lt;a title="HTML Agility Pack Codeplex" href="http://htmlagilitypack.codeplex.com" target="_blank"&gt;HTML
Agility Pack&lt;/a&gt; (HAP from now on) in the past. One downside of it is that it uses
XPATH for querying the HTML. While in it’s day XPATH was a decent solution for searching
XML structures, there are better searching solutions available today namely LINQ. 
&lt;/p&gt;
&lt;p&gt;
I set out and updated HAP to have all of it’s Node and Attribute collections to inherit
from IList&amp;lt;T&amp;gt; instead of implementing their own Enumerators. I then added many
helper methods to mimic LINQ to XML. With this I could now work on creating dynamic
LINQ statements to power my extension. 
&lt;/p&gt;
&lt;p&gt;
While working on this I got into the community of people using HAP and I came across
a larger issue, it had not been updated in years and the creator and other developer
on the project had seemed to abandon it. I sent many emails to the creator Simon Mourier
(former MS employee, and current CTO of SoftFluent) over the summer with no reply.
I finally found his work email and discovered he was on vacation until early September.
I was finally able to get in contact with him today and he added me as a developer
on the project. 
&lt;/p&gt;
&lt;p&gt;
This will mark the first time in about 5 years I’m a developer on an open source project.
Before coming to Sierra Bravo I was huge into open source, also at that time MS had
no free versions of Visual Studio. I was working as a PHP developer and had contributed
to some small projects and even worked on part of the Mozilla project adding in an
easier way to code-sign your Mozilla/Firefox extensions.
&lt;/p&gt;
&lt;p&gt;
I’m looking forward to advancing HAP, fixing bugs and making it easier to use. It
sits in a unique position as being the only freely available HTML parser that works.
While it can be used for dubious purposes as a page scraper it can also be used for
good. I’ve used it in the past where we had a client that had their hosting provider
go out of business, their site was going to only be up for another day and we had
no direct access to their database server. We had FTP access to get the code of the
site and access to a readonly front end that displayed the contents of the tables
in html with no export functionality. I wrote a scraper with HAP to get those tables
and put them into an importable format. With it I was able to download and import
their database and save their site. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.j-maxx.net/aggbug.ashx?id=8338593d-c072-440d-b928-314e7de18cc4" /&gt;</description>
      <comments>http://blog.j-maxx.net/CommentView,guid,8338593d-c072-440d-b928-314e7de18cc4.aspx</comments>
      <category>CodePlex</category>
      <category>Html Agility Pack</category>
      <category>LINQ</category>
      <category>Visual Studio 2010</category>
    </item>
  </channel>
</rss>