-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
547 lines (490 loc) · 73.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title> Bloom Blog</title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="stylesheet" href="/style.css" type="text/css" media="screen" />
<!--[if IE]><link rel="stylesheet" href="/ie.css" type="text/css" media="screen" /><![endif]-->
<link rel="alternate" type="application/rss+xml" title="Bloom Blog » Feed" href="http://blog.bloom.io/feed/" />
<link rel="alternate" type="application/rss+xml" title="Bloom Blog » Comments Feed" href="http://blog.bloom.io/comments/feed/" />
<script type="text/javascript">
//<![CDATA[
var infiniteScroll = {"settings":{"id":"content","ajaxurl":"http:\/\/blog.bloom.io\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":true,"text":"Load more posts","totop":"Scroll back to top","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":0,"history":{"host":"blog.bloom.io","path":"\/page\/%d\/","use_trailing_slashes":true},"stats":"v=wpcom-no-pv&x_pagetype=infinite"}};
//]]>
</script>
<script type="text/javascript">
/* <![CDATA[ */
function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
/* ]]> */
</script>
<link rel='stylesheet' id='all-css-0' href='http://s0.wp.com/_static/??-eJyNkFFqxDAMRC9UVyxJ2a/SsziO1lZWsUwkk+b2NaUbWhZMvzQS88RIsBdHOXCdUWFRsEThPsnnKV6D6gs0V5BsmA0mlugK10hZoemIs1RzN2GWHXaaI9oTtNYToXyjTHac4l9mS7i2hKVOEBh9dklW7JHK1E5KLdKpevYi2m5gTxuoHdxd/dub/EY5PmqPCn6TqsiwoBUf7u4x6EFGjLOLnhm342/3hP28KI0QWSb/vfdjfb8Mb+NluI7XYfkCZPS5nw==' type='text/css' media='all' />
<link rel='stylesheet' id='print-css-0' href='/global-print.css' type='text/css' media='print' />
<script type='text/javascript'>
/* <![CDATA[ */
var LoggedOutFollow = {"invalid_email":"Your subscription did not succeed, please try again with a valid email address."};
/* ]]> */
</script>
<script type='text/javascript' src='http://s2.wp.com/_static/??-eJx9jusKwjAMRl/IWrxM9If4LNualpSsrUtr2dtbhxvOGwSSL3wHjsxBoGspKWBpy1wT9MNzrS2vZCm03kVwUTbkjQiUDDqW5TagfIpCeyKfZUZlIL4zXZoJdBodxmE+pu6rAAd03/5LsV8tzto3FtoPjcnhhgq8rJkhjsCYQw/Mf8QjEihhaqKHwiIV6tKdN7tqfzxtq0Nl72bjfhc='></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://bloomio.wordpress.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://bloomio.wordpress.com/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress.com" />
<link rel='shortlink' href='http://wp.me/1hmxS' />
<!-- Jetpack Open Graph Tags -->
<meta property="og:type" content="blog" />
<meta property="og:title" content="Bloom Blog" />
<meta property="og:url" content="http://blog.bloom.io/" />
<meta property="og:description" content="Pop-cultural instruments for data expression and exploration." />
<meta property="og:site_name" content="Bloom Blog" />
<meta name="twitter:site" content="@wordpressdotcom" />
<link rel="shortcut icon" type="image/x-icon" href="http://s2.wp.com/i/favicon.ico?m=1311976023g" sizes="16x16 24x24 32x32 48x48" />
<link rel="icon" type="image/x-icon" href="http://s2.wp.com/i/favicon.ico?m=1311976023g" sizes="16x16 24x24 32x32 48x48" />
<link rel="apple-touch-icon-precomposed" href="http://s0.wp.com/i/webclip.png?m=1311618091g" />
<link rel='openid.server' href='http://bloomio.wordpress.com/?openidserver=1' />
<link rel='openid.delegate' href='http://bloomio.wordpress.com/' />
<link rel="search" type="application/opensearchdescription+xml" href="http://blog.bloom.io/osd.xml" title="Bloom Blog" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wordpress.com/opensearch.xml" title="WordPress.com" />
<style>
/* <![CDATA[ */
/* Block: reblog */
.reblog-from img { margin: 0 10px 0 0; vertical-align: middle; padding: 0; border: 0; }
.reblogger-note img.avatar { float: left; padding: 0; border: 0; }
.reblogger-note-content { margin: 0 0 20px; }
.reblog-post .wpcom-enhanced-excerpt-content { border-left: 3px solid #eee; padding-left: 15px; }
.reblog-post ul.thumb-list { display: block; list-style: none; margin: 2px 0; padding: 0; clear: both; }
.reblog-post ul.thumb-list li { display: inline; margin: 0; padding: 0 1px; border: 0; }
.reblog-post ul.thumb-list li a { margin: 0; padding: 0; border: 0; }
.reblog-post ul.thumb-list li img { margin: 0; padding: 0; border: 0; }
.reblog-post .wpcom-enhanced-excerpt { clear: both; }
.reblog-post .wpcom-enhanced-excerpt address,
.reblog-post .wpcom-enhanced-excerpt li,
.reblog-post .wpcom-enhanced-excerpt h1,
.reblog-post .wpcom-enhanced-excerpt h2,
.reblog-post .wpcom-enhanced-excerpt h3,
.reblog-post .wpcom-enhanced-excerpt h4,
.reblog-post .wpcom-enhanced-excerpt h5,
.reblog-post .wpcom-enhanced-excerpt h6,
.reblog-post .wpcom-enhanced-excerpt p { font-size: 100% !important; }
.reblog-post .wpcom-enhanced-excerpt blockquote,
.reblog-post .wpcom-enhanced-excerpt pre,
.reblog-post .wpcom-enhanced-excerpt code,
.reblog-post .wpcom-enhanced-excerpt q { font-size: 98% !important; }
/* ]]> */
</style>
<script type="text/javascript" src="//use.typekit.net/rdl4muo.js"></script><script type="text/javascript">try{Typekit.load();}catch(e){}</script>
<meta name="application-name" content="Bloom Blog" /><meta name="msapplication-window" content="width=device-width;height=device-height" /><meta name="msapplication-tooltip" content="Pop-cultural instruments for data expression and exploration." /><meta name="msapplication-task" content="name=Subscribe;action-uri=http://blog.bloom.io/feed/;icon-uri=http://s2.wp.com/i/favicon.ico" /><meta name="msapplication-task" content="name=Sign up for a free blog;action-uri=http://wordpress.com/signup/;icon-uri=http://s2.wp.com/i/favicon.ico" /><meta name="msapplication-task" content="name=WordPress.com Support;action-uri=http://support.wordpress.com/;icon-uri=http://s2.wp.com/i/favicon.ico" /><meta name="msapplication-task" content="name=WordPress.com Forums;action-uri=http://forums.wordpress.com/;icon-uri=http://s2.wp.com/i/favicon.ico" /><meta name="title" content="Bloom Blog on WordPress.com" />
<meta name="description" content="Pop-cultural instruments for data expression and exploration." />
<link rel="stylesheet" type="text/css" href="http://s0.wp.com/?custom-css=1&csblog=1hmxS&cscache=6&csrev=26" />
</head>
<body class="home blog typekit-enabled color-light highlander-enabled highlander-light infinite-scroll neverending">
<div id="wrapper">
<div class="header">
<div id="logo">
<h1><a href="http://blog.bloom.io">Bloom Blog</a></h1>
<h2>Pop-cultural instruments for data expression and exploration.</h2>
</div>
<div id="nav">
<ul>
</ul>
</div>
</div>
<div id="content" class="content">
<div class="post-266 post type-post status-publish format-standard hentry category-meta" id="post-266">
<h1><a href="http://blog.bloom.io/2012/11/01/this-bloom-is-off-the-vine/" title="Permalink to This Bloom is off the Vine">This Bloom is off the Vine</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> November 1, 2012</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/1neb/" title="Posts by Ben" rel="author">Ben</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/meta/" title="View all posts in Meta" rel="category tag">Meta</a></span> <span class="tag-links"></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2012/11/01/this-bloom-is-off-the-vine/#comments" title="Comment on This Bloom is off the Vine"><strong>10</strong> Comments »</a></span></small>
<p>As of November 1st, 2012, <a href="http://bloom.io">Bloom Studio Inc</a>. has ceased operations. We’d like to thank all of you who accompanied us in our explorations of new forms of playful data-driven discovery. <a href="http://planetary.bloom.io">Planetary</a> was downloaded onto over 2 million iPads and was hailed by users and critics alike as one of the most beautiful experiences to push graphic performance on their new devices.</p>
<p>We have been working with the ideas behind applications like Planetary and <a href="http://biologic.bloom.io">Biologic</a> since long before we came together to form Bloom, and we will doubtlessly reapproach this space again in future manifestations of our work. Seed-funded ventures are like essays striving for the culture-changing insight. Who knows what our next iterations will bring? I think we might have some ideas… Follow the founders at <a href="http://twitter.com/neb">@neb</a>, <a href="http://twitter.com/randometc">@randometc</a>, and <a href="http://twitter.com/jandersen">@jandersen</a>.</p>
<h3>Practically Speaking</h3>
<p>Sadly but predictably we need to turn off the servers that power our Biologic app, and its web-based sibling <a href="http://fizz.bloom.io">Fizz</a>, so those apps will cease along with Bloom itself in the next few days. We don’t store much in the way of personal data but anything we do have will be deleted and the app permissions will be revoked.</p>
<p>We will keep Planetary available in the App Store for as long as we possibly can, and as individuals (with some help from our friends) we’ll be seeking a safe way to preserve it for future devices and platforms. Watch this space!</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-258 post type-post status-publish format-standard hentry category-biologic" id="post-258">
<h1><a href="http://blog.bloom.io/2012/03/08/introducing-biologic/" title="Permalink to Introducing Biologic">Introducing Biologic</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> March 8, 2012</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/tomcarden/" title="Posts by Tom Carden" rel="author">Tom Carden</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/biologic/" title="View all posts in Biologic" rel="category tag">Biologic</a></span> <span class="tag-links"></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2012/03/08/introducing-biologic/#comments" title="Comment on Introducing Biologic"><strong>2</strong> Comments »</a></span></small>
<p><a href="http://itunes.apple.com/us/app/biologic/id482155874?mt=8"><img src="/files/2012/03/screenshot-2012-02-17-15-52-45.png" alt="" title="Biologic app screenshot" width="590" height="786" class="alignnone size-full wp-image-259" /></a></p>
<p>Bloom’s newest iPad app <a href="http://biologic.bloom.io">Biologic</a> is available now as a <a href="http://itunes.apple.com/us/app/biologic/id482155874?mt=8" title="Biologic on the App Store">free download from the App Store</a>. Biologic shows your contacts from Twitter, Facebook and LinkedIn as a collection of biological cells filled with their most recent updates. CNET’s Daniel Terdiman has <a href="http://news.cnet.com/8301-13772_3-57392925-52/twitter-and-facebook-bloom-on-ipad-with-biologic/">an interview with Ben</a> about the thinking behind the release and our plans for future versions of the app.</p>
<p>We’re excited to share this with the world – and we look forward to trying it out on the new iPad next week! – and we have plans to release several new features in the coming weeks. An update featuring improved UI for settings and item selection is already awaiting App Store approval, and we’d love to hear your suggestions what what comes next. You can talk to us <a href="http://twitter.com/databloom">on Twitter</a>, <a href="https://www.facebook.com/biologicapp">on Facebook</a>, or using the comments on this post.</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-248 post type-post status-publish format-standard hentry category-cto-hat tag-apis tag-back-end tag-certificates tag-cto-hat-2 tag-heroku tag-hosting tag-https tag-nginx tag-openssl tag-rapidssl tag-security tag-signing tag-ssl" id="post-248">
<h1><a href="http://blog.bloom.io/2011/09/16/https-ssl-table-stakes/" title="Permalink to SSL and HTTPS are Table Stakes">SSL and HTTPS are Table Stakes</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> September 16, 2011</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/tomcarden/" title="Posts by Tom Carden" rel="author">Tom Carden</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/cto-hat/" title="View all posts in CTO-Hat" rel="category tag">CTO-Hat</a></span> <span class="tag-links"> | <b>Tags:</b> <a href="http://blog.bloom.io/tag/apis/" rel="tag">apis</a>, <a href="http://blog.bloom.io/tag/back-end/" rel="tag">back-end</a>, <a href="http://blog.bloom.io/tag/certificates/" rel="tag">certificates</a>, <a href="http://blog.bloom.io/tag/cto-hat-2/" rel="tag">cto-hat</a>, <a href="http://blog.bloom.io/tag/heroku/" rel="tag">heroku</a>, <a href="http://blog.bloom.io/tag/hosting/" rel="tag">hosting</a>, <a href="http://blog.bloom.io/tag/https/" rel="tag">https</a>, <a href="http://blog.bloom.io/tag/nginx/" rel="tag">nginx</a>, <a href="http://blog.bloom.io/tag/openssl/" rel="tag">openssl</a>, <a href="http://blog.bloom.io/tag/rapidssl/" rel="tag">rapidssl</a>, <a href="http://blog.bloom.io/tag/security/" rel="tag">security</a>, <a href="http://blog.bloom.io/tag/signing/" rel="tag">signing</a>, <a href="http://blog.bloom.io/tag/ssl/" rel="tag">ssl</a></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><span>Comments Off</span></span></small>
<p>We’re working on a new back-end to support our visualizations of personal data from services like Twitter, Facebook and LinkedIn. These services now routinely offer <a href="http://en.wikipedia.org/wiki/HTTP_Secure">https</a>, the secure form of http, as an option to protect users from eavesdropping on open networks. It took a high profile release of a simple tool, <a href="http://codebutler.com/firesheep">FireSheep</a>, to give users the awareness to activate this by default, and many users still aren’t aware that they need to do it. A few months later, https is “<a title="(the second, business definition of course)" href="http://en.wikipedia.org/wiki/Table_stakes">table stakes</a>” for online services that handle personal data and it makes sense to activate it in new products by default. For example, your server <em>must</em> support https if you want to use <a href="https://developer.foursquare.com/docs/realtime.html">Foursquare’s new push APIs</a> or <a href="https://developers.facebook.com/blog/post/499/">display content on Facebook</a> after October 1st. Other services will surely follow suit.</p>
<p>If like me you’ve never needed to activate https you might not know what’s involved or what to look for. I’m still learning, but I thought I’d share what I’ve found so far.</p>
<p>To enable https you need to make sure your web server host supports it and you need an SSL certificate. SSL certificates are “just” text files of data that represent a chain of trust from a certificate authority through the certificate seller and down to you. The certificate authority’s credentials are installed in your browser to allow it to verify the certificates of websites you visit. Ideally there are identity checks at all stages of the certification process, though in practice it’s probably just an automated phone message and an email by the time it gets to you. Of course you need a credit card to pay for a certificate; those are table stakes too.</p>
<h3>SSL on Heroku</h3>
<p>We’re using <a href="http://heroku.com">Heroku</a> for our hosting and they support a few different options for SSL in their add-ons section. If you’re using a *.heroku.com or *.herokuapp.com domain for your app you can just activate “piggy-back” SSL for free and stop reading. I’m told by support that this will be activated by default for new apps and that it definitely supports the new herokuapp.com <em>Cedar</em> stack, which wasn’t clear from the add-on page.</p>
<p>Otherwise, the differences between SSL options are fairly well explained on <a href="http://addons.heroku.com/ssl">the SSL add-on page</a> and from Heroku’s perspective it’s a matter of pushing you towards solutions that are most compatible with cloud hosting. Securing every subdomain is usually what you want, but in the cloud this means a dedicated IP address for your domain and you will be charged accordingly. We went with hostname SSL, which is a bit more convenient in the cloud but still requires a load balancer step, so Heroku currently charges $20/month for this option. Hostname SSL enables us to secure a single subdomain like <tt>secure.example.com</tt>.</p>
<p>Note: if you’re using Heroku their graphical tools are beautifully designed but <em>not</em> especially feature-complete, especially for SSL. It’s better to jump straight to the technical documentation and complete tasks on the command line. Their <a href="http://devcenter.heroku.com/articles/ssl">documentation for SSL support</a> is clear and up-to-date.</p>
<h3>Choosing a Provider</h3>
<p>After asking around we received a couple of recommendations for an SSL certificate. Most useful articles you’ll find with Google talk about using GoDaddy but we’re not big fans of their up-sell process or tools so we wanted to try another seller. <a href="http://gandi.net">Gandi.net</a> looked good but wouldn’t support our .io domain name, so we went with <a href="http://rapidssl.com">RapidSSL</a>.</p>
<p>The main thing we were looking for was straight-talk and focus, which is why we chose RapidSSL. Our DNS provider also sells SSL certificates but their documentation seemed out of date and links to help documents were broken. But if you like one of your existing providers then of course check with them first.</p>
<p>Note: RapidSSL is an entry-level reseller of certificates from <a href="http://www.geotrust.com/">GeoTrust</a>. If you’re not on a budget, or you want <em>Extended Validation</em> which will show your name in the address bar in modern browsers, then go directly to GeoTrust and pay a little bit more. We’re not conducting credit card transactions and our API traffic is largely behind the scenes, so we’re more interested in privacy and security than user experience at the moment.</p>
<h3>Making a key and Certificate Signing Request</h3>
<p>To acquire an SSL certificate you need to create a private key for your server and use it to create a Certificate Signing Request which you upload during the purchase process.</p>
<p>Heroku uses Nginx to serve your pages (no matter which language you’re using to serve responses, Nginx sees the requests first and forwards them to your app). RapidSSL didn’t have instructions for creating a key/CSR for Nginx but the instructions for Apache worked fine. I used the <tt>openssl</tt> command in my Mac terminal, as follows:</p>
<ol>
<li>Generate a new key with<br />
<blockquote><p><tt>openssl genrsa -des3 -out example.com.key 2048</tt></p></blockquote>
</li>
<li>Generate a CSR with<br />
<blockquote><p><tt>openssl req -new -key example.com.key -out example.com.csr</tt></p></blockquote>
<p> – note that <strong>Common Name</strong> will be the name of the subdomain you’re securing.</li>
<li>Copy/paste the CSR into RapidSSL’s form as part of the purchase process</li>
<li>Complete the phone confirmation step. I also needed to activate a new forwarding email address on our domain to handle the admin email, because our .io domain couldn’t provide the relevant admin contacts automatically.</li>
<li>Await your certificates by email. This wasn’t as rapid as we’d hoped, it took about an hour.</li>
<li>A web server usually requires an unlocked key, so do<br />
<blockquote><p><tt>openssl rsa -in example.com.key -out example.com.unlocked.key</tt></p></blockquote>
<p> to create that. With hindsight you could leave out the <tt>-des3</tt> in step one and skip this step.</li>
<li>Save the keys you receive by email. For filenames we used <tt>example.com.crt</tt> for ours and <tt>intermediate.crt</tt> for the certificate authority’s certificate.</li>
<li>Combine your key and the intermediate key using<br />
<blockquote><p><tt>cat example.com.crt intermediate.crt > example.com.pem</tt></p></blockquote>
<p> (.pem and .crt seem to be used interchangeably, please let us know if this is incorrect).</li>
<li>Upload the certificate and unlocked key to Heroku for your app:<br />
<blockquote><p><tt>heroku ssl:add example.com.pem example.com.unlocked.key --app example-app</tt></p></blockquote>
</li>
<li>Activate Hostname SSL, and consent to being charged $20/month:<br />
<blockquote><p><tt>heroku addons:add ssl:hostname --app example-app</tt></p></blockquote>
</li>
<li>Lastly, update the CNAME DNS record for your subdomain to point to the new hostname provided to you in an email from Heroku. This arrived as quickly as I could check my email.
</ol>
<p>That’s it! Phewf! A simple 11-step process. There’s a <a href="https://gist.github.com/1222498">full transcript</a> of this on github if you want to see what the responses look like, and once you have a certificate <a href="http://devcenter.heroku.com/articles/ssl#customdomain_ssl_wwwyourdomaincom">Heroku’s SSL docs</a> are excellent. Good luck!</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-238 post type-post status-publish format-standard hentry category-hiring category-planetary tag-apps tag-bloom tag-cinder tag-hiring-2 tag-ipad tag-itunes tag-libcinder tag-music tag-opengl tag-planetary-2 tag-releases" id="post-238">
<h1><a href="http://blog.bloom.io/2011/09/11/planetary-version-2/" title="Permalink to Planetary, Version 2">Planetary, Version 2</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> September 11, 2011</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/tomcarden/" title="Posts by Tom Carden" rel="author">Tom Carden</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/hiring/" title="View all posts in Hiring" rel="category tag">Hiring</a>, <a href="http://blog.bloom.io/category/planetary/" title="View all posts in Planetary" rel="category tag">Planetary</a></span> <span class="tag-links"> | <b>Tags:</b> <a href="http://blog.bloom.io/tag/apps/" rel="tag">apps</a>, <a href="http://blog.bloom.io/tag/bloom/" rel="tag">bloom</a>, <a href="http://blog.bloom.io/tag/cinder/" rel="tag">cinder</a>, <a href="http://blog.bloom.io/tag/hiring-2/" rel="tag">hiring</a>, <a href="http://blog.bloom.io/tag/ipad/" rel="tag">ipad</a>, <a href="http://blog.bloom.io/tag/itunes/" rel="tag">itunes</a>, <a href="http://blog.bloom.io/tag/libcinder/" rel="tag">libcinder</a>, <a href="http://blog.bloom.io/tag/music/" rel="tag">music</a>, <a href="http://blog.bloom.io/tag/opengl/" rel="tag">opengl</a>, <a href="http://blog.bloom.io/tag/planetary-2/" rel="tag">planetary</a>, <a href="http://blog.bloom.io/tag/releases/" rel="tag">releases</a></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2011/09/11/planetary-version-2/#comments" title="Comment on Planetary, Version 2"><strong>16</strong> Comments »</a></span></small>
<p>We’re proud to announce that version 2.0 of <a href="http://planetary.bloom.io">Planetary</a>, our celestial music player for iPad, is <a href="http://itunes.apple.com/us/app/planetary/id432462305?mt=8">now available for download in the iTunes App Store</a>!</p>
<p><a href="http://itunes.apple.com/us/app/planetary/id432462305?mt=8"><img src="/files/2011/09/bloom-planetary-2.png" alt="Bloom Planetary 2 screenshot" title="Bloom Planetary 2" width="590" height="368" class="alignnone size-full wp-image-241" /></a></p>
<p>To learn more about how Planetary was made, check-out Robert’s <a href="http://blog.bloom.io/2011/07/11/creating-new-worlds/">in-depth behind-the-scenes post</a> and the <a href="http://roberthodgin.com/planetary-ipad-app/"> extra notes</a> on his personal portfolio site, or read on for a summary of “What’s New”:</p>
<blockquote><p>Planetary 2.0 features a full graphical update: new galaxy detail, solar flares, eclipses, atmospheric glow, accretion disks and much more fine detail at planet and moon level. Additional detail is available for iPad 2. </p>
<p>To address your most popular feature requests we’ve added in-app support for playlist selection and shuffle/repeat modes. </p>
<p>Other new features include optional automatic camera motion (great for long playlists!), gyroscope support for iPad 2 and scale and speed sliders to adjust the universe to your tastes.</p>
<p>Several small bugs with version one are also fixed and Planetary 2.0 has much better interactive performance, especially when flying between planets and when interacting with the playhead slider. </p>
<p>Many thanks for all the feedback and kind words we received about version 1 – keep it coming!</p></blockquote>
<h3>Beginnings and Endings</h3>
<p>This second release of Planetary also marks the departure of our colleague <a href="http://flight404.com">Robert Hodgin</a>. You might remember that we announced Robert had joined us as Creative Director earlier this year. With hindsight we realize it would have been more appropriate for him to join us as artist in residence for the duration of the Planetary project. In practice that’s what his role has been, and he’s made the choice to step away at this point.</p>
<p>Robert returns to pursuing his own projects and plans to increase his contributions to the <a href="http://libcinder.org">Cinder library</a>. We’ll continue to use Cinder in future Bloom projects too so we’re very excited about this and wish him well in all his future endeavors. Thanks Robert, it’s been a fantastic journey!</p>
<h3>What Next?</h3>
<p>We hope to play host to more artists-in-residence in future, without blending that process with a more traditional production role unless that’s the right thing to do. If you’re an ambitious digital artist interesed in working with Bloom in this capacity, and helping us define it, please <a href="[email protected]?subject=artist%20in%20residence%20">get in touch</a>.</p>
<p>We’re also considering creating a more traditional Creative Director role within our team, if you’re interested in helping us define this role please <a href="[email protected]?subject=creative%20director%20">get in touch</a>.</p>
<p>As with all our openings, we’re not interested in hearing from recruiters or agencies at this time.</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-177 post type-post status-publish format-standard hentry category-planetary tag-ipad tag-planetary-2 tag-post-mortem tag-process" id="post-177">
<h1><a href="http://blog.bloom.io/2011/07/11/creating-new-worlds/" title="Permalink to Creating new worlds">Creating new worlds</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> July 11, 2011</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/flight404/" title="Posts by flight404" rel="author">flight404</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/planetary/" title="View all posts in Planetary" rel="category tag">Planetary</a></span> <span class="tag-links"> | <b>Tags:</b> <a href="http://blog.bloom.io/tag/ipad/" rel="tag">ipad</a>, <a href="http://blog.bloom.io/tag/planetary-2/" rel="tag">planetary</a>, <a href="http://blog.bloom.io/tag/post-mortem/" rel="tag">post-mortem</a>, <a href="http://blog.bloom.io/tag/process/" rel="tag">process</a></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2011/07/11/creating-new-worlds/#comments" title="Comment on Creating new worlds"><strong>12</strong> Comments »</a></span></small>
<p>During the last couple years, I have become addicted to science shows: particularly shows about astronomy. Everything about the subject fascinates me. Shortly after I joined Bloom, we started working on a new way to visualize and explore your iPad music collection. While coming up with concepts to explore, I stumbled upon the following image.</p>
<p><a href="http://www.flickr.com/photos/planetaryrings/"><img src="http://farm6.static.flickr.com/5044/5273267039_359f048d1e_z.jpg" alt="" width="580" /></a></p>
<p>This photo, taken by the Cassini probe, was the original inspiration for the Planetary app. We decided to model the iPad music library after a model of a solar system. Several solar systems in fact. Each star in our universe will be an artist in your music library. Each of these stars will be orbited by planets representing albums. Each planet will have a moon system with each moon representing a track.</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary Comp" src="http://farm4.static.flickr.com/3331/5774236619_b4102a76e5_b.jpg" alt="" width="580" height="290" /></a></p>
<p>After establishing this initial premise, many more details fell into place. All of the artists in your collection would be a galaxy. Groupings of stars, either by filter or by playlist, would be constellations. The look of the planets would be derived from genre information mixed with album art. The speed of the orbit would be related to track length. So many options!</p>
<h2><strong>Getting Started</strong></h2>
<p>The first hurdle was to get some content onto the iPad. Happily, Ryan Alexander had already been working on an iPad music library. We ended up using Cinder for the job partially because it is the platform that I have been working with for a couple years but also because Cinder plays quite well with the iPad.</p>
<p>I needed to get up to speed with doing recursive node structures so I coded up a project that would put a dot on the screen. When you tapped this dot, it would create a bunch of orbiting child-dots. These children could also be tapped, creating even more child nodes. This prototype took less than a day to create and I naively thought we would be done with the whole thing in a week, max. Silly me.</p>
<h2><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Force-Directed nodes" src="http://farm6.static.flickr.com/5030/5774775138_1d6b598525_b.jpg" alt="" width="580" height="290" /></a></h2>
<h2>Two Dimensions is plenty of dimensions</h2>
<p>A couple days later, we implemented the iPad music library code and had our first working music library visualization. It was top-down, two dimensional, the lighting was baked into the texture, it used placeholder 2D planet graphics, and the text layout was far from elegant. But it worked. And even in this initial stage, it started to show its potential.</p>
<h2><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary 1st Draft" src="http://farm3.static.flickr.com/2759/5774863602_0529cf22b9_b.jpg" alt="" width="580" height="290" /></a></h2>
<p>Someone raised the point that they thought it could be 3D. I got nervous. I had already quietly considered this option, then abandoned it. In my experience, going from 2D to 3D makes the experience approximately 15000% harder. There are so many new things to have to worry about. You have to make things look good at many different scales. You have to create a robust camera model for moving through the space. You have to implement a 3D picker. But for me, the bit that was going to be the hardest was coming up with a solution for rendering the planets and moons.</p>
<p>With a top-down 2D simulation, you can load in a ton of pre-made 2D graphics and you never have to worry about what might happen if the user viewed the planet from a different angle. With the 2D version, you can easily use flat circular graphics to represent the planets. With 3D, you would have to shift to drawing spheres. You could use billboarded 2D graphics (these are images that always align their face towards the camera so you never see the 2D graphic edge-on) but you would then lose a lot of the control of the lighting. And since we were going to show bright stars against a dark background, the lighting model would have to be highly tuned to keep from looking flat or dated. Plus, there is a ton of music out there. If we wanted to represent every single album ever made with a unique graphic, we could not rely solely on pre-made planet images.</p>
<h2>The Era of Additive Blending</h2>
<p>A quick and lazy solution to many of the problems associated with the switch from 2D to 3D is to simply make everything glow. I made the planets and moons glow as brightly as the stars. In fact, it would be pointless to even refer to them as planets and moons anymore. I enabled additive blending and everything became a star.</p>
<p>With additive blending, you can use flat images of glowing circles instead of spheres. You can render the content in whatever order you want. Best of all, the idea of a ‘planet surface’ goes completely away and you save yourself weeks of work. Everything is all aglow and mission accomplished.</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary 2nd Draft" src="http://farm3.static.flickr.com/2748/5774775246_45f4d379b6_b.jpg" alt="" width="580" height="290" /></a></p>
<p>Enter friend and original beta-tester, Tom Coates.</p>
<p>Tom : “You can’t have stars orbiting other stars. That just doesn’t happen.”</p>
<p>Me : “But some star systems have multiple stars. They orbit each other.”</p>
<p>Tom: “Yes, but those are multi-star systems. They aren’t stars orbiting other stars orbiting still other stars. This is stupid. You guys are stupid.”</p>
<p>My inaccurate re-imagining of Tom Coates had a point.</p>
<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">Return of the spheres</span></p>
<p>There were many unknowns but the one that made me the most worried was whether or not the iPad could handle drawing so many spheres. We quickly swapped in a drawSphere() where it was previously drawing a 2D graphic for each track and planet.</p>
<p>Happily, the iPad handled it like a pro. Even with albums featuring 30 or more tracks, the frame rate stayed at a happy 60. More importantly, it started to look fantastic.</p>
<h2><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary 3rd Draft" src="http://farm3.static.flickr.com/2467/5774775302_8299ca9b61_b.jpg" alt="" width="580" height="290" /></a></h2>
<p>It was time to start thinking more about the look of the planets and moons. The stars were easy. At this point, they were still just 2D graphics. Still no reason to render the stars with spheres because it was going to be overkill. A star in space is going to look like a glowing circle, no matter what angle you view it. But the planets did not glow. They needed to reflect light from the star. They needed to have a dark side. They needed to have a rich surface texture. It would be great if they could have clouds. And they might each have many orbiting moons which all needed to have the same attention to detail.</p>
<p>And speaking of detail, we also needed to figure out a good system for controlling the level of detail based on distance from the camera. The planet that is really far away and has a screen radius of a couple pixels does not require a high resolution sphere. It would be waste of computing power. Additionally, any planets with cloud layers would require us to draw two spheres, one for the planet surface and a slightly larger one for the cloud layer. But again, with planets that are really far away, the cloud layer didn’t need to be rendered at all because you just wouldn’t see it.</p>
<p>In order to speed things up, we created 4 different vertex arrays representing 4 different resolutions of sphere. This helped a great deal and even with many high resolution nearby planets, the frame rate kept humming along. We did run into some errors along the way. In my first attempt at coding a vertex array sphere from scratch, I messed something up and these fantastic abstract forms filled the sky.</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary 4th Draft" src="http://farm4.static.flickr.com/3112/5774236845_d5ea344b81_b.jpg" alt="" width="580" height="290" /></a></p>
<h2>Surfacing the planets</h2>
<p>Now that we had our spheres, what to put on them? We considered just slapping on the album art but we knew that would just look odd. And what would we do for albums that have no album art? It was time to do a bit of pixel by pixel manipulation.</p>
<p>The creation of the planet surface is a 4 step process.</p>
<p><img class="alignnone" src="http://farm3.static.flickr.com/2387/5795186401_ee567c17be_z.jpg" alt="" width="603" height="604" /></p>
<p>1) Grab a rectangular block of pixels from around the center of the album art. The size and position of the block you grab would be based on the number of tracks that album has combined with a integer representation of the album name. This way, the planet representing Stateless’s album ‘Matilda’ should look the same on my iPad as it does on yours. If the album art is missing, we skip right to step 3.</p>
<p>2) Make it a mirror image by doubling the image but horizontally reversing one side. This is a quick and easy way to deal with the seam line that what would appear if you just used the non-mirrored version. The seams are still there but their impact is minimized by the mirroring.</p>
<p>3) To make the planet surface a bit more rugged and rough, we add in some additional texture directly on the image. This additional texture is derived from images provided by NASA. We use combinations of photos taken of the surface of Mercury, Venus, Earth, Mars and the cloud patterns from Jupiter. These extra details are burned into our album art graphic.</p>
<p>4) Finally, we add a cloud layer. As we haven’t found a fast enough way to do dynamic clouds (maybe on the iPad 3 or 4?) we ended up using prepared graphics of the earth’s cloud layer, some modified images from NASA’s Blue Marble venture, and some zoomed and cropped textures from our own Flickr images. This cloud layer is actually rendered as a separate slightly larger sphere so it can rotate independent of the planet.</p>
<p>The moons are done similarly. The moon textures are even smaller crops from different parts of the original album art. So with the above example for the Matilda album, you might end up with moons that are solid red orbiting next to a moon that is purple with a blue stripe.</p>
<div class="wp-caption alignnone" style="width: 590px"><img src="http://farm3.static.flickr.com/2430/5795294311_44759c4512.jpg" alt="" width="580" height="310" /><p class="wp-caption-text">Worlds without atmosphere</p></div>
<p>After implementing this 4 step process, the planets still felt like they were missing something. They felt really small. Like marbles. And they also felt very lifeless. They had a barren quality. These planets needed an implication of complexity which would hint at the possibility of life. These planets needed atmosphere.</p>
<div class="wp-caption alignnone" style="width: 590px"><img src="http://farm6.static.flickr.com/5152/5795853520_a92d6961c3.jpg" alt="" width="580" height="310" /><p class="wp-caption-text">Worlds with atmosphere</p></div>
<p>This was a little tricky. It isn’t as easy as rendering a slightly larger semi-transparent sphere around the planet. You would still end up with a hard edge instead of a fuzzy glow. The solution we chose uses a billboarded graphic of a fuzzy glowing ring and it is drawn at the same position and screen size as the planet. Not only does this give the appearance of an atmosphere, but it helps to mask the aliased edges of the sphere (anti-aliasing is not currently supported on the iPad). With this process, we were able to create a really lush variety of different looks for the planets and moons.</p>
<p>In order to keep the atmosphere graphic aligned with the silhouette of the planet sphere, we had to use <a href="http://www.lighthouse3d.com/opengl/billboarding/index.php?billSphe">spherical billboarding</a>. With regular billboarding (as seen in the 1.0 release), as the planet moved to the edge of the screen it would begin to warp. The FOV of your camera model dictates just how much warping occurs. And once the sphere is warped, the billboard atmosphere stops aligning with the sphere itself and the illusion is broken. With the soon-to-be-updated version of Planetary, spherical billboarding corrects this misalignment by also warping the billboard texture.</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary Teaser" src="http://farm3.static.flickr.com/2358/5774775364_9f387b5835_b.jpg" alt="" width="580" height="290" /></a></p>
<h2>Physical Characteristics</h2>
<p>The iPad allows you to access most of the metadata that is available in the iPod app which gets its data when you sync to iTunes on the desktop. We use the playcount to control the size of the moon. The higher the playcount, the larger the radius of the moon. The track that is played the most on an album will have a cloud layer and a denser atmosphere. Additionally, the time it takes for a moon to make one full revolution is equal to the duration of the track.</p>
<p>The planets are similarly affected by the iPod library data. The distance at which a planet orbits around its star is related to the release date of the album and the size of the planet is based on the number of tracks on the album.</p>
<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">Special Effects!</span></p>
<p>There has been some serious code optimization since Planetary was released. The nice thing about optimizing code is it frees up some CPU load to add more visual effects. An effect I was anxious to try coding was a realistic eclipse effect. I have never seen an eclipse in real life, but rest assured I will be ready when a <a href="http://www.eclipse2017.org/ECLIPSE2017_main.HTM">total solar eclipse sweeps across the US from Oregon to Georgia in 2017</a>. I researched the effect by watching different videos of an eclipse taking place.</p>
<p>I knew there needed to be a coronal flare. I knew the foreground planet should be in total darkness with a bloom of light around the edge. These were fairly easy to code up once you figure out the math for doing circle/circle area of intersect. The part I hadn’t anticipated being difficult was simulating a nice (faked) HDR light effect. This is a common effect in modern immersive first-person shooters. As you look at the sun or other super bright objects, the rest of the view needs to dim and adjust contrast to simulate what it would be like to look at something much much brighter than anything a computer monitor could represent.</p>
<p>This ended up taking a lot of trial and error. In the end, most of the effect is controlled by adjusting the size of the graphic representing the star’s outer glow. As an eclipse begins, this glow slowly increases. When the eclipse reaches near totality, the outer glow drops abruptly as does the amount of light falling on the eclipsing planet. Together with a some extra dust and smoke textures, a nice eclipse effect is achieved.</p>
<p>And as Tom continued to squeeze more FPS out of the app, I continued to refine this effect by adding shadows cast onto the accretion disk. I didn’t want to do actual cast shadows because it would be too heavy an implementation for the minimal effect I was looking for. So instead, I researched circle/circle tangents to figure out how to draw the eclipse if it were two circles instead of two spheres. Keeping in the world of 2D made the math pretty trivial. I then just draw a few textured triangles with very low opacity and you get nice but very subtle shadows, complete with distinct umbra and penumbra sections (as shown below in outlines).</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/5921216598"><img class="alignnone" title="Planetary Teaser" src="http://farm7.static.flickr.com/6025/5921216598_13f70978d0_z.jpg" alt="" width="580" height="405" /></a></p>
<p>Here is the final effect. It is very subtle but definitely adds to the realism of the simulation.<br />
<a href="http://www.flickr.com/photos/63241925@N04/5921216626"><img class="alignnone" title="Planetary Teaser" src="http://farm7.static.flickr.com/6145/5921264374_da57323c83_z.jpg" alt="" width="580" height="435" /></a></p>
<h2>The Future</h2>
<p>We are working hard to put out an update to Planetary which will include a few of the most requested features as well as a revamping of the graphics. We are definitely excited about eventually switching to OpenGL ES 2.0 so that we can use GLSL shaders to handle many of the effects but with much more zeal and gumption. Stay tuned for more information about the release date and feature list.</p>
<p>In the meantime version 1.0 of <a href="http://planetary.bloom.io">Planetary</a> for iPad is still available as a <a href="http://itunes.apple.com/app/planetary/id432462305">free download from the App Store</a>.</p>
<p><a href="http://www.flickr.com/photos/63241925@N04/sets/72157626689258131/"><img class="alignnone" title="Planetary Teaser" src="http://farm4.static.flickr.com/3473/5763055153_d3696c7e09_b.jpg" alt="" width="580" height="773" /></a></p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-208 post type-post status-publish format-standard hentry category-hiring category-meta tag-creative-coder tag-design-technologist tag-designer tag-growth tag-hiring-2 tag-hybrid tag-programmer" id="post-208">
<h1><a href="http://blog.bloom.io/2011/06/09/bloom-is-hiring/" title="Permalink to Bloom is Hiring">Bloom is Hiring</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> June 9, 2011</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/tomcarden/" title="Posts by Tom Carden" rel="author">Tom Carden</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/hiring/" title="View all posts in Hiring" rel="category tag">Hiring</a>, <a href="http://blog.bloom.io/category/meta/" title="View all posts in Meta" rel="category tag">Meta</a></span> <span class="tag-links"> | <b>Tags:</b> <a href="http://blog.bloom.io/tag/creative-coder/" rel="tag">creative coder</a>, <a href="http://blog.bloom.io/tag/design-technologist/" rel="tag">design technologist</a>, <a href="http://blog.bloom.io/tag/designer/" rel="tag">designer</a>, <a href="http://blog.bloom.io/tag/growth/" rel="tag">growth</a>, <a href="http://blog.bloom.io/tag/hiring-2/" rel="tag">hiring</a>, <a href="http://blog.bloom.io/tag/hybrid/" rel="tag">hybrid</a>, <a href="http://blog.bloom.io/tag/programmer/" rel="tag">programmer</a></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2011/06/09/bloom-is-hiring/#comments" title="Comment on Bloom is Hiring"><strong>2</strong> Comments »</a></span></small>
<p><a href="http://bloom.io">Bloom</a> is a growing start-up based in mid-Market in San Francisco, funded by <a href="http://betaworks.com/">Betaworks</a> and <a href="http://oatv.com/">OATV</a>. Our long term vision is to produce a suite of apps across different devices that combine motion graphics, game design and data visualization to deliver new ways of seeing what’s important. Our current focus is on app development for iOS; <a href="http://planetary.bloom.io/">our first iPad app Planetary</a> was released last month.</p>
<h3>Are you our Design Technologist or Creative Coder?</h3>
<p>Do you have recurring dreams involving emergent patterns that make sense out of data in your environment? Maybe that’s just us. Can you imagine playing an instrument that helps you understand and organize information? How about a physics simulation of your social graph? Do you play where others work? Do you aspire to a world where tools take beauty seriously? If you can imagine what we’re describing, you might belong here.</p>
<h3>Responsibilities</h3>
<p><strong>Explore/Create</strong> – we’re delivering novel experiences: sometimes we have to discover them first. You should be comfortable operating in uncharted territory: choosing from a broad selection of possibilities, starting from scratch, evaluating what works and what doesn’t, pressing on if things seem promising, turning back if a path turns out to be uninteresting.</p>
<p><strong>Improve/Adapt</strong> – after you, our software is our biggest asset. We want to take advantage of the momentum we gather when launching new work to learn from our audience and adapt our products accordingly.</p>
<p><strong>Deliver</strong> – we like to play and experiment and we’re also in the business of shipping things. We want people to see our work, preferably sooner rather than later. We’re doing our best to ship early and ship often!</p>
<h3>Qualifications</h3>
<p>You’ve worked on software that people use. You’ve been paid for your work. You can show us code that you wrote, or interfaces you designed, or preferably both.</p>
<p>If you’re <strong>a programming specialist</strong>, you’ve worked closely with designers before and know how to ask for help with things and how to work with a visual designer’s direction. You’re not afraid of Photoshop or Illustrator but you don’t mind if someone else takes the lead in that area.</p>
<p>If you’re <strong>a visual design specialist</strong>, you’ve worked closely with programmers before and you know when to specify things carefully and when to let a programmer do what they do best. You’re not afraid of code but you don’t mind if someone else takes the lead in that area.</p>
<p>If you’re <strong>a rare blend of designer and coder</strong>, you’re ready to work alongside other folks (specialists and hybrids alike) to achieve results that are greater than you could achieve alone.</p>
<p>If you’re <strong>adept at networked application development and technology integration</strong>, we want to hear from you too. We hope you love reading esoteric network specifications and reverse engineering protocols and building tools to help data <em>flow</em>. You wonder how systems might scale and how to design those systems for unexpected behaviors and serendipitous discoveries. You’re ready to help us deliver wide streams of data through thin straws and separate the meaningful raw material from the unnecessary noise.</p>
<h3>Essential:</h3>
<ul>
<li>designing, prototyping and ideally building complex, interactive, data-driven graphical interfaces</li>
<li>experience with one or more of Objective-C, C++, Java, C#, Python, Ruby, Javascript, Lua, Actionscript (or equivalent) and one or more of iOS, Android, Cinder, Processing, OpenFrameworks, XNA, OpenGL, DirectX (or equivalent)</li>
<li>portfolio, showreel or links to completed work</li>
</ul>
<h3>Nice:</h3>
<ul>
<li>experience with HTML/CSS/Javascript</li>
<li>experience with a server-side language and web stack (Ruby e.g. Rails, Python e.g. Django, Node.js e.g. Express)</li>
<li>other fun things: knowledge of OpenGL shaders (GLSL), WebGL, physics simulations, etc.</li>
<li>experience with version control, ideally git</li>
</ul>
<h3>Big Bonus Points:</h3>
<ul>
<li>completed and shipped an app for iOS or Android, ideally using 3D OpenGL</li>
<li>shipped a game to any platform implementing high-end graphics and physics engines</li>
<li>good writing skills, for internal documentation but also for blogging, tweeting, press etc.</li>
<li>experience with 3D software, motion graphics, video editing, special effects</li>
<li>deep network experience (HTTP, sockets, zeroconf, TCP, UDP, etc.)</li>
<li>managed complex collaborative projects with git, xcode, etc.</li>
<li>surprise us!</li>
</ul>
<h2 id="apply">OK, Really, Enough Words… That’s Me!</h2>
<p>Email us <a href="mailto:[email protected]">[email protected]</a> and tell us about yourself (<strong>no recruiters or agencies please</strong>). Be sure to show us your work (videos are good) and attach a resume if available (LinkedIn does a nice PDF export if it’s been a while). Go for it!</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="post-170 post type-post status-publish format-standard hentry category-planetary" id="post-170">
<h1><a href="http://blog.bloom.io/2011/05/03/planetary-day-2/" title="Permalink to Planetary, Day 2">Planetary, Day 2</a></h1>
<small class="post-meta"><span class="post-date"><b>Posted:</b> May 3, 2011</span> <span class="author-link">| <b>Author:</b> <a href="http://blog.bloom.io/author/tomcarden/" title="Posts by Tom Carden" rel="author">Tom Carden</a></span> <span class="meta-sep">|</span> <span class="cat-links"><b>Filed under:</b> <a href="http://blog.bloom.io/category/planetary/" title="View all posts in Planetary" rel="category tag">Planetary</a></span> <span class="tag-links"></span> <span class="edit-link"></span> <span class="meta-sep">|</span> <span class="comments-link"><a href="http://blog.bloom.io/2011/05/03/planetary-day-2/#comments" title="Comment on Planetary, Day 2"><strong>20</strong> Comments »</a></span></small>
<p>Our first iPad app <a href="http://planetary.bloom.io">Planetary</a> launched yesterday and can be <a href="http://itunes.apple.com/app/planetary/id432462305">downloaded for free from the App Store</a>. We had a great day responding to feedback and requests from our first users and watching the waves of positive responses roll in on Twitter and elsewhere. We’re both humbled and proud to be getting all this attention, especially on such a busy news day.</p>
<p><a href="http://news.cnet.com/8301-13772_3-20058911-52.html">CNET kicked things off</a> for us yesterday with an IM interview with Ben, a good insight into some of the thinking that’s gone into the app. Gizmodo granted us a coveted <a href="http://gizmodo.com/#!5798217/planetary-for-ipad">App of the Day</a> badge with a lovely video review. We’ve also received welcome mainstream coverage from the <a href="http://gadgetwise.blogs.nytimes.com/2011/05/03/planetary-ipad-app-offers-visual-music-search/">New York Times</a>, <a href="http://techland.time.com/2011/05/03/planetary-ipad-music-player/">Time</a> and <a href="http://www.wired.com/underwire/2011/05/planetary-ipad-app/">Wired</a>, specialist reportage from <a href="http://www.tuaw.com/2011/05/02/incredible-music-visualizer-planetary-brings-a-galaxy-of-music-t/">TUAW</a>, <a href="http://appadvice.com/appnn/2011/05/bloom-studios-planetary-ipad-app-sends-soaring-galaxy-music">AppAdvice</a> and <a href="http://www.creativeapplications.net/cinder/planetary-cinder-ipad/">Creative Applications</a> as well as reports from our three favorite visualization blogs <a href="http://infosthetics.com/archives/2011/05/planetary_fly_through_your_3d_music_collection_universe_on_the_ipad.html">Infosthetics</a>, <a href="http://flowingdata.com/2011/04/29/coming-soon-bloom-visualizes-your-music-collection-as-planets/">Flowing Data</a> and <a href="http://datavisualization.ch/showcases/planetary-a-visual-music-player-for-ipad">DataVisualisation.ch</a>.</p>
<p>Our friends at <a href="http://laughingsquid.com/planetary-visualizing-a-music-collection-as-3d-space-exploration/">Laughing Squid</a> were among several blogs to use <a href="http://vimeo.com/bloomstudioinc/planetary-voice">our introductory video from video</a>. It takes a village to produce a video and we couldn’t have done it without <a href="http://www.scottschiller.com/">Scott Schiller</a>, <a href="http://www.tomapodaca.org/">Tomas Apodaca</a>, Owen Granich-Young and Yoz Grahame. We had great fun making it so here it is again for those who haven’t had a chance to catch it yet:</p>
<div class='embed-vimeo' style='text-align:center;'><iframe src='http://player.vimeo.com/video/23168163' width='600' height='450' frameborder='0'></iframe></div>
<p>The video is also a great opportunity to showcase the music of Zoë Keating. Robert is lucky enough to have collaborated with Zoë in live performances such as last year’s <a href="http://player.vimeo.com/video/15173752?portrait=0">In The Trees from Zer01 San Jose</a>. If you like what you hear in our video then be sure to try <a href="http://music.zoekeating.com/">the full album</a>.</p>
<div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> <hr/>
</div>
<div class="navigation">
<div class="alignleft"><a href="http://blog.bloom.io/page/2/" >← Older Entries</a></div>
<div class="alignright"></div>
</div>
</div>
<div id="sidebar">
<div class="block">
<h3>Recent Posts</h3>
<ul>
<li><a href="http://blog.bloom.io/2012/11/01/this-bloom-is-off-the-vine/" title="Permalink to This Bloom is off the Vine">This Bloom is off the Vine</a></li>
<li><a href="http://blog.bloom.io/2012/03/08/introducing-biologic/" title="Permalink to Introducing Biologic">Introducing Biologic</a></li>
<li><a href="http://blog.bloom.io/2011/09/16/https-ssl-table-stakes/" title="Permalink to SSL and HTTPS are Table Stakes">SSL and HTTPS are Table Stakes</a></li>
<li><a href="http://blog.bloom.io/2011/09/11/planetary-version-2/" title="Permalink to Planetary, Version 2">Planetary, Version 2</a></li>
<li><a href="http://blog.bloom.io/2011/07/11/creating-new-worlds/" title="Permalink to Creating new worlds">Creating new worlds</a></li>
</ul>
</div>
<div class="block">
<h3>Archives</h3>
<ul>
<li><a href='http://blog.bloom.io/2012/11/' title='November 2012'>November 2012</a></li>
<li><a href='http://blog.bloom.io/2012/03/' title='March 2012'>March 2012</a></li>
<li><a href='http://blog.bloom.io/2011/09/' title='September 2011'>September 2011</a></li>
<li><a href='http://blog.bloom.io/2011/07/' title='July 2011'>July 2011</a></li>
<li><a href='http://blog.bloom.io/2011/06/' title='June 2011'>June 2011</a></li>
<li><a href='http://blog.bloom.io/2011/05/' title='May 2011'>May 2011</a></li>
<li><a href='http://blog.bloom.io/2011/04/' title='April 2011'>April 2011</a></li>
<li><a href='http://blog.bloom.io/2011/03/' title='March 2011'>March 2011</a></li>
<li><a href='http://blog.bloom.io/2011/02/' title='February 2011'>February 2011</a></li>
<li><a href='http://blog.bloom.io/2011/01/' title='January 2011'>January 2011</a></li>
</ul>
</div>
<div class="block">
<h3>Categories</h3>
<ul>
<li class="cat-item cat-item-471410"><a href="http://blog.bloom.io/category/biologic/" title="View all posts filed under Biologic">Biologic</a>
</li>
<li class="cat-item cat-item-51364291"><a href="http://blog.bloom.io/category/cartagram/" title="View all posts filed under Cartagram">Cartagram</a>
</li>
<li class="cat-item cat-item-64622127"><a href="http://blog.bloom.io/category/cto-hat/" title="View all posts filed under CTO-Hat">CTO-Hat</a>
</li>
<li class="cat-item cat-item-1043300"><a href="http://blog.bloom.io/category/fizz/" title="View all posts filed under Fizz">Fizz</a>
</li>
<li class="cat-item cat-item-113932"><a href="http://blog.bloom.io/category/hiring/" title="View all posts filed under Hiring">Hiring</a>
</li>
<li class="cat-item cat-item-171"><a href="http://blog.bloom.io/category/meta/" title="View all posts filed under Meta">Meta</a>
</li>
<li class="cat-item cat-item-192018"><a href="http://blog.bloom.io/category/planetary/" title="View all posts filed under Planetary">Planetary</a>
</li>
<li class="cat-item cat-item-42375"><a href="http://blog.bloom.io/category/talks/" title="View all posts filed under Talks">Talks</a>
</li>
</ul>
</div>
<div class="block">
<h3>Elsewhere</h3>
<ul class='xoxo blogroll'>
<li><a href="http://bloom.io" rel="me" title="Everything that’s not our blog.">Bloom Home</a></li>
<li><a href="http://twitter.com/databloom" title="Short updates, news and conversation about Bloom">Bloom on Twitter</a></li>
</ul>
</div>
</div>
<div id="infinite-footer">
<div class="container">
<div class="blog-info">
<a id="infinity-blog-title" href="http://blog.bloom.io/" title="Bloom Blog" rel="home">
Bloom Blog </a>
</div>
<div class="blog-credits">
<a href="http://wordpress.com/?ref=footer" rel="generator">Blog at WordPress.com</a>. Theme: <a href="http://theme.wordpress.com/credits/blog.bloom.io/" title="Learn more about how this site is customized with the Custom Design upgrade">Customized Clean Home</a>. </div>
</div>
</div><!-- #infinite-footer -->
<div id="footer">
<a href="http://wordpress.com/?ref=footer" rel="generator">Blog at WordPress.com</a>.
Theme: <a href="http://theme.wordpress.com/credits/blog.bloom.io/" title="Learn more about how this site is customized with the Custom Design upgrade">Customized Clean Home</a> by Mid Mo Design. </div><!-- #footer -->
<script type="text/javascript">
var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom"};
function wpcomQuantcastPixel( labels, options ) {
var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
labels = labels || '';
options = options || {};
if ( typeof labels != 'string' )
options = labels;
for ( i in defaults ) {
data[i] = defaults[i];
}
for ( i in options ) {
data[i] = options[i];
}
if ( data.labels ) {
data.labels += ',' + labels;
} else {
data.labels = labels;
}
_qevents.push( data );
};
(function() {var elem = document.createElement('script');elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";elem.async = true;elem.type = "text/javascript";var scpt = document.getElementsByTagName('script')[0];scpt.parentNode.insertBefore(elem, scpt); })();
_qevents.push( wpcomQuantcastData );
</script>
<noscript><div style="display: none;"><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif?labels=%2Clanguage.en%2Ctype.wpcom" height="1" width="1" alt="" /></div></noscript>
<script type='text/javascript' src='//0.gravatar.com/js/gprofiles.js?ver=201249ab'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var WPGroHo = {"my_hash":""};
/* ]]> */
</script>
<script type='text/javascript' src='http://s0.wp.com/wp-content/mu-plugins/gravatar-hovercards/wpgroho.js?m=1351637563g'></script>
<script>jQuery(document).ready(function($){ Gravatar.profile_cb = function( h, d ) { WPGroHo.syncProfileData( h, d ); }; Gravatar.my_hash = WPGroHo.my_hash; Gravatar.init( 'body', '#wp-admin-bar-my-account' ); });</script> <div style="display:none">
</div>
<div id="bit" class="loggedout-follow-normal">
<a class="bsub" href="javascript:void(0)"><span id='bsub-text'>Follow</span></a>
<div id="bitsubscribe">
<h3><label for="loggedout-follow-field">Follow “Bloom Blog”</label></h3>
<form action="https://subscribe.wordpress.com" method="post" accept-charset="utf-8" id="loggedout-follow">
<p>Get every new post delivered to your Inbox.</p>
<p id="loggedout-follow-error" style="display: none;"></p>
<p><input type="email" name="email" style="width: 95%; padding: 1px 2px" value="Enter your email address" onfocus='this.value=(this.value=="Enter your email address") ? "" : this.value;' onblur='this.value=(this.value=="") ? "Enter email address" : this.value;' id="loggedout-follow-field"/></p>
<input type="hidden" name="action" value="subscribe"/>
<input type="hidden" name="blog_id" value="18914580"/>
<input type="hidden" name="source" value="http://blog.bloom.io/"/>
<input type="hidden" name="sub-type" value="loggedout-follow"/>
<input type="hidden" id="_wpnonce" name="_wpnonce" value="e4d31a7af6" /><input type="hidden" name="_wp_http_referer" value="/" />
<p id='bsub-subscribe-button'><input type="submit" value="Sign me up" /></p>
</form>
<div id='bsub-credit'><a href="http://wordpress.com/signup/?ref=lof">Powered by WordPress.com</a></div>
</div><!-- #bitsubscribe -->
</div><!-- #bit -->
<div id="carousel-reblog-box">
<form action="" name="carousel-reblog">
<textarea id="carousel-reblog-content" name="carousel-reblog-content" onclick="if ( this.value == 'Add your thoughts here... (optional)' ) { this.value = ''; }" onblur="if ( this.value == '' || this.value == '' ) { this.value = 'Add your thoughts here... (optional)'; }">Add your thoughts here... (optional)</textarea>
<label for="carousel-reblog-to-blog-id" id="carousel-reblog-lblogid">Post to</label>
<select name="carousel-reblog-to-blog-id" id="carousel-reblog-to-blog-id">
</select>
<div class="submit">
<input type="submit" name="carousel-reblog-submit" class="button" id="carousel-reblog-submit" value="Reblog Post" />
<span class="canceltext">or <a href="" class="cancel">Cancel</a></span>
<input type="hidden" id="carousel-reblog-blog-id" value="18914580" />
<input type="hidden" id="carousel-reblog-blog-url" value="http://blog.bloom.io" />
<input type="hidden" id="carousel-reblog-blog-title" value="Bloom Blog" />
<input type="hidden" id="carousel-reblog-post-url" value="" />
<input type="hidden" id="carousel-reblog-post-title" value="" />
</div>
<input type="hidden" id="_wpnonce" name="_wpnonce" value="b0e1ae8eaa" /><input type="hidden" name="_wp_http_referer" value="/" /> </form>
<div class="arrow"></div>
</div>
<script type='text/javascript'>
/* <![CDATA[ */
var thickboxL10n = {"next":"Next >","prev":"< Prev","image":"Image","of":"of","close":"Close","noiframes":"This feature requires inline frames. You have iframes disabled or your browser does not support them.","loadingAnimation":"http:\/\/bloomio.wordpress.com\/wp-includes\/js\/thickbox\/loadingAnimation.gif","closeImage":"http:\/\/bloomio.wordpress.com\/wp-includes\/js\/thickbox\/tb-close.png"};
var thickboxL10n = {"next":"Next >","prev":"< Prev","image":"Image","of":"of","close":"Close","noiframes":"This feature requires inline frames. You have iframes disabled or your browser does not support them.","loadingAnimation":"http:\/\/bloomio.wordpress.com\/wp-includes\/js\/thickbox\/loadingAnimation.gif","closeImage":"http:\/\/bloomio.wordpress.com\/wp-includes\/js\/thickbox\/tb-close.png"};
/* ]]> */
</script>
<script type='text/javascript'>
/* <![CDATA[ */
var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","ajaxurl":"http:\/\/blog.bloom.io\/wp-admin\/admin-ajax.php","nonce":"287cb13593","display_exif":"1","display_geo":"1","background_color":"black","comment":"Comment","post_comment":"Post Comment","loading_comments":"Loading Comments...","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","local_comments_commenting_as":"<fieldset><label for=\"email\">Email (Required)<\/label> <input type=\"text\" name=\"email\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-email-field\" \/><\/fieldset><fieldset><label for=\"author\">Name (Required)<\/label> <input type=\"text\" name=\"author\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-author-field\" \/><\/fieldset><fieldset><label for=\"url\">Website<\/label> <input type=\"text\" name=\"url\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-url-field\" \/><\/fieldset>","like":"Like","unlike":"Unlike","reblog":"Reblog","reblogged":"Reblogged","reblog_add_thoughts":"Add your thoughts here... (optional)","reblogging":"Reblogging...","post_reblog":"Post Reblog","stats_query_args":"blog=18914580&v=wpcom&tz=-8&user_id=0&subd=bloomio","is_public":"1"};
var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","ajaxurl":"http:\/\/blog.bloom.io\/wp-admin\/admin-ajax.php","nonce":"287cb13593","display_exif":"1","display_geo":"1","background_color":"black","comment":"Comment","post_comment":"Post Comment","loading_comments":"Loading Comments...","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","local_comments_commenting_as":"<fieldset><label for=\"email\">Email (Required)<\/label> <input type=\"text\" name=\"email\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-email-field\" \/><\/fieldset><fieldset><label for=\"author\">Name (Required)<\/label> <input type=\"text\" name=\"author\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-author-field\" \/><\/fieldset><fieldset><label for=\"url\">Website<\/label> <input type=\"text\" name=\"url\" class=\"jp-carousel-comment-form-field jp-carousel-comment-form-text-field\" id=\"jp-carousel-comment-form-url-field\" \/><\/fieldset>","like":"Like","unlike":"Unlike","reblog":"Reblog","reblogged":"Reblogged","reblog_add_thoughts":"Add your thoughts here... (optional)","reblogging":"Reblogging...","post_reblog":"Post Reblog","stats_query_args":"blog=18914580&v=wpcom&tz=-8&user_id=0&subd=bloomio","is_public":"1"};
/* ]]> */
</script>
<script type='text/javascript' src='http://s2.wp.com/_static/??-eJyNi0sOwjAMBS9E6qJSxAZxluJaNKmbhDru5/aERbpE7EbvzcAaDQafyCdwAj0tFilulZMT5Mt6ZO1Jvl8aLI7PsB1QpNJPaiLry3oBYZurIazg3krzXuGOTH8FB/2wsZuDCjE4SrHD0ZQhN4/pfm7ay62+NnXrPkeBU34='></script>
<script type='text/javascript' src='http://platform.twitter.com/widgets.js?ver=20111117'></script>
<script type='text/javascript' src='http://s1.wp.com/_static/??-eJyVyzEOgCAMAMAPWRuVmDAY3yLQmCpUgkW+7+bu7Yctg79ESRRThRzrznKjNlalAi5u/nRcAmQmFHqokASWvT/uDv/c/L01LcNkrDF2nKfjBXxAL2c='></script>
<script type="text/javascript">
// <![CDATA[
(function() {
try{
if ( window.external &&'msIsSiteMode' in window.external) {
if (window.external.msIsSiteMode()) {
var jl = document.createElement('script');
jl.type='text/javascript';
jl.async=true;
jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jl, s);
}
}
}catch(e){}
})();
// ]]>
</script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
<script type="text/javascript">
st_go({'blog':'18914580','v':'wpcom','tz':'-8','user_id':'0','subd':'bloomio'});
ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1TaVhzUzFMbjdWNHpwZGhTayxPSUFCMGNrd29+Smw0c2Z8TEIsUW15UD9dTndwSDlMVitPQXArT1VCQmxoNW0vUEs9eDllS3RScDItYjc2aDE5UStxdmkyMm0reURqcG1LNklMTyVQNF1lUkhyRCVUJU4mZSVyM005JndLYUVHP2ZDUmQxenc4NWtLaXl8YVEwW2NQWFdmcm5+TzVQNVRhbnhoLytuJnMzeVpfLjB3cjlnenkxTTkyNG5LeVtXPUZnUVFlfGJoYVpYWVtDVVRaYVlyaVhsTlp8N25lc3hwYlt1TlBbbzlVYmtua3UreWJtRVZkQkVIMT9wa3h3Q0ZicFQlbTU/flZqRTZIWmJIUExnM3h+U1M='});
addLoadEvent(function(){linktracker_init('18914580',0);});
</script>
<noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
<script type="text/javascript">
// Trigger Quantcast pixel for each Infinite Scroll post load
if ( 'function' === typeof( jQuery ) ) {
jQuery( document.body ).on( 'post-load', function() {
if ( 'function' === typeof( wpcomQuantcastPixel ) )
wpcomQuantcastPixel();
} );
}
</script>
<script type="text/javascript">
jQuery.extend( infiniteScroll.settings.scripts, ["jquery","loggedout-subscribe","the-neverending-homepage","spin","jquery.spin","swfobject","videopress","tiled-gallery","grofiles-cards","wpgroho","devicepx","thickbox","jquery-cycle","wp-slideshow","jetpack-carousel","twitter-widgets","twitter-widgets-infinity","twitter-widgets-pending"] );
jQuery.extend( infiniteScroll.settings.styles, ["thickbox","loggedout-subscribe","the-neverending-homepage","infinity-clean-home","wp-slideshow","post-reactions","a8c-global-print","sharedaddy","jetpack-carousel","tiled-gallery","h4-global"] );
</script> </div>
</body>
</html>