Tuesday, January 26, 2016
New Blog
Monday, August 11, 2014
Photo Spheres on Google Maps
I am often surprised how few people know about photo spheres. 360º panoramas, they are ridiculously easy to create using the Android camera app, or with your own camera. There's even dedicate 360º cameras that will export to a photo sphere.
Even fewer people know that you can submit those photo spheres to Google Maps for use in Street View. Using Android, it's as easy as viewing the photo and sharing it with Google Maps. The sphere then loads into Google Maps Views and awaits moderation. While you're waiting, you can still share it with people. There's a convenient share button with a link and embed code. Here's one I took in Iceland just a few days ago. It's waiting for moderation, but can still be viewed.
In 1973 a US Navy DC3 went down on a beach in Iceland, and it's still there. I took two photo spheres of it, in addition to a number of other pictures. This is shared off Views. Once submitted, it's always available to you. Even if Google decides not to use it in Street View, you can still see it in Views, and even use it in the Google Maps API. Look at the iframe embed code, and find the panoid parameter. Use that as your "pano" property in your StreetViewPanoramaOptions object. Here's an example:
Friday, July 18, 2014
Imagery Resources
Map Knitter by Public Lab comes out of the mapping tools they developed, DIY balloon and kite mapping. But the tool would also be useful for those doing mapping with private drones, such as the Parrot Drones, any one of a number of other drones, or DIY drones. Public Lab also produces the Spectral Workbench for people to "Use a homemade spectrometer to scan different materials, and contribute to an open source database."
Of course I'd be remiss if I didn't mention Google's efforts to make imagery available through its new Google Maps for Business Imagery program. And Google Earth Engine which allows you to do "A planetary-scale platform for environmental data & analysis."
I've been playing around with PostGIS, an extension for PostGreSQL. PostGIS is probably the best relational database for vector data. A couple of years ago, they started a raster project. I've not seen any progress recently, but it's worth keeping an eye on.
And of course books have been written about GDAL, the Geospatial Data Abstraction Library. Powerful, with lots of scripts written for it. Definitely not for the faint of heart though. There's a great set of python scripts to do raster data manipulations.
Thursday, July 3, 2014
A Couple of Common Maps API Errors
FYI, the Google Maps API has no object with a .a property. When Google compiles objects, the object may be represented with a .a property to the API. People find this out using tools like Firebug and Chrome Dev Tools and then come to rely on them, not realizing that the actual object is a say a google.maps.LatLng object that has methods .lat() and .lng() and that's the right way to get those values. And Google won't change those with a version change. There's no such guarantee about undocumented methods and properties.
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script>
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644)
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
Tuesday, June 10, 2014
Thoughts on the new Street Art Project
Friday, May 9, 2014
I'm back
So, I took a bit of a hiatus from blogging. OK, more than two years. I've been focusing on blogging on the Google Geo Developers blog, and maintaining the Google Maps API Plus Page and Twitter account. However, there’s been some projects I've been working on, and I've been getting the long-form content itch back. So watch this space, I’ll be publishing more soon. My focus will probably be more on the tech end of things, code I’m working on etc. But as before I’ll be sprinkling some other thoughts along the way.
Thursday, December 8, 2011
The Hazards of Magic
Google also has that magic in web search or Google Earth. People look at it and just marvel. Old time GIS people are often frustrated by Google Earth, for instance, that they were doing maps and looking at satellite imagery, and if you just downloaded ArcView, and installed....and at that point they've lost the magic. No offense to ESRI products, they make some great stuff and for analysis there is nothing that beats them, but there isn't that easy, intuitive use to it that you find with Google's mapping products.
"Magic" often distracts people from the limitations of a device or site. Apple's products tie you into using iTunes for instance, and lock you into a platform. But people who love iPhones will line up to buy a new white version of the iPhone with little or no feature updates. Just because it's white. I'm not blaming them, it's an amazing job that Apple has done, creating that desire for a white iPhone you never knew that you had.
Netflix had the magic too, right? They have a really amazing recommendation engine, far better at surfacing movies and shows you wanted to see than any other similar site. Amazon, in my view, comes closest and their recommendations for movies and their interface are just terrible compared with Netflix. No one cared that Silverlight was being kept alive by Netflix, and we paid a nice premium to have it on a variety of devices. Ooops, can't view it in Australia, well there's always VPN right? The number of movies available, and free, and in the early days their ability to get you movies sometimes the day after you returned yours was truly magical.
Well, that's gone right? The hazard of magic, I think, is that when you lose it you really lose it. The vehemence that people reacted with was really incredible. There's been a lot of analysis of why this happened. There's an interesting piece on O'Reilly today about What publishers can learn from Netflix's problems. One of the singular moments in the whole thing was, however, when Netflix reassured us that DVDs from Qwikster would still be in the little red envelopes. The Oatmeal had a great comic on that. That was the moment the magic was gone, when people started screaming about that. The distraction, the attempt to get users to focus on things that don't add functionality, to create a mystique around a small aspect of the brand, had failed miserably.
I'm not sure United Airlines ever really had the magic. I fly a lot, and ended up on United flights frequently in the last year. They merged with Continental, and at the beginning of every flight in the last 6 months, they would put up a video with the president of United extolling the virtues of the merger. What were those virtues? Well, they were repainting planes. That's right. Continental planes were being repainted to United planes. By the third time I saw that video, which I couldn't get away from, I wanted to scream. Untied has an aging fleet of planes. Mostly uncomfortable, with TV screens placed above our heads in the ailes instead of in the seat backs, uncomfortable chairs, and food that is usually pretty bad and that you have to pay for. But they are a low cost airline that goes everywhere and has a great frequent flyer program with lots of partners. What I wanted to hear about was their plans for modernizing their fleet, or providing more leg room, or something like that. No magic at all.
OK, so what's the lesson of this? If you've got magic, you can get people excited by surface changes and get them to look away from your problems. If you lose that magic, or never had it, don't focus on the surface, focus on what people care the most about. In Netflix it was the price and then integrated app, DVDs and streaming together, working on fast, easy, and nice delivery of your product, video, to every platform. In United's case, focus on what's working for you and don't keep talking about appearance. People don't care about that as much as you think.
Wednesday, December 7, 2011
The School of Information's Alumni Day: What I said and wish I'd said
Bob wants me to talk about how this class helps me with my work, and I'll certainly be doing that. But I also want to talk about how your two years here will inform the work that you do, since these are probably two of the most important years of your life.
I'm Mano Marks, a Developer Advocate at Google. What that means is I travel the world helping Developers put Google Geographic technologies on the sites, and advocating on their behalf with the engineering teams. People who graduate from the School of Information have gone on to be user experience researchers, designers, coders, policy wonks, product managers, directors, developer advocates, academics, lawyers, and much more. They work at Google, Yahoo!, Microsoft, startups, design firms, consulting firms, nonprofits, think tanks, for the government, and many other places I haven't thought of.
Back in 2004 when I started at what was then the School of Information Management and Systems, or SIMS, we were trying to figure out what the program was. One of my classmates, Benjamin Hill, who taught 290TA the Information Organization Laboratory this semester, ran a survey asking people what their elevator pitch for SIMS would be. The answer that won was something like "Mumble it's interdisciplinary and walk away." SIMS, now the I School, was in search of itself. No one knew exactly what we were doing. But at the same time the professors, and hence the students, were passionate about it. I hope that hasn't changed. The dynamic tension inherent in the exercise of what-are-we-doing drove innovative new approaches and discussions that I still value today.
What does 202 do for you? What it did for me give me a greater sense of the whole picture of organizational practices. We can get lost in the details of a particular system, which database we use, whether to use Python or Ruby, all the fascinating and fun details for geeks. But what 202 got me to do is look at an organization as a system built on top of information flows. How information flows internally but also how it flows in relation to external partners and customers.
This helps me in my daily work, working with external partners who are using Google's mapping products. It helps me see, and hopefully communicate to them, that their maps are not just a map slapped up on a site, but rather a way of communicating information to their partners and customers, and gathering information from them. It is a part of an entire ecosystem of data that their company/organization/loose network uses, consumes, and produces. Our maps (or substitute your own application or document format) don't just have to be artifacts or dead things, but living interaction devices.
But beyond 202, beyond the underlying data and information flows in an organization is a whole context that the organization exists in, a legal and sociological framework that shapes and guides it. That context is what the rest of the I School experience is about. Understanding that context, and how it relates to the core concepts of 202 is what the School of Information is all about. Or at least, that's my proposal. Please challenge that, after all I'd hate for there to be a last word on what the I School is or does.
Thursday, December 1, 2011
Some quick links
WebGL Playground: a great tool for playing with WebGL code, allows you to change things live and see the results.
Hangout-3d: Demo code for using WebGL in a Google+ hangout.
Porting 3D graphics to the web: Opera tutorial. Shows techniques for porting 3D graphics from commonly used 3D graphics programs to JSON to use in WebGL.
These were pulled from Learning WebGL.
Latest imagery updates in Google Earth
NORAD Santa Tracker Coming
Wednesday, November 30, 2011
Thoughts on The Paperless Map
Sattersten references Stacey Madden who argues that, no offense to e-books, but they aren't "books" and we should reserve that word for a physical medium. Every time I've read that kind of argument on the Internet, as in we should reserve x word to mean only an older meaning of x, the person arguing that has already lost. Hacker/cracker anyone?
I am sure there are those who argued, when maps first came to the web, that they weren't really maps, they were some other medium. However, if they did, you don't hear those voices anymore. Perhaps that's because of the strong history of GIS before the web, or because maps are primarily used for a vehicle to convey information, not generally as a completed composition. Those who know more of the history of cartography, please point me to any debates I may be unaware of.
Sattersten describes an experiment where readers are invited to participate in the compilation of a book by purchasing content as it's developed and adding their comments and feedback. It's actually hard for me to imagine bothering doing that with a book, especially if it's one of fiction, but I can easily imagine contributing to a map. I just actually don't see the need to put an end point on it, as in "this map is done."
Of course, I have had many discussions on the superiority of paper maps over digital maps in certain circumstances, say out in the field where your device may not have a reliable source of power, or where the large format may make it easier to share with others. I wonder if tablets will start to fill the latter use case. And I've admired the bridging technology of the digital pen with GIS.
I think we made the transition with maps a long time ago, thank you CGIS. So while the GIS world got a surprise when we started moving to the web, it didn't immediately dismiss the medium as not a map. In fact, one of the things I've heard from GIS folks that are surprising to non-GIS people is the question "Why would I care about web maps? They're only about making maps."
Wednesday, November 23, 2011
Easy Panorama creation with Ice Cream Sandwich
It was pretty easy to do, but there were a few caveats. The panoramas didn't contain any location EXIF headers. Not sure if that will be part of the final release. My demo didn't require it since I was just using a free floating panorama viewer. Also, the panorama camera didn't always go a full 360 degrees, so the seam between the two ends was a little uneven. The only other issue was figuring out where the center of the panorama was and coding that into the heading of each panorama. Still, it was a nice and easy way to display these panoramas. Oh, and take a look at the full version, it shows the copyright information for Dan that I coded into the panorama.
Saturday, November 19, 2011
Google Developer Day Berlin, start of day
One of my complaints about GDDs is that there is so much great content, but I never get to go to the sessions because I'm working. In a tradition going back to the first German GDD, we've got a track devoted to speakers from universities in Berlin speaking about some cutting edge research. I can't wait till the videos go up. But the truth is, I'd rather be talking to developers anyway, I learn so much from you. So if you're here, see you at my session, or in the GTUG area, or exploring some of the sandbox events. For the rest of you, see you on Google+.
Thursday, November 17, 2011
Thankfulness
But I'm back to blogging, and feeling reflective. I thought I'd share a couple of things I'm thankful for before next weeks' Thanksgiving festivities in the U.S.
- I am thankful for my work. I get to travel around the world, meeting really amazing and interesting developers who are doing great projects such as the iOnRoad app developers, or the folks from PointGrab who demoed using Google Earth:
- I am thankful for the Internet, or rather for the fast connection I enjoy most of the time. While I was in China for about one and a half weeks, the Internet connection was terrible. I didn't really get it, the Great Firewall of China, before. I thought certain sites were blocked, OK, but I could go on with my life normally. Nope. It seems all sites, at least all non-Chinese sites, are filtered, even if they are not blocked. They appear to be checking each site and each bit of content as it loads. Sites of my favorite web comics, for instance, such as PVP, loaded slowly. Yes, PVP is filtered in China. The image of the comic would slowly, pixel by pixel, appear. It was torturous because I didn't know which pages would load and which wouldn't. Most people I talked to used a proxy, a VPN connection to outside of China, but even that was slow because of course you're adding on layers of connection and other servers routing your content. And yet they also told me there is lively debate within China on the net about the GFWC.
Friday, October 21, 2011
Memories of Prague
In fact, my trip for Google Developer Day in Prague on Tuesday was my fourth, and my third in the last year. My first though was in 1990.
My first visit was in 1990. I was in the midst of my junior year abroad, living in Budapest. I didn't have much money, so I took the train up to Prague, a 9 hour trip if I remember correctly, stayed 16 hours in Prague, and went back that evening. It was a magical place back then, just emerging from the fog of communism. Spared destruction during the Second World War, Prague retains a medieval core, one of the most beautiful and unblemished in Europe, in my opinion. It became the cool center for expats in the early 90s, when English speaking 20-somethings would go to Prague to teach English and drink inexpensive but delicious beer. So many went there, in fact, that a 2002 novel about expats in Budapest in 1990-91 was entitled Prague, as in they missed the boat and went to the wrong Eastern European capital. (I don't regret Budapest, BTW, but Prague did have the cachet back then).
I left my nice camera at home, so took pictures with my Nexus S. I'm particularly happy with this one:
Wednesday, October 19, 2011
Thoughts on vector based mapping
But there's been a lot of buzz for awhile about the possibility of vector based mapping. Vector mapping is essentially pushing the underlying data used to build a map to the client, instead of the fully assembled map. By pushing vectors to a client (browser or mobile application) you can push the assembly of the map into the client machine, saving quite a bit of work on the server side. But it also gives you a lot of capabilities that are absent from raster maps. For instance:
- Reprojection and restyling on the fly: If you are assembling a map based on vectors, you're just providing the base map data and allowing the local app handle constructing the map. That allows you to do interesting things like reproject and restyle a map in the client and on the fly.
- Graduated map drawing: You can draw the map while the user watches, instead of loading it tile by tile.
- Perspective changes: You can tilt maps, create 2.5D or 3D maps, do all sorts of things based with the data.
- Fluid transitions: Instead of jumping between zoom levels, you can have smoother transitions as you navigate a map.
Scalable Vector Graphics (SVG): SVG has been around for awhile, and has even been used by Google for rendering overlays on Google Maps API maps. But it was always held back by the performance in the browser and lack of support by IE. IE9 finally gives support for SVG, and most modern browsers are now performant enough to use it. Polymaps, a JavaScript library, was the first major implementation of vector mapping for the web that I saw. It allows developers to draw maps using SVG and style them using CSS styling. I think SVG is still a little slow, but it is now widely supported and the CSS styling is a great way for developers to style maps.
Canvas: There's been a lot of hall-way talk at conferences like WhereCamps and FOSS4G about using HTML5 Canvas to render vectors, pushed down in a standard format. I haven't seen any great implementations, but Canvas is also widely supported in the browser and generally has good performance.
WebGL: WebGL gives the browser access to a machine's graphics card to do rendering, giving it some tremendous power. Browsers traditionally only had that kind of access through plugins like Flash. Google launched an experiment last week called MapsGL. It's pretty awesome. We've got buildings, smooth transitions, and nice animations of 45 degree imagery. The downside of WebGL is that it isn't widely supported yet in the browser. Currently only Chrome 14 and later versions of Firefox have good enough support for MapsGL. And currently Microsoft has no plans to support it. My hope is that WebGL will take off because of the power that graphics processor gives maps developers.
This isn't meant to be an exhaustive list, feel free to add other approaches you've seen or implemented. I'm really excited by vector mapping and want to see it succeed. I really feel like it's "The Future"
Wednesday, October 5, 2011
How I got to be where I am: part one of many
I am 42, graduated college in 1992, with a BA in History. In 93, I got an MA in History, and took a year off from the Ph.D. program. I went and worked in Budapest for a year, and never went back to school. That's a story for another post though. Bottom line, I went back home to the SF Bay Area, and got the first job that came along, doing data entry at a non-profit. Back then, it was called the Rape Crisis Center of Contra Costa and Marin Counties, but now it's Community Violence Solutions. It was a caused I believed in, and still do, and I eventually ended up doing a term on the board of the now-defunct National Coalition Against Sexual Assault. Another story for another day.
One day, while working at RCC, one of my colleagues was exasperated, she couldn't make the computer work. I walked over and hit the 'on' switch on the monitor. You have to realize this is 1994, and most people, particularly those who worked in non-profits, didn't have much experience with computers. A couple years later one of the office staff in our Marin office refused to unplug a computer because she was afraid damaging it, necessitating me driving over there to unplug the computer from the power strip and plug it into another power strip, thereby "fixing" it.
So anyway, with that acting of turning on the monitor, I became the computer expert in the building. A few years later, someone would coin the term "accidental techie" to describe what happened to me. I'd always had a computer, fiddled around with it, but never gotten too deep into it. Until then. When you're the computer person at a non-profit in the 90s, you were the computer person. I did everything from database work to hardware troubleshooting, to networking. Eventually we hired a data entry person for me to supervise. I went on to a series of non-profit jobs, eventually back to school, and then to Google. But I will never forget that first moment of turning on the monitor and having people literally turn to me with new found respect in their eyes.
Friday, September 30, 2011
Why do we do it?
Because it's the right thing to do. The Google Maps API was the world's first monster web mashup platform and is still the most used web API in the world. When we started Google Maps, we thought "Oh great, people can search on maps for directions, and look at satellite imagery." We though we were making a really cool app that people could visit. And we did.
But external developers showed us how it could be used to create mashup, data visualizations that really gave meaning to data. And they could do it without having a geography degree or a certification in GIS software. And they could do it with that then unique slippy map feel that we now expect from Google Maps. So we released the Maps API.
Because we could get sites like HealthMap, or the Ushahidi project. We did it because people wanted to see real estate on maps. We did it because mapping crime alerts was meaningful to people. We did it because people want to share KML files, mark up the earth, and have now created over 1 billion of them. We did it because in a crisis, people can turn to our maps and yours.
Sure, there's a business model behind it, Google makes money on advertising, and the more sites out there, the more people are search. So, yeah. And we do make money from people who want to make the maps private, or offline.
But fundamentally, we do it because it's the right thing to do, we do it because we believe that people want to, that they benefit from using maps as a platform for understanding data.
Saturday, September 24, 2011
Technology: Do you get it?
Oh, I'm just not good with technology.
This statement puzzled me for a long time, even though I think I understand what they are trying to say. The truth is, even the remote stone age tribe that hasn't made contact with the rest of the world uses technology. The light switch you flipped on? Technology. The paper you write on? Technology. The radio, car, dish washer, technology. The fork you eat with. Even the fact that you wear clothes. Technology. Anyone who has played Civilization or some other strategy game with a tech tree knows this.
Saturday, September 17, 2011
Highlights from FOSS4G
First let me say that everyone I talked to and every talk I went to really was great. Such a friendly and smart crowd of people. And everyone was working on really interesting problems. I missed several talks because I just got into a conversation with someone and we didn't want to stop!
There were a few things I wanted to call out in particular that I found really compelling.
WebGL Earth: A nice 3D globe written entirely in JavaScript. Especially compelling in the developer release of Chrome. From Petr Klokan, of GDAL2Tiles and MapTiler fame.
PostGIS Raster (pg Raster): This year a lot of buzz was around PostGIS Raster, which would as much as possible treat queries on raster data as SQL queries. It is still pretty experimental, but shows a lot of promise, especially attached to the mature PostGIS project. But the other thing that shows is there is a lot of desire for treating rasters as data, not just overlays. Of course, we believe that at Google, which is why we're working on Google Earth Engine. But I'm also glad to see so much desire for it in the FOSS community.
![]() |
| FOSS4G2011 |
Thursday, August 25, 2011
Playing with the HTML5 Drag and Drop API
So another thing that inspired me during Sean Maday's talk at Google's Geospatial Awareness Day was his demonstration of using HTML5's drag and drop API to load a KML file into a Google Earth API site. In that sample, he loaded the KML file. The JS then parsed the KML and read it into the plugin. I immediately thought about using it with Maps, and adding in a GroundOverlay. So I wrote a quick sample to do just that. Of course, it doesn't work on older browsers, but if you're using later versions of Chrome, FF, or Safari it works just fine. I haven't tested it on IE9.
The code owes a lot to Riyad Kalla's HTML5 Drag and Drop Upload and File API Tutorial. He does a good job of explaining the API, so I'll leave that part to his post. All mine does is put any image in a GroundOverlay on a map. Drag any image from your computer into the little space at the top and it'll show up in a pre-defined place on the map. Next-up I'll work on a way to stretch and position the image. I'm also thinking I'll try to pull out any positioning in the EXIF headers to make a guess about location.
I'm thinking this would be useful for image upload and positioning sites. Say I want users to place images of old maps or more recent satellite imagery. They could position it on the map and then upload it to my server. Of course this doesn't take care of proper georeferencing or projections. Thoughts for another project.
Here's my code for creating the GroundOverlay:
function handleReaderLoadEnd(evt) {
var imageBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(40.716216,-74.213393),
new google.maps.LatLng(40.765641,-74.139235));
var oldmap = new google.maps.GroundOverlay(evt.target.result,
imageBounds);
oldmap.setMap(map);
}





