{"id":87,"date":"2010-01-20T00:38:26","date_gmt":"2010-01-19T23:38:26","guid":{"rendered":"http:\/\/www.anyma.ch\/blogs\/research\/?p=87"},"modified":"2010-01-20T00:58:21","modified_gmt":"2010-01-19T23:58:21","slug":"videobass-is-under-version-control","status":"publish","type":"post","link":"http:\/\/www.anyma.ch\/blogs\/research\/2010\/01\/20\/videobass-is-under-version-control\/","title":{"rendered":"Videobass is under version control"},"content":{"rendered":"<p>Good resolutions sometimes take a long time, but never give up your hopes! I have finally put the videobass code base under version control: <a href=\"http:\/\/code.google.com\/p\/videobass\/source\/checkout\">http:\/\/code.google.com\/p\/videobass\/source\/checkout<\/a><\/p>\n<p><!--more-->My last publication of videobass sources was in 2004, I believe. And I&#8217;m not even sure if that included the videobass application written in <a href=\"http:\/\/cycling74.com\/\">Max\/MSP<\/a>. Since then the instrument has evolved a lot, but changes are incremental, most of the times very small, and not always worth a big anouncement. When we received the <a href=\"http:\/\/www.digitalbrainstorming.ch\/programm\/genf\">award of the Migros Kulturprozent<\/a> for this project, I took the pledge to document more and publish all under open source licenses. But before publishing I wanted to develop a little more, advance and clean up the code &#8211; small improvements not really worth a big announcement&#8230;<\/p>\n<p>If I had my code up on a public version control server, a big part of the documentation would be there automatically, with the log messages of all these small improvements&#8230; And if I had <strong>any<\/strong> sort of version control, maybe the code would not have been always a mess and I would not have rewritten it about four times from scratch?<\/p>\n<p>Anyway, I&#8217;ve just rewritten almost everything again, and it&#8217;s too early to see all the edgy corners so I&#8217;m still quite proud of it. That&#8217;s a good moment to put this project on some stable grounds.<\/p>\n<h3>Why did it take so long?<\/h3>\n<p>I still don&#8217;t really understand what my problem is with <a href=\"http:\/\/en.wikipedia.org\/wiki\/Revision_control\">version control<\/a>. I do fundamentally understand why it is important. I experienced so many times where I was completely lost in the mess of my code and I wished I could roll back to an older version (most of all if a last-minute change half an hour before a live concert completely broke my software, and I had to hack my way all up on stage instead of eating with the rest of the band&#8230;). I wish I had a log of my changes. I would love to know when I come back to the project after some months in other worlds, which one of the five folders in different places on my harddisk is the most recent version&#8230; videobass2010? oh no, that&#8217;s just an unfinished aproach to a complete rewrite. vb09? looks nice, but there&#8217;s a lot of files in videobass_2007 that have more recent modification dates&#8230;.<\/p>\n<p>One question is <strong>how?<\/strong><\/p>\n<p>I tried my hands on <a href=\"http:\/\/bazaar.canonical.com\/en\/\">Bazaar,<\/a> which seemed to suit my unorganized style quite well, but I forgot which projects are controlled by Bazaar, and copied files and folders back and forth and it&#8217;s a complete mess now, with .bzr directories in completely unrelated projects, because I copied another as a template and I do not <strong>see<\/strong> that it is versioned &#8211; I do not ls -a every time before I duplicate a folder in the Finder&#8230;<\/p>\n<p>And <a href=\"http:\/\/subversion.tigris.org\/\">subversion<\/a> is even worse because it puts a .svn in every f***ing directory and I have to think to do a svn export before zipping and sending the stuff in an email to somebody.<\/p>\n<p>So one of the questions that held me back was what system do I use? Well now the answer is subversion but I&#8217;m still triyng to get used to it (you can see my commit log if you want to get an idea&#8230;)<\/p>\n<p>And the other question is: <strong>where?<\/strong><\/p>\n<p>Sourceforge was the obvious answer in 2004 for <a href=\"http:\/\/livecut.sourceforge.net\/\">LiveCut<\/a>. But sourceforge is bloated, slow, and I always forget how to do this stuff if I&#8217;m not constantly updating my project. Uploads for the website go to projects.sourceforge.net\/l\/li\/liv\/livecut\/htdocs ?? It&#8217;s been a long time, I can&#8217;t remember&#8230;<\/p>\n<p>Do I trust Google? Should I put all my precious work in <span style=\"text-decoration: line-through;\">not<\/span> <span style=\"text-decoration: line-through;\">evil<\/span> Google&#8217;s hands? I don&#8217;t know.<\/p>\n<p>We also tried to set up our own subversion server on the G4 in the closet. It worked well. I can&#8217;t remember how. I don&#8217;t remember the password. I don&#8217;t remember what code is on there, but I&#8217;m sure I have much more recent versions of the same software on my hard disc&#8230;<\/p>\n<p>It&#8217;s a mess<\/p>\n<h3>Why did it go so fast?<\/h3>\n<p>Last weekend we recorded some songs and did a <a href=\"http:\/\/www.anyma.ch\/2010\/info\/naima-in-concert-au-bilboquet-fribourg-15-janvier-2010\/\">concert<\/a> with <a href=\"http:\/\/www.oliviernussbaum.com\/naima\/\">Na\u00efma<\/a> &#8211; with the newest version of the VideoBass. At the rehearsals Ma\u00eft\u00e9 found some severe problems with the software and I had to do something about it quickly. The problem is, I did the latest corrections in december directly on the new MacMini that will go into the VideoBass Amp and the Max\/MSP Demo license on that machine has expired since. On my MacBook I have a license, so i can edit the patches, but it&#8217;s not the same machine. I could copy the whole thing back to a new folder on my MacBook, code, try, and copy back to see if it also works on the MacMini. But in doing so I contribute to the duplication of code and the subsequent proliferation of different versions. Or I can modify the patches over the network, but this means I can&#8217;t debug and I can&#8217;t see the immediate effects of my changes &#8211; one of the greatest advantages of Max\/MSP.<\/p>\n<p>I found that if you install Max\/MSP but never use it as a user with administrator rights, every time you create a new user on the same machine, you&#8217;ll get another 30 days of demo license. Neat.<\/p>\n<p>So I started hacking away as a new user on the MacMini, with a copy of the videobass code. But with the deadline of the concert arriving I was getting more and more terrified of not remembering which version was the newest, which one still works, which one I can roll back if the additional ideas I had don&#8217;t work out at all. And swapping between users on the same machine, under terrible pressure, I found myself modifying .js files one the one side where I just wantetd to have a look how the original solution was, and modifying the corresponding .maxpat files on the other side where I had my precious demo license. A nightmare.<\/p>\n<p>It all worked out well and we had a great concert, but that&#8217;s when I swore that I won&#8217;t do any more work before this code gets under version control. I don&#8217;t care how and where, but it must be now!<\/p>\n<p>So now our VideoBass lives at Google&#8217;s, just because it was the fastest and most painless option (as usual ?). And it&#8217;s on Subversion. I really hope I will get used to it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good resolutions sometimes take a long time, but never give up your hopes! I have finally put the videobass code base under version control: http:\/\/code.google.com\/p\/videobass\/source\/checkout<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[14,16,13,31],"_links":{"self":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/87"}],"collection":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":4,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":101,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/posts\/87\/revisions\/101"}],"wp:attachment":[{"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.anyma.ch\/blogs\/research\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}