Friday, May 11, 2012

Cesium on GitHub

Source code for our WebGL globe, Cesium (formerly Geoscope), is now on GitHub. To say the least, we are pretty pumped. This is a real open source project; we are not throwing the code out there and abandoning it, nor are we retaining complete control and just releasing source code. We're doing all development and planning out in the open with the community. There's a public roadmap, architecture overview, contributor's guide, and development mailing list.

Most of us are relativity new to github, and so far it is awesome. In particular, the code review tools are the best I've ever used. The ability to comment on commits and on individual lines of code as if we were commenting on a facebook post is useful. Combined with git's ability to quickly create and merge branches, we are really able to embrace peer review. In fact, our code quality has improved just because we know it will be publicly reviewed when merged into master.

As far as the project itself, we already implemented a lot of features, including streaming imagery from Bing, Esri, OpenStreetMap, and WMS; vector data rendering for polygons, polylines, billboards, and labels; various camera modes; a WebGL abstraction layer; etc. Check out the demos on cesium.agi.com. One particularly exciting feature is that Cesium supports 3D, 2D, and columbus view (think 2.5D, see below), and morphing between them with one line of code.

We have a good start, but there is still a lot of core features left. We're starting to look at streaming terrain, COLLADA models, and precision improvements. If you're interested in using or contributing to Cesium, please jump in.

Tuesday, March 20, 2012

Student Projects

I am teaching GPU Programming and Architecture at Penn again this semester. My students are starting on their final projects, and have some outstanding ideas. Three students are using WebGL, up from one when I taught the course last spring. Check out their project blogs and feel free to comment:

Saturday, March 17, 2012

Cesium - Our New Virtual Globe

Over the past year, Kevin and I - and several other AGIers - have been working on Cesium: a virtual globe engine for the web built using JavaScript and WebGL. Our demos, including satellite and KML visualization, are now live: cesium.agi.com. Use a recent version of Chrome or Firefox.


We are very pleased to announce that this engine will be open source. We plan to get the code up on github in the next month or so, and have an official release in August in time for SIGGRAPH.
We are looking to build a strong community around Cesium, and are interested in collaborating with potential contributors and users. Don't hesitate to email me.

For more information beyond the demos, check out my WebGL Camp Orlando talk, WebGL for Dynamic Virtual Globes [pdf]:



We have ported parts of our book's engine, OpenGlobe, to Cesium. In particular, the  Cesium renderer and polygon pipeline are quite similar to OpenGlobe. In some ways,  Cesium is our next generation version of OpenGlobe.

Wednesday, November 9, 2011

OpenGlobe moved to GitHub

OpenGlobe, the virtual globe 3D engine we developed for our book, is now on GitHub!
We think GitHub is really cool because it makes it easy to collaborate on open source projects. Please fork at will, and if you do something cool, send us a pull request.

Monday, October 17, 2011

WebGL in Internet Explorer

Currently, even Internet Explorer 10 will not support WebGL. Meanwhile, all the other major browsers support this new standard. I'm still confident that Microsoft will add WebGL support to IE, but as WebGL developers what can we do in the meantime?
  • Chrome Frame - an IE plugin that uses the Chrome engine to render web-pages that request so. If an IE user has this plugin installed, all we need to do is include a single meta tag in our WebGL-enabled pages:
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
    The major downside is Chrome Frame is a plugin, and, therefore, requires an install.  However, we don't need administer privileges to install Chrome Frame, making this option very attractive.
  • IEWebGL - an IE plugin that implements WebGL. It is lightweight, and was fairly simple to port our large engine to. Unlike Chrome Frame, IE's JavaScript engine still runs our JavaScript, and only the WebGL calls are forwarded to the plugin. The advantage over Chrome Frame is the install is smaller.
  • jebgl - uses a Java applet to emulate WebGL in IE by forwarding WebGL calls to JOGL. This sounds really promising because it does not require installing a plugin. Unfortunately, I have not been able to get it to work.
  • webgl-compat - a work-in-progress that implements WebGL with Canvas. I can't imagine that this is going to perform well. The first proof-of-concept rendered 25 rotating triangles at 42 fps without depth testing. Today's hardware pushes billions of triangles per second.
  • cwebgl - implements WebGL using JavaScript and Canvas, similar to webgl-compat. Again, I don't think this will meet the performance needs of most applications.
Today, I think our best bet is to use Chrome Frame. It worked well in my tests, can be installed without admin privileges, and supports even IE6 (admittetly, I only tested using IE9). Even when IE supports WebGL, we will need to consider these options for our users who can't upgrade right away.

Monday, September 26, 2011

WebGL: GPU acceleration for the open web

For the past six months, I've been developing with WebGL full-time. Coming from C++, I was not exactly thrilled about the idea of doing web development and coding in JavaScript. To my surprise, I really enjoy JavaScript, and the development tools are quite good.

Joe Kider kindly allowed me to share my enthusiasm for WebGL with his students in CIS 565: GPU Programming and Architecture at the University of Pennsylvania. My talk focused on the motivation for WebGL; WebGL support in current desktop and mobile browsers; and basic JavaScript:

Download the ppt.

Monday, September 5, 2011

The Google Resume Book Review

I'm not prepping for a job search, but I did just read The Google Resume by Gayle Laakmann McDowell. Gayle is a Penn alum (me too) so I wanted to check out one of her books.

Overall, this is a really outstanding book on the entire hiring process process for technical jobs: networking, career fairs, resumes, references, programming interviews, negotiating an offer, excelling once you are hired, etc. It is useful for developers of all experience levels, but it will be most useful for undergraduate and masters students in computer science or a similar major.  Its technical focus makes it hit home more than the general advice given by a university's career services department.

Being on both sides of the hiring process many times myself, I can say that the advice is practical and modern. It also includes lots of stories, like a candidate who used himself as a reference, and when the author interviewed with Microsoft.

Some of the advice you've probably heard, and some you may not have. The advice I like includes getting to know your professors; GPA isn't everything - excel at something; customize your resume for each company; keep your resume concise; use twitter for networking; have an online presence such as a blog, portfolio, or active forum participation; your initial email is really a cover letter; focus on accomplishments over responsibilities; map out your career 7-10 years ahead; find a mentor; and build relationships. There are also a number of subtle tips like watch what you write in an email because it may get forwarded (side note: I also recommend watching what you write about competitive works in a book proposal because it might get forwarded to the work's author. I am two for two on this!).

The chapter on programming interviews and the appendix on behavior questions are quite good. There is a great section on approaches to algorithm design that is useful way beyond an interview.

The section on evaluating an offer is great because it includes important considerations that I think many people ignore.  For example, we all consider location from the perspective of do we want to live there and cost of living, but do we consider if there will be other job opportunities there in the future?  Also, when looking at an offer, we should consider what the average annual raise is.

This book is really excellent, but if I had to critique a few minor things I would have liked to see more emphasis on contributing to open-source to gain project experience, especially considering that companies like Google and IBM contribute significantly.  The chapter on getting into gaming had lots of quotes but appeared to be less based on experience than the other chapters - and also focused more on social and casual games than AAA games that many people aspire to.  In fairness, an entire book could be written on gaming though.

All in all, I really recommend this book, especially for students before they start searching for their first internship or co-op.



Monday, August 22, 2011

Electronic Version of Our Book

We have had several requests for an electronic version of our virtual globe book.  I'm happy to say that it is now available on VitalSource.  You can read it on your desktop or transfer it to your iPhone, iPad, or iPod Touch.  This electronic version is discounted, and there are rental options that cost even less.  Pretty cool.


Update: Unfortunately, VitalSource only accepts credit cards from the US and Canada because of rights issues with some publishers. Our publisher, CRC Press, is working on a new website that will solve this problem. We'll keep you posted.