Rome’s Invisible City

Sometime last week “Rome’s Invisible City” aired on the telly here in Belgium.

With the help of a team of experts and the latest in 3D scanning technology, Alexander Armstrong, along with Dr Michael Scott, explores the hidden underground treasures that made Rome the powerhouse of the ancient world. In his favourite city, he uncovers a lost subterranean world that helped build and run the world’s first metropolis and its empire.

I didn’t give it that much attention at first, yet as the show progressed I became more and more intrigued by the cleverness of the Romans (and of course by the stunning 3D visualizations).

To say that the Romans developed this wicked concrete (now known as “Roman Concrete”) based on lime and pozzolana which hardens even under water and lasts for decades — This in contrast to our modern day concrete that only hardens in air, and lasts for half a decade (if all goes well).

The 3D scanning itself was done by ScanLAB.

We journeyed via the icy, crystal clear waters of subterranean aqueducts that feed the Trevi fountain and two thousand year old sewers which still function beneath the Roman Forum today, to decadent, labyrinthine catacombs. Our laser scans map these hidden treasures, revealing for the first time the complex network of tunnels, chambers and passageways without which Rome could not have survived as a city of a million people.

ScanLAB Projects: Rome’s Invisible City →

👉 FYI: If you live in Belgium you can watch “Rome’s Invisible City” for free online on vrtnu, until March 21. A lesser legal version (and windowed) version is up on YouTube.

Crafting Data-Driven Maps

At Uber, we use maps for everything — visualizing millions of geo data points, monitoring road conditions, and advocating for policy change in cities around the world.

Over the last few years we have experienced immense growth. As a result, we have many teams across the organization producing map visualizations for a wide range of needs. We saw a need to create a unified system to guide the creation of consistent, high-quality, data-driven maps.

Crafting Data-Driven Maps →

How the Circle Line rogue train was caught with data

Singapore GovTech data scientists share how they identified a rogue train as the cause of the recent MRT Circle Line disruptions:

Singapore’s MRT Circle Line was hit by a spate of mysterious disruptions in recent months, causing much confusion and distress to thousands of commuters.

From prior investigations by train operator SMRT and the Land Transport Authority (LTA), we knew that the incidents were caused by some form of signal interference, which led to loss of signals in some trains. The signal loss would trigger the emergency brake safety feature in those trains and cause them to stop randomly along the tracks.

But the incidents — which first happened in August — seemed to occur at random, making it difficult for the investigation team to pinpoint the exact cause.

How the Circle Line rogue train was caught with data → – Large-scale WebGL-powered Data Visualization


New open sourced project by Uber Engineering, for visual exploratory data analysis of large datasets:

At Uber, the many GPS points we process every day serves needs across the company. If we have a problem in our platform, we can diagnose it by exploring historical geolocation data. If there’s an accident on the road, we can explore GPS traces for a given trip to get full context. If there are pain points around pickup locations in a city, we can communicate plans to city authorities by visualizing them. We need this data to be web-based, real-time, and shareable so other teams at Uber can use it. To meet all these needs, we developed

You can visualise different types of layers:

You can also jump start any data visualization project with’s set of core layers, including the scatter plot, line, arc, choropleth, and grid layers, or you can optionally connect to other third-party libraries like our popular open source framework react-map-gl. […] We’ve also developed layers to visualize 3D building structures, street segments, point-cloud data, and more, which we will be open sourcing in future releases.

A very simple instance would be this:

import DeckGL from '';
import {ArcLayer} from '';

const flights = new ArcLayer({
  id: 'flights',
  data: [] // Some flight points

<DeckGL width={1920} height={1080} layers={[flights]} />

Note that this example will yield no underlying map. You’ll need the aforementioned react-map-gl for this. Somewhere hidden in the docs you’ll find:

The DeckGL component is typically rendered as a child of a map component like react-map-gl, but could be rendered as a child of any React component that you want to overlay your layers on top of.

The DeckGL React component works especially well as the child of a React component such as react-map-gl that displays a map using parameters similar to the Viewport (i.e. latitude, longitude, zoom etc). In this configuration your layers will render as a perfectly synchronized geospatial overlay over the underlying map.

Visualize Data Sets with Uber Engineering’s Framework → → Trip Routes Demo →

Sidenote: whilst the docs are technically correct, they seem a bit rushed and are not very usable at this moment to get started with The examples themselves are very nice, but clicking the “source” tab only gives you half the picture as they’ll only display the source of the DeckGL container, sans its wrapping MapGL component. In short: You’ll have to puzzle a bit to get this thing started.

Related: Vizicities


Vectiler is a 3d terrain and city mesh builder and exporter. the exports include road/terrain and building geometry.

Embedded above is an example of Manhattan:

Vectiler →

Related: Vizicities →

Webpack Module Tree Visualizer


Visualize and analyze your Webpack bundle to see which modules are taking up space and which might be duplicates.

Generate JSON stats, and pass it into the online tool.

webpack --json > stats.json

You can also use the plugin locally if you want.

Webpack Visualizer →

Disc – Browserify Module Tree Visualizer


Disc is a tool for analyzing the module tree of browserify project bundles. It’s especially handy for catching large and/or duplicate modules which might be either bloating up your bundle or slowing down the build process.

Build your bundle with the --full-paths flag and then pass that to discify:

browserify --full-paths index.js > bundle.js
discify bundle.js > disc.html
open disc.html

Disc →