{"id":339,"date":"2009-05-15T15:03:09","date_gmt":"2009-05-15T21:03:09","guid":{"rendered":"http:\/\/www.ourada.org\/blog\/?p=339"},"modified":"2009-05-15T15:03:09","modified_gmt":"2009-05-15T21:03:09","slug":"programming-these-days","status":"publish","type":"post","link":"https:\/\/www.ourada.org\/blog\/archives\/339","title":{"rendered":"Programming, these days"},"content":{"rendered":"<p>With the confluence of open source, web forums and search engines, Linux distros, email, etc., it&#8217;s certainly a different world in which to program than it was when I was first learning to program 27 years ago. My little experience today was in trying to get a little command-line client to FreshBooks for quickly logging a bit of time.<\/p>\n<ul>\n<li>Search for such a thing. No good hits.<\/li>\n<li>Search for FreshBooks API wrappers. Don&#8217;t wanna write in Perl, PHP, or ActionScript, so I&#8217;ll go with Ruby.<\/li>\n<li>Get Ruby: apt-get install ruby.<\/li>\n<li>Learn how to write some stuff in Ruby with various web searches leading to tutorials, forum posts, blog entries, etc.<\/li>\n<li>Learn what Ruby gems are, install the gem installer (apt-get install rubygems), install the FreshBooks API gem (gem install freshbooks).<\/li>\n<li>Write some code that fails. Dig into gem code and put some debugging puts&#8217;s in there. Find the root cause of the bug in about 20 minutes, try a hack to fix it, it works.<\/li>\n<li>Try to report problem to maintainer. Find that the version in the gem whosit is actually an old version written by the previous author\/maintainer.<\/li>\n<li>Find a link to the new maintainer and the project page on rubyforge.<\/li>\n<li>Browse the source and see that the gem is totally different. Uninstall old one, download this one.<\/li>\n<li>Learn what Rakefiles are with some web searches, install rake (apt-get install rake), install some dependencies with gem installer, rake it.<\/li>\n<li>Adapt my code to one of the changes by reading the code (_not_, I might add, the comments, because the comments were out of date).<\/li>\n<li>Find that the code now fails again, which I sort of expected.<\/li>\n<li>Repeat puts-based debugging process and learn that the old bug was fixed but a new one was introduced.<\/li>\n<li>Hack a fix for new bug, it works.<\/li>\n<li>Report problem to new maintainer. He might tell me that it&#8217;s my problem and not a bug in the gem, but whatever, I have what I need and maybe the code will be better for it next time someone tries it&#8230;<\/li>\n<\/ul>\n<p>I won&#8217;t bother to enumerate all the differences between that and my early experiences with programming, but to give a little taste, here was the scene for 9-year-old Steven: 4kB pocket computer programmed in BASIC, the only I\/O being the keyboard and screen, the only contact with the larger programming world being the computer&#8217;s 100-page manual, etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With the confluence of open source, web forums and search engines, Linux distros, email, etc., it&#8217;s certainly a different world in which to program than it was when I was first learning to program 27 years ago. My little experience today was in trying to get a little command-line client to FreshBooks for quickly logging [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-339","post","type-post","status-publish","format-standard","hentry","category-general","author-admin"],"_links":{"self":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts\/339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/comments?post=339"}],"version-history":[{"count":0,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts\/339\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/categories?post=339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/tags?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}