We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

GIS Is Not Dead, It's Coming For You And It's Been Drinking JavaScript

00:00

Formal Metadata

Title
GIS Is Not Dead, It's Coming For You And It's Been Drinking JavaScript
Title of Series
Number of Parts
95
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language
Production PlaceNottingham

Content Metadata

Subject Area
Genre
Abstract
This talk will discuss several super kick-ass ways that JavaScript and the web have re-shaped GIS and are changing how we visualize, analyze and share geospatial data with each other and the world. GIS is dead? No, it’s not, and it’s coming to find you and spatially kick your ass with a big bag of JavaScript. The world changes fast (hello, Internet). Yet, our industry (map making in one form or another) is stuck, and has generally shown itself to be slow to react to new ideas and paradigms that grow rapidly in other spaces. But there is still hope! GIS is coming back, and it’s being re-tooled with lots of shiny new software and geo-weapons. It’s going to make an assault on all of our previous notions of its old self. Of course this new and shiny GIS resembles its former self in many ways, it's also full many new ideas about how we experience maps and data on the web. As we witness a massive resurgence in JavaScript (hello D3 & node.js), and more emphasis placed on the web in general, we see that there are actually still large holes that should be filled the geo-spatial stack. New waves of JavaScript developers have, and will continue to fill these gaps. This talk will discuss several super kick-ass ways that JavaScript and the web have re-shaped GIS and are changing how we visualize, analyze and share geospatial data with each other and the world.
View (database)Rule of inferenceTwitterComputer fileBookmark (World Wide Web)InternetworkingLie groupGraphical user interfaceInfinityOvalOnline helpGeometryWindowBenchmarkParameter (computer programming)MIDIUniform resource nameArtificial neural networkArmString (computer science)ChainObject (grammar)Metropolitan area networkWorld Wide Web ConsortiumDew pointElectronic data interchangeTime evolutionProcess (computing)File formatWeb 2.0InternetworkingParameter (computer programming)Multiplication signData miningFormal languagePresentation of a groupMoment <Mathematik>QuicksortGoodness of fitBitString (computer science)TouchscreenObject (grammar)TwitterCubeLine (geometry)Statement (computer science)MappingProcess (computing)EvoluteVisualization (computer graphics)Real-time operating systemIntegrated development environmentCycle (graph theory)VideoconferencingVideo gameGeometrySoftware developerGame controllerMassDisk read-and-write headDimensional analysisCausalityWater vaporFamilyDigital media3 (number)Metropolitan area networkType theoryLocal ringOrder (biology)Online helpPhysical lawPoint (geometry)System callWorld Wide Web ConsortiumState of matterRule of inferenceInsertion lossClosed setRight angleGame theoryCondition numberTotal S.A.
Computer fileView (database)Bookmark (World Wide Web)Web browserOnline helpDew pointChainWindowGraphical user interfaceMenu (computing)Uniform resource nameWorld Wide Web ConsortiumSocket-SchnittstelleRule of inferenceFrame problemWide area networkVideo gameOpen setGradientEmailLevel (video gaming)InfinityFlash memoryWebsiteTouchscreenVisualization (computer graphics)Metropolitan area networkFormal languageChainNeuroinformatikPlastikkarteServer (computing)Machine visionQuery languageLibrary (computing)Bus (computing)Observational studyMusical ensembleMassGroup actionGreatest elementMultiplication signProcess (computing)Disk read-and-write headProjective planeRight angleEvent horizonVisualization (computer graphics)Surface of revolutionWebsiteRevision controlSystem callStandard deviationNetwork topologyMomentumExecution unitPhysical systemComputer fileLevel (video gaming)Human migrationEvoluteVirtual machineMappingVideoconferencingTelecommunicationTotal S.A.AreaCausalityPower (physics)Keilförmige AnordnungFigurate numberWorld Wide Web ConsortiumPoint (geometry)MereologyDatabaseQuicksortCartesian coordinate systemPlanningState of matterTerm (mathematics)Insertion lossSoftware developerBuildingSocket-SchnittstelleFlash memoryShared memorySoftwareSoftware frameworkGraphical user interfaceCore dumpVector spaceWeb 2.0Inheritance (object-oriented programming)VolumenvisualisierungInternetworkingVideo gameRoundness (object)Game theoryWeb browserRippingInterface (computing)Buffer solutionMultiplicationProgrammschleifeLoop (music)GeometryReal-time operating systemTunisOpen setAnalytic setPerturbation theoryJSON
View (database)Computer fileBookmark (World Wide Web)WindowAxonometric projectionLevel (video gaming)Conditional-access moduleInformation managementComa BerenicesMathematicsCartesian coordinate systemPhysical lawElectronic visual displayGroup actionRoundness (object)AreaProjective planeWorld Wide Web ConsortiumLevel (video gaming)Computer animation
Uniform resource nameBookmark (World Wide Web)Computer fileView (database)Axonometric projectionInfinityNumberGeometryWindowMetropolitan area networkArmCAN busMathematicsAdaptive behaviorBinomial coefficientMappingProjective planeMereologyCodeWeb 2.0Link (knot theory)Moving averageShooting methodQuicksortArithmetic meanType theoryDistribution (mathematics)Letterpress printingComputer animation
Graphical user interfaceAreaMetropolitan area networkMoving averageView (database)Computer fileSpecial unitary groupVenn diagramState of matterSummierbarkeitWide area networkWindowRule of inferenceLevel (video gaming)Axonometric projectionAdaptive behaviorSpherical capBookmark (World Wide Web)Semiconductor memoryModal logicProjective planeState of matterMathematicsAdaptive behaviorMedical imagingNumbering schemeObject (grammar)MorphingQuicksortAlgorithmComputer animation
WindowBookmark (World Wide Web)View (database)Computer fileElectronic data interchangeSpherical capGraphical user interfaceSun ViewRule of inferenceNewton's law of universal gravitationArtificial neural networkAerodynamicsInfinityServer (computing)Line (geometry)Client (computing)Socket-SchnittstelleMKS system of unitsChainMetropolitan area networkOnline helpComputer clusterLoop (music)8 (number)Conditional-access moduleHost Identity ProtocolProjective planeWeb 2.0MappingClient (computing)World Wide Web ConsortiumDependent and independent variablesSoftware bugLine (geometry)Server (computing)Computer-assisted translationFamilyQuicksortPhysical systemMathematicsWebsiteWeb serviceSet (mathematics)Closed setComputer animation
Rule of inferenceGraphical user interfaceView (database)Server (computing)Level (video gaming)WindowBookmark (World Wide Web)Computer fileOnline helpInfinityDigital rights managementChainArc (geometry)Conditional-access modulePhysical lawInternational Date LineGeometryGradientServer (computing)Level (video gaming)SoftwareWeb 2.0Statement (computer science)Integrated development environmentQuicksortMultiplication signFlow separationSocial classMathematical analysisResultantStudent's t-testGeometryDigital rights managementStaff (military)Insertion lossSet (mathematics)State of matterClient (computing)Power (physics)Process (computing)Machine visionDigital mediaMathematicsSign (mathematics)Rule of inferenceMassRight angleMoment (mathematics)Point (geometry)Identity managementWorld Wide Web ConsortiumConfidence interval
GeometryBookmark (World Wide Web)Rule of inferenceView (database)WindowComputer fileChainDistanceWide area networkGraphical user interfaceDependent and independent variablesEmailScripting languageComputer-generated imageryMaxima and minimaVarianceData bufferArmMultiplication signAmsterdam Ordnance DatumArtificial neural networkElectronic meeting systemMetropolitan area networkSummierbarkeitData typeInterior (topology)Normed vector space3 (number)Execution unitMenu (computing)Total S.A.CodeFamilyLocal ringPhysical systemBitHand fanRaster graphicsGeometryNeuroinformatikDistanceMathematical analysisGraphics tabletPoint (geometry)Computer animation
View (database)WindowComputer fileBookmark (World Wide Web)DistanceShape (magazine)Grand Unified TheoryConditional-access moduleMoving averageComa BerenicesCurve fittingMountain passEmulationMUDWide area networkRaw image formatCivil engineeringElectronic meeting systemGraphical user interfaceCAN busExecution unitHand fanRule of inferenceMaximum length sequenceLaceShape (magazine)Computer fileClient (computing)Price indexQuicksortOrder (biology)Projective planeCodeSoftware repositoryNetwork topologyVapor barrierMathematicsDistanceProcess (computing)
MalwareValue-added networkSpecial unitary groupRule of inferenceWindowBookmark (World Wide Web)View (database)Menu (computing)Data bufferPoint (geometry)Line (geometry)PolygonComputer fileGraphical user interfaceUniform resource nameComputer clusterState transition systemMKS system of unitsMaizeComa BerenicesState of matterProjective planePoint (geometry)Acoustic shadowProcess (computing)MassPhysical lawAreaDifferent (Kate Ryan album)Stability theoryClient (computing)Zoom lensMultiplication signWeb serviceSet (mathematics)Source codeComputer animation
Bookmark (World Wide Web)WindowView (database)Computer fileFile formatSubject indexingPhysical lawDemo (music)Client (computing)Rule of inferenceGeometryOnline helpCorrelation and dependenceData storage deviceOperator (mathematics)Ring (mathematics)Client (computing)GeometryImplementationBuffer solutionFile formatJSON
Rule of inferenceWindowGraphical user interfaceView (database)Bookmark (World Wide Web)Loop (music)Computer clusterSpherical capCAN busComputer fileQuicksortClient (computing)BitVector spaceCodeMathematicsWeb serviceEvent horizonDependent and independent variables
Special unitary groupView (database)Rule of inferenceOnline helpWindowBookmark (World Wide Web)Physical lawComa BerenicesBenchmarkComputer fileQuicksortWeb 2.0Client (computing)Subject indexingTopostheoriePoint (geometry)Software testingDemo (music)Streaming mediaNetwork socketSet (mathematics)Scaling (geometry)Socket-SchnittstelleSampling (statistics)AreaBitTouch typingPlanningAdaptive behaviorElectric generatorWebsiteComputer iconComputer animation
Transcript: English(auto-generated)
My name is Christopher Helm. I work for Esri. So please, this is my Twitter account. You can haze me all you want on Twitter. You can troll me and all the trolls. I don't care. It's OK. I used to work for a company called GYQ. We were bought by Esri a year ago. And we are sort of in the middle of leading the efforts
for Esri to work more openly and things like that. So we're here and talking about all the stuff that we love to talk about. So this is also the third talk today. And I think it's kind of not on purpose, but things will accumulate throughout my talks when I give multiple talks in one day, because my thought process just melds them into one.
So there's only probably a few of you that actually have seen all three. And so maybe inside jokes and things like that you won't get. But the goal of this talk is to really ultimately I just want to piss people off and make people kind of look at me like I'm either an ignorant or arrogant or
completely misinformed JavaScript developer. And that's probably the truth, in that I think the world I live in is a bubble. I definitely eat, sleep, and breathe JavaScript all the time. And I think it's the answer to everybody's problem and
the cure to all that ails everybody. So I titled this talk Geospatial JavaScript, because the other talk titles I was thinking of was, or Chris Helm's love affair with JavaScript and the internet. Or as you might be here for a title called GIS is not
dead, it's coming for you and it's been drinking JavaScript. And the title of this sort of came when I was thinking about zombies one day. And I actually submitted this talk to have myself as a presenter as well as zombie Christopher Helm. And I had this big zombie theme in mind because there's
a friend of mine named Sofia Parafina that is active in the open community who is famous for kind of saying that GIS is dead. And I think that's sort of like this idea that the web has killed GIS. And if we try to take these concepts of GIS to the web, it won't work.
And it's not something that we want to do. And I think she's partially right, but this is kind of thinking along the lines of it's not dead, dammit. I love GIS. I'm trained in GIS. It's just changing and it needs to adapt to the evolution of the web. So my goal today is really geo for all. I put this in there this morning because it's the theme
of the conference and what does geo for all mean in my sense. And geo for all really to me means geo for the masses, GIS for the masses, GIS for everybody. And to me that happens on the internet. And so my argument today is that the web is central to
what we do. It's central to our lives. It's central to our everyday sort of world. I mean if you don't believe me, look at how this conference has changed in five years. There's Twitter and there's things that we're constantly sort of on the web. And so the web is central to my life and JavaScript is
essential to the web. And so that's sort of my argument that I'm going to step through a little bit. And I'm probably going to make statements that you don't agree with or maybe I'm just out there and I think I'll probably admit to them while I'm going along. So I'm giving you lots of fodder to either talk crap about me on Twitter or just storm out.
So really why is JavaScript missing from this conference? And I think I asked myself this and it feels to me like there's not enough JavaScript. Again, this is me saying what the hell? Where is the JavaScript? Where's the innovation in the geospace and the JavaScript and why aren't they here doing this? Why aren't we talking about the things that are happening in the JavaScript environment at this conference?
And I will admit today there's been more JavaScript talks than there have been the previous two days. And so I'm just misinformed on this. And that the friend Steven Ottens who's over in Chippy's talk next door on cycle geography, he's talking about real-time web mapping today. There's a talk on D3 today. So these are the things I hadn't seen until today and
thinking, man, wait a minute, some of the things I'm going to say in my talk are totally off base because they are here. But before I start digging into the concepts of how I see the web has evolved and how JavaScript is central to that, I thought it would be worth sort of lightening the
mood a little bit and talking about this great video here called WAT. And in this talk he mentions sort of the funny bits and pieces of JavaScript and its really fun oddities. So these are a few that he points out. And does anyone know what an array plus an array equals
in JavaScript? So it's an empty string. And so in his talk, I'm totally stealing this, this is all him. He's great, he's hilarious. He basically flashes up a big screen of WAT.
And then, so what is an array plus an object equal? What's that? No, just an object, a string object. It's a string, literally, I'm missing the quotes here. It's not just an object, it's a string object. And then, OK, so what's this equal? Yvonne was right, zero.
What the hell? So as I sit here and say, man, I think JavaScript is awesome, I love it so much. Keep this in mind that everything is taken with a grain of salt, that it really can be an absurd language sometimes.
Oh yeah, and so there's more. So what's an object plus an object equal? Object plus array equal to zero, so this equals, of course, you would guess, nil, of course. So you get around those things when you're falling in love with JavaScript.
And it's like any good marriage, right? You learn to compromise, you deal with the faults of whatever you're working with. But so I thought that's funny, I had to throw this in here, I really had to fit it in just to keep people grounded with the fact that it's kind of a crazy language. But the web is a lot of JavaScript.
And when I started thinking about this talk, I started thinking about the web, and I think about how the web has evolved, and with the web evolving, our perception of JavaScript also has evolved. And there's a famous quote, I'm really bad at actually attributing quotes, but it was 10 years ago, if you
were a JavaScript developer, you wouldn't be taken seriously. And nowadays, if you don't know JavaScript, you're not really taken seriously. And I honestly believe that. But so much of how we work within the geospatial industry is visualization and sharing data. And that requires at least some knowledge of JavaScript or
something that compiles to JavaScript, I guess you could say. So in the course of web evolution, you have new tech is born every day, right? There's new things growing. It's this rapidly evolving place. And that's why it's fascinating, right? It's great, because you can take six months off and
come back and something completely new has changed. And there's new processing tools, new ways of thinking about how we process video and these industries that are just blazingly fast moving ahead and rethinking the way that they've traditionally done it because of new advancements. Then there's these new data formats. This is huge stuff in the past five years, like GeoJSON, what
CartaDB guys are talking about with Torque with these time cubes of data. This is this growth that really just comes through solving a problem that they had. So really what web evolution means is that browsers get fatter.
This is really what happens in web evolution. But it's a good thing, because we have these big desktops with 16 gigabytes of four cores and 16 gig of RAM, it's a beast. It's awesome. The fatter it gets, the more access to the actual machine it gets, the better. Things like WebGL, access to the GPU.
This is the pipe into this massive powerhouse that we need. We're using this for visualization, but we're not doing geoprocessing on it. But why is that? This is what I'm asking myself. And there's few and far between the likes of Migurski, Mike Migurski from Steam, and doing a lot of work with WebGL and exploring ways to render vector
data and process it and analyze it on the fly, things that it's really, really good at. If you look at the gaming industry, they're so far ahead of us in terms of the things they do and attempt to do that we're still stuck with this sort of relationship of server or databases and move it over and oh, we don't want to buffer things on the client. It's absurd.
So then we have things like Web Workers. It also makes it sort of like, holy cow, Web Workers are great. I mean, they break the chain of processing the event loop in the browser. We can do big loops in Web Workers, throw things back and forth, spawn multiple Web Workers up, do things in the background, asynchronous development. These things are not mentioned at this conference.
Who's talking about Web Workers? I mean, I think people know what Web Workers are. I'm not talking about what they are, but no one else is really exploring this concept of projections in Web Workers or big, heavy analytics. And again, maybe I'm off base. This is the reason to come talk to me and punch me in
the face or tell me I'm an idiot because I didn't think of this. But I spend my day thinking about these things and how I want to do these. And things like Web Sockets, right? Web Sockets aren't being talked about. Stephen Otten's talked about Web Sockets earlier. So I'm totally wrong. WebRTC, who's mentioned about WebRTC this week? Who even knows what WebRTC is, right?
Right, one guy. This is huge. I mean, this is in the latest versions of Chrome and Firefox, real-time communication layers for doing things like Google Hangouts, for video communication. That's a massive amount of data, way more data being transferred in WebRTC applications than we would probably want to be doing in our
vector mapping application. Most people have solved these problems. I think this is a call to action for us to explore these things and drive it forward. And maybe next year at FOSS4G, we have WebRTC, like bleeding, bleeding, bleeding edge technology being explored. So then when the web becomes an increasingly powerful tool
that we have for exploring things, then usage goes up. It becomes part of our lives. I'm addicted to the internet, right? Like when I was in London, it was so, like it's, or what did Festival of the Nerds say? Like you feel safe when you're on the internet. It's totally true. I mean, I'm super geek, right?
I need the internet to feel this weird feeling. But the web becomes life when I'm dancing between Wi-Fi hotspots, it's like I lose myself. How much time do I have? How much is left? Oh, all right. So we're going to blaze through this. I always, give me 15.
All right. We don't need questions. There'll be no questions. The, okay, so, right, you can grab me though. We're just going to go a whole way through, even though it's hot here. This is why I wanted to move the bigger room. So on the web, right, we use it to disseminate ideas. If you come from an academic background like myself,
like you go to conferences like this to disseminate your publications and share things and you get paid to do it and it's about networking and sharing. But that's what the internet is to GIS right now. It's visualization. It's sharing data and disseminating ideas. So how do GIS and the web sort of fit? Like where does GIS belong on the web?
Is it just going to be this sort of, is the door, I think the door just swung open, I think it closed. Is it just going to continue to be this sort of like, well, I'm going to do all my processing on the back end and have this big round trip and think about ways to just dance around that issue. But really, no.
I mean, GIS has to evolve. It has to change the questions we ask and the way we ask them has to evolve with that evolution of the web. And I'm not just meaning making maps with libraries. It's like asking geospatial questions. And when I go back to this idea for geo for all, it's not just making a map of a visualization.
It's exposing things like clips and buffers and things like that, geo web, GIS on the web, in a new way that isn't just bringing a user interface to the web, that's QGIS on the web, to me, that's absurd, right? And this is where people start punching me because talking crap, not QGIS.
The, don't do that. No, I did that in my last talk and got hammered for it. So in this evolved world, again, my argument, JavaScript is so central. It's everywhere we are. We have things like leaflet and open layers and D3, right?
I mean, diving into D3, I don't think Paul's here. Paul's not here. I was hoping you'd be here. He was in my last talk. So D3 is data-driven documents. Until today, no one mentioned what D3 was. My colleagues at work rip on me all the time for being total D3 fanboy, right?
The self-admitted complete fanboy. But what D3 is is it's data-driven documents, but it's really just JavaScript glue around taking advantage of existing web standards that are proven to be already existing on the web, like SVG, CSS, and HTML. That's all it really is. It's just manipulating data to inform and build documents
around those technologies. So this is a quote from Paul Ramsey. Earlier this year, it was a tweet, I don't know when, June 13th, and it was like, D3 is the new flash. There, I said it, right? And I think this really just shows that Paul's a little misinformed, and I think he's, see.
Paul's superboy around here. He's Superman. He's like, oh shit. I mean, your talk is packed. We'll run it again, right? It's Paul. It's a big deal. But D3 is the new flash. I mean, flash to me is, I mean, again, I'm a JavaScript guy, so I'm gonna bash flash.
But what that implies is this idea that it has somewhere to go. I mean, and I think really what he's getting down to is this follow-up from someone else who replied to him, saying, look at my very beautiful screen-fitting, one-off data visualization, new instrument, same tune.
Right? And it's totally true, but it's not just true of D3. Again, it's misinformed. It's not really like a statement. You say, well, it's D3 is exactly like flash because you build this crappy website, right? You can build a crappy website in anything. And JavaScript can be spaghetti regardless of whatever library and tool chain. Who works with jQuery, right? It's the most spaghetti-prone language
or framework in the world. Okay, so really, when I think about D3, I start thinking about freedom for web cartography, freedom to make beautiful visualizations and do it however you wanna do it. So I felt like I had to throw D3 into this talk because Jason Davies didn't show up
for his keynote the other day. And that totally bummed me out because that was like my trip to London and my trip to England was like Jason Davies gonna shake his hand and hang out with Jason Davies and Vladimir as well. It's like this guy's a rock star. He's totally awesome. And he was super bummed that he's not here.
But so he's doing a lot of projections work behind D3. You see this really awesome stuff. This is all, it's kind of grainy on here, but it's a map projection transition stuff. And this is always like the ooh and aah of the people who don't understand. Yeah, thank you, thank you, thank you. It changes projections on the fly.
But this is great because it shows us that one, like we don't have to be using Web Mercator. Web Mercator really sucks. And if you're ever doing something that moves around to the polls, I mean, come on. You can't be serious. So he's got all the work for, D3 supports all these geo projections.
It's awesome. You can make really ugly maps or really cool maps. But then there's, so now I'm starting to get into like more of the interactive part of the talk. There's less me just standing here spouting off. So now sort of like to prove my point, I'm just going through examples
of things I think are really cool, right? And so I think, oh man, that's not, loading is an H, shoot. All right, here, hold on. Wait, don't roll on. You know the web has things called links. I know, it's a broken link though. Something in my code is, ah.
Here, let me see if I can, yeah, yeah, yeah, sweet. That also has a thing called memory, history. So this is really cool work. This is stuff that me, myself, at Esri, I'm actually working on a lot of adaptive composite projection stuff. And this isn't my work at all. I can, none of this actually is my work in this talk.
Some of it is, but the cool thing about this is it's done as sort of copying an algorithm from a guy named Bernard Jenny, who works at Oregon State. He did a lot of work with composite projection stuff. You've probably seen something that looks very similar to this, I'll sit down so you can see it. So as I zoom in, right, the projection is just morphs and changes, right? Becomes more appropriate for what I wanna see.
Like, this is the thing I wanna see on the client done. I wanna see things in appropriate projections, in albers and things that make sense for where you are on the Earth. I don't wanna see web Mercator maps anymore. Web Mercator makes sense for when you're zoomed in, right, there's bugs and stuff, but, all right. Let's move on.
So then when I think about the web, I think about the rise of the API. I think that the data has become pervasive, data has become dynamic, and we need to rethink how we think about things on the web because of this fact. Everyone knows what an API is, people interact with APIs. It didn't exist five, 10 years ago. So when the APIs sort of come out,
and we start thinking about data, we start also rethinking and tooling our idea of what it means to be a client, and what it means to be a server. And we start to blur that line, right? And that's what WebRTC does, that's what WebSockets do. So things like REST hooks do. They make it like one big happy family. And so how does GIS adapt to that?
How do we start rethinking our problems? And the answer is really slowly. Right, what we're seeing here is that we don't think about these, we're not on the forefront of how these new technologies work. We're not changing our questions to adapt to how data is transferred on the web. We're not blurring that line enough like we need to be.
We need to be marrying post-GIS into the clients and things like that. You're thinking about these things, and isn't it awesome, kid? He's great. That's us, the kid, that's us. The cat is the web, right? Just bam. I saw him, I was like, yeah, that's it. All right, so then think about if you're growing up today
and you're coming out of grad school, there's probably undergrad students here, grad school students. That's what I learned at GEO, undergrad and grad. And if I was growing up today, would I learn map server like I did? Like would I be teaching map server in my class? Would I be teaching leaflet, or would I be teaching D3, right? I mean, these are changes.
Like I don't think, and this is another misinformed statement probably, because my friend Steve's saying in the back, it's like, no, people use map server all the time. And again, like, I think map server's great. It totally is great, and GEO server's great. But am I gonna be teaching a class on sort of web and GIS and be teaching that anymore? I think, I don't know.
But so it's a mystery question to think about if you were growing up. So but then reality check. It's like, I'm not talking about like, just getting rid of things like PostGIS because it's totally hot, right? It's like my favorite tool ever. It's what got me off Esri software. I'm an Esri guy. But I am now. But when I was in grad school, I learned PostGIS. And the first time I wrote an SQL statement was like, my mind was blown, right?
It's awesome. I love it. I now work for Esri, but like, I think it's great still. Two minutes, all right. So what's missing from this conference? So I think TopoJson is missing from this conference. People don't know about TopoJson. That's a serious problem. I think this conference should have been like,
there should be 10 talks on TopoJson. Maybe one would do, but Node.js. Did anyone talk about Node.js this week? Okay, Steve talked about Node.js. Sure. Okay, several people talked. So I'm just misinformed. I wasn't able to make it to every talk, right? So other things we can look at, like learning from Node.js, package management, unbelievable package management
and tools that come out of this really fast-moving JavaScript environment called NPM, Grunt, Bower, yeah man, like scaffolding tools that make JavaScript awesome. So in the end, where's my ArcView.js?
That's what I want. I want to go to client-side geospatial analysis. I want to be answering the question not about how we transfer results up to the client, but how do we persist client-based analysis on the server? How do we push things back? That becomes the new problems we start to solve. I say a few people two years ago.
At Fossil 4G in Denver, I was sitting around like Tippy and Steven Ottens. We want to write ArcView.js. So I put on a conference called JS Geo. We're going to do it in San Francisco next year. Yesterday I was going to be in Denver, today I was going to be in San Francisco. Because I've been overruled. The, it's the JavaScript and geospatial festival of love.
It's total get down with each other with JavaScript. We love it. I brought up the idea of, you know, code love for people on GitHub in my last talk. So this is total code love conf. All right, so now demo stuff. And this is Rocky and Apollo hugging.
That was sweet. All right, no, I got to show these things off. So this thing called Walk Shed. I'm a big fan of this guy, Aaron Ogle. Walk Shed is this beautiful client-side raster based analysis for computing cost distance pads on a client.
So you basically compute or build a cost grid and then compute distances across that. Absolutely love it. He showed this off at JS Geo last year. It was totally blew my mind. I don't think anybody in the audience actually got why it was so great. So I'll go back. So then there's Shapefile JS.
This is the guy was mentioning in the last talk. So Shapefile JS is rendering shape files on the client. Like it doesn't get more GIS than that, right? Like, but doing this on the client, I think is great. I mean, you're starting to see these things, but they're not being talked about at FOSS4G, which really upsets me. There's JS, yes. Has anyone ever heard of JS?
Good, there's people that know. There's people that are aware of how awesome JS is. Basically, you can go to this GitHub repo. This is JavaScript topology suite. The only problem with it is that it's literally a port of JTS and GOS, right? I mean, it could not be any more exactly a port of those two projects.
And the problem with that is those two projects are great. But in JavaScript then, that makes really, really obfuscated, crazy code. And it's totally confusing. It's really hard to extend. So the barrier to entry on that project is really high and really annoying. So I wrote something called Shapely JS. Big fail.
Doesn't work. It does a few things. It buffers, that's it. And it's a messed up demo, I didn't clean them up. So I can like, I don't know why the states are in there, but I can buffer, I can buffer. Woo! Really, really not a good project that's not being supported.
Cause we're, well, I'll just go back. We're out of time. But just bear with me, bear with me. In my last talk, I introduced something called Esri Coupe. Coupe is GeoJSON as feature services, which in Esri land is like, you know, what we do. And so what I want to share with this is,
is in my last talk, again, these meld together a little bit. GitHub started releasing this idea of geospatial GitHub. And they do things like cluster automatically for points over 750 points. So you can zoom in, oh, sweet, that's awesome. I thought, you know, I don't like, I don't really, I think clients are clustering, sweet, this is great. I have some ideas about service side sharing,
you know, automatic persistent clusters, but this is awesome because it's, you know, for the masses, but it's really crappy way to view data set. And I think if we look at something like Terraformer, which my colleagues in Portland wrote, it's a client side and node server-based JavaScript implementation of JSON format parsing,
as well as spatial indexing, storing data and doing simple geospatial contains. I think what's happening is we're turning shapely JS into Terraform, we're bringing Terraformer to have more things like actual operations, like buffer and clip and things like that. So now I have, oh, geo hugs, that was the end,
but I want to show this first. So I did this thing, I'll come over here, hold on. Just shrink it down a little bit so you can see it. Oh, that's fun. So this is code I wrote last week just to have something new to show during this talk. And I thought it was pretty cool,
is you use a coupe, it pulls in dynamic data from, live data from GitHub and aggregates it on the client with Terraformer. So what's happening here is it pulls in Topo JSON to render counties, these are vector counties, they're responsive, if I change it, they're sort of slow but if I really shrink it down, it will start to shrink. And that's just responsive, it's just recalculating
all that, it's not optimized. It's just sort of an example. But so one thing I thought would be cool is I'll do this like sample data sets and say like, oh, I can aggregate points. Those came down, they're cached a little bit. So I have some improvements just for demo's sake. But they do the aggregation against an archery index of counties in the US.
So on the client side, we take this Topo JSON, we build it, we shove it into an archery index and then basically render it and then as points come down, we just touch each point and do a contains on that and then do an actual intersection just to verify. So we do ski areas across the US, I'm a big skier, so we do Dunkin Donuts and I'm slowing it down
a little bit and it's actually still really fast. We do adaptive scaling here where, yeah, I'll explain that later. Then I call it a rain. Yeah, I think and then, oh, so yeah, then yesterday I got this idea about doing a web socket.
So I'm sitting here spouting off, oh, we need to be using sockets and RTC and things like that. So I have this, I have all these, I do a lot of streaming with web sockets and stuff like that. So I thought it'd be cool if you do, you can barely see this, I guess, but. So we're gonna do a live web stock I have of, this is I think, like United flights over 24 hours or something and it's just a loop.
Like it's a really big data set that just you tap into at any point and sit there and have like test data to mess with like streaming. And so this is an example of just, this just persists and goes on and I'm I over times. All right, that's it, thanks.
It's really hot, it's really hot here.