{"id":341,"date":"2009-03-28T14:25:31","date_gmt":"2009-03-28T19:25:31","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=341"},"modified":"2023-12-20T16:25:21","modified_gmt":"2023-12-20T21:25:21","slug":"my-web-app-in-the-news","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2009\/03\/28\/my-web-app-in-the-news\/","title":{"rendered":"My Web App in the News"},"content":{"rendered":"<p><strong>ANOTHER UPDATE:<\/strong> Whoops.\u00a0 Fixed the links to the auction and the St. Catharines Standard article.<\/p>\n<p><strong>UPDATE: <\/strong><a href=\"http:\/\/www.stcatharinesstandard.ca\/ArticleDisplay.aspx?e=1490637\"> Apparently, the Feds are getting in on the online auction circuit too. <\/a><\/p>\n<p>Over the past three summers, I&#8217;ve been employed by the District School Board of Niagara as an internal web application developer.<\/p>\n<p>One of my first jobs in the summer of 2006 was to rebuild the online auction application that the DSBN Purchasing department ran.\u00a0 The original auction let the Board dispose of old equipment quickly and easily, and was quite popular.\u00a0 Unfortunately, it was also written in (almost) unintelligible\/unmaintainable Perl.<\/p>\n<p>So I rewrote it by myself, and learned PHP\/MSSQL along the way.\u00a0 We called this new auction site The Government Surplus Online Auction, and we opened it up so that other government agencies could also post items for auction.<\/p>\n<p>Things went along fine until last summer, when the site got attacked by an SQL Injection bot.\u00a0 Back in 2006, I had no idea what SQL injection was, or how to guard myself.<\/p>\n<p>So there I am &#8211; I&#8217;ve just come back from a camping trip, my inbox is packed with complaints, and I&#8217;ve got three weeks until school begins.\u00a0 Crap.<\/p>\n<p>Luckily, I had plenty of tools at my disposal.\u00a0 My web app development skills and practices had evolved dramatically since 2006, and I had been itching to reimplement the auction anyhow.\u00a0 The SQL Injection attack was a perfect excuse for me to gut the entire application, and rebuild from scratch.<\/p>\n<p>And I did.\u00a0 I rebuilt the whole thing from the ground up in three weeks.\u00a0 It&#8217;s been almost a year since it was deployed, and I&#8217;m still very happy with its performance, and the code that runs it.<\/p>\n<p>I&#8217;m <strong>not <\/strong>happy with its overall UI design.\u00a0 I think there are plenty of improvements to be made in that regard.\u00a0 Luckily, it&#8217;s coded using a light <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model%E2%80%93view%E2%80%93controller\">MVC<\/a> framework that I designed\/built myself, so reskinning shouldn&#8217;t be too hard for whoever decides to work on it&#8230;<\/p>\n<p>Apparently, I&#8217;m not the only one happy with the auction site.\u00a0 <a href=\"http:\/\/www.stcatharinesstandard.ca\/ArticleDisplay.aspx?e=1476981\">Check out this article (now without annoying print dialog).<\/a><\/p>\n<p>I just checked the logs today &#8211; we hit a new record: an aerial truck went for $22,000 dollars.\u00a0 With the Board receiving 5% ($1100) of that simply for hosting, I think everybody is walking away happy.<\/p>\n<p><a href=\"http:\/\/www.dsbn.edu.on.ca\/purchasing\/gsoa\">Here&#8217;s the auction.<\/a><\/p>\n<p>Proof that I wrote it?\u00a0 <a href=\"http:\/\/www.dsbn.edu.on.ca\/purchasing\/gsoa\/CREDITS.txt\">This&#8217;ll have to do.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ANOTHER UPDATE: Whoops.\u00a0 Fixed the links to the auction and the St. Catharines Standard article. UPDATE: Apparently, the Feds are getting in on the online auction circuit too. Over the past three summers, I&#8217;ve been employed by the District School Board of Niagara as an internal web application developer. One of my first jobs in [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5,44,68,10,79],"tags":[186,184,185,1212,12,1209],"class_list":["post-341","post","type-post","status-publish","format-standard","hentry","category-computer-science","category-internet","category-javascript","category-php","category-technology","tag-auction","tag-dsbn","tag-gsoa","tag-javascript","tag-mvc","tag-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-5v","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=341"}],"version-history":[{"count":7,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/341\/revisions"}],"predecessor-version":[{"id":3252,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/341\/revisions\/3252"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}