From 4698cc4ad4a442d10ce7779d0dca7bdc70020251 Mon Sep 17 00:00:00 2001 From: Gabriel Dunne Date: Sun, 2 Sep 2012 20:19:57 -0700 Subject: [PATCH] Added data caching and updated entries to objects. --- content/process/schedule | 123 +++++++------ content/projects/seaquence | 2 +- css/style.css | 4 +- data/.json | 1 + data/news.json | 1 + data/process.json | 1 + data/projects.json | 1 + data/tag/audio.json | 1 + data/tag/installation.json | 1 + data/tag/performance.json | 1 + data/tag/projection.json | 1 + data/tag/visual.json | 1 + data/tag/www.json | 1 + data/tags.json | 2 +- index.php | 25 ++- lib/data.php | 301 +++++++++++++++++-------------- lib/init.php | 3 +- pages/contact | 2 - pages/tag | 8 +- templates/default.html.tpl | 4 +- templates/edit.html.tpl | 8 +- templates/entry.html.tpl | 24 +-- templates/entry.news.html.tpl | 4 +- templates/nav.html.tpl | 45 +---- templates/news.html.tpl | 6 +- templates/page.html.tpl | 4 +- templates/project.html.tpl | 6 +- templates/projects.html copy.tpl | 31 ---- templates/projects.html.tpl | 6 +- templates/single.html.tpl | 2 +- templates/tag.html.tpl | 4 +- 31 files changed, 305 insertions(+), 319 deletions(-) create mode 100644 data/.json create mode 100644 data/news.json create mode 100644 data/process.json create mode 100644 data/projects.json create mode 100644 data/tag/audio.json create mode 100644 data/tag/installation.json create mode 100644 data/tag/performance.json create mode 100644 data/tag/projection.json create mode 100644 data/tag/visual.json create mode 100644 data/tag/www.json delete mode 100644 templates/projects.html copy.tpl diff --git a/content/process/schedule b/content/process/schedule index 238e6e0..a8db6de 100755 --- a/content/process/schedule +++ b/content/process/schedule @@ -1,63 +1,62 @@ -title = time -date = Tue May 24 21:43:54 2011 --- - - -honest schedule: - -
    
- 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
-
- - -ideal schedule: - -
    
- 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
+date = Tue May 24 21:43:54 2011
+--
+
+honest schedule:
+
+
    
+ 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
+
+ + +ideal schedule: + +
    
+ 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
 
\ No newline at end of file diff --git a/content/projects/seaquence b/content/projects/seaquence index 796c9c1..d78b472 100755 --- a/content/projects/seaquence +++ b/content/projects/seaquence @@ -5,4 +5,4 @@ date = 2010-10-04 Alpha release of [Seaquence: A experimental web-based musical ecosystem](http://seaquence.org). -[http://seaquence.org](http://seaquence.org) +[link](http://seaquence.org) diff --git a/css/style.css b/css/style.css index 55352a7..4dab83d 100644 --- a/css/style.css +++ b/css/style.css @@ -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 index 0000000..5e3149c --- /dev/null +++ b/data/.json @@ -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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/synonymovement.mov.mov\">\n
\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\naudio\/visual software, video installation
\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":"

\/stars.jpg\" \/><\/p>\n\n

Stars<\/h2>\n\n

projection, visual software (c++), audio (ableton live, max\/msp)<\/em><\/p>\n\n

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>\n\n

\/47_roof.jpg\"\/><\/p>\n\n

video<\/h3>\n\n


<\/p>\n\n

\n\n<\/p>\n\n

\n\n\n\n\n\n\/stars.mov\">\n\n\/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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/rattle.mov\">\n
\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\ninteractive software, synthesiser \n
\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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/cabspotting_web.mov\">\n\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\nSF taxi visualization
\nbuilt with Java\/Processing\n<\/span><\/p>\n\n

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":"

\/projects\/obsession\/detail.jpg\">
\ncopper 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":"

\n
\nink 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":"

Co-teaching a Youth Film\/Code Remix class at BAVC, starting in October.
\nlink<\/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":"

\/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":"

honest schedule:<\/p>\n\n

    \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

ideal schedule:<\/p>\n\n

    \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":"

\n\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n

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":"

ICOSI Performance at Gray Area Foundation for the Arts
\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM
\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco
\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)
\n
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":"

Alpha release of Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n

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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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":"

\"img\"<\/a>
\nAssembly test w\/stretched panels in the studio (just hanging).<\/p>\n\n

\"\"<\/a>
\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":"

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

\n<\/a>\n
\nA laser-cut a small working model.<\/p>\n\n

<\/a>
\nCustom jig for slicing the angles.<\/p>\n\n

<\/a>
\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":"

Tech rider developed for new project:<\/p>\n\n

\"\"<\/a>   \n\"\"<\/a><\/p>\n\n

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":"

\n\n\n\n\n\n\n\n\n\n
\n\n<\/embed>\n<\/object><\/p>\n\n

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":"

\/projects\/egg\/egg.jpg\">\nmarker, 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 index 0000000..9167dab --- /dev/null +++ b/data/news.json @@ -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":"

Co-teaching a Youth Film\/Code Remix class at BAVC, starting in October.
\nlink<\/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":"

ICOSI Performance at Gray Area Foundation for the Arts
\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM
\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco
\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)
\n
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 index 0000000..067c716 --- /dev/null +++ b/data/process.json @@ -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":"

\/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":"

honest schedule:<\/p>\n\n

    \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

ideal schedule:<\/p>\n\n

    \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":"

\n\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n

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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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":"

\"img\"<\/a>
\nAssembly test w\/stretched panels in the studio (just hanging).<\/p>\n\n

\"\"<\/a>
\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":"

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

\n<\/a>\n
\nA laser-cut a small working model.<\/p>\n\n

<\/a>
\nCustom jig for slicing the angles.<\/p>\n\n

<\/a>
\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":"

Tech rider developed for new project:<\/p>\n\n

\"\"<\/a>   \n\"\"<\/a><\/p>\n\n

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":"

\/projects\/egg\/egg.jpg\">\nmarker, 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 index 0000000..1fa4101 --- /dev/null +++ b/data/projects.json @@ -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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/synonymovement.mov.mov\">\n
\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\naudio\/visual software, video installation
\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":"

\/stars.jpg\" \/><\/p>\n\n

Stars<\/h2>\n\n

projection, visual software (c++), audio (ableton live, max\/msp)<\/em><\/p>\n\n

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>\n\n

\/47_roof.jpg\"\/><\/p>\n\n

video<\/h3>\n\n


<\/p>\n\n

\n\n<\/p>\n\n

\n\n\n\n\n\n\/stars.mov\">\n\n\/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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/rattle.mov\">\n
\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\ninteractive software, synthesiser \n
\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\n

\" height=\"\" codebase=\"http:\/\/www.apple.com\/qtactivex\/qtplugin.cab#version=6,0,2,0\">\n\n\n\n\n\n\n\n\n\/cabspotting_web.mov\">\n\n\" height=\"\" controller=\"true\" loop=\"true\" autoplay=\"false\" src=\"\/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


\n\nSF taxi visualization
\nbuilt with Java\/Processing\n<\/span><\/p>\n\n

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":"

\/projects\/obsession\/detail.jpg\">
\ncopper 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":"

\n
\nink 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":"

Alpha release of Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n

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":"

\n\n\n\n\n\n\n\n\n\n
\n\n<\/embed>\n<\/object><\/p>\n\n

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 index 0000000..ef92ea8 --- /dev/null +++ b/data/tag/audio.json @@ -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":"

Alpha release of Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n

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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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 index 0000000..9f56a21 --- /dev/null +++ b/data/tag/installation.json @@ -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":"

\n
\nink 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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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 index 0000000..478ee96 --- /dev/null +++ b/data/tag/performance.json @@ -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":"

ICOSI Performance at Gray Area Foundation for the Arts
\nDate\/Time: 06 Nov 2010 from 7:00 PM to 11:00 PM
\nLocation: Gray Area Foundation for the Arts \u2013 55 Taylor Street, San Francisco
\nICOSI by Gabriel Dunne in collaboration with Jeff Lubow (Audio)
\n
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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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 index 0000000..b9e78da --- /dev/null +++ b/data/tag/projection.json @@ -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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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 index 0000000..b9e78da --- /dev/null +++ b/data/tag/visual.json @@ -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>\n\n

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

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

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

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

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 icosidodecahedron<\/a> represents transition of two frequencies, represented by an icosahedron<\/a> and its dual polyhedron, a dodecahedron<\/a>.<\/p>\n\n

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

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. [1]<\/a><\/p>\n\n

more photos via flickr →<\/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 index 0000000..76359b4 --- /dev/null +++ b/data/tag/www.json @@ -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":"

\n\/img\/clmpr.png\" \/>\n<\/a><\/p>\n\n

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":"

Alpha release of Seaquence: A experimental web-based musical ecosystem<\/a>. <\/p>\n\n

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 diff --git a/data/tags.json b/data/tags.json index 50fb70b..1b53cc5 100644 --- a/data/tags.json +++ b/data/tags.json @@ -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 diff --git a/index.php b/index.php index 9541f09..81b79ca 100644 --- 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'; } diff --git a/lib/data.php b/lib/data.php index 7f3b5b0..72cf5b4 100644 --- a/lib/data.php +++ b/lib/data.php @@ -1,47 +1,79 @@ $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; } diff --git a/lib/init.php b/lib/init.php index 2e810df..fcb37f2 100644 --- a/lib/init.php +++ b/lib/init.php @@ -18,7 +18,8 @@ define ('MORE_DELIM', ''); define ('TITLE_DELIMITER', ': '); define ('CONFIG_FILE', 'config'); -define ('DEV', false); +define ('DEV', true); +//define ('CACHE', false); if (DEV) { error_reporting(E_ALL); diff --git a/pages/contact b/pages/contact index b2e047b..515dd71 100644 --- a/pages/contact +++ b/pages/contact @@ -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 diff --git a/pages/tag b/pages/tag index 23f9a51..fae61fa 100644 --- a/pages/tag +++ b/pages/tag @@ -4,12 +4,12 @@ title = tags - $tag)); ?> + $tag)); ?> more →

'; +if (isset($entry->content_short)) +$entry->content = $entry->content_short . +'
more →

'; ?>

diff --git a/templates/default.html.tpl b/templates/default.html.tpl index d5dfa37..8b3318a 100644 --- a/templates/default.html.tpl +++ b/templates/default.html.tpl @@ -15,8 +15,8 @@
more →

'; + if (isset($entry->content_short)) + $entry->content = $entry->content_short . '
more →

'; $this->include_template('entry.html.tpl', array('entry' => $entry)); ?> diff --git a/templates/edit.html.tpl b/templates/edit.html.tpl index 386b087..7288cf0 100644 --- a/templates/edit.html.tpl +++ b/templates/edit.html.tpl @@ -3,7 +3,7 @@ include_template('head-inc.html.tpl') ?> - <?=SITE_TITLE?><?=TITLE_DELIMITER?><?=$entry['title']?> + <?=SITE_TITLE?><?=TITLE_DELIMITER?><?=$entry->title?> @@ -13,12 +13,12 @@
- + fileInfo); ?>
- - + +
diff --git a/templates/entry.html.tpl b/templates/entry.html.tpl index a359636..62a70ad 100644 --- a/templates/entry.html.tpl +++ b/templates/entry.html.tpl @@ -1,19 +1,19 @@ - -

+config->hide_title)) : ?> +

title?>

- ' . $entry['content']); ?> + ' . $entry->content); ?>
-
- +
+
-
"> - +
timestamp)?>"> +
-edit +edit diff --git a/templates/entry.news.html.tpl b/templates/entry.news.html.tpl index dcfb779..fd82206 100644 --- a/templates/entry.news.html.tpl +++ b/templates/entry.news.html.tpl @@ -1,8 +1,8 @@
- ' . $data['content']); ?> + ' . $data->content); ?>
diff --git a/templates/nav.html.tpl b/templates/nav.html.tpl index ce12401..ee0bf27 100644 --- a/templates/nav.html.tpl +++ b/templates/nav.html.tpl @@ -6,53 +6,14 @@ false) ); ?> -
  • +
  • name?>
  • false) ); ?> config->hidden) && $page->config->hidden) continue; ?> -
  • +
  • title?>
  • - - - - - - - diff --git a/templates/news.html.tpl b/templates/news.html.tpl index a6d5d31..f40ab06 100644 --- a/templates/news.html.tpl +++ b/templates/news.html.tpl @@ -12,7 +12,7 @@
    - ' . $data['content']); ?> + ' . $data->content); ?>

    @@ -21,8 +21,8 @@
    more →

    '; + if (isset($entry->content_short)) + $entry->content = $entry->content_short . '
    more →

    '; $this->include_template('entry.news.html.tpl', array('data' => $entry)); ?>
    diff --git a/templates/page.html.tpl b/templates/page.html.tpl index fcf54a5..191031b 100644 --- a/templates/page.html.tpl +++ b/templates/page.html.tpl @@ -3,7 +3,7 @@ include_template('head-inc.html.tpl') ?> - <?=SITE_TITLE?><?=TITLE_DELIMITER?> <?=$data['title']?> + <?=SITE_TITLE?><?=TITLE_DELIMITER?> <?=$entry->title?> @@ -12,7 +12,7 @@
    - ' . $data['content']); ?> + ' . $entry->content); ?>
    diff --git a/templates/project.html.tpl b/templates/project.html.tpl index 4b06f76..f165608 100644 --- a/templates/project.html.tpl +++ b/templates/project.html.tpl @@ -3,7 +3,7 @@ include_template('head-inc.html.tpl') ?> - <?=SITE_TITLE?>, <?=$data['title'];?> + <?=SITE_TITLE?>, <?=$data->title;?> @@ -14,12 +14,12 @@
    - + content?>