Another open source rant
-
Web development is saturated with individuals whose skill-set is extremely poor and who lie about their ability with no shame. It really grinds my gears. I set about a guy recently in the LinkedIn forums who was asking if anyone had any guides so he could quickly learn JavaScript though on his profile he said he was an expert!
JimBob SquarePants ******************************************************************* "He took everything personally, including our royalties!" David St.Hubbins, Spinal Tap about Ian Faith, their ex-manager *******************************************************************
LinkedIn has a lot of weird quirks. I had one person verify my expertise with SharePoint. I didn't ask for it, I don't even follow any SharePoint forums. I'm guessing he got a look at my resume which included working for the SharePoint group. I will say I am more familiar with the back-end SQL portion of that app (in 2005) than most people, but that doesn't put me anywhere close to being a SharePoint developer or expert.
-
This time, my sights are on HtmlAgilityPack[^]. Besides the fact that there is no documentation and the one example provided has an absurd quote-placement error, so obviously the code was never tested, there's this:
/// /// Selects a list of nodes matching the expression.
///
/// The XPath expression.
/// An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
public HtmlNodeCollection SelectNodes(string xpath)What? You return a null if no matches are found??? Which of course would blow up their "example" if no "href" tags exist:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{Why is it that the quality of what "we" as supposed professionals produce is so obviously bad? On a positive note, someone did put together a HAPExplorer (albeit in WPF, why???) that at least provides some working examples, and lo-and-behold, it does compile (after I nuked the test project with an NUnit dependency), but on a bad note, the latest source download complained about a missing .cs file, so the test stuff doesn't build anyways. :sigh: Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My Blog -
This time, my sights are on HtmlAgilityPack[^]. Besides the fact that there is no documentation and the one example provided has an absurd quote-placement error, so obviously the code was never tested, there's this:
/// /// Selects a list of nodes matching the expression.
///
/// The XPath expression.
/// An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
public HtmlNodeCollection SelectNodes(string xpath)What? You return a null if no matches are found??? Which of course would blow up their "example" if no "href" tags exist:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{Why is it that the quality of what "we" as supposed professionals produce is so obviously bad? On a positive note, someone did put together a HAPExplorer (albeit in WPF, why???) that at least provides some working examples, and lo-and-behold, it does compile (after I nuked the test project with an NUnit dependency), but on a bad note, the latest source download complained about a missing .cs file, so the test stuff doesn't build anyways. :sigh: Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogIt is software development in general. There are "programmers" everywhere that make bad software. Code of the "quality" you describe is absolutely typical of virtually all in-house-developed/custom line-of-business software. Without those crufty old VB6 or FoxPro or MSAccess the whole economy would collapse. Comforting isn't it? That is exactly why that given the choice I will ALWAYS choose an open source solution over a closed one. I can examine the inner workings, interact with developers, etc. If I went with closed software my options are limited, and since I KNOW most closed software (most software in general) has some degree of garbage in it then I cannot trust it when my support options are limited to a chain of call centre drones. Can't put down software development alone though--a lot of people who worked in a fast food place can't bring themselves to eat fast food any more, because they know the way it is made, not to mention the character of the people making it for you.
-
wizardzz wrote:
I don't get an exception from trying to iterate the null set. Test.html contains no "img" nodes:
The issue isn't with Descendents, it's with SelectNodes, which return null instead of an empty collection. Perhaps that is the desired behavior for a "Select" function.
wizardzz wrote:
that is adding if it doesn't exist, but replacing it if it does.
Right, but then what's this line doing:
items.Add(newAttribute);
in the Append function? Why is the has replacing while the items collection is adding, leading to confusion about the use of the hash and the name "Append." I'm a bit confused by your answers, because they seem to miss the mark with regards to my earlier posts. Perhaps they were not clear enough? Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogSorry for getting back to you so after the fact. Yes it returns null, and it is complete shit. We have a class that handles calls to the agility pack for us, so we don't make changes to the open source code while being able to improve our interacts. Make a wrapper class. I think there are only 2 lines of code in the agility pack that we've changed, one is to be able to get csv, xml files.
-
Sorry for getting back to you so after the fact. Yes it returns null, and it is complete shit. We have a class that handles calls to the agility pack for us, so we don't make changes to the open source code while being able to improve our interacts. Make a wrapper class. I think there are only 2 lines of code in the agility pack that we've changed, one is to be able to get csv, xml files.
wizardzz wrote:
Sorry for getting back to you so after the fact.
No worries. Thanks for the reply. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My Blog