<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Nyholt]]></title>
  <link href="http://blog.nyholt.nl/atom.xml" rel="self"/>
  <link href="http://blog.nyholt.nl/"/>
  <updated>2012-01-06T12:36:46+01:00</updated>
  <id>http://blog.nyholt.nl/</id>
  <author>
    <name><![CDATA[Gijs Nijholt]]></name>
    <email><![CDATA[gijs.nijholt@gmail.com]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[impress.js]]></title>
    <link href="http://blog.nyholt.nl/blog/2012/01/06/impress-dot-js/"/>
    <updated>2012-01-06T12:32:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2012/01/06/impress-dot-js</id>
    <content type="html"><![CDATA[<p>Sometimes I run into real gems while browsing Github repositories.
Have a look at <a href="https://github.com/bartaz/impress.js/">impress.js</a>, a presentation framework using  CSS3 transforms and transitions. It&#8217;s inspired by <a href="http://www.prezi.com/">Prezi</a>. <a href="http://bartaz.github.com/impress.js/#/bored">Demo here</a>.</p>

<iframe width="420" height="315" src="http://www.youtube.com/embed/rfwHlv2LhFI" frameborder="0" allowfullscreen></iframe>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[One last linkdump in 2011]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/12/30/one-last-linkdump-in-2011/"/>
    <updated>2011-12-30T10:03:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/12/30/one-last-linkdump-in-2011</id>
    <content type="html"><![CDATA[<h2>Waterunderground</h2>

<p><a href="http://www.waterunderground.info/">Waterunderground</a> is an interactive visualization of global ground-water fluctuations on a monthly basis from 2002 to present.</p>

<p><a href="http://www.waterunderground.info/"><img src="http://blog.nyholt.nl/images/waterunderground.jpg" alt="Screenshot of waterunderground.info" /></a></p>

<p>It was built with the infamous <a href="https://github.com/mrdoob/three.js/">Three.js</a>.</p>

<p>Navigation is located in the footer.</p>

<p>The data used is from NASA&#8217;s Gravity Recovery and Climate Experiment (GRACE), <a href="http://www.visualizing.org/datasets/global-water-mass-grace-satellite-monthly-data-2002-11">freely available here</a> and courtesy of the UC Center for Hydrologic Modeling.</p>

<h2>Flood Map 3D Simulation </h2>

<p>A web-based flood simulation is developed for navigating over the flood inundation map of Cedar Rapids, Iowa. <a href="http://myweb.uiowa.edu/demir/lab_floodwebgl.asp">More here</a>.</p>

<iframe width="420" height="315" src="http://www.youtube.com/embed/DacnztjhSsQ" frameborder="0" allowfullscreen></iframe>


<h2>Flood Game</h2>

<p>A <a href="http://myweb.uiowa.edu/demir/lab_floodgame.asp">flood game</a> in HTML5 (<a href="http://www.youtube.com/watch?v=TZOeux99vJI">Youtube</a>)</p>

<p><a href="http://myweb.uiowa.edu/demir/lab_floodgame.asp"><img src="http://myweb.uiowa.edu/demir/lab/floodgame/s0.png" alt="Floodgame screenshot" /></a></p>

<p><a href="http://www.youtube.com/user/idemiriowa?feature=watch">More videos</a> from Ibrahim Demir of the Iowa Flood Center</p>

<h2>OpenScalesGL</h2>

<p><a href="http://openscales.org/news/openscalesgl-announce.html">OpenScalesGL</a> is the HTML5/WebGL version of the ActionScript-based &#8220;rich mapping&#8221; framework. The video below is a preview of what&#8217;s coming in summer 2012.</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/ZBeUdYrLQK8" frameborder="0" allowfullscreen></iframe>


<p>Another video, <a href="http://www.youtube.com/watch?v=kV_oHYGyCj0">Desktop Firefox</a> (Youtube).</p>

<h2>ReadyMap Web SDK</h2>

<p><a href="http://readymap.com/websdk.html">ReadyMap</a> is a free Javascript library for 3D/2D web mapping. It works with TMS/WMS and WebGL. (<a href="https://github.com/gwaldron/godzi-webgl">Github repo</a>).</p>

<p>If your video card and webbrowser are recent enough, check out <a href="http://demo.pelicanmapping.com/rmweb/webgl/tests/index.html">the demos</a>. Especially <a href="http://demo.pelicanmapping.com/rmweb/webgl/tests/arcgis.html">this one</a> which renders layers from an ESRI ArcGIS Server.</p>

<h2>Nokia Maps 3D WebGL Beta</h2>

<p><a href="http://maps3d.svc.nokia.com/webgl/">100% 3D maps, 0% plug-in</a>, currently in beta.</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/qsHZrELLUIc" frameborder="0" allowfullscreen></iframe>


<p>Tip: Try zooming in a bit to Cape Town or New York and click on the label. It beautifully zooms in and goes into more detail. Very nice.</p>

<h2>USGS Texture Blending demo</h2>

<p>A <a href="http://chandler.prallfamily.com/webgl/blending/">visualization</a> of the <a href="http://seamless.usgs.gov/">USGS</a> elevation data using Three.js/WebGL. Technical background information <a href="http://chandler.prallfamily.com/2011/06/blending-webgl-textures/">here</a>.
More WebGL from <a href="http://chandler.prallfamily.com/webgl/">Chandler Prall</a>.</p>

<h2>WebGL Nature Scene</h2>

<p><a href="http://code.google.com/p/webgl-nature-scene/"><img src="http://webgl-nature-scene.googlecode.com/svn/screenshots/small10.jpg" alt="Screenshot of  WebGL nature scene" /></a></p>

<p>A <a href="http://code.google.com/p/webgl-nature-scene/">WebGL nature scene</a> based upon NVIDIA&#8217;s Nature demo project.</p>

<p><a href="http://webgl-nature-scene.googlecode.com/svn/trunk/nature.html">Live demo</a>.</p>

<p>This is an effort to integrate some interesting shader based rendering techniques to present realistic-looking nature scene on web using Javascript and WebGL (<a href="http://spidergl.org/index.php">SpiderGL to be precise</a>). The techniques applied in this demo include:</p>

<ul>
<li>Multi-layered Terrain</li>
<li>Waving Grass with Countless Blades</li>
<li>Realistic Water Simulation with Reflection and Refraction</li>
<li>Dynamic Cloudy Sky Dome</li>
<li>Flying Birds with Flocking Behaviour</li>
</ul>


<h2>Earthquake Visualization</h2>

<p><a href="http://www.chromeexperiments.com/detail/nine-point-five/?f="><img src="http://www.ninepointfive.org/static/assets/ninefive.jpg" alt="Screenshot of Nine Point Five" /></a></p>

<p><a href="http://www.chromeexperiments.com/detail/nine-point-five/?f=">Nine Point Five</a> is a WebGL visualization exploring earthquakes over the past 30 years. (<a href="http://www.ninepointfive.org/about.html">More information</a>)
Built by <a href="http://www.deanmcnamee.com/">Dean McNamee</a> who also seems to do nice physical world experiments.</p>

<h2>World Flights</h2>

<p><a href="http://senchalabs.github.com/philogl/PhiloGL/examples/worldFlights2/index.html">World Flights</a> is a WebGL visualization of major airline flights, built using <a href="http://www.sencha.com/">Sencha&#8217;s</a> <a href="http://senchalabs.github.com/philogl/">PhiloGL Framework</a> by <a href="http://philogb.github.com/">Nicolas Garcia Belmonte</a>.</p>

<h2>Miscellaneous Links</h2>

<ul>
<li><p><a href="http://www.klocatelli.name/2011/11/10/gpu-accelerated-heightmap-webgl/">GPU-accelerated heightmap generation in WebGL</a></p></li>
<li><p><a href="https://github.com/jmcneese/libnoise.js">libnoise.js</a></p></li>
<li><p><a href="http://spidergl.org/example.php?id=8">Streaming Level of Detail Terrain using SpiderGL</a></p></li>
<li><p><a href="http://www.openwebglobe.org/beta/">OpenWebGlobe beta</a> from the University of Applied Sciences Northwestern Switzerland.</p></li>
<li><p><a href="http://scenejs.org/">SceneJS</a>, a JSON-based scene graph API on WebGL. <a href="http://blog.xeolabs.com/scenejs-20-release">2.0 release</a></p></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Top iOS apps for 2011]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/12/23/top-ios-apps-for-2011/"/>
    <updated>2011-12-23T09:29:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/12/23/top-ios-apps-for-2011</id>
    <content type="html"><![CDATA[<h2>Tabata Pro</h2>

<p><a href="http://itunes.apple.com/us/app/tabata-pro-tabata-timer/id346432063?mt=8">Tabata Pro</a> is a timer application for use with the <a href="http://journals.lww.com/acsm-msse/Abstract/1996/10000/Effects_of_moderate_intensity_endurance_and.18.aspx">Tabata training protocol</a> also known as High Intensity Interval Training.
I&#8217;ve only used it for a training or ten, but I can say it works perfectly. It&#8217;s definitely as good as the famous Gym Boss timers.</p>

<h2>Wild Chords</h2>

<p><a href="http://itunes.apple.com/us/app/wildchords/id453707538?mt=8">Wild Chords</a> is a free guitar learning app. I actually can&#8217;t believe it&#8217;s free, because it&#8217;s brilliant. In a playful way, it takes beginning guitar players through various levels where you&#8217;re challenged to play chords in order to entice all kinds of animals that&#8217;ve fled the zoo and lead them back.
Also, its built-in tuner is truly genius. Highly recommended for beginning guitar players like myself. If you&#8217;re not convinced, have a look at <a href="http://www.youtube.com/watch?v=lSivD-G0nQI">Ovelin&#8217;s pitch</a> for the game at Slush2011.</p>

<h2>Aelios</h2>

<p><a href="http://itunes.apple.com/nl/app/aelios-weather/id436105028?mt=8">Aelios</a> is a polished weather app. It has quite a unique user interface which isn&#8217;t always the easiest, but it&#8217;s pretty and it works. It gets updated now and then, and useful new features like bookmarking locations were just added.</p>

<h2>Prompt</h2>

<p><a href="http://itunes.apple.com/us/app/prompt/id421507115?mt=8">Prompt</a> is a Terminal client which can connect via SSH and supports color and fancy key combinations. Can be very handy for remote work, especially if you attach a bluetooth keyboard.</p>

<h2>Penultimate</h2>

<p><a href="http://itunes.apple.com/nl/app/penultimate/id354098826?mt=8">Penultimate</a> is a drawing/note-taking app. It was the first app I bought. I&#8217;ve used it in the beginning, and found it to be ideal for quick sketches, not so much for text.</p>

<h2>Air Video</h2>

<p><a href="http://itunes.apple.com/nl/app/air-video-watch-your-videos/id306550020?mt=8">Air Video</a> can stream video from your Mac to iOS devices. It needs a &#8216;server&#8217; package on the Mac side, which is a free download. It can transcode streams on-the-fly from pretty much every format you can find. One thing it cannot do (yet) is streaming of (physical) DVD&#8217;s.</p>

<h2>GarageBand</h2>

<p><a href="http://itunes.apple.com/pl/app/garageband/id408709785?mt=8">GarageBand</a>. What else do I need to say? I wasn&#8217;t convinced when I read about it, you just have to experience it. Excellent value for money if you&#8217;re at least a bit interested in music production.</p>

<h2>iMockups</h2>

<p><a href="http://itunes.apple.com/nl/app/imockups-for-ipad/id364885913?mt=8">iMockups</a> is a tool for quick user interface sketching using pre-fab elements like input fields and windows. It&#8217;s quite limited and I prefer doing mockups in straight HTML and CSS these days. Still, it&#8217;s a useful app that I would recommend especially to non-technical people who want to communicate their idea of an interface.</p>

<h2>SketchBook</h2>

<p><a href="http://itunes.apple.com/nl/app/sketchbook-pro-for-ipad/id364253478?mt=8">SketchBook Pro</a> is a full featured drawing app. <a href="http://www.flickr.com/groups/aliassketchbook/">Gallery here</a>. It has layers and loads of brushes, color management et cetera. Recommended even if you&#8217;re only drawing snow men while riding the train.</p>

<h2>Pages</h2>

<p><a href="http://itunes.apple.com/nl/app/pages/id361309726?mt=8">Pages</a> is the only of the three iWork for iOS apps (<a href="http://itunes.apple.com/nl/app/keynote/id361285480?mt=8">Keynote</a> and <a href="http://itunes.apple.com/nl/app/numbers/id361304891?mt=8">Numbers</a>) I&#8217;ve bought, and it doesn&#8217;t disappoint. It does everything I expect of a wordprocessor. Since iCloud support was added, even the syncing problems have disappeared.</p>

<h2>iMAME</h2>

<p><a href="http://itunes.apple.com/nl/app/imame/id485639079?mt=8">iMAME</a> is an Arcade emulator (<a href="http://mamedev.org/">MAME</a>) formerly available only on jailbroken devices. <a href="http://www.engadget.com/2011/12/21/imame-emulation-app-hits-the-app-store-humanity-cheers-in-uniso/">More here</a></p>

<h2>Snapseed</h2>

<p><a href="http://itunes.apple.com/nl/app/snapseed/id439438619?mt=8">Snapseed</a> is a Photo retouching app from Nik Software. They build expensive Photoshop plugins too, and this shows in the quality of Snapseeds filters and effects. The touch interface is a pleasure to use, especially on the iPad. Next level interaction design in my opinion.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Terrain simulation in the Browser using WebGL]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/12/21/terrain-simulation-in-the-browser-using-webgl/"/>
    <updated>2011-12-21T14:16:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/12/21/terrain-simulation-in-the-browser-using-webgl</id>
    <content type="html"><![CDATA[<p>Here at <a href="http://www.nelen-schuurmans.nl/">Nelen &amp; Schuurmans</a>, we&#8217;re doing some really cool 3D simulations like <a href="http://www.3di.nu/achtergrond_visualisatie/">flooding visualization</a>. Wouldn&#8217;t it be nice to have these applications in the webbrowser, without any need for special equipment or hardware?</p>

<p>I&#8217;m convinced that in the very near future, driven by gaming,  <a href="http://learningwebgl.com/cookbook/index.php/WebGL:_Frequently_Asked_Questions">WebGL</a> will be available in all major webbrowsers and on most platforms.</p>

<p>This will open the door for 3D simulation like this right in the browser:</p>

<iframe width="420" height="315" src="http://www.youtube.com/embed/THxh1GnSAsE" frameborder="0" allowfullscreen></iframe>


<p>If you&#8217;re running the dev channel of <a href="http://www.chromium.org/getting-involved/dev-channel">Chrome</a> or a nightly build of Webkit, have a look at <a href="http://www.chromeexperiments.com/detail/craftscape/?f=webgl">Craftscape</a>. Or try one of the <a href="http://www.chromeexperiments.com/webgl">WebGL experiments</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[An idea for Artists and Spotify]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/30/an-idea-for-artists-and-spotify/"/>
    <updated>2011-11-30T09:53:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/30/an-idea-for-artists-and-spotify</id>
    <content type="html"><![CDATA[<p><em>TL;DR: Spotify should integrate a Donation button!</em></p>

<p>Derek Webb wrote <a href="http://derekwebb.tumblr.com/post/13503899950/giving-it-away-how-free-music-makes-more-than-sense">an insightful post</a> on why he as a musician prefers piracy to Spotify.
In short, he gets paid $0.00029 per stream of a song played, versus a dollar per sell on iTunes for example. He claims that using Spotify gives a false sense of justification as opposed to piracy, where you know that what you&#8217;re doing is potentially harmful to the artist.</p>

<p>Those who claim that the absence of paid artists would lead to less art do not understand creativity: people will always create, it is a compulsion, the only question is whether they can do it for a living.</p>

<p>Fortunately it won&#8217;t come to this. There are many alternative ways to reward artists. The simplest is voluntary payment. This is an extension of the patronage system which was frequently used to reward artists prior to copyright, where a wealthy person would fund an artist to allow them to create full-time. The Internet permits an interesting extension of this idea, where rather than having just one wealthy patron, you could have hundreds of thousands, contributing small amounts of money over the Internet.</p>

<p>My idea for Spotify is simple yet powerful:
On top of the Spotify Unlimited monthly fee, add a &#8216;Donation button&#8217; which behaves like the Facebook Like-button or Google&#8217;s +1, and directly donates a pre-set amount of money (default of 1 dollar) to the musician. This would be easy to implement because a creditcard is already linked to your Spotify account.
<img src="http://blog.nyholt.nl/images/spotify_donation_idea.png"></p>

<p>It can even imagine this taking a social turn, where your donation appears in your Facebook&#8217;s timeline: &#8220;I&#8217;ve donated one dollar to 50 cent&#8221;.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Some D3.js sketches]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/23/some-d3-dot-js-sketches/"/>
    <updated>2011-11-23T14:14:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/23/some-d3-dot-js-sketches</id>
    <content type="html"><![CDATA[<p><a href="https://github.com/mbostock/d3">D3.js</a> is a great tool for doing transformations on DOM-bound data, and can be used to create powerful visualizations, as you can see in the examples.</p>

<p>Here&#8217;s some extra sketches by <a href="https://github.com/mbostock">Mike Bostock</a> (author of D3) I found on the <a href="https://groups.google.com/group/d3-js">D3.js Google Group</a>:</p>

<ul>
<li><a href="http://bl.ocks.org/665906">Voronoi Tessellation</a></li>
<li><a href="http://bl.ocks.org/667245">Voronoi Tessellation (Interactive)</a></li>
<li><a href="http://bl.ocks.org/675512">Rainbow Colors</a></li>
<li><a href="http://bl.ocks.org/705856">Stroke Dasharray</a></li>
<li><a href="http://bl.ocks.org/714554">Moire Patterns</a></li>
<li><a href="http://bl.ocks.org/1073373">Force-Directed States of America</a></li>
<li><a href="http://bl.ocks.org/1071269">Date Ticks</a></li>
<li><a href="http://bl.ocks.org/1067616">Venn Diagram using Opacity</a></li>
<li><a href="http://bl.ocks.org/1016220">Line Tension</a></li>
<li><a href="http://bl.ocks.org/1014829">External SVG</a></li>
<li><a href="http://bl.ocks.org/999346">Dynamic Node Tree</a></li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Quadrocopter Drones are getting creepier every time]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/14/quadrocopter-drones-are-getting-creepier-every-time/"/>
    <updated>2011-11-14T22:35:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/14/quadrocopter-drones-are-getting-creepier-every-time</id>
    <content type="html"><![CDATA[<p>Now they&#8217;re playing tennis, tomorrow they&#8217;ll attack your village! :)</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/3CR5y8qZf0Y" frameborder="0" allowfullscreen></iframe>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Given wings by WebGL]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/14/given-wings-by-webgl/"/>
    <updated>2011-11-14T21:26:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/14/given-wings-by-webgl</id>
    <content type="html"><![CDATA[<p><img src="http://blog.nyholt.nl/images/3d-birds.png">
In-browser 3D is really taking off and I can&#8217;t wait to see where it&#8217;s headed. Before we know it, we&#8217;re playing the next version of Half-Life in our browser windows. In the mean time, have a look at this beautiful <a href="http://alteredqualia.com/three/examples/webgl_terrain_dynamic.html">experiment</a>.
It&#8217;s created using the awesome <a href="https://github.com/mrdoob/three.js/">three.js</a>, a lightweight 3D engine.
<img src="http://blog.nyholt.nl/images/half-life.jpg"></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Synchronized Panning and Zooming]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/13/synchronized-panning-and-zooming/"/>
    <updated>2011-11-13T12:24:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/13/synchronized-panning-and-zooming</id>
    <content type="html"><![CDATA[<p>The <a href="http://media.apps.chicagotribune.com/ward-redistricting/index.html">Ward-redistricting</a> is the first application I&#8217;ve seen where two pan and zoom control of two maps is interactively synchronized.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Proof of Performance for Javascript]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/02/proof-of-performance-for-javascript/"/>
    <updated>2011-11-02T13:45:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/02/proof-of-performance-for-javascript</id>
    <content type="html"><![CDATA[<p>Javascript sure has come a long way in terms of performance. Just have a look at <a href="https://github.com/mbebenita/Broadway">Broadway</a>, an H.264 decoder implemented in Javascript. It draws at the pixel level on the HTML Canvas element. Actually, it&#8217;s the Android decoder compiled/ported to Javascript using <a href="https://github.com/kripken/emscripten/wiki">Emscriptem</a> which in turn uses the <a href="http://llvm.org/">LLVM</a>.</p>

<p><img src="http://blog.nyholt.nl/images/broadway.png"></p>

<p>TL;DR; Watch <a href="http://mbebenita.github.com/Broadway/broadway.html">the demo</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Tweet-sized Javascript gems]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/11/02/tweet-sized-javascript-gems/"/>
    <updated>2011-11-02T10:29:00+01:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/11/02/tweet-sized-javascript-gems</id>
    <content type="html"><![CDATA[<p><a href="http://140byt.es/">140byt.es</a> is a tweet-sized, fork-to-play, community-curated collection of JavaScript.
For interesting examples, have a look at <a href="http://140byt.es/users/jed">jed</a>&#8217;s collection.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A Clean &amp; Pristine Baselayer for Offline Development]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/10/24/a-clean-and-pristine-baselayer-for-offline-development/"/>
    <updated>2011-10-24T13:20:00+02:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/10/24/a-clean-and-pristine-baselayer-for-offline-development</id>
    <content type="html"><![CDATA[<p>When using online services to provide the baselayer for your app, you depend on an Internet connection to be able to see and develop anything. I was looking for a clean baselayer that I could serve locally on my laptop.</p>

<p><img src="http://blog.nyholt.nl/images/baselayer_mapbox.png"></p>

<p>I found <a href="http://mapbox.com/#/tileset/world-light" title="World Light">World Light</a> (<a href="http://a.tiles.mapbox.com/mapbox/download/world-light.mbtiles" title="world-light.mbtiles, 1220MB">world-light.mbtiles, 1220MB</a>) from the great folks at <a href="http://mapbox.com/" title="MapBox">MapBox</a>.</p>

<p>It&#8217;s in <a href="http://mbtiles.org/" title="MBTiles">MBTiles</a> format (<a href="https://github.com/mapbox/mbtiles-spec" title="full spec">full spec</a>, based on SQLite, for easy offline use).</p>

<p>Recommended tileservers are <a href="http://tilestache.org/%20Tilestache">Tilestache</a> (Python) and <a href="https://github.com/mapbox/tilelive.js/" title="tilelive.js">tilelive.js</a> / <a href="https://github.com/mapbox/TileStream" title="TileStream">TileStream</a> (both for Node.js)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Interactivity in Mapping Apps]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/10/24/interactivity-in-mapping-apps/"/>
    <updated>2011-10-24T13:15:00+02:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/10/24/interactivity-in-mapping-apps</id>
    <content type="html"><![CDATA[<p>At <a href="http://www.nelen-schuurmans.nl/" title="Nelen &amp; Schuurmans">Nelen &amp; Schuurmans</a>, we currently build our GIS/mapping webapplications using <a href="http://www.mapnik.org/" title="Mapnik">Mapnik</a> and <a href="http://www.gdal.org/" title="GDAL">GDAL</a> to render overlays, rasters, WMS sources, polygons/shapefiles et cetera. We then let <a href="http://www.openlayers.org/" title="OpenLayers">OpenLayers</a> handle the clientside drawing and layering using the supported mapping APIs (Google, Bing, <a href="http://www.openstreetmap.org/" title="OpenStreetMap">OSM</a>).</p>

<p>This works well, and Mapnik/GDAL is a powerful combination of mature software projects. There&#8217;s one obvious downside though: interactivity. The serverside rendered images are static in itself. OpenLayers handles a lot of stuff, like custom tile loading, markers and boxes, but there&#8217;s a trend in other frameworks to do a lot more in terms of clientside interactivity:</p>

<h2>Leaflet</h2>

<p><a href="http://leaflet.cloudmade.com/features.html" title="Leaflet">Leaflet</a> by <a href="http://cloudmade.com/" title="CloudMade">CloudMade</a> is one of them, supporting tile layers, polylines, polygons, circles, markers, popups, image overlays, WMS layers and GeoJSON. Interactive features include &#8216;drag panning&#8217;, &#8216;scroll wheel zoom&#8217;, &#8216;double click zoom&#8217;, &#8216;shift-drag zoom to bounding box&#8217; on the Desktop, and &#8216;Touch-drag panning&#8217;, &#8216;Multi-touch zoom (iOS only)&#8217;, &#8216;Double tap zoom&#8217; and &#8216;Panning inertia&#8217; on mobile browsers (iOS, Android). Another interesting feature is CSS3 styling of popups.</p>

<p>The code is on Github: <a href="https://github.com/CloudMade/Leaflet" title="https://github.com/CloudMade/Leaflet">https://github.com/CloudMade/Leaflet</a>.</p>

<h2>Rotary Maps</h2>

<p>Another interesting clientside Javascript/SVG mapping library is <a href="http://thumbtack.github.com/rotarymaps/" title="Rotary Maps">Rotary Maps</a>. It combines <a href="http://raphaeljs.com/" title="RaphaelJS">RaphaelJS</a> with the <a href="http://code.google.com/apis/maps/documentation/javascript/" title="V3 Google Maps API">V3 Google Maps API</a> to layer vector graphics on top of the map.</p>

<p>Code also on Github: <a href="https://github.com/thumbtack/rotarymaps" title="https://github.com/thumbtack/rotarymaps">https://github.com/thumbtack/rotarymaps</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Wax for Maps]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/10/24/wax-for-maps/"/>
    <updated>2011-10-24T13:12:00+02:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/10/24/wax-for-maps</id>
    <content type="html"><![CDATA[<p>Wax is a set of tools for adding controls and layers to maps. It works together with a map server (serving tiles) and a Javascript library (basically combining the tiles).</p>

<p>The Wax documentation discourages the use of OpenLayers because it&#8217;s excessively complex and bloated for most map operations. It warns against the use of Polymaps because its SVG engine is not supported by IE7. So then what are we supposed to use? Apparently, <a href="https://github.com/stamen/modestmaps-js" title="Modest Maps">Modest Maps</a> is the <a href="http://mapbox.github.com/wax/manual/index.html#comparison-of-mapping-libraries" title="library of choice">library of choice</a>. It was initially written in Actionscript, and ported to Python and Javascript.</p>

<p>Modest Maps features a simple interface with stuff like touch controls for mobile devices, fullscreen mode, a nice point-selector, a zoombox and more.</p>

<p>Unfortunately, Modest Maps can currently show only one layer, unlike OpenLayers. That&#8217;s why I especially like the combination with <a href="http://weblog.nyholt.nl/post/5890801177/interactivity-in-mapping-apps" title="Leaflet">Leaflet</a>. This allows layering and more of the functionality found in OpenLayers. Have a look at the <a href="http://mapbox.github.com/wax/manual/index.html#leaflet" title="demo">demo</a>, and try zooming on the map. It&#8217;s feels as smooth as some of the Silverlight demos I&#8217;ve seen.</p>

<p>So Wax integrates and extends several pieces of mapping software. Highly recommended for use when OpenLayers is deemed too heavy.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Adding Vagrant to my Dev Stack]]></title>
    <link href="http://blog.nyholt.nl/blog/2011/10/24/adding-vagrant-to-my-dev-stack/"/>
    <updated>2011-10-24T12:59:00+02:00</updated>
    <id>http://blog.nyholt.nl/blog/2011/10/24/adding-vagrant-to-my-dev-stack</id>
    <content type="html"><![CDATA[<p>My development environment has changed/evolved on many levels in the past 6 years. from Windows to OS X via Linux, from no version control to Git via Subversion, and from Notepad++ to <a href="http://macromates.com/" title="Textmate">Textmate</a> via Vim. (don&#8217;t get me started). I want to talk about the (combination of) Operating Systems I use to develop web apps.</p>

<p>I used OS X briefly when it came out, and the potential of running software like Final Cut, Photoshop and Illustrator alongside UNIX tools like Apache and Python was quite promising. So when Tiger was released I didn&#8217;t wait and bought a Macbook. I was also lucky enough to get to work with OS X and Textmate at <a href="http://www.eight.nl" title="Eight Media">Eight Media</a>, doing Django and front-end development. This kick-started my professional use of OS X.</p>

<p>After a while, some downsides emerged: OS X is quite unlike Linux. OS X is certainly more polished in its interface compared to KDE and Gnome, thanks to years of consistent UX history and adherence to the <a href="http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html" title="Apple HIG">Apple HIG</a>. Also, it&#8217;s really plug and play, and the system really goes to sleep when the lid is closed. These are important details to me.</p>

<p>But there are significant and infamous shortcomings: there&#8217;s no proper package management system. Forget Macports, try <a href="http://mxcl.github.com/homebrew/" title="Homebrew">Homebrew</a> if you must, but for your UNIXy development stack, it falls short. It&#8217;s no match for something like Aptitude.</p>

<p>I&#8217;ve come to the conclusion that the development stack should mirror the deployment stack as much as possible. That would be Ubuntu Linux, so I&#8217;ve tried running a full Ubuntu install in <a href="http://www.parallels.com/eu/products/desktop/" title="Parallels Desktop">Parallels Desktop</a> and <a href="http://www.vmware.com/products/fusion/overview.html" title="VMWare Fusion">VMWare Fusion</a>, both of which are fantastic products that even provide 3D acceleration and a seamless experience (especially with Parallels&#8217; coherence mode).</p>

<p>But since I don&#8217;t really need another window manager (as I said, OS X + <a href="http://qsapp.com/" title="Quicksilver">Quicksilver</a> does this just fine), a so-called &#8216;headless&#8217; virtual machine would do the trick, too. <a href="http://www.virtualbox.org/" title="VirtualBox">VirtualBox</a> supports this mode of operation. Some bright spirit went even further to integrate a headless VM into OS X, and created a Ruby tool called <a href="http://www.vagrantup.com/" title="Vagrant">Vagrant</a>.</p>

<p>What&#8217;s Vagrant you ask? I couldn&#8217;t say it more concise than they do on their website:</p>

<p><em>&#8216;By providing automated creation and provisioning of virtual machines using Oracle&#8217;s VirtualBox, Vagrant provides the tools to create and configure lightweight, reproducible, and portable virtual environments&#8217;</em></p>

<p>In practice, I use Vagrant as such:</p>

<ul>
<li>I keep a directory in my OS X home directory (~) called VM/. This is where I run several VMs for different purposes. One for Django stuff, one for experimenting with GIS, one for trying out weird Linux tricks that could potentially destroy the system.</li>
<li>I start with a base box (Ubuntu Lucid, a distro I use on the server, too) and tune it with &#8216;recipes&#8217; using <a href="http://wiki.opscode.com/display/chef/Chef+Solo" title="Chef Solo">Chef</a> (or <a href="http://www.puppetlabs.com/puppet/introduction/" title="Puppet">Puppet</a>). I then &#8216;repackage&#8217; this VM for private re-use. (it gets stored in ~/.vagrant/boxes/, next to the baseline boxes).</li>
<li>Recipes define what kind of software gets installed and configured by default, such as apache2-worker-mpm, nginx, postgresql with certain roles, et cetera.</li>
<li>The configuration of each VM is stored in a Vagrantfile. This includes the shared folder location, port-forwarding, IP address, number of CPU&#8217;s and memory size. I run the VMs in the 33.33.33.x range. Someone told me this was a good idea, can&#8217;t remember who that was.</li>
<li>In ~/VM/ubuntu_django/, I can run vagrant ssh, and a fully automated local SSH login occurs.</li>
<li>The shared folder, specified in Vagrantfile, gets exported via NFS. This means I get access to /vagrant/projects/ on the VM side, which is the same as the directory ~/VM/ubuntu_django/projects/ in OS X. This is great, and allows me to use Textmate or any other editor or IDE while running the software in true Linux.</li>
<li>The PostgreSQL recipe even automatically modifies the pg_hba.conf file to allow connections from outside, so I can use the GUI tool <a href="http://www.pgadmin.org/" title="PGAdmin">PGAdminIII</a> from OS X to administer the postgres instance on Ubuntu.</li>
<li>Using commands like vagrant up, vagrant halt, vagrant suspend and vagrant resume, I can manage the various VMs from the commandline.</li>
</ul>


<p>Conclusion: OS X with VirtualBox managed by Vagrant gives me the best of both worlds in terms of operating systems. I still use Parallels for testing on Windows and the occasional peek at Gnome&#8217;s desktop though.</p>
]]></content>
  </entry>
  
</feed>

