Veggies

Veggies

Veggies

Veggies

Posted on Flickr 4:03 pm, December 22, 2013 jQuery(document).ready(function(){ var gmap_m116217945f233e1c9b0c57e45bf81b78 = { positions : { 79 : new google.maps.LatLng( ‘40.669225’, ‘-73.985206’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m116217945f233e1c9b0c57e45bf81b78’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m116217945f233e1c9b0c57e45bf81b78.positions ) { gmap_m116217945f233e1c9b0c57e45bf81b78.bounds.extend( gmap_m116217945f233e1c9b0c57e45bf81b78.positions[m] ); } // Render markers for ( var m in gmap_m116217945f233e1c9b0c57e45bf81b78.positions ) { gmap_m116217945f233e1c9b0c57e45bf81b78.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m116217945f233e1c9b0c57e45bf81b78.map, position : gmap_m116217945f233e1c9b0c57e45bf81b78.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m116217945f233e1c9b0c57e45bf81b78.map.setCenter( gmap_m116217945f233e1c9b0c57e45bf81b78.positions[79] ); });

Cards Against Beau Lebens

Cards Against Beau Lebens

Cards Against Beau Lebens

Cards Against Beau Lebens

Posted on Flickr 10:11 am, December 20, 2013 jQuery(document).ready(function(){ var gmap_m90864c37fcc3ec03983f69381bcde7e7 = { positions : { 125 : new google.maps.LatLng( ‘40.669472’, ‘-73.984887’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m90864c37fcc3ec03983f69381bcde7e7’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m90864c37fcc3ec03983f69381bcde7e7.positions ) { gmap_m90864c37fcc3ec03983f69381bcde7e7.bounds.extend( gmap_m90864c37fcc3ec03983f69381bcde7e7.positions[m] ); } // Render markers for ( var m in gmap_m90864c37fcc3ec03983f69381bcde7e7.positions ) { gmap_m90864c37fcc3ec03983f69381bcde7e7.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m90864c37fcc3ec03983f69381bcde7e7.map, position : gmap_m90864c37fcc3ec03983f69381bcde7e7.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m90864c37fcc3ec03983f69381bcde7e7.map.setCenter( gmap_m90864c37fcc3ec03983f69381bcde7e7.positions[125] ); });

W is for old WordPress buddies!

W is for old WordPress buddies!

Posted on Instagram 1:54 pm, December 19, 2013 jQuery(document).ready(function(){ var gmap_mc068242f321aa1c87e8e4c3e283a3aca = { positions : { 959 : new google.maps.LatLng( ‘40.7443’, ‘-73.9813’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_mc068242f321aa1c87e8e4c3e283a3aca’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_mc068242f321aa1c87e8e4c3e283a3aca.positions ) { gmap_mc068242f321aa1c87e8e4c3e283a3aca.bounds.extend( gmap_mc068242f321aa1c87e8e4c3e283a3aca.positions[m] ); } // Render markers for ( var m in gmap_mc068242f321aa1c87e8e4c3e283a3aca.positions ) { gmap_mc068242f321aa1c87e8e4c3e283a3aca.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_mc068242f321aa1c87e8e4c3e283a3aca.map, position : gmap_mc068242f321aa1c87e8e4c3e283a3aca.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_mc068242f321aa1c87e8e4c3e283a3aca.map.setCenter( gmap_mc068242f321aa1c87e8e4c3e283a3aca.positions[959] ); });

Posted on Instagram

Posted on Instagram 10:54 pm, December 17, 2013 jQuery(document).ready(function(){ var gmap_m5281984704d3e4fdbe0f005ec331c812 = { positions : { 952 : new google.maps.LatLng( ‘40.72113’, ‘-73.998825’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m5281984704d3e4fdbe0f005ec331c812’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m5281984704d3e4fdbe0f005ec331c812.positions ) { gmap_m5281984704d3e4fdbe0f005ec331c812.bounds.extend( gmap_m5281984704d3e4fdbe0f005ec331c812.positions[m] ); } // Render markers for ( var m in gmap_m5281984704d3e4fdbe0f005ec331c812.positions ) { gmap_m5281984704d3e4fdbe0f005ec331c812.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m5281984704d3e4fdbe0f005ec331c812.map, position : gmap_m5281984704d3e4fdbe0f005ec331c812.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m5281984704d3e4fdbe0f005ec331c812.map.setCenter( gmap_m5281984704d3e4fdbe0f005ec331c812.positions[952] ); });

The Perfect Umbrella

umbrella

Let’s not beat around the bush; umbrellas generally suck. For a relatively complex invention, we’ve reduced it to its most basic, pathetic version when we’re buying one for $5 on a street corner in New York, only to have it snap in half a block away and have to buy a new one 5 minutes later. What would form your ideal/most perfect umbrella?

  1. Something strong, light, and small — maybe inspiration from trekking poles for the main pole?
  2. A good grip that I can hang onto, without getting a sore/cramped hand
  3. Wind billow/”Gust Buster” design of some sort to ensure that it doesn’t flip inside out/break in the wind
  4. Double/triple fold so that the folded product is nice and small
  5. Push to expand AND retract. Ideally all the way down (although I don’t know how technically feasible that is)
  6. Actually waterproof material. Too many umbrellas start leaking (especially around the central point) once they’ve been rained on a lot

What else would make your perfect umbrella? Can someone get right on it and Kickstarter this thing plz? Kthxbai :)

(more…)
Skyview

Skyview

Skyview

Skyview

Posted on Flickr 8:38 am, December 5, 2013 jQuery(document).ready(function(){ var gmap_m8f7a0203e4078fccb181623a370990b0 = { positions : { 83 : new google.maps.LatLng( ‘48.858861’, ‘2.349561’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m8f7a0203e4078fccb181623a370990b0’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m8f7a0203e4078fccb181623a370990b0.positions ) { gmap_m8f7a0203e4078fccb181623a370990b0.bounds.extend( gmap_m8f7a0203e4078fccb181623a370990b0.positions[m] ); } // Render markers for ( var m in gmap_m8f7a0203e4078fccb181623a370990b0.positions ) { gmap_m8f7a0203e4078fccb181623a370990b0.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m8f7a0203e4078fccb181623a370990b0.map, position : gmap_m8f7a0203e4078fccb181623a370990b0.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m8f7a0203e4078fccb181623a370990b0.map.setCenter( gmap_m8f7a0203e4078fccb181623a370990b0.positions[83] ); });

Doors

Doors

Doors

Doors

Posted on Flickr 6:43 am, December 5, 2013 jQuery(document).ready(function(){ var gmap_md4d8749ada1ec5b406447d3df34ab0a1 = { positions : { 96 : new google.maps.LatLng( ‘48.849347’, ‘2.350072’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_md4d8749ada1ec5b406447d3df34ab0a1’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_md4d8749ada1ec5b406447d3df34ab0a1.positions ) { gmap_md4d8749ada1ec5b406447d3df34ab0a1.bounds.extend( gmap_md4d8749ada1ec5b406447d3df34ab0a1.positions[m] ); } // Render markers for ( var m in gmap_md4d8749ada1ec5b406447d3df34ab0a1.positions ) { gmap_md4d8749ada1ec5b406447d3df34ab0a1.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_md4d8749ada1ec5b406447d3df34ab0a1.map, position : gmap_md4d8749ada1ec5b406447d3df34ab0a1.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_md4d8749ada1ec5b406447d3df34ab0a1.map.setCenter( gmap_md4d8749ada1ec5b406447d3df34ab0a1.positions[96] ); });

Drain

Drain

Drain

Drain

Posted on Flickr 10:48 am, December 4, 2013 jQuery(document).ready(function(){ var gmap_m5e9a3653ebdd4235089f15f9c8e06ade = { positions : { 352 : new google.maps.LatLng( ‘48.855247’, ‘2.340027’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m5e9a3653ebdd4235089f15f9c8e06ade’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m5e9a3653ebdd4235089f15f9c8e06ade.positions ) { gmap_m5e9a3653ebdd4235089f15f9c8e06ade.bounds.extend( gmap_m5e9a3653ebdd4235089f15f9c8e06ade.positions[m] ); } // Render markers for ( var m in gmap_m5e9a3653ebdd4235089f15f9c8e06ade.positions ) { gmap_m5e9a3653ebdd4235089f15f9c8e06ade.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m5e9a3653ebdd4235089f15f9c8e06ade.map, position : gmap_m5e9a3653ebdd4235089f15f9c8e06ade.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m5e9a3653ebdd4235089f15f9c8e06ade.map.setCenter( gmap_m5e9a3653ebdd4235089f15f9c8e06ade.positions[352] ); });

Palace

Palace

Palace

Palace

Posted on Flickr 10:24 am, December 4, 2013 jQuery(document).ready(function(){ var gmap_mca16b1131732c0294db2231cea56ee72 = { positions : { 945 : new google.maps.LatLng( ‘48.846722’, ‘2.33695’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_mca16b1131732c0294db2231cea56ee72’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_mca16b1131732c0294db2231cea56ee72.positions ) { gmap_mca16b1131732c0294db2231cea56ee72.bounds.extend( gmap_mca16b1131732c0294db2231cea56ee72.positions[m] ); } // Render markers for ( var m in gmap_mca16b1131732c0294db2231cea56ee72.positions ) { gmap_mca16b1131732c0294db2231cea56ee72.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_mca16b1131732c0294db2231cea56ee72.map, position : gmap_mca16b1131732c0294db2231cea56ee72.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_mca16b1131732c0294db2231cea56ee72.map.setCenter( gmap_mca16b1131732c0294db2231cea56ee72.positions[945] ); });

Chairs

Chairs

Chairs

Chairs

Posted on Flickr 8:49 am, December 4, 2013 jQuery(document).ready(function(){ var gmap_mb80d44f2a719ab16382393750733b7f4 = { positions : { 821 : new google.maps.LatLng( ‘48.852977’, ‘2.368205’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_mb80d44f2a719ab16382393750733b7f4’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_mb80d44f2a719ab16382393750733b7f4.positions ) { gmap_mb80d44f2a719ab16382393750733b7f4.bounds.extend( gmap_mb80d44f2a719ab16382393750733b7f4.positions[m] ); } // Render markers for ( var m in gmap_mb80d44f2a719ab16382393750733b7f4.positions ) { gmap_mb80d44f2a719ab16382393750733b7f4.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_mb80d44f2a719ab16382393750733b7f4.map, position : gmap_mb80d44f2a719ab16382393750733b7f4.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_mb80d44f2a719ab16382393750733b7f4.map.setCenter( gmap_mb80d44f2a719ab16382393750733b7f4.positions[821] ); });

The Future of WordPress: REST API + Javascript single-page app?

DISCLAIMER: Personal thoughts only, based on what I’m seeing around the web over the last few years.

Working on o2 for the last few months, and spending more and more time in amongst the Javascript community at events like jQueryConf, BackboneConf and dotJS, I’ve started thinking about the future of WordPress differently.

WordPress currently consists of a large, complex, PHP codebase, sitting on top of a MySQL backend. plugins are primarily PHP, with a light sprinkling on Javascript to mostly provide UI “candy”. Part of the reason for that is probably because:

(more…)
Doors

Doors

Doors

Doors

Posted on Flickr 11:30 am, December 3, 2013 jQuery(document).ready(function(){ var gmap_m8cac2ea1b8cb5f6131c2c627c8401632 = { positions : { 189 : new google.maps.LatLng( ‘48.85808’, ‘2.358111’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m8cac2ea1b8cb5f6131c2c627c8401632’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m8cac2ea1b8cb5f6131c2c627c8401632.positions ) { gmap_m8cac2ea1b8cb5f6131c2c627c8401632.bounds.extend( gmap_m8cac2ea1b8cb5f6131c2c627c8401632.positions[m] ); } // Render markers for ( var m in gmap_m8cac2ea1b8cb5f6131c2c627c8401632.positions ) { gmap_m8cac2ea1b8cb5f6131c2c627c8401632.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m8cac2ea1b8cb5f6131c2c627c8401632.map, position : gmap_m8cac2ea1b8cb5f6131c2c627c8401632.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m8cac2ea1b8cb5f6131c2c627c8401632.map.setCenter( gmap_m8cac2ea1b8cb5f6131c2c627c8401632.positions[189] ); });

Dusk

Dusk

Dusk

Dusk

Posted on Flickr 11:12 am, December 3, 2013 jQuery(document).ready(function(){ var gmap_m8694bf3c4a8235742c606272590106fc = { positions : { 436 : new google.maps.LatLng( ‘48.857011’, ‘2.353952’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m8694bf3c4a8235742c606272590106fc’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m8694bf3c4a8235742c606272590106fc.positions ) { gmap_m8694bf3c4a8235742c606272590106fc.bounds.extend( gmap_m8694bf3c4a8235742c606272590106fc.positions[m] ); } // Render markers for ( var m in gmap_m8694bf3c4a8235742c606272590106fc.positions ) { gmap_m8694bf3c4a8235742c606272590106fc.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m8694bf3c4a8235742c606272590106fc.map, position : gmap_m8694bf3c4a8235742c606272590106fc.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m8694bf3c4a8235742c606272590106fc.map.setCenter( gmap_m8694bf3c4a8235742c606272590106fc.positions[436] ); });

Theater

Theater

Theater

Theater

Posted on Flickr 5:48 am, December 2, 2013 jQuery(document).ready(function(){ var gmap_m54f4d49799f08511f53adededbec00d3 = { positions : { 70 : new google.maps.LatLng( ‘48.878777’, ‘2.330877’ ) }, bounds : new google.maps.LatLngBounds(), // empty for now, we’ll dynamically extend it later map : new google.maps.Map( document.getElementById( ‘gmap_m54f4d49799f08511f53adededbec00d3’ ), { mapTypeId: google.maps.MapTypeId.ROADMAP, center: new google.maps.LatLng( 0, 0 ), zoom: 16 // Seems to be a good zoom for a single point } ), markers : {}, }; // end of gmap // Extend the bounds of interest based on our positions for ( var m in gmap_m54f4d49799f08511f53adededbec00d3.positions ) { gmap_m54f4d49799f08511f53adededbec00d3.bounds.extend( gmap_m54f4d49799f08511f53adededbec00d3.positions[m] ); } // Render markers for ( var m in gmap_m54f4d49799f08511f53adededbec00d3.positions ) { gmap_m54f4d49799f08511f53adededbec00d3.markers[m] = new google.maps.Marker( { clickable: true, map : gmap_m54f4d49799f08511f53adededbec00d3.map, position : gmap_m54f4d49799f08511f53adededbec00d3.positions[m] } ); } // Redraw map to fit our new marker-based bounds gmap_m54f4d49799f08511f53adededbec00d3.map.setCenter( gmap_m54f4d49799f08511f53adededbec00d3.positions[70] ); });