Status

Location
Arlington, VA
Subscribe to GeoRSS Subscribe to KML


Engineering

Happy Space Race Day!

Published in Space


In deference to the title of this blog, my consulting company, and my profession - Happy Space Race Day! Today marks the 50th anniversary of the Sputnik launch - proving that we could achieve at least Low-Earth Orbit (and that it wasn’t full of scary space monsters)

Of course, besides very brief forays to nearby celestial bodies we have relegated ourselves to primary the same orbit we reached 50 years ago.

Here’s to hoping we have the vision and execution to go back to deeper space - both for knowledge and to spread ourselves into more than one basket. :)


How high?

Published in Engineering, Geo


Ever need to know the altitude at a given location on the Earth?

Well, there are several free resources to the rescue:

EarthTools has a webservice that covers the US and Europe using the SRTM data. Given a latitude/longitude it returns the height above sea-level in feet and meters. (found from Quakr Viewr)

Geonames offers two services using the SRTM data, and also the GTOPO30 from the USGS. Geonames gets bonus points for also returning the results in JSON. Geonames also uses a larger dataset - lands within 60 degrees north and 56 degrees south.

As “points” become rather ubiquitous among neogeographers/web-mappers, they’re moving into more complex geometries and especially 3D space. Having access to data means it is very easy to tie into services and applications. For example, making a hiking profile given just 2-d ground waypoints.

You can download the data yourself to do whatever you want with it. Perhaps make yourself a very cool, high-res 3D model of the earth.

It’s not clear how accurate the data is. The reports seem to say within 9m vertical accuracy. But I assume this is measuring the “surface” that the Shuttle saw - so that would include roof tops. But with smoothing/filtering, would this be washed out to represent an average ‘ground height’?


NASA & SL

Published in Engineering, Simulation, Space, Technology


I’m a big fan of the acronyms NASA and SL and was really interested to read the article on NASA’s SecondLife Presentation of their work on Synthetic Worlds. (via Slashdot)

The details are fairly light, but it seems as though NASA is building a VR game on space exploration (remember Microsoft’s Space Simulator, or the free and open-source Orbiter?). I wonder why NASA is rebuilding their own engine rather then picking up and using existing simulators (like Open-SESSAME) on top of the Unreal graphics/physics engine.

I also wonder if, given their presentation venue in SL, if they are considering integration of their space simulator with SecondLife itself. Apparently right now it is possible in SL to have some sort of orbital platform. But imagine if they actually opened up Space Stations, or other planets/moons for exploration/colonization.


Post-project brain dumps

Published in Engineering, Programming


Mikel has posted a how-to on how he made the OSM Nestoria Tiles for the recently released upgrades.

It’s a really good how-to for making your own maps from your own data, and also an excellent idea for brain-dumping after a big project. Whenever I do a large project, I learn a lot of useful tips, strategies, what worked/didn’t work, etc. that is probably useful to a larger group of developers and users (for knowing what’s going on underneath). Not only for my own notes, but also anyone wanting to improve upon my work, or go and fix parts of it.

Documentation in engineering and software development is always emphasized and always a battle to get done. Inline documentation using something like Doxygen really helps, but then also putting together a single, simple overall report, especially on an editable format like a Wiki, can really make a big difference.


Computers like grains of sand

Published in Engineering, Technology


I just had a really interesting brainstorming session on a possible future of commodity computing.

I carry around many processors, a cellphone, tablet, laptop, camera. These are all just processors, running an operating system and waiting to execute some code. Currently they run application/device specific code, designed for their single use lives. Any of the devices could really be application independent and dynamically perform whatever operation I want to give it. My cellphone breaks, so I just make my computer as a cellphone, or my tablet.

Let me illustrate with an example: All of my devices run Python, so I write a Python video player. So then I can load it onto my cellphone and boom my cellphone is now a media player, or my tablet is now the media player, and so on. The device itself is irrelevant, it is a packaged form factor that I as the user/developer decided what it was going to do now.

So then carry it forward a little bit to where I go into my local hardware shop and buy a slew of “processors” or devices. Generic devices with several interpreters or OS on it that I can drop an image to it. I may buy a couple of matchbox bricks with no display, and once that is a soapbar size with a screen and some buttons. Oh, and another screen with keyboard. I then drop a “cellphone device image” or application on the soapbar device, and perhaps a Word Processor application on the keyboard/screen, and so on. Think of it like Amazon’s EC2 computing cloud, but in the palm of your hand.

stack’em

Now the matchbox devices, they can be simple devices, or maybe they’re even like Lego bricks, where I can snap them together for easy parallellization. The processors start communicating and sharing data and code between them, without any intervention from me the user. Maybe some of these small devices then snap into larger devices with a screen, so I can make my tablet device now have 3, 4, or 8 processors in it. Perhaps the devices communicate via exposed connectors, or wirelessy using RF, or even some kind of optic communication.

I may even put 100 of these in as a small stack of cards in my computer. Over time, they slowly start “wearing out”, so after a year or 2 I only have 80. So what, some programs run a little slower, or I can’t do as many actions on the device. I swap the broken ones out, toss in some more, or even just pick up a new device and interface.

bucket o’ computing

Now what if the processors were just small amounts of silicon, like sand. I have a pile of these “sand processors” that communicate omni-directionally with other processors near them, not just the ones touching it, but any within a short spherical range. They would share data, hand off programs and provide me with a compact, parallelized, mobile, amorphic computer.

And if the sand computer can react to visible and non-visible light, I could show it a picture and it is instantaneously processed.

the future is now

While I really think there is a future in “sand computing”, I don’t think I’ll be able to buy my “Pail o’ Processing” after WWDC’07. However, we have reconfigurable devices now. Linux has pushed for this for a long-time, a single operating system running on consumer and embedded devices. Even easier is to run an interpreted language like Python or Ruby. Right now I can run a GPS program, MP3 player, or any other number of desired functionality on a handful of devices. Using open-standards I can then share the data between devices, so I can take my GPS waypoints off of my receiver and load them onto my cellphone.

The future is now, and it’s fun.