{"id":532,"date":"2008-09-09T11:07:49","date_gmt":"2008-09-09T15:07:49","guid":{"rendered":"http:\/\/www.dr-chuck.com\/wordpress\/?p=532"},"modified":"2011-12-17T12:27:21","modified_gmt":"2011-12-17T16:27:21","slug":"what-languageframework-to-use-on-a-brand-new-project","status":"publish","type":"post","link":"https:\/\/www.dr-chuck.com\/csev-blog\/2008\/09\/what-languageframework-to-use-on-a-brand-new-project\/","title":{"rendered":"What Language\/Framework to use on a brand-new project?"},"content":{"rendered":"<p>In the next 24 hours I will be starting a new project &#8211; a &#8220;next generation LMS system&#8221; for the UM Medical School &#8211; this is a small prototype but I hope it shows the way for how LMS systems will work in the future.<br \/>\nMy angst today is what to write it in &#8211; and frankly I am still not 100% sure &#8211; if you have any suggestions &#8211; hurry up &#8211; I need to know soon.<br \/>\nShould I use Java?<br \/>\nJava scales and when you have a lot of code &#8211; strict interfaces are great.  But Java simply means that when you try to build an open source community &#8211; you will be ridiculed by hobby programmers for choosing Java because it is too *hard*.<br \/>\nPHP + MySql \/ LAMP?<br \/>\nMan this is tempting &#8211; it works so well &#8211; ISP&#8217;s make this work for $3 per month trivially.  It is really really direct to slap stuff together.    And it is nice and relational.  It feels so hacky though.  Maybe PHP5 makes it feel a little better.<br \/>\nRuby on Rails?<br \/>\nI love Ruby on Rails &#8211; I have never felt so productive in an environment &#8211; it is the best way to write elegant code I know of.  But it needs to find a hold in the market place.   I do not like the feeling of living on the edge and having to become a zealot and sell folks on the framework before I sell them on my product.  Last year this time &#8211; I put together a small LMS in Ruby &#8211; and it was great fun &#8211; http:\/\/www.rubytoozday.org\/.    I could even start with that code for my NG project.<br \/>\nPython and App Engine?<br \/>\nGoogle is behind this &#8211; I like that a *lot*.  I like Python.  I like App Engine&#8217;s free accounts.  I worry that I cannot scale my service in App Engine yet &#8211; there is no pay account and I cannot run App Engine on my own production infrastructure.  Oh yeah &#8211; and that missing relational database might be a bit of a learning curve.  At the same time &#8211; in the real world of big-time scalability &#8211; sharding is your friend &#8211; so why not byte the bullet and force myself to understand sharding.<br \/>\nSo on the drive into work this morning &#8211; it seemed that even in 2008 &#8211; there was no good solution to this problem.  DANG!<br \/>\nBut as the miles rolled by &#8211; I realized that my new application was really about Javascript, JQuery, JSON, REST,  and some back end.   And I was fussing about what the back-end would be.  I already had made much of the decisions of the project without realizing it.<br \/>\nSo this makes it less painful to make a choice.  Because it is only the headless back end that I am talking about.  Even so the back end is an important bit.<br \/>\nSo unless I change my mind in the next 24 hours &#8211; it will be Python with the following caveats: (a) the real good stuff is isolated into code that does not depend on the App Engine at all, (b) any APIs are defined in REST\/JSON and not in Python itself.<br \/>\nThe thing that scares me the most is learning sharding under pressure.  This is the App Engine risk.  I will need to hide my storage behind an abstraction.  If I feel too much pain too quickly, I may fall back to PHP or Rails &#8211; that will be a harder decision &#8211; because Rails is so productive but I don&#8217;t have it memorized yet &#8211; PHP is a hack but I do have more of PHP and MySql memorized.<br \/>\nOh the pain of making this decision!<br \/>\nIf someone wants to help and\/or get involved in this &#8211; let me know.  I don&#8217;t have enough time to do this and I am pretty much a beginner in the technologies I am intending to use (REST, JSON, Javascript, JQuery, and Python App Engine).  I guess that is why they call it &#8220;life long learning&#8221;.<br \/>\nSeriously, if you want to help, I would much appreciate it &#8211; I need folks who can really *help* &#8211; I do need folks smarter than me who have more time than me.  I may be even able to use Med School funds to pay the right person to work on this with me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the next 24 hours I will be starting a new project &#8211; a &#8220;next generation LMS system&#8221; for the UM Medical School &#8211; this is a small prototype but I hope it shows the way for how LMS systems will work in the future. My angst today is what to write it in &#8211; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-532","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/comments?post=532"}],"version-history":[{"count":1,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/532\/revisions"}],"predecessor-version":[{"id":2631,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/532\/revisions\/2631"}],"wp:attachment":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/media?parent=532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/categories?post=532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/tags?post=532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}