{"id":319,"date":"2009-03-18T16:17:34","date_gmt":"2009-03-18T21:17:34","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=319"},"modified":"2023-12-20T16:25:21","modified_gmt":"2023-12-20T21:25:21","slug":"olm-what-is-it","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2009\/03\/18\/olm-what-is-it\/","title":{"rendered":"OLM:  What is it?"},"content":{"rendered":"<p>I&#8217;ve mentioned the OLM project a few times, and more than once, I&#8217;ve been asked:\u00a0 &#8220;What is this OLM thing you keep talking about?&#8221;<\/p>\n<p>So that&#8217;s what this post is for:\u00a0 to provide a plain-English explanation of what OLM actually is\/does.<\/p>\n<p><strong>Note:<\/strong> I can&#8217;t guarantee that the history of OLM is entirely accurate &#8211; I&#8217;m assembling this from hearsay, and personal accounts.\u00a0 If there are any corrections to be made to this post, please comment or email me.<\/p>\n<h2>Part 1:\u00a0 How it Used to Be<\/h2>\n<p>Computer Science students, at one point or another, have to computer programs for their assignments.\u00a0 These programs are written in a myriad of languages (Java, Python, C, the list goes on&#8230;), and have to be marked by teaching assistants.<\/p>\n<p>Originally, after students submitted their completed programs, the TA&#8217;s would print off the source code and write on the printouts to give feedback on how the code was written.\u00a0 They would also use a rubric to grade the overall assignment based on predetermined criteria &#8211; which isn&#8217;t at all unusual in grading student work.<\/p>\n<p>That&#8217;s how it used to be.<\/p>\n<h2>Part 2: The Birth of OLM<\/h2>\n<p>One day, the Computer Science Department at UofT decided that they wanted to write a web application for instructors to manage assignments, and to receive student submitted code.\u00a0 They also wanted TA&#8217;s to be able to log in, and mark the code, almost as if they were doing it on paper.<\/p>\n<p>So OLM (On-Line Marking) was born.\u00a0 It was written in a web framework called TurboGears by a group of undergraduate students.<\/p>\n<p>And it wasn&#8217;t bad.\u00a0 It&#8217;s still used in the department to this day.<\/p>\n<h2>Part 3:\u00a0 OLM is Reborn as&#8230;Checkmark&#8230;or OLM&#8230;or something<\/h2>\n<p>The original OLM has a few deficiencies.\u00a0 The instructors who actually use it could probably rattle off plenty of stories about how, sometimes the client-side of the interface doesn&#8217;t entirely agree with the server, or little glitches that require diving into the database to fix.<\/p>\n<p>Plus, the code-base is kind of a hodge-podge.\u00a0 Not easy to extend, not easy to maintain&#8230;the framework that OLM was written on was no longer the &#8220;hot framework&#8221;, and there was little in the way of support.\u00a0 Something needed to be done.<\/p>\n<p>So it was decided that OLM would be recreated from the ground up, and would be an evolution based on the lessons learned from the original implementation.\u00a0 It was going to be rebuilt in Ruby on Rails, and it was going to be awesome.<\/p>\n<p>It was also going to be renamed.\u00a0 The name &#8220;Checkmark&#8221; has been bounced around, but should really be more considered as a code-name.\u00a0 The project is still referred to as OLM, or Checkmark.<\/p>\n<p>(Just came up with a name idea:\u00a0 MarkUs.\u00a0 Note to self:\u00a0 send name idea to supervisor&#8230;)<\/p>\n<h2>Part 4:\u00a0 As it Stands<\/h2>\n<p>The new implementation of OLM is actually in pretty decent shape.\u00a0 There are plenty of bug-fixes and unimplemented features, but a lot of the hardest stuff seems to be over &#8211; at least, in terms of matching the feature list of the original OLM.<\/p>\n<p>And that&#8217;s important, because our supervisor wants this thing polished, tested, and deployed for the Fall term &#8211; and it&#8217;s got to at least match the original feature set of OLM, if not exceed it.<\/p>\n<h2>Part 5:\u00a0 Want to See It?<\/h2>\n<p>If you want to see this thing, you have three choices:<\/p>\n<ol>\n<li>Catch me in person, and ask to see it.\u00a0 If I have my laptop, I&#8217;ll give you a demo.<\/li>\n<li><a href=\"https:\/\/stanley.cdf.toronto.edu\/drproject\/csc49x\/olm_rails\">Get it from our Subversion repository<\/a>, and get it running on your own machine.<\/li>\n<li>Enroll in a CS undergrad course in the Fall, and who knows&#8230;maybe you&#8217;ll end up using it.<\/li>\n<\/ol>\n<p>Anyhow, if there are any OLM related questions, or even some name ideas, please don&#8217;t hesitate to post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve mentioned the OLM project a few times, and more than once, I&#8217;ve been asked:\u00a0 &#8220;What is this OLM thing you keep talking about?&#8221; So that&#8217;s what this post is for:\u00a0 to provide a plain-English explanation of what OLM actually is\/does. Note: I can&#8217;t guarantee that the history of OLM is entirely accurate &#8211; I&#8217;m [&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,162,79],"tags":[169,84,86,87],"class_list":["post-319","post","type-post","status-publish","format-standard","hentry","category-computer-science","category-internet","category-javascript","category-ruby-on-rails-technology","category-technology","tag-capstone","tag-olm","tag-ruby","tag-ruby-on-rails"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-59","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/319","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=319"}],"version-history":[{"count":1,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/319\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/319\/revisions\/320"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}