 Well, my name is Vanessa Rochambeau, I'm a GIS specialist with Create, our company. This is Laura Ferguson. She's a CTO of our company. We are originally going to do a presentation on our application and how we're using Angular to kind of get our data to run all around our application, to chart our data. We're actually using CZM as our engine for our application. And then we got here and we heard an earlier talk that kind of touched on an issue that we've been having with our rendering of our buildings and we've kind of come to the understanding within the last few weeks since we transitioned to CZM that this is an over-line issue that the community might be able to help us out with or that maybe we should all push forward together on. And then we saw with Patrick's talk like how awesome CZM is and we love CZM and we just really want to make it work. So we decided to kind of railroad our talk to that topic of our rendering issues in CZM so that we can get a dialogue going with you guys. So? And with the understanding, we're going to be here tomorrow at Foss4G. So if you want your Angular download, grab them in the hallway and they can talk about Angular. So our Bingo card is now full with Angular. I won an hour ago with Hilbert's card, so I forgot to shout out Bingo, so take it away. So we're just kind of go through a history of our app, a recent history when we've done some transitioning from Google Earth to CZM and kind of the things we've had to deal with going through that. But feel free to chime in. We want this to be more of an open dialogue and a conversation and more of a presentation. So what do we do, Laura? Tell them what we do. So Vanessa is a GIS data analyst. She can give her introduction. I'm actually originally a JavaScript developer for a long time, well Java a long time and JavaScript more recently. And what we're doing is we're building a real estate financial analysis system and that sounds really dull, but when you throw GIS in there, it's like, wow. And you can, we're moving towards things like building buildings on the fly and stuff like that. But right now, we just want to give real estate developers the context, the three-dimensional context of the buildings that they're looking at, the space they're looking at, and the context where they're talking about building a building. And then they go off into sort of the financial analysis world. But keeping that three-dimensional context with them. And so our challenge is to build a software as a service product that's on top of a GIS platform that has to perform well because these are guys who barely know how to use Excel let alone something more fancy on the web. So we're not going to be telling them to clear their cache or anything else. And we started off with Google Earth, and we'll talk about that in a minute. I don't know that the graphic is a little fuzzy, but just understand this as it shows a profit and how much that profit is. So this is a little bit of a look at the 3D models that we're doing. We're actually extruding building footprints. And there's actually an interior model here that was made with Magic Plan and then brought into the system. We're helping to automate that whole process. So if you, like for example, that's a bunch of row houses in Georgetown, if you wanted to turn those into corporate apartments, you could set up a whole financial model. You could model, go inside, get all the interior models. Then you'd have a whole presentation to take to the community or to your investors and get buy-in from those different stakeholders. And so we think that this is like the wave of the future because up until now basically they just bring a giant chunk of paper into a meeting and say, here this is the project we're building and of course no one reads that. This is something they could actually present and really make the case for why this particular idea for what to do with a space is going to benefit the neighborhood, benefit whoever is investing in it. Okay. Getting into the technical side of things. You want to talk about? Okay. JavaScript. So we use a lot of JavaScript in our app, which is why we came here. On the back end, we do use Postgres as our database and we use Java in the back end as well, but for the most part, all of our front end is JavaScript. We use Node, Lightly, mostly package manager to get all of our components together. We use Angular to bind our data and to get it talking from the cesium initialized map all the way to all of our views and to our charts. We use three different charting systems because we're trying to get a feel for what seems best. We use Google charts for some basic rendering. We use ChartJS for some basic rendering and we're starting to get more into D3 to get some really awesome graphics in there. And they all are equally easy to get our scope data to inform our charts. So it's pretty awesome. And then recently we have transitioned from Google Earth to cesium, which we love. But we run into a few issues with that. So we want to talk about our first approach with Google Earth. And I was not around when they used Google Earth. I just started with the company six weeks ago, so we'll let Lauren talk about that. Okay, how do I get that? How do you get the link to come up? You just click on it. I did that. Hang on. Follow the link. Thank you very much. This is the old fashioned way. I need to turn up your screen brightness though. Can you click open again? Where the heck? I'll open there. Sorry about that. Let's take a second. So, you know... I think it's showing the wrong screen. Showing the wrong screen? Yeah. Oh, I see. Let me switch which... Go to display. Sorry, technical difficulties. We just got switched to display. I don't have a desktop too. And it doesn't render. Wait a second. Does anyone know why I... Oh, it's good. Well, there's the arrangement. And there we go. Thank you very much. Okay. Wow. All right. That's not bad. So, a little bit... Let me just zoom out a little bit here. So, this is Washington, D.C. We're based in D.C. So, our first target market here is to kind of get in here on Washington, D.C. This is Georgetown, like I was saying. And then we actually have this magic plan render of this... It's actually Ed's house, one of our co-founders. And we can kind of zip in here and see that whole layout. And then move out. And then we have various kinds of filtering things which are better shown actually in the cesium version. So, what I wanted to show you here, though, mostly is the translucency because that's what we're going to talk about with cesium. So, you see, it's got a pretty good rendering. This is a fairly low-resolution transfer to the big screen, but you see it in high resolution on the small computer on the laptop. You know, it gives you a pretty nice feel. And we like the fact that you can actually see the ground map through it. We also have played with having, you know, full building renderings, but again, we do want to have these interiors modeled. So, transparency is really important to what we're doing. So, going back to the talk... Where's your... So, that's Google Earth. So, now, then we were... We talked to Google and they're like, well, you know, we're going to be phasing out Google Earth, and we were already having issues with Windows because iFrames don't play nice, and when you're starting to talk about a software-as-a-service product, there's lots and lots of Windows that are all in JavaScript and they're not playing nice with the back end. So, that created layering issues. It requires a plug-in, obviously a downside, and now it's really dead. So, not good. Other options. We looked at a whole bunch. This is just some of them. We looked at here.com. They don't have 3D yet. Esri, not ready. Unity, too much, you know, the data sourcing and the process of creating the Unity map is going to really blow all of our schedule. And Cesium, ready to go. So, we got really excited about that and we built up the Cesium model. So, now that we have adopted Cesium, we converted our platform to Cesium. We like Cesium because it allows us to bring our Unity kind of thematic maps, our informative maps over from Mapbox, possibly CardoDB, and the 3D part is awesome because we can bring in our Google or KMZ building models from previous. We can go to outside vendors like Cyber City 3D and maybe get some more up-to-date or more informative 3D models, or we can even implement 3JS and maybe create our own building models for procedural generation. We can kind of play with that in 3JS and we can do that all in Cesium and be fully supported and contribute to the community going forward. And so, we're really happy about that. But then, once we kind of got Cesium up and running, we thought everything was great and then we started seeing some rendering issues with our translucency and our transparency and our buildings. We'll show you what it looks like when it's in its best form first. Oh, you're fine. 15 minutes. So, here we have our translucencies. So, it looks good to us and we have our buildings here. Cesium allows us to do these really cool things like just out of the box bring in some geolocating so we can see what property address we're looking at. We can, out of the box, bring in capability to bring in some tiling layers so we can see retail area use clusters. So, Cesium just has so many different plugins that we can use in order to make our app really awesome. But the only issue we're seeing and we're hoping that you all can help us inform this is that we found that on some computers that alpha transparency is making it glitching and causing snow for certain GPUs and mostly for MacBook Airs, although we haven't been able to test it on a larger scale for other different types of computers. So, are you ready? Yeah, show the images first. Okay. So, I don't know if you can see how that doesn't look really good. The little black speckies. So, from the cesium perspective, what's the issue with winding order and polygon coordinates? Yeah, I don't think it's winding order. So, generally in computer graphics, there's two ways to do translucency. One is a back to front sorting and then alpha blending and that can be really hard for translucencies to intersect each other because you do not split those. Cesium can do that, but the hardware support floating point textures and multiple render targets will do order-dependent translucency, which is blending based on the alpha weight. It's a very recent paper. So, in this case, I suspect it's falling out to alpha blending and I suspect the drivers are not up to snuff. But I'm happy to think, of course, it will test to be a machine. Yeah, well, we, when we updated to the newer cesium that went to OIT order-independent transparency, we reverted back to alpha blending and we saw that the performance increased a little bit, but still was not what we wanted it to be. So, where our hypothesis is is that maybe some of the newer GPUs are so optimized that maybe they're not able to render things because when we look outside of our own application and into the sandbox or the sandcastle on the cesium site, some computers still have issues reading it. So this is a 2011 MacBook Air, but we literally have been buying computers like the last couple of weeks. And even like one week old MacBook Airs have the same issue and there's no update. So if there's going to be an update, it's going to have to come from our community setting some kind of standard and getting that to Apple to kind of make the difference. I mean, I can bring up also what this looks like for us. While that's loading, I'll go back in a second. But clearly, you know, we've tried different, this is the sandbox and, you know, depending on the machine, we kind of get different performance, but basically all the MacBook Airs we've tried, we've gotten the JID effect or the Snow effect. I'm sorry. Can we put it in which resolution? Are you replicating it, Paul? Okay, so Paul's replicating it, so... Well, what? Plugged in battery power or software power? Is there differential acceleration? No, we haven't really... We can add that to the test, but we haven't seen so far that that has reached anything. So Cesium itself is awesome. It's just, I think, the newer optimization of the GPU is rendering WebGL is the issue that maybe as a community we should push the manufacturers to try to pay more attention to this for our sake if we're going to be pushing forward with this kind of technology. It's a question. It gets a little better the closer you get. On some machines, the problem goes away if you go very close. No, we are still... We're still optimizing our engine. This is literally two weeks. We're still in the middle trying to figure out how many buildings we can render, and even today I heard some ideas about how to optimize that better. These are all just straight extruded polygons without a lot of specialized... If there are opaque, do you still have the same problem? If there are opaque, the problem goes away, but if the building with the interior has translucency, so that one still has snow. We actually have an opaque version of the demo that our CEO uses because he has a MacBook Air. We have a very clear driver. I'd like to get him a new computer, but he's his new. Obviously, it needs to work for every user for us to actually be able to sell this product. We have to have a solution of one sort or another. We'd like it to be seasoned. Any other thoughts or questions? Well, this doesn't really help you right now, but one way that you can apply pressure in you vendors is to file blogs on browsers and also talk to, well, the seasoned guys are very well in touch with the browser vendors, and if we can narrow this sort of thing down to a simple test, we can add this to the WebGL format suite, and there's a lot of pressure these days for GPU drivers to pass those. Yeah, in the sandbox, I mean, it's a good example. We've clearly seen that on the MacBook Pros, which I know most developers, that's what we're using, it works fine. When you get on the MacBook Air, there's some problems. It does differ also between browsers. It's a little better on Safari, but it does take forever to load. We have accumulated data, and we'll actually get to this in a minute. We have a survey to help us get some data. If you guys could help out, especially if you have a partner or a friend with the MacBook Air or any other computer, it would be great to get as much data as we can so that we can present that in a coherent, hopefully scientific way. Just new errors, how about pros? Yeah, I have a brand new MacBook Pro. It's totally fine. So do I. Yeah, we're really only seeing it on Air. We haven't seen it on any Linux machines, any Windows machines, and older Macs seem to work fine. I have an older Mac that works fine. It's just really the errors that we're seeing an issue, but we really want to get a nice sample size, some good testing, and hopefully you guys can help us out a bit. So this is what we want, and that's what it looks like on my computer, and it's gorgeous, and we can really build on this. But then we see this on 2013 MacBook Air, 2011 MacBook Air, 2011 MacBook Air, different browsers. So we just really want to solve this problem because CZM is a great thing for us, and it's basically, I think, just a WebGL thing. So are there any other apps that use WebGL that you've tested on these same machines? Not as of yet. It's only within the last... CZM has a equation and try to look at it and see if you can replicate it. Yeah? Well, besides the sandbox, right? Besides CZM. Besides CZM, yeah. So it's sort of for WebGL. Sure. Yeah, and there's a nice site I found the other day, and maybe we'll add that to our survey on the point I'm being in today. Yeah. So Apple was reporting WebGL as a security risk for a while. So it's been a little bit... I don't have any problems on my MacBook Air, and I checked in the Safari. I actually reacted WebGL on because almost all WebGL that Safari was had an off premium app. So you might want to check and make sure that's your reaction. Is it a good plan anywhere that it will turn the features off for security? Okay. Interesting. There you go. Oh, very good. Or give away a MacBook Pro to each new customer. There we go. Right. Now, these guys took me back to the 2007-2000 when Google Earth just comes out, right? And like, you're doing points, lines, and polygons. Notice how Google Earth and the default layers had points and lines. No polygons, because these fills are incredibly intensive on people's graphics cards. So I created a lease map of the Rocky Mountains, Oil and Gas, color coded by company. 40,000 polygons. And beautiful fill of polygons, a nice pattern of exploitation of the landscape for hydrocarbons. And so the first guy I show it to, PhD in geology, rich guy, he's gonna make me famous. So I said, click on this layer. It comes up on his Google Earth and his home machine just crashes right there. And that was the last time I did fill polygons for Google Earth. The idea of trying to predict what your customers will have, it's incredibly stressful from a business perspective. And one or two more questions from the audience? Anything about the app itself? We actually showed only a little bit of what we're doing, but we're really playing with layers and visualizations and stuff like that. Or any other questions? Just a comment to see me afterwards and if you have code on that computer, there's a small chance I could try to hack up a workaround, but it might help you with the worker. It's interesting because I've been a developer a long time and I remember when we first got Alphas in our front-end software development and I think we saw some of this over my recollections, a little foggy. And I think that they must have optimized out, unless it's the security thing we were talking about. It feels to me like they've optimized out some workaround that made it all work in these very tightly optimized graphics cards and that we've somehow gotten so secure that everything's going to work fine that we've missed a step, like we didn't have the test in place. So it seems like as a community, and I appreciate how warm this community is because it's my first time here, but as a community if we can establish a baseline test for WebGL and what our expectations are, that's an important step no matter whether that solves this problem or not because that's something where we want the hardware manufacturers to be aware of the high-end users or the high-end applications, rather, that we're going to be putting out there. Right. Then you have the other reality of the general generic user and then the gaming community which is leaps and bounds ahead of what they're doing with graphics and framerate, etc. Final thoughts, questions, comments, masks, questions. Thank you. Great. Thanks.