Elasticsearch.js For Node.js
New client library for Elasticsearch, written in JS (Node).
New client library for Elasticsearch, written in JS (Node).
Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
Checked in at Whole Foods Market.
Look who’s in town.

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] ); });
Checked in at Crespella.
Checked in at Park Slope Dentistry.

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] ); });
Power and Responsibility | Nicole Fenton
KuraFire: Power, responsibility, databases: @nicoleslaw puts the most human face on access to data. http://t.co/Dcqwosa3wU [trigger warning]
Checked in at Stumptown Coffee Roasters.

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] ); });
Checked in at Penelope.
Lunch with @pkim
Checked in at Melt Kraft.

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] ); });

Checked in at Express Halal Food.
Old Faithful.
Secure, private, cloud-based messaging for iPhone and Android.
HTML5 provides an application caching mechanism that lets web-based applications run offline
We Asked a Military Expert if All the World’s Armies Could Shut Down the US | VICE
pkim: “@newsycombinator: Could All of the World’s Armies Combined Shut Down the U.S.? http://t.co/JC2dKr3XBo” Gonna guess Quora on this link.
Fungi Discovered In The Amazon Will Eat Your Plastic
instigating: Fungi discovered in the Amazon basin that eats plastic. #coulditbeso #ecodesign #wasteisfood @FastCoExist http://t.co/Qo6AN0FYy6
Checked in at Prospect.
This place looks perfect for “Friday Drinks”
Device State Detection with CSS Media Queries and JavaScript
Elegant way of detecting/knowing the state of the device being used to view your web app.
What Tech Hasn’t Learned From Urban Planning – NYTimes.com
anildash: Essential not just for better communities in cities, but online too: @aarieff on what tech must learn from urbanism. http://t.co/Oap7urib69
Fast full-featured HTML parser for Node. Based on WHATWG HTML5 specification.
Find dates, times, emails, phone numbers, links, reading time, even the emotion of the text, or check if it’s spam. Knwl.js makes it possible to scan through large amounts of text for data that may be of interest.
Hide your header until you need it.
An Alfred-style shortcut helper in Javascript.
Resumable.js, JavaScript magic for simultaneous, stable and resumable uploads
a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API.
Online regex tester and debugger: JavaScript, Python, PHP, and PCRE
Really powerful tool for testing complex regular expressions against sample text.
Checked in at Postmark.
Checked in at Warby Parker.
Checked in at DUB Pies – Windsor Terrace.
Celebratory pies.
Checked in at Park West Vision.
Time for new eyeballs.
Checked in at Dinosaur Bar-B-Que.
Have I been pwned? Check if your email has been compromised in a data breach
Check if you have an account that has been compromised in a data breach

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?
What else would make your perfect umbrella? Can someone get right on it and Kickstarter this thing plz? Kthxbai ![]()
Checked in at Aéroport Paris-Charles de Gaulle (CDG).
Au revoir Paris, it had been magnifique!

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] ); });

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] ); });
How Google’s “Deep Learning” Is Outsmarting Its Human Employees
mediatemple: How Google’s “Deep Learning” Is Outsmarting Its Human Employees: http://t.co/fIvUSpC2tJ via Fast Company *SC http://t.co/Q63I67AXUL
Checked in at Hôtel France Louvre.

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] ); });

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] ); });
Checked in at Le News Café.
Cafe stop.

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] ); });
Checked in at Hôtel France Louvre.
Checked in at La Perle.
Checked in at L’As du Fallafel.
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…)
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] ); });

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] ); });
Checked in at Hôtel France Louvre.
Totally should have stayed where I was. This place is nowhere near as nice.
Checked in at Hôtel R. Kipling.
Oops. Almost 6am. I guess sleep?
Checked in at Hôtel R. Kipling.

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] ); });
Checked in at Théâtre de Paris.
Setting up for #dotJS. Come visit us at the @WordPress booth!