]> git.quilime.com - plog.git/commitdiff
Added data caching and updated entries to objects.
authorGabriel Dunne <gdunne@quilime.com>
Mon, 3 Sep 2012 03:19:57 +0000 (20:19 -0700)
committerGabriel Dunne <gdunne@quilime.com>
Mon, 3 Sep 2012 03:19:57 +0000 (20:19 -0700)
31 files changed:
content/process/schedule
content/projects/seaquence
css/style.css
data/.json [new file with mode: 0644]
data/news.json [new file with mode: 0644]
data/process.json [new file with mode: 0644]
data/projects.json [new file with mode: 0644]
data/tag/audio.json [new file with mode: 0644]
data/tag/installation.json [new file with mode: 0644]
data/tag/performance.json [new file with mode: 0644]
data/tag/projection.json [new file with mode: 0644]
data/tag/visual.json [new file with mode: 0644]
data/tag/www.json [new file with mode: 0644]
data/tags.json
index.php
lib/data.php
lib/init.php
pages/contact
pages/tag
templates/default.html.tpl
templates/edit.html.tpl
templates/entry.html.tpl
templates/entry.news.html.tpl
templates/nav.html.tpl
templates/news.html.tpl
templates/page.html.tpl
templates/project.html.tpl
templates/projects.html copy.tpl [deleted file]
templates/projects.html.tpl
templates/single.html.tpl
templates/tag.html.tpl

index 238e6e0d07d292ef2c8af69b42128f6d44888b71..a8db6de052b44347109acdb8809fb35a56b5aaa5 100755 (executable)
@@ -1,63 +1,62 @@
-title = time
-date = Tue May 24 21:43:54 2011
---
-
-
-honest schedule:
-
-<pre>    
- 6
- 7   
- 8   
- 9   (if lucky) wake, lay around
-10   rushed coffee with love
-11   studio
-12
- 1   
- 2   small break (outside), food
- 3   work
- 4   
- 5   
- 6   
- 7   
- 8   dinner (take out)
- 9   work
-10   
-11   
-12   home
- 1   work
- 2
- 3   sleep
- 4
- 5
-</pre>
-
-
-ideal schedule:
-
-<pre>    
- 6
- 7   wake
- 8   breakfast with love
- 9   get to studio
-10   
-11   work
-12
- 1   break (outside)
- 2   work
- 3   
- 4   
- 5
- 6   dinner with love
- 7   
- 8   work wrap up
- 9   relax
-10
-11   sleep
-12
- 1
- 2
- 3
- 4
- 5
+title = time\r
+date = Tue May 24 21:43:54 2011\r
+--\r
+\r
+honest schedule:\r
+\r
+<pre>    \r
+ 6\r
+ 7   \r
+ 8   \r
+ 9   (if lucky) wake, lay around\r
+10   rushed coffee with love\r
+11   studio\r
+12\r
+ 1   \r
+ 2   small break (outside), food\r
+ 3   work\r
+ 4   \r
+ 5   \r
+ 6   \r
+ 7   \r
+ 8   dinner (take out)\r
+ 9   work\r
+10   \r
+11   \r
+12   home\r
+ 1   work\r
+ 2\r
+ 3   sleep\r
+ 4\r
+ 5\r
+</pre>\r
+\r
+\r
+ideal schedule:\r
+\r
+<pre>    \r
+ 6\r
+ 7   wake\r
+ 8   breakfast with love\r
+ 9   get to studio\r
+10   \r
+11   work\r
+12\r
+ 1   break (outside)\r
+ 2   work\r
+ 3   \r
+ 4   \r
+ 5\r
+ 6   dinner with love\r
+ 7   \r
+ 8   work wrap up\r
+ 9   relax\r
+10\r
+11   sleep\r
+12\r
+ 1\r
+ 2\r
+ 3\r
+ 4\r
+ 5\r
 </pre>
\ No newline at end of file
index 796c9c1c9cfada23d497dcba540ef9d593839814..d78b472a2d3ed90436fc958e85a7a4dc476be8a3 100755 (executable)
@@ -5,4 +5,4 @@ date = 2010-10-04
 \r
 Alpha release of [Seaquence: A experimental web-based musical ecosystem](http://seaquence.org). \r
 \r
-[http://seaquence.org](http://seaquence.org)\r
+[link](http://seaquence.org)\r
index 55352a78ff6d300c7b281423e178008e2d32e2e1..4dab83d0ca41683ade0c27b3eae49edcdffcb1dc 100644 (file)
@@ -1,10 +1,10 @@
 html, body, table {
   color: #555555;
   font-family: sans-serif;
-  font-size: 12px;
+  font-size:13px;
   line-height: 1.5em; }
 body {
-  margin: 20px; }
+  margin: 2em; }
 
 a {
   border: 0pt none;
diff --git a/data/.json b/data/.json
new file mode 100644 (file)
index 0000000..5e3149c
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"date":"2009"},"title":"synonymovement","filename":"synonymovement","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/synonymovement","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><?\n$w = 640;\n$h = 496;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/synonymovement.mov.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/synonymovement.mov.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\naudio\/visual software, video installation<br \/>\nc++, openGL, ableton live, max\/msp\n<\/span><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/synonymovement\/","thumb":"http:\/\/p\/media\/projects\/synonymovement\/thumb.png","url":"http:\/\/p\/projects\/synonymovement"},{"config":{"title":"Stars","date":"2009"},"title":"Stars","filename":"stars","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/stars","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><img src=\"<?=$data['media']?>\/stars.jpg\" \/><\/p>\n\n<h2>Stars<\/h2>\n\n<p><em>projection, visual software (c++), audio (ableton live, max\/msp)<\/em><\/p>\n\n<p>An exploration of infinite\/finite space. The viewer transitions between macro and micro environments of mathematically infinite scale. As the viewer moves through multiple spaces, their scope and perspective widens and transcends while space becomes infinitely big and infinitely small simultaneously.<\/p>\n\n<p><br \/><\/p>\n\n<p><img src=\"<?=$data['media']?>\/47_roof.jpg\"\/><\/p>\n\n<h3>video<\/h3>\n\n<p><br \/><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"640\" height=\"496\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\"><\/p>\n\n<p><param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/stars.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\">\n<embed name = \"qt_object\" width=\"640\" height=\"496\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/stars.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/stars\/","thumb":"http:\/\/p\/media\/projects\/stars\/thumb.png","url":"http:\/\/p\/projects\/stars"},{"config":{"title":"rattle","date":"2009"},"title":"rattle","filename":"rattle","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/rattle","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><?\n$w = 640;\n$h = 496;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/rattle.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/rattle.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\ninteractive software, synthesiser \n<br \/>\nbuilt with Processing, ChucK\n<\/span><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/rattle\/","thumb":"http:\/\/p\/media\/projects\/rattle\/thumb.png","url":"http:\/\/p\/projects\/rattle"},{"config":{"title":"cabspotting","date":"2009","tags":"datavis software stamen"},"title":"cabspotting","filename":"cabspotting","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/cabspotting","fileInfo":{},"timestamp":"1346641740","tags":["datavis","software","stamen"],"content":"<p><?\n    $w = 800;\n    $h = 516;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/cabspotting_web.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\">\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/cabspotting_web.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\nSF taxi visualization <br \/>\nbuilt with Java\/Processing\n<\/span><\/p>\n\n<p>part of the NY MOMA permenant collection<\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/cabspotting\/","thumb":"http:\/\/p\/media\/projects\/cabspotting\/thumb.png","url":"http:\/\/p\/projects\/cabspotting"},{"config":{"title":"obsession","date":"2003","thumb":"\/media\/projects\/obsession\/thumb.png"},"title":"obsession","filename":"obsession","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/obsession","fileInfo":{},"timestamp":"1346641380","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/projects\/obsession\/detail.jpg\"><br \/>\n<span class=\"caption\">copper wire, masonite. 3.5' x 4.5'<\/span><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/obsession\/","thumb":"\/media\/projects\/obsession\/thumb.png","url":"http:\/\/p\/projects\/obsession"},{"config":{"title":"Bodyneg","date":"2002","tags":"print installation","thumb":"\/media\/projects\/bodyneg\/thumb.png"},"title":"Bodyneg","filename":"bodyneg","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/bodyneg","fileInfo":{},"timestamp":"1346641320","tags":["print","installation"],"content":"<p><img src=\"\/media\/projects\/bodyneg\/BODYNEG.jpg\" \/>\n<br \/>\n<em>ink press, 5 wall-mounted panels. 8' x 4' x 2'<\/em><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/bodyneg\/","thumb":"\/media\/projects\/bodyneg\/thumb.png","url":"http:\/\/p\/projects\/bodyneg"},{"config":{"title":"Film\/Code remix","date":null},"title":"Film\/Code remix","filename":"bavc_2013","path":"\/Users\/gdunne\/_portfolio\/www\/content\/news\/bavc_2013","fileInfo":{},"timestamp":1346635956,"tags":null,"content":"<p>Co-teaching a Youth Film\/Code Remix class at BAVC, starting in October.<br \/>\n<a href=\"http:\/\/bavc.org\">link<\/a><\/p>\n","cat":{"name":"news","url":"\/news\/"},"media":"http:\/\/p\/media\/news\/bavc_2013\/","thumb":"http:\/\/p\/media\/news\/bavc_2013\/thumb.png","url":"http:\/\/p\/news\/bavc_2013"},{"config":{"date":"Tue May 24 22:00:58 2011","hide_title":"1"},"title":"permenant","filename":"permenant","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/permenant","fileInfo":{},"timestamp":"1306299658","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/img\/perm.png\" \/><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/permenant\/","thumb":"http:\/\/p\/media\/process\/permenant\/thumb.png","url":"http:\/\/p\/process\/permenant"},{"config":{"title":"time","date":"Tue May 24 21:43:54 2011"},"title":"time","filename":"schedule","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/schedule","fileInfo":{},"timestamp":"1306298634","tags":null,"content":"<p>honest schedule:<\/p>\n\n<pre>    \n 6\n 7   \n 8   \n 9   (if lucky) wake, lay around\n10   rushed coffee with love\n11   studio\n12\n 1   \n 2   small break (outside), food\n 3   work\n 4   \n 5   \n 6   \n 7   \n 8   dinner (take out)\n 9   work\n10   \n11   \n12   home\n 1   work\n 2\n 3   sleep\n 4\n 5\n<\/pre>\n\n<p>ideal schedule:<\/p>\n\n<pre>    \n 6\n 7   wake\n 8   breakfast with love\n 9   get to studio\n10   \n11   work\n12\n 1   break (outside)\n 2   work\n 3   \n 4   \n 5\n 6   dinner with love\n 7   \n 8   work wrap up\n 9   relax\n10\n11   sleep\n12\n 1\n 2\n 3\n 4\n 5\n<\/pre>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/schedule\/","thumb":"http:\/\/p\/media\/process\/schedule\/thumb.png","url":"http:\/\/p\/process\/schedule"},{"config":{"title":"clmpr.com","date":"may 24 2011","tags":"code www opensource"},"title":"clmpr.com","filename":"clmpr","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/clmpr","fileInfo":{},"timestamp":"1306220400","tags":["code","www","opensource"],"content":"<p><a href=\"http:\/\/clmpr.com\">\n<img src=\"<?=MEDIA_ROOT?>\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n<p>clmpr is a minimal open-source bookmarking engine.<\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/clmpr\/","thumb":"http:\/\/p\/media\/process\/clmpr\/thumb.png","url":"http:\/\/p\/process\/clmpr"},{"config":{"title":"ICOSI Performance at Gray Area Foundation for the Arts","date":"2010-11-05","tags":"projection-mapping performance audiovisual"},"title":"ICOSI Performance at Gray Area Foundation for the Arts","filename":"icosi_gaffta","path":"\/Users\/gdunne\/_portfolio\/www\/content\/news\/icosi_gaffta","fileInfo":{},"timestamp":"1288940400","tags":["projection-mapping","performance","audiovisual"],"content":"<p>ICOSI Performance at Gray Area Foundation for the Arts<br \/>\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM<br \/>\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco<br \/>\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)<br \/>\n<a href=\"http:\/\/www.gaffta.org\/2010\/11\/03\/takes-on-sound-space-symposium-performances-this-saturday\/\">link<\/a><\/p>\n","cat":{"name":"news","url":"\/news\/"},"media":"http:\/\/p\/media\/news\/icosi_gaffta\/","thumb":"http:\/\/p\/media\/news\/icosi_gaffta\/thumb.png","url":"http:\/\/p\/news\/icosi_gaffta"},{"config":{"title":"Seaquence","tags":"audio www","date":"2010-10-04"},"title":"Seaquence","filename":"seaquence","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/seaquence","fileInfo":{},"timestamp":"1286175600","tags":["audio","www"],"content":"<p>Alpha release of <a href=\"http:\/\/seaquence.org\">Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n<p><a href=\"http:\/\/seaquence.org\">link<\/a><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/seaquence\/","thumb":"http:\/\/p\/media\/projects\/seaquence\/thumb.png","url":"http:\/\/p\/projects\/seaquence"},{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"},{"config":{"title":"icosi fabrication 2","date":"2010-07-07","tags":"icosi fabrication"},"title":"icosi fabrication 2","filename":"icosi2","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi2","fileInfo":{},"timestamp":"1278486000","tags":["icosi","fabrication"],"content":"<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4773799092\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4140\/4773799092_75e68e4e66.jpg\" alt=\"img\" \/><\/a><br \/>\nAssembly test w\/stretched panels in the studio (just hanging).<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4773722288\/in\/photostream\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4123\/4773722288_dd579b9956.jpg\" alt=\"\" \/><\/a><br \/>\nAssembly test.<\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi2\/","thumb":"http:\/\/p\/media\/process\/icosi2\/thumb.png","url":"http:\/\/p\/process\/icosi2"},{"config":{"title":"icosi fabrication","date":"2010-07-01","tags":"fabrication icosi design sculpture mapping"},"title":"icosi fabrication","filename":"icosi","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi","fileInfo":{},"timestamp":"1277967600","tags":["fabrication","icosi","design","sculpture","mapping"],"content":"<p>Fabrication process for ICOSI projection surface. The form is a section of an icosidodecahedron (scaled on the z-axis by 0.5).<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4743498955\/\" title=\"view on flickr\">\n<img src=\"http:\/\/farm5.static.flickr.com\/4077\/4743498955_d8d524bd27.jpg\" \/><\/a>\n<br \/>\nA laser-cut a small working model.<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4744981890\/\" title=\"view on flickr\"><img src=\"http:\/\/farm5.static.flickr.com\/4142\/4744981890_2a41c9f374.jpg\" \/><\/a><br \/>\nCustom jig for slicing the angles.<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4769443639\/in\/photostream\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4076\/4769443639_728b077b3a.jpg\" \/><\/a><br \/>\nPriming the panels, readying them to be stretched with screen-fabric.<\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi\/","thumb":"http:\/\/p\/media\/process\/icosi\/thumb.png","url":"http:\/\/p\/process\/icosi"},{"config":{"title":"ICOSI Tech Rider","date":"2010-06-10"},"title":"ICOSI Tech Rider","filename":"icosi_rider","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_rider","fileInfo":{},"timestamp":"1276153200","tags":null,"content":"<p>Tech rider developed for new project:<\/p>\n\n<p><a href=\"\/media\/projects\/icosi\/rider_02.png\"><img src=\"\/media\/projects\/icosi\/rider_02_t.png\" alt=\"\" \/><\/a> &nbsp;&nbsp;\n<a href=\"\/media\/projects\/icosi\/rider_01.png\"><img src=\"\/media\/projects\/icosi\/rider_01_t.png\" alt=\"\" \/><\/a><\/p>\n\n<p><a href=\"http:\/\/media.quilime.com\/files\/projects\/icosi\/gdunne_rider_diag.pdf\">pdf<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_rider\/","thumb":"http:\/\/p\/media\/process\/icosi_rider\/thumb.png","url":"http:\/\/p\/process\/icosi_rider"},{"config":{"title":"Boat","date":"2007-07-10","tags":"timelapse photography","thumb":"\/media\/projects\/boat\/thumb.png"},"title":"Boat","filename":"boat","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/boat","fileInfo":{},"timestamp":"1184050800","tags":["timelapse","photography"],"content":"<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"535\" height=\"374\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"true\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"\/media\/projects\/boat\/boat.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"535\" height=\"374\" controller=\"true\" loop=\"true\" autoplay=\"true\" src=\"\/media\/projects\/boat\/boat.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><em>photo timelapse<\/em><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/boat\/","thumb":"\/media\/projects\/boat\/thumb.png","url":"http:\/\/p\/projects\/boat"},{"config":{"date":"2003-05-01"},"title":"egg","filename":"egg","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/egg","fileInfo":{},"timestamp":"1051772400","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/projects\/egg\/egg.jpg\">\n<span class=\"caption\">marker, wire. 4\" x 2.5\"<\/span><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/egg\/","thumb":"http:\/\/p\/media\/process\/egg\/thumb.png","url":"http:\/\/p\/process\/egg"}]}
\ No newline at end of file
diff --git a/data/news.json b/data/news.json
new file mode 100644 (file)
index 0000000..9167dab
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"Film\/Code remix","date":null},"title":"Film\/Code remix","filename":"bavc_2013","path":"\/Users\/gdunne\/_portfolio\/www\/content\/news\/bavc_2013","fileInfo":{},"timestamp":1346635956,"tags":null,"content":"<p>Co-teaching a Youth Film\/Code Remix class at BAVC, starting in October.<br \/>\n<a href=\"http:\/\/bavc.org\">link<\/a><\/p>\n","cat":{"name":".\/news","url":"\/.\/news\/"},"media":"http:\/\/p\/media\/.\/news\/bavc_2013\/","thumb":"http:\/\/p\/media\/.\/news\/bavc_2013\/thumb.png","url":"http:\/\/p\/.\/news\/bavc_2013"},{"config":{"title":"ICOSI Performance at Gray Area Foundation for the Arts","date":"2010-11-05","tags":"projection-mapping performance audiovisual"},"title":"ICOSI Performance at Gray Area Foundation for the Arts","filename":"icosi_gaffta","path":"\/Users\/gdunne\/_portfolio\/www\/content\/news\/icosi_gaffta","fileInfo":{},"timestamp":"1288940400","tags":["projection-mapping","performance","audiovisual"],"content":"<p>ICOSI Performance at Gray Area Foundation for the Arts<br \/>\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM<br \/>\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco<br \/>\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)<br \/>\n<a href=\"http:\/\/www.gaffta.org\/2010\/11\/03\/takes-on-sound-space-symposium-performances-this-saturday\/\">link<\/a><\/p>\n","cat":{"name":".\/news","url":"\/.\/news\/"},"media":"http:\/\/p\/media\/.\/news\/icosi_gaffta\/","thumb":"http:\/\/p\/media\/.\/news\/icosi_gaffta\/thumb.png","url":"http:\/\/p\/.\/news\/icosi_gaffta"}]}
\ No newline at end of file
diff --git a/data/process.json b/data/process.json
new file mode 100644 (file)
index 0000000..067c716
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"date":"Tue May 24 22:00:58 2011","hide_title":"1"},"title":"permenant","filename":"permenant","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/permenant","fileInfo":{},"timestamp":"1306299658","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/img\/perm.png\" \/><\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/permenant\/","thumb":"http:\/\/p\/media\/.\/process\/permenant\/thumb.png","url":"http:\/\/p\/.\/process\/permenant"},{"config":{"title":"time","date":"Tue May 24 21:43:54 2011"},"title":"time","filename":"schedule","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/schedule","fileInfo":{},"timestamp":"1306298634","tags":null,"content":"<p>honest schedule:<\/p>\n\n<pre>    \n 6\n 7   \n 8   \n 9   (if lucky) wake, lay around\n10   rushed coffee with love\n11   studio\n12\n 1   \n 2   small break (outside), food\n 3   work\n 4   \n 5   \n 6   \n 7   \n 8   dinner (take out)\n 9   work\n10   \n11   \n12   home\n 1   work\n 2\n 3   sleep\n 4\n 5\n<\/pre>\n\n<p>ideal schedule:<\/p>\n\n<pre>    \n 6\n 7   wake\n 8   breakfast with love\n 9   get to studio\n10   \n11   work\n12\n 1   break (outside)\n 2   work\n 3   \n 4   \n 5\n 6   dinner with love\n 7   \n 8   work wrap up\n 9   relax\n10\n11   sleep\n12\n 1\n 2\n 3\n 4\n 5\n<\/pre>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/schedule\/","thumb":"http:\/\/p\/media\/.\/process\/schedule\/thumb.png","url":"http:\/\/p\/.\/process\/schedule"},{"config":{"title":"clmpr.com","date":"may 24 2011","tags":"code www opensource"},"title":"clmpr.com","filename":"clmpr","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/clmpr","fileInfo":{},"timestamp":"1306220400","tags":["code","www","opensource"],"content":"<p><a href=\"http:\/\/clmpr.com\">\n<img src=\"<?=MEDIA_ROOT?>\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n<p>clmpr is a minimal open-source bookmarking engine.<\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/clmpr\/","thumb":"http:\/\/p\/media\/.\/process\/clmpr\/thumb.png","url":"http:\/\/p\/.\/process\/clmpr"},{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/.\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/.\/process\/icosi_biennial"},{"config":{"title":"icosi fabrication 2","date":"2010-07-07","tags":"icosi fabrication"},"title":"icosi fabrication 2","filename":"icosi2","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi2","fileInfo":{},"timestamp":"1278486000","tags":["icosi","fabrication"],"content":"<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4773799092\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4140\/4773799092_75e68e4e66.jpg\" alt=\"img\" \/><\/a><br \/>\nAssembly test w\/stretched panels in the studio (just hanging).<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4773722288\/in\/photostream\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4123\/4773722288_dd579b9956.jpg\" alt=\"\" \/><\/a><br \/>\nAssembly test.<\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/icosi2\/","thumb":"http:\/\/p\/media\/.\/process\/icosi2\/thumb.png","url":"http:\/\/p\/.\/process\/icosi2"},{"config":{"title":"icosi fabrication","date":"2010-07-01","tags":"fabrication icosi design sculpture mapping"},"title":"icosi fabrication","filename":"icosi","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi","fileInfo":{},"timestamp":"1277967600","tags":["fabrication","icosi","design","sculpture","mapping"],"content":"<p>Fabrication process for ICOSI projection surface. The form is a section of an icosidodecahedron (scaled on the z-axis by 0.5).<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4743498955\/\" title=\"view on flickr\">\n<img src=\"http:\/\/farm5.static.flickr.com\/4077\/4743498955_d8d524bd27.jpg\" \/><\/a>\n<br \/>\nA laser-cut a small working model.<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4744981890\/\" title=\"view on flickr\"><img src=\"http:\/\/farm5.static.flickr.com\/4142\/4744981890_2a41c9f374.jpg\" \/><\/a><br \/>\nCustom jig for slicing the angles.<\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/4769443639\/in\/photostream\/\"><img src=\"http:\/\/farm5.static.flickr.com\/4076\/4769443639_728b077b3a.jpg\" \/><\/a><br \/>\nPriming the panels, readying them to be stretched with screen-fabric.<\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/icosi\/","thumb":"http:\/\/p\/media\/.\/process\/icosi\/thumb.png","url":"http:\/\/p\/.\/process\/icosi"},{"config":{"title":"ICOSI Tech Rider","date":"2010-06-10"},"title":"ICOSI Tech Rider","filename":"icosi_rider","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_rider","fileInfo":{},"timestamp":"1276153200","tags":null,"content":"<p>Tech rider developed for new project:<\/p>\n\n<p><a href=\"\/media\/projects\/icosi\/rider_02.png\"><img src=\"\/media\/projects\/icosi\/rider_02_t.png\" alt=\"\" \/><\/a> &nbsp;&nbsp;\n<a href=\"\/media\/projects\/icosi\/rider_01.png\"><img src=\"\/media\/projects\/icosi\/rider_01_t.png\" alt=\"\" \/><\/a><\/p>\n\n<p><a href=\"http:\/\/media.quilime.com\/files\/projects\/icosi\/gdunne_rider_diag.pdf\">pdf<\/a><\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/icosi_rider\/","thumb":"http:\/\/p\/media\/.\/process\/icosi_rider\/thumb.png","url":"http:\/\/p\/.\/process\/icosi_rider"},{"config":{"date":"2003-05-01"},"title":"egg","filename":"egg","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/egg","fileInfo":{},"timestamp":"1051772400","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/projects\/egg\/egg.jpg\">\n<span class=\"caption\">marker, wire. 4\" x 2.5\"<\/span><\/p>\n","cat":{"name":".\/process","url":"\/.\/process\/"},"media":"http:\/\/p\/media\/.\/process\/egg\/","thumb":"http:\/\/p\/media\/.\/process\/egg\/thumb.png","url":"http:\/\/p\/.\/process\/egg"}]}
\ No newline at end of file
diff --git a/data/projects.json b/data/projects.json
new file mode 100644 (file)
index 0000000..1fa4101
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"date":"2009"},"title":"synonymovement","filename":"synonymovement","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/synonymovement","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><?\n$w = 640;\n$h = 496;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/synonymovement.mov.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/synonymovement.mov.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\naudio\/visual software, video installation<br \/>\nc++, openGL, ableton live, max\/msp\n<\/span><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/synonymovement\/","thumb":"http:\/\/p\/media\/.\/projects\/synonymovement\/thumb.png","url":"http:\/\/p\/.\/projects\/synonymovement"},{"config":{"title":"Stars","date":"2009"},"title":"Stars","filename":"stars","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/stars","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><img src=\"<?=$data['media']?>\/stars.jpg\" \/><\/p>\n\n<h2>Stars<\/h2>\n\n<p><em>projection, visual software (c++), audio (ableton live, max\/msp)<\/em><\/p>\n\n<p>An exploration of infinite\/finite space. The viewer transitions between macro and micro environments of mathematically infinite scale. As the viewer moves through multiple spaces, their scope and perspective widens and transcends while space becomes infinitely big and infinitely small simultaneously.<\/p>\n\n<p><br \/><\/p>\n\n<p><img src=\"<?=$data['media']?>\/47_roof.jpg\"\/><\/p>\n\n<h3>video<\/h3>\n\n<p><br \/><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"640\" height=\"496\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\"><\/p>\n\n<p><param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/stars.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\">\n<embed name = \"qt_object\" width=\"640\" height=\"496\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/stars.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/stars\/","thumb":"http:\/\/p\/media\/.\/projects\/stars\/thumb.png","url":"http:\/\/p\/.\/projects\/stars"},{"config":{"title":"rattle","date":"2009"},"title":"rattle","filename":"rattle","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/rattle","fileInfo":{},"timestamp":"1346641740","tags":null,"content":"<p><?\n$w = 640;\n$h = 496;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/rattle.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/rattle.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\ninteractive software, synthesiser \n<br \/>\nbuilt with Processing, ChucK\n<\/span><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/rattle\/","thumb":"http:\/\/p\/media\/.\/projects\/rattle\/thumb.png","url":"http:\/\/p\/.\/projects\/rattle"},{"config":{"title":"cabspotting","date":"2009","tags":"datavis software stamen"},"title":"cabspotting","filename":"cabspotting","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/cabspotting","fileInfo":{},"timestamp":"1346641740","tags":["datavis","software","stamen"],"content":"<p><?\n    $w = 800;\n    $h = 516;\n?><\/p>\n\n<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"false\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"<?=$data['media']?>\/cabspotting_web.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\">\n<embed name = \"qt_object\" width=\"<?=$w?>\" height=\"<?=$h?>\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"<?=$data['media']?>\/cabspotting_web.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><br \/>\n<span class=\"caption\">\nSF taxi visualization <br \/>\nbuilt with Java\/Processing\n<\/span><\/p>\n\n<p>part of the NY MOMA permenant collection<\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/cabspotting\/","thumb":"http:\/\/p\/media\/.\/projects\/cabspotting\/thumb.png","url":"http:\/\/p\/.\/projects\/cabspotting"},{"config":{"title":"obsession","date":"2003","thumb":"\/media\/projects\/obsession\/thumb.png"},"title":"obsession","filename":"obsession","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/obsession","fileInfo":{},"timestamp":"1346641380","tags":null,"content":"<p><img src=\"<?=MEDIA_ROOT?>\/projects\/obsession\/detail.jpg\"><br \/>\n<span class=\"caption\">copper wire, masonite. 3.5' x 4.5'<\/span><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/obsession\/","thumb":"\/media\/projects\/obsession\/thumb.png","url":"http:\/\/p\/.\/projects\/obsession"},{"config":{"title":"Bodyneg","date":"2002","tags":"print installation","thumb":"\/media\/projects\/bodyneg\/thumb.png"},"title":"Bodyneg","filename":"bodyneg","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/bodyneg","fileInfo":{},"timestamp":"1346641320","tags":["print","installation"],"content":"<p><img src=\"\/media\/projects\/bodyneg\/BODYNEG.jpg\" \/>\n<br \/>\n<em>ink press, 5 wall-mounted panels. 8' x 4' x 2'<\/em><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/bodyneg\/","thumb":"\/media\/projects\/bodyneg\/thumb.png","url":"http:\/\/p\/.\/projects\/bodyneg"},{"config":{"title":"Seaquence","tags":"audio www","date":"2010-10-04"},"title":"Seaquence","filename":"seaquence","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/seaquence","fileInfo":{},"timestamp":"1286175600","tags":["audio","www"],"content":"<p>Alpha release of <a href=\"http:\/\/seaquence.org\">Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n<p><a href=\"http:\/\/seaquence.org\">link<\/a><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/seaquence\/","thumb":"http:\/\/p\/media\/.\/projects\/seaquence\/thumb.png","url":"http:\/\/p\/.\/projects\/seaquence"},{"config":{"title":"Boat","date":"2007-07-10","tags":"timelapse photography","thumb":"\/media\/projects\/boat\/thumb.png"},"title":"Boat","filename":"boat","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/boat","fileInfo":{},"timestamp":"1184050800","tags":["timelapse","photography"],"content":"<p><object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" id=\"qt_object\" width=\"535\" height=\"374\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n<param name=\"type\" value=\"video\/quicktime\">\n<param name=\"name\" value=\"qt_object\">\n<param name=\"nocache\" value=\"true\">\n<param name=\"autoplay\" value=\"true\">\n<param name=\"kioskmode\" value=\"true\">\n<param name=\"controller\" value=\"true\">\n<param name=\"loop\" value=\"true\">\n<param name=\"bgcolor\" value=\"#000000\">\n<param name=\"src\" value=\"\/media\/projects\/boat\/boat.mov\">\n<param name=\"pluginspage\" value=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\"><br \/>\n<embed name = \"qt_object\" width=\"535\" height=\"374\" controller=\"true\" loop=\"true\" autoplay=\"true\" src=\"\/media\/projects\/boat\/boat.mov\" kioskmode=\"true\" nocache=\"true\" type=\"video\/quicktime\" bgcolor=\"#000000\" border=\"0\" pluginspage=\"http:\/\/www.apple.com\/quicktime\/download\/indext.html\" enablejavascript=\"true\">\n<\/embed>\n<\/object><\/p>\n\n<p><em>photo timelapse<\/em><\/p>\n","cat":{"name":".\/projects","url":"\/.\/projects\/"},"media":"http:\/\/p\/media\/.\/projects\/boat\/","thumb":"\/media\/projects\/boat\/thumb.png","url":"http:\/\/p\/.\/projects\/boat"}]}
\ No newline at end of file
diff --git a/data/tag/audio.json b/data/tag/audio.json
new file mode 100644 (file)
index 0000000..ef92ea8
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"Seaquence","tags":"audio www","date":"2010-10-04"},"title":"Seaquence","filename":"seaquence","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/seaquence","fileInfo":{},"timestamp":"1286175600","tags":["audio","www"],"content":"<p>Alpha release of <a href=\"http:\/\/seaquence.org\">Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n<p><a href=\"http:\/\/seaquence.org\">link<\/a><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/seaquence\/","thumb":"http:\/\/p\/media\/projects\/seaquence\/thumb.png","url":"http:\/\/p\/projects\/seaquence"},{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"}]}
\ No newline at end of file
diff --git a/data/tag/installation.json b/data/tag/installation.json
new file mode 100644 (file)
index 0000000..9f56a21
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"Bodyneg","date":"2002","tags":"print installation","thumb":"\/media\/projects\/bodyneg\/thumb.png"},"title":"Bodyneg","filename":"bodyneg","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/bodyneg","fileInfo":{},"timestamp":"1346641320","tags":["print","installation"],"content":"<p><img src=\"\/media\/projects\/bodyneg\/BODYNEG.jpg\" \/>\n<br \/>\n<em>ink press, 5 wall-mounted panels. 8' x 4' x 2'<\/em><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/bodyneg\/","thumb":"\/media\/projects\/bodyneg\/thumb.png","url":"http:\/\/p\/projects\/bodyneg"},{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"}]}
\ No newline at end of file
diff --git a/data/tag/performance.json b/data/tag/performance.json
new file mode 100644 (file)
index 0000000..478ee96
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"ICOSI Performance at Gray Area Foundation for the Arts","date":"2010-11-05","tags":"projection-mapping performance audiovisual"},"title":"ICOSI Performance at Gray Area Foundation for the Arts","filename":"icosi_gaffta","path":"\/Users\/gdunne\/_portfolio\/www\/content\/news\/icosi_gaffta","fileInfo":{},"timestamp":"1288940400","tags":["projection-mapping","performance","audiovisual"],"content":"<p>ICOSI Performance at Gray Area Foundation for the Arts<br \/>\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM<br \/>\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco<br \/>\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)<br \/>\n<a href=\"http:\/\/www.gaffta.org\/2010\/11\/03\/takes-on-sound-space-symposium-performances-this-saturday\/\">link<\/a><\/p>\n","cat":{"name":"news","url":"\/news\/"},"media":"http:\/\/p\/media\/news\/icosi_gaffta\/","thumb":"http:\/\/p\/media\/news\/icosi_gaffta\/thumb.png","url":"http:\/\/p\/news\/icosi_gaffta"},{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"}]}
\ No newline at end of file
diff --git a/data/tag/projection.json b/data/tag/projection.json
new file mode 100644 (file)
index 0000000..b9e78da
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"}]}
\ No newline at end of file
diff --git a/data/tag/visual.json b/data/tag/visual.json
new file mode 100644 (file)
index 0000000..b9e78da
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"ICOS Performance @ Biennial of the Americas, CO","tags":"performance installation projection visual audio","notes":"this might need to be split up into a few posts","date":"2010-07-29"},"title":"ICOS Performance @ Biennial of the Americas, CO","filename":"icosi_biennial","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/icosi_biennial","fileInfo":{},"timestamp":"1280386800","tags":["performance","installation","projection","visual","audio"],"content":"<p><img src=\"http:\/\/farm5.static.flickr.com\/4110\/4847387674_5419f0b672.jpg\" \/><\/p>\n\n<p><em>ICOSI<\/em> is an audio\/visual sculptural performance which was shown at the Biennial of the Americas, Denver CO, Jul 29 2010.<\/p>\n\n<p>audio synthesis created with Ablton Live\/Max\/MSP, custom software (OPENGL, Processing). Custom surface fabrication\ndimensions: 230cm x 230 cm (7.9' x 7.9')<\/p>\n\n<p>The software and audio toolset was developed over three weeks leading up to the performance. The performance dramatically split my focus into two places (music and visuals), which was a juggle that I didn't fully anticipate as I was developing the visual software on one split-screen before the performance. Inspired to continue pursuing interfaces and controllers to overcome the separation of creating audio and visuals simultaneously.<\/p>\n\n<p>The multiple mediums (sculpture, sound, visual media) of this particular project was fascinating. Each iteration represents a process of my own curiosities in technology, consciousness, spirituality, design, and fabrication.<\/p>\n\n<p>The piece represents my practice and experiences in regards to my own spiritual growth and experience. Geometrically, the form is inspired by sacred polyhedra that represent forms of transition. The choice of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosidodecahedron\">icosidodecahedron<\/a> represents transition of two frequencies, represented by an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Icosahedron\">icosahedron<\/a> and its dual polyhedron, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Dodecahedron\">dodecahedron<\/a>.<\/p>\n\n<p>The form is composed of 7 panels trimmed and scaled from a full icosidodecahedron. The visuals follow the structure of the form nearly explicitly, with the exception of textural elements.<\/p>\n\n<p>The inclusion of the Merkaba\/Star Tetrahedron represents an inspiration for the visuals. The Merkaba, a dual spinning pyramid, represents a spiritual light vehicle used by the ancients to transcend to and contact spiritual realms. \"Mer\" means Light. \"Ka\" means Spirit. \"Ba\" means Body. Mer-Ka-Ba means the spirit\/body surrounded by counter-rotating fields of light, (wheels within wheels), spirals of energy as in DNA, which transports spirit\/body from one dimension to another. <a href=\"http:\/\/www.crystalinks.com\/merkaba.html\">[1]<\/a><\/p>\n\n<p><a href=\"http:\/\/www.flickr.com\/photos\/quilime\/sets\/72157624499344281\/with\/4847387648\/\">more photos via flickr &rarr;<\/a><\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/icosi_biennial\/","thumb":"http:\/\/p\/media\/process\/icosi_biennial\/thumb.png","url":"http:\/\/p\/process\/icosi_biennial"}]}
\ No newline at end of file
diff --git a/data/tag/www.json b/data/tag/www.json
new file mode 100644 (file)
index 0000000..76359b4
--- /dev/null
@@ -0,0 +1 @@
+{"entries":[{"config":{"title":"clmpr.com","date":"may 24 2011","tags":"code www opensource"},"title":"clmpr.com","filename":"clmpr","path":"\/Users\/gdunne\/_portfolio\/www\/content\/process\/clmpr","fileInfo":{},"timestamp":"1306220400","tags":["code","www","opensource"],"content":"<p><a href=\"http:\/\/clmpr.com\">\n<img src=\"<?=MEDIA_ROOT?>\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n<p>clmpr is a minimal open-source bookmarking engine.<\/p>\n","cat":{"name":"process","url":"\/process\/"},"media":"http:\/\/p\/media\/process\/clmpr\/","thumb":"http:\/\/p\/media\/process\/clmpr\/thumb.png","url":"http:\/\/p\/process\/clmpr"},{"config":{"title":"Seaquence","tags":"audio www","date":"2010-10-04"},"title":"Seaquence","filename":"seaquence","path":"\/Users\/gdunne\/_portfolio\/www\/content\/projects\/seaquence","fileInfo":{},"timestamp":"1286175600","tags":["audio","www"],"content":"<p>Alpha release of <a href=\"http:\/\/seaquence.org\">Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n<p><a href=\"http:\/\/seaquence.org\">link<\/a><\/p>\n","cat":{"name":"projects","url":"\/projects\/"},"media":"http:\/\/p\/media\/projects\/seaquence\/","thumb":"http:\/\/p\/media\/projects\/seaquence\/thumb.png","url":"http:\/\/p\/projects\/seaquence"}]}
\ No newline at end of file
index 50fb70b84d7a524f814f229aced8459cb9d84b2c..1b53cc53c1f85bb5278b0f1dec751cab0167a49e 100644 (file)
@@ -1 +1 @@
-{"tags":{"datavis":1,"software":1,"stamen":1,"print":1,"installation":2,"code":2,"www":2,"opensource":1,"projection-mapping":1,"performance":2,"audiovisual":1,"audio":2,"projection":1,"visual":1,"icosi":2,"fabrication":2,"design":1,"sculpture":1,"mapping":1,"timelapse":1,"photography":1}}
\ No newline at end of file
+{"tags":{"datavis":1,"software":1,"stamen":1,"print":1,"installation":2,"code":1,"www":2,"opensource":1,"projection-mapping":1,"performance":2,"audiovisual":1,"audio":2,"projection":1,"visual":1,"icosi":2,"fabrication":2,"design":1,"sculpture":1,"mapping":1,"timelapse":1,"photography":1}}
\ No newline at end of file
index 9541f094ca9c7ebf72b34f00cd8ccc0ed2aaa5e5..81b79ca02b92e92ce93174acadfe95fcf304bb6c 100644 (file)
--- a/index.php
+++ b/index.php
@@ -8,6 +8,7 @@ list($response_format, $response_mime_type) = parse_format($url['extension'], 'h
 $content_req = LOCAL_ROOT . CONTENT_DIR . DIRECTORY_SEPARATOR . $url['url'];
 $page_req =  LOCAL_ROOT . PAGE_DIR . DIRECTORY_SEPARATOR . $url['url'];
 $total = 0;
+$tag = false;
 
 # setup template
 $template = 'default.html.tpl';
@@ -18,11 +19,18 @@ $t->assign('url', $url);
 # special endpoints
 $dirs = explode('/', $url['url']);
 switch($dirs[0]) {
+
     case 'tag' :
-        $page_req = LOCAL_ROOT . PAGE_DIR . DIRECTORY_SEPARATOR . $dirs[0];
-        if (isset($dirs[1]))
-            $t->assign('tag', $dirs[1]);
+        if (isset($dirs[1])) {
+            $content_req = LOCAL_ROOT . CONTENT_DIR . DIRECTORY_SEPARATOR;
+            $tag = isset($dirs[1]) ? $dirs[1] : false;
+        } else {
+            $content_req = "";
+            $page_req =  LOCAL_ROOT . PAGE_DIR . DIRECTORY_SEPARATOR . $url['url'];
+        }
         break;
+
+    # EDITING
     case 'edit' : 
         
         if (!DEV) 
@@ -53,6 +61,7 @@ switch($dirs[0]) {
         } else {
             $edit = true;
         }
+    # END EDITING
 }
 
 # content exists, and is a folder
@@ -60,10 +69,11 @@ if (is_dir($content_req)) {
     # get config in folder, if exists
     if (is_file($content_req . '/' . CONFIG_FILE )) {
         $config = parse_entry(new SplFileInfo($content_req . '/' . CONFIG_FILE));
-        $template = $config['config']['template'] . '.' . $response_format . '.tpl' ;
+        if (!$tag)
+            $template = $config->config->template . '.' . $response_format . '.tpl' ;
         $t->assign('data', $config);
     }
-    list($entries, $total) = get_entries($url['dirname'] . '/' . $url['filename']);
+    $entries = get_entries($url['dirname'] . '/' . $url['filename'], $args = array('tag' => $tag));
     $t->assign('entries', $entries);
     $t->assign('page_title', preg_replace('{^/|/$}', '', $url['url']));
 }
@@ -77,9 +87,10 @@ else if (is_file($content_req)) {
 
 # content exists, and is a page
 else if (is_file($page_req)) {
+
     $config = parse_entry(new SplFileInfo($page_req), 1);
-    $t->assign('data', $config);
-    $template = isset($config['config']['template']) ? $config['config']['template'] .
+    $t->assign('entry', $config);
+    $template = isset($config->config->template) ? $config->config->template .
     '.' . $response_format . '.tpl' : 'page.' . $response_format . '.tpl';
 }
 
index 7f3b5b03e56eb03814d33cda430df7536b4560c8..72cf5b47a912f2410ff3fd917775745980e9d05b 100644 (file)
@@ -1,47 +1,79 @@
 <?php
 
 /**
- *     return entries of a folder
- *     @param path: the path to search. defaults to the CONTENT_DIR
- *     @param args array
+ *  return entries of a folder
+ *  @param path: the path to search. defaults to the CONTENT_DIR
+ *  @param args array
  */
 function get_entries( $path = "", $args = array() )
 {
-       $recursive = isset($args['recursive']) ? $args['recursive'] : 1;
-       $order_by = empty($args['order_by']) ? null : $args['order_by'];
-       $order = empty($args['order']) ? SORT_DESC : $args['order'];
-       $tag = empty($args['tag']) ? null : $args['tag'];
-       $path = LOCAL_ROOT . CONTENT_DIR . DIRECTORY_SEPARATOR . $path;
-
-       if ($recursive) {
-               $iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
-               $dir_iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
-       }
-       else {
-               $dir_iterator = new DirectoryIterator($path);
-       }
-       $entries = array();
-       foreach ($dir_iterator as $file => $info) {
-               if (!$info->isDir() && $info->getFilename() != CONFIG_FILE) {
-                       $entry = parse_entry($info);
-                       if (!isset($tag)) {
-                               $entries[] = $entry;
-                       }
-                       else if ($tag && in_array($tag, is_array($entry['tags']) ? $entry['tags'] : array())) {
-                               $entries[] = $entry;
-                       }
-               }
-       }
-       switch ($order_by)
-       {
-               default :
-                       foreach ($entries as $key => $row)
-                       $time[$key] = $row['timestamp'];
-                       if ($time)
-                               array_multisort($time, $order, $entries);
-       }
-
-       return array($entries, sizeof($entries));
+    $recursive = isset($args['recursive']) ? $args['recursive'] : 1;
+    $order_by = empty($args['order_by']) ? null : $args['order_by'];
+    $order = empty($args['order']) ? SORT_DESC : $args['order'];
+    $tag = empty($args['tag']) ? null : $args['tag'];
+    
+    $data_file = DATA_DIR . DIRECTORY_SEPARATOR . $path . '.json';
+    $path = LOCAL_ROOT . CONTENT_DIR . DIRECTORY_SEPARATOR . $path;
+    
+    if ($tag) { 
+
+        $data_dir = $data_file = DATA_DIR . DIRECTORY_SEPARATOR . 'tag/';
+        
+        if (!is_dir($data_dir)) 
+            mkdir($data_dir);
+
+        $data_file = DATA_DIR . DIRECTORY_SEPARATOR . 'tag/' . $tag . '.json';
+        $path = LOCAL_ROOT . CONTENT_DIR . DIRECTORY_SEPARATOR;        
+    }
+
+    if (DEV || !file_exists($data_file)) {
+
+        $create_datafile_conditions = true; //!$tag;
+
+        if ($recursive) {
+            $iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
+            $dir_iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
+        }
+        else {
+            $dir_iterator = new DirectoryIterator($path);
+        }
+        $entries = array();
+        foreach ($dir_iterator as $file => $info) {
+            if (!$info->isDir() && $info->getFilename() != CONFIG_FILE) {
+                $entry = parse_entry($info);
+                if (!isset($tag)) {
+                    $entries[] = $entry;
+                }
+                else if ($tag && in_array($tag, isset($entry->tags) && is_array($entry->tags) ? $entry->tags : array())) {
+                    $entries[] = $entry;
+                }
+            }
+        }
+        switch ($order_by)
+        {
+            default :
+                foreach ($entries as $key => $row)
+                    $time[$key] = $row->timestamp;
+                if ($time)
+                    array_multisort($time, $order, $entries);
+        }
+
+        if ($create_datafile_conditions) {
+            try {
+                $fp = fopen( $data_file, 'w');
+                fwrite($fp, json_encode(array( 'entries' => $entries )));
+                fclose($fp);
+                if (!file_exists( $data_file )) {
+                    throw new Exception('Error creating tags.json. Permissions?');
+                }
+            } catch (Exception $e) {
+                echo 'Caught exception: ',  $e->getMessage(), "\n";
+            }
+        }
+    }
+
+    $json = json_decode(file_get_contents($data_file));
+    return $json->entries;
 }
 
 
@@ -50,16 +82,16 @@ function get_entries( $path = "", $args = array() )
  */
 function get_pages()
 {
-       $path = LOCAL_ROOT . PAGE_DIR;
-       $dir_iterator = new DirectoryIterator($path);
-       $pages = array();
-       foreach($dir_iterator as $page) {
-               if ($page->isDir()) continue;
-               $arr = parse_entry($page, 1);
-               $arr['is_page'] = 1;
-               $pages[] = $arr;
-       }
-       return $pages;
+    $path = LOCAL_ROOT . PAGE_DIR;
+    $dir_iterator = new DirectoryIterator($path);
+    $pages = array();
+    foreach($dir_iterator as $page) {
+        if ($page->isDir()) continue;
+        $e = parse_entry($page, 1);
+        $e->is_page = 1;
+        $pages[] = $e;
+    }
+    return $pages;
 }
 
 
@@ -68,64 +100,64 @@ function get_pages()
  */
 function get_tags($path = "", $args = array() )
 {
-       $tags_json = DATA_DIR . '/tags.json';
-
-       if (DEV || !file_exists($tags_json)) {
-               $entries = get_entries($path, $args);
-               $tags = array();
-
-               foreach($entries[0] as $entry) {
-                       $entry_tags = is_array($entry['tags']) ? $entry['tags'] : array();
-                       $tags = array_merge($tags, $entry_tags);
-               }
-
-               $tags = array_count_values($tags);
-
-               try {
-                       $fp = fopen( $tags_json, 'w');
-                       fwrite($fp, json_encode(array( 'tags' => $tags )));
-                       fclose($fp);
-                       if (!file_exists( $tags_json)) {
-                               throw new Exception('Error creating tags.json. Permissions?');
-                       }
-               } catch (Exception $e) {
-               echo 'Caught exception: ',  $e->getMessage(), "\n";
-               }
-       }
-
-       $json = json_decode(file_get_contents($tags_json));
-       return  get_object_vars($json->tags);
+    $data_file = DATA_DIR . '/tags.json';
+
+    if (DEV || !file_exists($data_file)) {
+        $entries = get_entries($path, $args);
+        $tags = array();
+
+        foreach($entries as $entry) {
+            $entry_tags = isset($entry->tags) && is_array($entry->tags) ? $entry->tags : array();
+            $tags = array_merge($tags, $entry_tags);
+        }
+
+        $tags = array_count_values($tags);
+
+        try {
+            $fp = fopen( $data_file, 'w');
+            fwrite($fp, json_encode(array( 'tags' => $tags )));
+            fclose($fp);
+            if (!file_exists( $data_file)) {
+                throw new Exception('Error creating tags.json. Permissions?');
+            }
+        } catch (Exception $e) {
+            echo 'Caught exception: ',  $e->getMessage(), "\n";
+        }
+    }
+
+    $json = json_decode(file_get_contents($data_file));
+    return  get_object_vars($json->tags);
 }
 
 
 /*
- *     returns directories of a folder
- *     @param path the path to search. defaults to the CONTENT_DIR
- *     @param args array
+ *  returns directories of a folder
+ *  @param path the path to search. defaults to the CONTENT_DIR
+ *  @param args array
  */
 function get_dirs( $path = "", $args = array() )
 {
-       $recursive = isset($args['recursive']) ? $args['recursive'] : 1;
-       $path = LOCAL_ROOT . CONTENT_DIR . '/' . $path;
-
-       if ($recursive) {
-               $iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
-               $dir_iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
-       }
-       else {
-               $dir_iterator = new DirectoryIterator($path);
-       }
-       $dirs = array();
-       foreach ($dir_iterator as $fileInfo) {
-               if ($fileInfo->isDir() && $fileInfo->getFilename() != '.' && $fileInfo->getFilename() != '..') {
+    $recursive = isset($args['recursive']) ? $args['recursive'] : 1;
+    $path = LOCAL_ROOT . CONTENT_DIR . '/' . $path;
+
+    if ($recursive) {
+        $iterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
+        $dir_iterator = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
+    }
+    else {
+        $dir_iterator = new DirectoryIterator($path);
+    }
+    $dirs = array();
+    foreach ($dir_iterator as $fileInfo) {
+        if ($fileInfo->isDir() && $fileInfo->getFilename() != '.' && $fileInfo->getFilename() != '..') {
             $d = array();
             $d['cat'] = clean_slashes(str_replace(LOCAL_ROOT . CONTENT_DIR, "", $fileInfo->getPath()));
             $d['name'] = substr(str_replace($path, "",  $fileInfo->getRealPath()), 0);
             $d['url'] = $d['cat'] . '/' . $d['name'];
-                       $dirs[] = $d;
-               }
-       }
-       return $dirs;
+            $dirs[] = (object) $d;
+        }
+    }
+    return $dirs;
 }
 
 
@@ -134,54 +166,57 @@ function get_dirs( $path = "", $args = array() )
 
 /**
  * @param splFileInfo SPLFileInfo Object
- * @param page default is false
+ * @param page  default is false
  */
 function parse_entry($fileInfo, $page = 0)
 {
-       $config = "";
-       $content = "";
+    $config = "";
+    $content = "";
     $content_short = "";
     $passed_more = false;
-       $passed_config = false;
-       $file_contents = file($fileInfo->getRealPath(), FILE_USE_INCLUDE_PATH);
-       foreach ( $file_contents as $line ) {
-               if (trim($line) == CONFIG_DELIMITER) {
-                       $passed_config = true;
-                       continue;
-               }
-               if (!$passed_config) {
-                       $config .= $line;
-                       continue;
-               }
-               if (trim($line) == MORE_DELIM) {
+    $passed_config = false;
+    $file_contents = file($fileInfo->getRealPath(), FILE_USE_INCLUDE_PATH);
+    foreach ( $file_contents as $line ) {
+        if (trim($line) == CONFIG_DELIMITER) {
+            $passed_config = true;
+            continue;
+        }
+        if (!$passed_config) {
+            $config .= $line;
+            continue;
+        }
+        if (trim($line) == MORE_DELIM) {
           $passed_more = true;
         }
         if (!$passed_more) {
           $content_short .= $line;
         }
-               $content .= $line;
-       }
-
-       #eval content
-
-       $file = array();
-       $file['config'] = parse_ini_string($config);
-       $file['title'] = isset($file['config']['title']) ? $file['config']['title'] : $fileInfo->getFilename();
-       $file['filename'] = $fileInfo->getFilename();
-       $file['path'] = $fileInfo->getPath();
-       $file['fileInfo'] = $fileInfo;
-       $file['config']['date'] = isset($file['config']['date']) ? $file['config']['date'] : null;
-       $file['timestamp'] = $file['config']['date'] ? date('U', strtotime( $file['config']['date'])) : $fileInfo->getCTime();
-       $file['tags'] = isset($file['config']['tags']) ? explode(" ", $file['config']['tags']) : null;
-       $file['content'] = Markdown($content);
+        $content .= $line;
+    }
+
+    #eval content
+
+    $entry = array();
+    $file['config'] = parse_ini_string($config);
+    $file['title'] = isset($file['config']['title']) ? $file['config']['title'] : $fileInfo->getFilename();
+    $file['filename'] = $fileInfo->getFilename();
+    $file['path'] = $fileInfo->getPath();
+    $file['fileInfo'] = $fileInfo;
+    $file['config']['date'] = isset($file['config']['date']) ? $file['config']['date'] : null;
+    $file['timestamp'] = $file['config']['date'] ? date('U', strtotime( $file['config']['date'])) : $fileInfo->getCTime();
+    $file['tags'] = isset($file['config']['tags']) ? explode(" ", $file['config']['tags']) : null;
+    $file['content'] = Markdown($content);
     if ($passed_more)
       $file['content_short'] = Markdown($content_short);
-       $cat = clean_slashes(str_replace(LOCAL_ROOT . CONTENT_DIR, "", $fileInfo->getPath()));
-       $file['cat'] = $page ? null : array('name' => substr($cat, 1), 'url' => $cat.'/' );
-       $file['path'] = $fileInfo->getRealPath();
-       $file['media'] = MEDIA_ROOT . '/' . ($page ? '' : substr($file['cat']['url'],1)) . $fileInfo->getFilename() . '/';
-       $file['thumb'] = isset($file['config']['thumb']) ? $file['config']['thumb'] : MEDIA_ROOT . '/' . substr($file['cat']['url'],1) . $fileInfo->getFilename() . '/thumb.png';
-       $file['url'] = WEB_ROOT . ($page ? '' : substr($file['cat']['url'],1)) . $fileInfo->getFilename();
-
-       return $file;
+    $cat = clean_slashes(str_replace(LOCAL_ROOT . CONTENT_DIR, "", $fileInfo->getPath()));
+    $file['cat'] = $page ? null : array('name' => substr($cat, 1), 'url' => $cat.'/' );
+    $file['path'] = $fileInfo->getRealPath();
+    $file['media'] = MEDIA_ROOT . '/' . ($page ? '' : substr($file['cat']['url'],1)) . $fileInfo->getFilename() . '/';
+    $file['thumb'] = isset($file['config']['thumb']) ? $file['config']['thumb'] : MEDIA_ROOT . '/' . substr($file['cat']['url'],1) . $fileInfo->getFilename() . '/thumb.png';
+    $file['url'] = WEB_ROOT . ($page ? '' : substr($file['cat']['url'],1)) . $fileInfo->getFilename();
+
+    $file['cat']    = (object) $file['cat'];
+    $file['config'] = (object) $file['config'];
+
+    return (object) $file;
 }
index 2e810dfa6897556e9746d3edc7ede2f408f0a817..fcb37f2784d8d32a0c9b900ce6fdb30240d9e1a1 100644 (file)
@@ -18,7 +18,8 @@ define ('MORE_DELIM',       '<!--more-->');
 define ('TITLE_DELIMITER',  ': ');
 define ('CONFIG_FILE',      'config');
 
-define ('DEV', false);
+define ('DEV', true);
+//define ('CACHE', false);
 
 if (DEV) {
    error_reporting(E_ALL);
index b2e047ba2a538fbb74fb66d7c50a97398f3b72a1..515dd715a2eb6f5fc6604ef5b0c2074623223c28 100644 (file)
@@ -7,8 +7,6 @@ Gabriel Dunne develops artistic and research focused projects based on space, ti
 -->
 
 
-Gabriel Labov Dunne    
-
 1242 Market Street, FL 2  
 San Francisco, CA 94102    
 
index 23f9a514a3671bcad2471dc02eb62018722ce453..fae61fac00b7f8b746dcbb4976d00c7cfb853480 100644 (file)
--- a/pages/tag
+++ b/pages/tag
@@ -4,12 +4,12 @@ title = tags
 
 <? if (isset($tag)): ?>
 
-<? list($entries, $total) = get_entries('/', $args = array('tag' => $tag)); ?>
+<? $entries = get_entries('/', $args = array('tag' => $tag)); ?>
 <? foreach($entries as $entry): ?>
 <?
-if (isset($entry['content_short']))
-$entry['content'] = $entry['content_short'] .
-'<br /><a class="more" href="' . $entry['url'] . '">more &rarr;</a><br /><br />';
+if (isset($entry->content_short))
+$entry->content = $entry->content_short .
+'<br /><a class="more" href="' . $entry->url . '">more &rarr;</a><br /><br />';
 ?>
 
 <div class="entry">
index d5dfa37b1834a6aede50a89159c4cdff5c0d59dc..8b3318a15bb670cbf695fa341bcc38877d03bbd3 100644 (file)
@@ -15,8 +15,8 @@
        <? foreach($entries as $entry): ?>
     <div class="entry">
        <?
-    if (isset($entry['content_short']))
-        $entry['content'] = $entry['content_short'] . '<br /><a class="more" href="'.$entry['url'].'">more &rarr;</a><br /><br />';
+    if (isset($entry->content_short))
+        $entry->content = $entry->content_short . '<br /><a class="more" href="'.$entry->url.'">more &rarr;</a><br /><br />';
 
     $this->include_template('entry.html.tpl', array('entry' => $entry));
     ?>
index 386b0871c0b2d92302f63015b9ca727af16ac76d..7288cf0ea48800d9add985c0e5cbe756f5975e09 100644 (file)
@@ -3,7 +3,7 @@
 
     <? $this->include_template('head-inc.html.tpl') ?>
 
-    <title><?=SITE_TITLE?><?=TITLE_DELIMITER?><?=$entry['title']?></title>
+    <title><?=SITE_TITLE?><?=TITLE_DELIMITER?><?=$entry->title?></title>
 
 </head>
 <body>
 <div id="content" class="edit">
 
        <? if ($entry): ?>
-    <? $fileContents = file_get_contents($entry['fileInfo']); ?>
+    <? $fileContents = file_get_contents($entry->fileInfo); ?>
 
     <form action="" method="POST">
     <textarea name="edited_file_contents"><?=$fileContents?></textarea>
-    <input type="hidden" name="edited_file" value="<?=$entry['fileInfo']->getPath().DIRECTORY_SEPARATOR.$entry['fileInfo']->getFilename();?>">
-    <input type="button" onClick="window.location = '<?=$entry['url']?>'"value="cancel">
+    <input type="hidden" name="edited_file" value="<?=$entry->fileInfo->getPath().DIRECTORY_SEPARATOR.$entry->fileInfo->getFilename();?>">
+    <input type="button" onClick="window.location = '<?=$entry->url?>'"value="cancel">
     <input type="submit" value="save">
     </form>
 
index a35963670d00e7dda67ec89f1b1e2525b94b3b79..62a70ad0ffa718e66dfbd35625db1dd35eef6d53 100644 (file)
@@ -1,19 +1,19 @@
 
-<? if(!isset($entry['config']['hide_title'])) : ?>
-       <h2 class="title"><a href="<?=$entry['url']?>"><?=$entry['title']?></a></h2>
+<? if(!isset($entry->config->hide_title)) : ?>
+       <h2 class="title"><a href="<?=$entry->url?>"><?=$entry->title?></a></h2>
 <? endif; ?>
 
 <div class="content">
-       <? eval('?>' . $entry['content']); ?>
+       <? eval('?>' . $entry->content); ?>
 </div>
 
 <div class="metadata">
-       <div class="date" title="<?=get_relative_time($entry['timestamp']);?>"><?=date("Y/m/d", $entry['timestamp'])?></div>
-       <? if ($entry['tags']) : ?>
+       <div class="date" title="<?=get_relative_time($entry->timestamp);?>"><?=date("Y/m/d", $entry->timestamp)?></div>
+       <? if ($entry->tags) : ?>
                tagged <span class="tags">
                <?
-               for($i = 0; $i < sizeof($entry['tags']); $i++) :
-                       $tag = $entry['tags'][$i];
+               for($i = 0; $i < sizeof($entry->tags); $i++) :
+                       $tag = $entry->tags[$i];
                        $li = '<a href="'.WEB_ROOT . 'tag/' . $tag . '">' . $tag . '</a>';
                        if ($i !== 0)
                                $li = ', ' . $li;
 </div>
 
 <? if (isset($single) && $single) : ?>
-       <div class="arrow" title="<?=$entry['cat']['entry']?>">
-               <a href="<?=$entry['cat']['url']?>">&larr;</a>
+       <div class="arrow" title="<?=$entry->cat->entry?>">
+               <a href="<?=$entry->cat->url?>">&larr;</a>
        </div>
 <? else : ?>
-       <div class="arrow" title="<?=$entry['title']?> - <?=date("Y-m-d", $entry['timestamp'])?>">
-               <a href="<?=$entry['url']?>">&rarr;</a>
+       <div class="arrow" title="<?=$entry->title?> - <?=date("Y-m-d", $entry->timestamp)?>">
+               <a href="<?=$entry->url?>">&rarr;</a>
        </div>
 <? endif; ?>
 
 <? if (DEV) : ?>
 
-<a href="<?=WEB_ROOT?>edit<?=$entry['cat']['url'] . $entry['filename']?>">edit</a>
+<a href="<?=WEB_ROOT?>edit<?=$entry->cat->url . $entry->filename?>">edit</a>
 <? endif; ?>
 
index dcfb779e003d761dbbb2addf0cea70ceeb50d9a9..fd82206900ac24b99d053c8daf9bc1233514246d 100644 (file)
@@ -1,8 +1,8 @@
 
 <div class="metadata">
-       <div class="date" title="<?=get_relative_time($data['timestamp']);?>">&mdash; <?=date("Y / m / d", $data['timestamp'])?></div>
+       <div class="date" title="<?=get_relative_time($data->timestamp);?>">&mdash; <?=date("Y / m / d", $data->timestamp)?></div>
 </div>
 
 <div class="content">
-       <? eval('?>' . $data['content']); ?>
+       <? eval('?>' . $data->content); ?>
 </div>
index ce12401e78dd9317452df617a59904cdf1fb34e0..ee0bf2717322ed83432f72843b7b3c383fefe4d7 100644 (file)
@@ -6,53 +6,14 @@
 
     <? $dirs = get_dirs('', $args = array('recursive' => false) ); ?>
     <? foreach($dirs as $dir) : ?>
-    <li><a href="<?=$dir['url']?>"><?=$dir['name']?></a></li>
+    <li><a href="<?=$dir->url?>"><?=$dir->name?></a></li>
     <? endforeach; ?>
     <? $pages = get_pages('', $args = array('recursive' => false) ); ?>
     <? foreach($pages as $page) :
-        if (isset($page['config']['hidden']) && $page['config']['hidden'])
+        if (isset($page->config->hidden) && $page->config->hidden)
             continue;
      ?>
-    <li><a href="<?=$page['url']?>"><?=$page['title']?></a></li>
+    <li><a href="<?=$page->url?>"><?=$page->title?></a></li>
     <? endforeach; ?>
 
-
-
-
-
-<!--
-    <br /><br />
-
-    <li><a href="/"><em>recent</em></a></li>
-
-    <br />
-    <? list($entries, $total) = get_entries('/'); ?>
-    <? $c = 0; foreach($entries as $p) : $c++; ?>
-    <li><a href="<?=$p['url']?>"><?=$p['title']?></a></li>
-    <? if ($c > 10) break; endforeach; ?>
-
-<br /><br />
-
-    <li><a href="/archive/"><em>archive</em></a></li>
-
-    <br />
-     <? $dirs = get_dirs('projects/'); ?>
-     <? foreach($dirs as $dir) : ?>
-     <li><a href="<?=$dir['url']?>"><?=$dir['name']?></a></li>
-     <? endforeach; ?>
-
-
-    <br /><br/>
-
-
-    <li><a href="/projects/">projects</a></li>
-
-    <? list($entries, $total) = get_entries('/projects/'); ?>
-    <? foreach($entries as $p) : ?>
-    <li><a href="<?=$p['url']?>"><?=$p['title']?></a></li>
-    <?  endforeach; ?>
-    <br /><br/>
-    -->
-
-
 </ul>
index a6d5d31dbb678092db62b04646c1ec22b5bfe9cc..f40ab065a0a9c47130b0f4163d8cce790ff2a491 100644 (file)
@@ -12,7 +12,7 @@
 
 <div id="content" class="news">
 
-    <? eval('?>' . $data['content']); ?>
+    <? eval('?>' . $data->content); ?>
 
     <br />
     <br />
@@ -21,8 +21,8 @@
        <? foreach($entries as $entry): ?>
     <div class="entry">
        <?
-    if (isset($entry['content_short']))
-        $entry['content'] = $entry['content_short'] . '<br /><a class="more" href="'.$entry['url'].'">more &rarr;</a><br /><br />';
+    if (isset($entry->content_short))
+        $entry->content = $entry->content_short . '<br /><a class="more" href="'.$entry->url.'">more &rarr;</a><br /><br />';
     $this->include_template('entry.news.html.tpl', array('data' => $entry));
     ?>
     </div>
index fcf54a5173b2a557f89297aae4f1f47221d7879c..191031bc457e6fb45bd1640dd5bf454b90962914 100644 (file)
@@ -3,7 +3,7 @@
 
     <? $this->include_template('head-inc.html.tpl') ?>
 
-    <title><?=SITE_TITLE?><?=TITLE_DELIMITER?> <?=$data['title']?></title>
+    <title><?=SITE_TITLE?><?=TITLE_DELIMITER?> <?=$entry->title?></title>
 
 </head>
 <body>
@@ -12,7 +12,7 @@
 
 <div id="content" class="page">
 
-       <? eval('?>' . $data['content']); ?>
+       <? eval('?>' . $entry->content); ?>
 
 </div>
 
index 4b06f76249fb8a3522e00f651dcb4f9851856309..f16560899679e42dcbbfb028c06b7bf6d2593af6 100644 (file)
@@ -3,7 +3,7 @@
     
     <? $this->include_template('head-inc.html.tpl') ?>
     
-    <title><?=SITE_TITLE?>, <?=$data['title'];?></title>
+    <title><?=SITE_TITLE?>, <?=$data->title;?></title>
     
 </head>
 <body>
                <div class="entry">
                        
                        <div class="content">
-                               <?=$data['content']?>
+                               <?=$data->content?>
                        </div>
 
                        <div class="metadata">
                                <ul class="tags">
-                               <? if (sizeof($data['tags']) > 0) foreach($data['tags'] as $tag) : ?>
+                               <? if (sizeof($data->tags) > 0) foreach($data->tags as $tag) : ?>
                                <li>#<?=$tag?></li>
                                <? endforeach; ?>
                                </ul>
diff --git a/templates/projects.html copy.tpl b/templates/projects.html copy.tpl
deleted file mode 100644 (file)
index d8bb648..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<html>
-<head>
-
-    <? $this->include_template('head-inc.html.tpl') ?>
-
-    <title><?=SITE_TITLE?>: <?=$page_title?></title>
-
-</head>
-<body>
-
-    <? $this->include_template('nav.html.tpl') ?>
-
-<div id="content">
-
-       <ul class="thumbs">
-       <? foreach($data as $entry): ?>
-               <li>
-            <a href="<?=$entry['url']?>" class="thumb">
-            <img src="<?=$entry['thumb']?>" /><br/>
-            </a>
-            <a href="<?=$entry['url']?>"><?=$entry['title']?></a>
-               </li>
-       <? endforeach; ?>
-       </ul>
-
-</div>
-
-       <? $this->include_template('footer.html.tpl') ?>
-
-</body>
-</html>
index a3b31865263269e76776f81f5c779985d01dc53f..6857d1a3b0517844dc5973aed35e044c8e970e8a 100644 (file)
        <ul class="projects">
        <? foreach($entries as $entry): ?>
                <li>
-                   <a href="<?=$entry['url']?>" class="thumb">
-                       <img src="<?=$entry['thumb']?>" /><br/>
+                   <a href="<?=$entry->url?>" class="thumb">
+                       <img src="<?=$entry->thumb?>" /><br/>
             </a>
-            <a href="<?=$entry['url']?>"><?=$entry['title']?></a>
+            <a href="<?=$entry->url?>"><?=$entry->title?></a>
                </li>
        <? endforeach; ?>       
        </ul>
index f87b4563966b020ea69bc1a3df52392cbbde47aa..1a175c261eba7609127cf853ca28db0252608a7a 100644 (file)
@@ -3,7 +3,7 @@
 
     <? $this->include_template('head-inc.html.tpl') ?>
 
-    <title><?=$entry['title'];?></title>
+    <title><?=$entry->title;?></title>
 
 </head>
 <body>
index cf0afe88b6f1b1c5f8d053cdaff5a9eb0d134220..8962d32da67ca5e7a79064d0cb74fcd894f2a4aa 100644 (file)
@@ -32,7 +32,9 @@
 
 
     <ul class="tags">
-    <? $tags = get_tags('/'); ksort($tags); ?>
+    <? $tags = get_tags('/'); ksort($tags); 
+        print_r($tags);
+    ?>
     <? foreach($tags as $tag => $count) : ?>
     <li><a href="/tag/<?=$tag?>"><?=$tag?></a> &times; <?=$count?></li>
     <? endforeach; ?>