{"id":877,"date":"2009-10-15T23:30:48","date_gmt":"2009-10-16T06:30:48","guid":{"rendered":"http:\/\/gregbaker.ca\/blog\/?p=877"},"modified":"2009-10-15T23:30:48","modified_gmt":"2009-10-16T06:30:48","slug":"my-latest-project-web-lint","status":"publish","type":"post","link":"http:\/\/gregbaker.ca\/blog\/2009\/10\/15\/my-latest-project-web-lint\/","title":{"rendered":"My latest project: web lint"},"content":{"rendered":"<p>I have alluded to this in a status update, but I think it&#8217;s time to look more widely for feedback&hellip;<\/p>\n<p>A while ago, I started thinking about all of the annoying things my CMPT 165 students do in their HTML, and then started thinking about ways to get them to stop.  I started working on an automated checker to give them as much personalized feedback as possible without me actually having to talk to them.<\/p>\n<p>They already use an <a href=\"http:\/\/www.htmlhelp.org\/tools\/validator\/\">HTML validator<\/a> which checks documents against the HTML\/XHTML syntax, but it&#8217;s amazing what kind of things actually pass the validator. In the list: resizing images with width\/height on &lt;img \/&gt;; saving their source as UTF-16 (no idea how they do it); putting spaces in their URLs; using class names like &#8220;red&#8221; instead of &#8220;important&#8221;; not specifying the natural language\/character encoding of the document; etc.<\/p>\n<p>As the list became longer, the thing became sort of a general HTML lint: the thing you go to after your code is valid to check for other common problems, annoyances, and omissions.  The more I look at it, the more I think it&#8217;s a useful tool for CMPT 165 students as well as a good way to make others think a little more about the code they are producing.<\/p>\n<p>I&#8217;m now at the point of wanting some feedback.  There are still some missing strings and help text, but hopefully you get the idea.  I don&#8217;t want to guarantee that this link will exist forever, but have a look at <a href=\"http:\/\/cmpt165.csil.sfu.ca\/weblint\/\"><strong>my web lint<\/strong><\/a>.<\/p>\n<p>As with any &#8220;lint&#8221;, the goal here probably isn&#8217;t for authors to get zero warnings, but just to think about why they are ignoring the warnings that remain.  (No, I don&#8217;t need you to tell me that some of my pages produce some warnings.)<\/p>\n<p>At this point, I&#8217;m most interested in:<\/p>\n<ul>\n<li>Links to input that causes an exception (500 Internal Server Error) or other truly broken behaviour.<\/li>\n<li>Feedback on the warnings presented and their &#8220;level&#8221;.  I have deliberately hidden levels 4 and 5 in the default display: I&#8217;m aware that the tool is pretty anal-retentive.<\/li>\n<li>Are there things you can thing of (that could be automatically-checkable) that should get a warning but don&#8217;t?  I have a few more on my list, but the core is in there.<\/li>\n<li>I don&#8217;t think the URL validation (for &lt;a&gt;, &lt;link&gt;, &lt;img&gt;) is perfect: I still need to go back to the RFC and check the details.  Any cases you notice that don&#8217;t pass but should would be appreciated.<\/li>\n<li>Any spelling\/grammar errors?<\/li>\n<li>I&#8217;m trying not to duplicate functionality of the HTML validators: they already do their job well.  But, notice the links to &#8220;other checkers&#8221; on the right.  Didn&#8217;t know about all of them, did you?  Any others I should include?<\/li>\n<\/ul>\n<p>My intention is to GPL the code and CC license the text, but let&#8217;s take one step at a time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have alluded to this in a status update, but I think it&#8217;s time to look more widely for feedback&hellip; A while ago, I started thinking about all of the annoying things my CMPT 165 students do in their HTML, and then started thinking about ways to get them to stop. I started working on [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,10,12],"tags":[],"class_list":["post-877","post","type-post","status-publish","format-standard","hentry","category-teaching","category-tech","category-work"],"_links":{"self":[{"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=877"}],"version-history":[{"count":9,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/877\/revisions"}],"predecessor-version":[{"id":886,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/877\/revisions\/886"}],"wp:attachment":[{"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=877"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/gregbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}