====== Medialab Prado Logs ======
From 15 April till 27 April, [[projects:design_with_git|Design with Git]] daily activity at Medialab Prado.
===== Day 12 : 26 April (last day) =====
* Cooked a function to resize in-the-dom svg with CSS3 transforms
* Fetching github repo and navigating svg commit history was almost there. But had rendering problems and time too short before presentation.
* Static version of the project can be tested at: http://xuv.github.io/design-with-git/static-svg-diff/
===== Day 11 : 25 April =====
* Documentation: filling info, drawing illustrations and taking screenshots.
* Chrom[e/ium] debug:
* Fails on static local: because "Cross origin requests are only supported for HTTP" (ref: canvg)
* SVG Dashed line not rendered properly into Canvas.
Canvg patch for chrome dashed-line rendering:
// replace these
ctx.webkitLineDash = lengths;
ctx.webkitLineDashOffset = 2;
// by these
ctx.setLineDash(lengths);
ctx.lineDashOffset = 2;
* Renamed the Github repo for uniform naming convention: https://github.com/xuv/design-with-git
* (With gh3 in Chrome) Managed to get a list of svg files and commits from a [[https://github.com/xuv/svg-git-dummy/|dummy github repo]], but Github serves them as text, not svg mime-type. Which sucks bad at this state of my project.
* Pippin's solution to SVG scaling problem: CSS3 transforms.
===== Day 10 : 24 April =====
* Dave suggested XSL to manipulate SVG styles in the browser.
* svg.js uses ONLY plain svg files and doesn't read Inkscape and Ai svgs. It's clearly written in the Doc. Note for self: RTFM before using library for your projet.
* A small interview with [[http://snelting.domainepublic.net/|Femke]] about the project, transcribed by [[https://twitter.com/ossington/status/327120327161307136|Ginger]], for the end-of-the-workshop publication.
* Mail discussion with [[https://github.com/wout|Wout Fierens]] about solving the import of inkscape svg files with svg.js
* Pippin Git help:
* **git log ** returns all the commits for this file
* **git show --abbrev=40 --raw ** returns the tree sha1 and blob sha1 for that commit
* **git show ** returns the data
* Dave's finding: [[http://libgit2.github.com/node-gitteh/|node-gitteh]], a node module wrapping git commands.
* Ed wrapped up a small [[https://gist.github.com/etewiah/5454122|client-side github repo svg blob fetcher]] using gh3.
* [[http://roomandboard.github.io/vectron/|Vectron]] imports svg into [[http://raphaeljs.com/|Raphaeljs]] (Examples loaded from the repo don't work locally. Even the homepage of the project copied locally displays incorrectly. ???)
* Trying [[http://d3js.org/|D3.js]].
* [[http://www.cyberz.org/blog/2009/12/08/svgpan-a-javascript-svg-panzoomdrag-library/|SVGPan]] has pan and zoom functionalities inside the browser.
**Sum up of the day**: Trying to render a scaled version of svg/xml data in the browser isn't an easy task. Svg.js is the best solution. But not stable enough with svg (coming from inkscape?). As for now, this feature will be put on hold. Tomorow, last full working day at the Medialab Prado. TODO: pul data from git.
===== Day 9 : 23 April =====
* Suggested by Ed: Meetup w/ Github engineer doing a [[https://madridrb.jottit.com/abril_2013|talk in Madrid]] on 25th.
* Textual SVG Diff works. Loads SVG, turns it to JSON, compares 2 files, outputs a JSON diff.
* Master Class: Git + SVG + presentation of the project to web design students of [[http://www.artediez.es/|Arte 10]] Madrid. Helped "debug" my project with svg from AI + other test cases.
* Looking into [[http://svgjs.com/|svg.js]] to manipulate the SVG diff in the browser.
===== Day 8 : 22 April =====
* [[http://www.w3.org/Graphics/SVG/WG/wiki/SVG_2_DOM/JSON_Constructors|The problems rising from turning SVG to JSON]] (still might be usefull for a Diff imho)
* testing software version control visualization [[https://code.google.com/p/gource/|gource]] [[https://vimeo.com/64546048|demo video]] (by c4po)
* [[https://github.com/stsvilik/Xml-to-JSON|XML to JSON]] to turn SVG to JSON
* FIXME Static-SVG-Diff viewer only works in Firefox for now.
* TODO:
* Choose a license for publishing (Samer)
* Design students on tuesday (3-5pm)
* Screencast
* Spanish wrap-up of the project
* Pippin ([[http://twitter.com/hodefoting|@hodefoting]]) own reddish pixel diff implementation and master class about pythagorian pixel manipulation
===== Day 7 : 21 April =====
> And on the seventh day God finished his work that he had done, and he rested on the seventh day from all his work that he had done.
Well, not really ;)
* [[http://demo.tutorialzine.com/2012/08/nodejs-drawing-game/|Multiplayer Nodejs Drawing game]] and tutorial. Maybe something to hook with SVG-edit.
* Thx to a visit yesterday by [[http://happensesame.com|Edward Tewiah]] and the discussion that followed it, the SVG-Diff algorythm in the browser could be solved by a JSON-Diff instead. There seems to be [[https://github.com/benjamine/JsonDiffPatch|some]] [[https://fedorahosted.org/json_diff/|JSON]] [[https://github.com/benjamine/JsonDiffPatch|diff]], [[http://tlrobinson.net/projects/javascript-fun/|compare]], [[https://github.com/andreyvit/json-diff|patch]] going around.
===== Day 6 : 20 April =====
* Interaction between Timeline and Diff viewer completed & beautified.
=== SVG to Canvas (dashed line) rendering ===
* [[http://paperjs.org/|Paperjs]] can import SVG and draw dashed lines into the Canvas. See [[https://github.com/xuv/paper.js/blob/master/examples/SVG%20Import/Line%20Testing.html|Line testing example]]. But it seems Paperjs doesn't like the svg structure coming out of Inkscape ([[https://github.com/paperjs/paper.js/issues/203|Issue]]) So my test case is failing. Going for another lib.
* [[http://fabricjs.com/|Fabricjs]] is yet another (seems to be nice) canvas library. But couldn't get that SVG import working.
===== Day 5 : 19 April =====
* Visit of [[https://fr.wikipedia.org/wiki/Ana_Botella|Ana Botella]] to Medialab Prado
* Pippin promising to share Pixel Diff algorythm.
* Presentation of the work in progress + pecha kucha of collaborators.
* "Party at my house" @ [[http://basurama.org/|Basurama]].
===== Day 4 : 18 April =====
* Static timeline integration
* Publishing a Processingjs bug: [[https://processing-js.lighthouseapp.com/projects/41284-processingjs/tickets/2014|Ticket 2014]]\\ \\
* [[http://vsr.informatik.tu-chemnitz.de/demo/GCI/svgedit.html|Multiple users SVG-edit video demo]]
* Need to try this dashed line svg to canvas (bug) in paperjs (and maybe others alike)
===== Day 3 : 17 April =====
* http://code.google.com/p/canvg/ would be needed to convert SVG to Canvas drawing so the Blender-Context library could then be used to make a pixel diff between the two SVG (But unfortunatly, Cansvg doesn't seem to convert dashed lines)
* http://code.google.com/p/canvg/issues/detail?id=52#c4 is a working peace of code that solves the previous dashed-line rendering problem.
* TO READ: [[https://docs.google.com/viewer?a=v&q=cache:pMVvISCBTIsJ:mx1.websemanticsjournal.org/index.php/ps/article/download/215/210+&hl=fr&gl=be&pid=bl&srcid=ADGEEShlAGuUFsOhdXuv5eUTwhKkRACitxS8nUbCks0A0eef2EszO47zS-si3_YF-_Tmsr_5fREOjONMcfLcvYOGQs1tqFwomxyimutXO37CiN_addogqqywZDS8jDAPIQwt-nF_QUJo&sig=AHIEtbTqGft76u-hwjkEQ_KPDqWYdTGDow|A Novel XML Document Structure Comparison Framework based-on Sub-
tree Commonalities and Label Semantics]]
* Disapointed that the tests of the [[#day_216_april|gh3]] library fail on the 3rd one and on in Firefox and on the 4th one in Chrome. This makes this library unusable or I misuse it.
* TO READ: http://svgkit.sourceforge.net/web/SVGKit.html
===== Day 2 : 16 April =====
* http://comunidad.medialab-prado.es/
* Set up a github for the project https://github.com/xuv/visual-git
* One to one discussion with [[http://commons.wikimedia.org/wiki/User:Lpagola|Lila]] about Wikimedia Commons svg traces request and how to better hadle them. Would Git or Visual-Git be useful? Suggestion would be to have a policy rule for designers taking over the job to post back their changes as soon as possible (in a 24h time frame) even is the job is not finished. So other designers can take on afterwards.
* Ricardo (advisor) encourages me to work on the svg-diff first. Git fetching can be done later.
==== Planning for the week ====
The plan is to have a browser-based visalisation of git commit history and be able to visually compare two blobs. considering that the only versioned files taken into account are SVG files. To achieve that, we need to review existing js libraries that will display timelines, compare files and interface with git (or with a git repository). Then choose the best ones for the job and make them work together.
==== Reviewed tools ====
=== Git js interfaces ===
* [[https://github.com/danlucraft/git.js|git.js]] Seemed a nice choice at first, but project hasn't been updated in a year and seems to be buggy. [[https://github.com/danlucraft/git.js/issues/9#issuecomment-16402074|Won't be developped anymore]].
* [[https://github.com/creationix/js-git|js-git]] Promissing project, [[http://www.kickstarter.com/projects/creationix/js-git|just funded]] through Kickstarter (end of March 2013). Guess will have to wait from 3 to 6 months to have a working code.
=== Github js interfaces ===
* https://github.com/michael/github High level library with what seems an easy set of functions to use. Can get branches and blobs. But doesn't seem to be able to retreive a commit history.
* ✔ https://github.com/k33g/gh3 Seems a more complicated Js library but with a lot more features.
Here's a [[https://github.com/dougmiller/SVG-Shapes|github repo]] full of svg with commit history to test a script
=== Timeline js interfaces ===
This would be used to display a list of commits. This requires a "special" timeline application that can display concurrent timelines (necessary to display branching).
* [[http://timeline.verite.co/|TimelineJs]] Beautiful project but doesn't have the concurrent timeline feature or to be more precise, the feature called "tags" could be used but it's limited to 3 or 6 tags maximum.
* ✔ [[http://almende.github.io/chap-links-library/timeline.html|Timeline]] has the concurrent feature. It could be done with [[http://almende.github.io/chap-links-library/js/timeline/examples/example10_link_two_timelines.html|two timelines]] or by using **[[http://almende.github.io/chap-links-library/js/timeline/examples/example13_grouping.html|the "grouping" function]]**, which is prefered.
=== Visual Diff Tools ===
* [[http://www.catchmyfame.com/catchmyfame-jquery-plugins/jquery-beforeafter-plugin/|Before/After slider]]
===== Day 1 : 15 April =====
* Presentation of the project to all the participants
* Git data object persentation by Pippin
* Discussions with Dave ([[https://twitter.com/davelab6|@davelab6]]), Pippin, Capo, Edu and advisors about possible outcome for the 2 weeks.
* Going for a web based interface of visual git history and diff of SVG files
* Looking for inspiration and possible tools:
* [[http://timeline.verite.co/|Timeline.js]]
* [[http://almende.github.io/chap-links-library/timeline.html|Timeline]]
* [[http://almende.github.io/chap-links-library/timeline.html|Visual Version Control System]] research by LGRU
* [[https://sites.google.com/site/httimchen/home|Non Linear Revision System & Data-driven History List for Image Editing]]
* [[https://sites.google.com/site/httimchen/home|Beanstalk preview & compare tool]]
* [[https://github.com/Phrogz/context-blender|HTML canvas Blend modes]]
* [[https://github.com/blog/817-behold-image-view-modes|Github image view modes]] Thx [[https://twitter.com/raphaelbastide|@RaphaelBastide]] for the link.