{"id":108,"date":"2009-02-04T19:32:22","date_gmt":"2009-02-04T17:32:22","guid":{"rendered":"http:\/\/www.terrasoft.gr\/blog\/?p=108"},"modified":"2019-11-14T01:58:35","modified_gmt":"2019-11-13T23:58:35","slug":"fallen-sword-sigma-storm-helper","status":"publish","type":"post","link":"https:\/\/www.terrasoft.gr\/blog\/?p=108","title":{"rendered":"Fallen Sword \/ Sigma Storm Helper"},"content":{"rendered":"<p>I\u2019ve made my first (popular) open source project since September, and it has been a very enlightening experience. It&#8217;s called <a href=\"http:\/\/code.google.com\/p\/fallenswordhelper\/\">Fallen Sword Helper<\/a>, and it&#8217;s hosted by Google Code.<\/p>\n<p>The project started when I started playing an online browser-based RPG game. I registered last April, but I didn\u2019t really play before last summer (2008), as I found the instructions to be a little difficult. Anyhow, the game is (as you can see from the title) <a href=\"http:\/\/www.fallensword.com\/\">Fallen Sword<\/a> from <a href=\"http:\/\/www.huntedcow.com\/\">Hunted Cow Studios<\/a>. After playing for a bit, there were some things in the game that somewhat annoyed me, which made the game less than enjoyable. After being accepted to a top 250-guild, which had a rule to not attack people of some guilds, I decided that I should enhance the game experience, as it would be very difficult for me to remember who were our \u201cfriendly\u201d guilds &#8211; the ones I shouldn\u2019t attack. So, I started working on a new Greasemonkey script to make those fixes.<\/p>\n<p>Using a <a href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/748\" target=\"_blank\" rel=\"noopener noreferrer\">Greasemonkey<\/a> script for Firefox was really a method I had used in another browser-based game. In fact, I had made a Firefox Extension first, because it would otherwise be impossible to send XMLHTTP requests. Of course Firefox extensions are a lot more difficult to develop, because each change you make means you have to restart your browser. So, since I discovered that Greasemonkey had an internal API that could send XMLHTTP requests (and also a way to persist variables), I decided that Greasemonkey scripts were the way to go.<\/p>\n<p>After a while, I decided to post the Helper script on to <a href=\"http:\/\/userscripts.org\/scripts\/show\/34343\" target=\"_blank\" rel=\"noopener noreferrer\">userscripts.org<\/a>, so that other people would benefit from it. I also put in an autoupdate feature, which I felt was a major requirement for me to keep my sanity.<\/p>\n<p>As time progressed, there were many submissions to the userscripts forum, so I felt it was time to upgrade this project to a real collaborative environment &#8211; a true source control system, and, if possible a bug tracking tool. <a href=\"http:\/\/code.google.com\/\">Google Code<\/a> really is very good for all that. It provides a true subversion server, a trac-like (custom Google though) issue tracker, a wiki, and all of these on Google\u2019s infrastructure. The only thing missing (for now) is a way to import\/export the whole subversion repository, but I can live with that.<\/p>\n<p>Doing that in a real scale was a new experience for me. From the project itself, I have become a lot more proficient with javascript and Firefox\u2019s DOM, as opposed to mostly IE\u2019s DOM which I used to work with. I also learned a lot about subversion in the process, to the point that I even managed to migrated a very old and very corrupt SourceSafe from work to a subversion repository (even though this was mostly done out of plain fear that the corruption would soon become terminal).<\/p>\n<p>The best part of creating an open source project (even with just 3 active developers right now &#8211; but it would seem a lot more users) was finding out about that spirit of cooperation with people from all around the world (literally!). It feels really nice having other people reading and understanding your code, and being able to expand it without the \u201cseams\u201d being visible. By that I mean that they understand the code (I hope it doesn\u2019t go to my head, but it would seem I make somewhat understandable code. Or they are supergeniuses), and what they add has the same \u201ccode smell\u201d, you can\u2019t see where my code ends and my collaborators\u2019 code begins.<\/p>\n<p>Another cool thing that has come out of that, is that I finally got to use a proper issue tracking software, and also to manage a project at a higher level than just writing code. Don\u2019t get me wrong, writing code is still my favorite activity, but it\u2019s nice to know that I could also manage a project from higher up. I\u2019ve also started writing technical documentation for all that. All in all, I think I\u2019m doing a more professional and complete job for this project that I\u2019m not getting paid for, than the projects I\u2019m really getting paid for at work \ud83d\ude42 Of course the fact that for my project I\u2019m the chief developer, project manager and main customer helps.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve made my first (popular) open source project since September, and it has been a very enlightening experience. It&#8217;s called Fallen Sword Helper, and it&#8217;s hosted by Google Code. The project started when I started playing an online browser-based RPG game. I registered last April, but I didn\u2019t really play before last summer (2008), as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[3,10],"class_list":["post-108","post","type-post","status-publish","format-standard","hentry","tag-coding","tag-gaming"],"_links":{"self":[{"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108"}],"collection":[{"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=108"}],"version-history":[{"count":5,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":20257,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions\/20257"}],"wp:attachment":[{"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.terrasoft.gr\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}