Arduino, GIS PINS, Post No. 2

I have a wait before I get my first arduino.  So plenty to read up on.  It seems Geographic Information System and Global Positioning Systems are everywhere; But next will be the GIS and Personal Inertial Navigational Systems.  Check out this quarter size Inertial Measuring Unit by SparkFun. 2 axis gyros, and 3 accelerometers.

Arduino, Post No. 1

For the last week, I was trying to remember the API for working with Micro-controllers called Arduino.  This is a post to help me remember Arduino and why I am interested in Arduino.  First, I like to prototype since it doesn’t require that it works perfectly. However, prototypes are very rewarding, since it helps lay a foundation for doing the real thing.  The Arduino might help me prototype physical projects using 3D spatial information without costing me alot of money, but proving a concept to the skeptics.  And if it doesn’t, I can have some fun with it anyway, while release some stress too.  It would be really exciting to create a GIS Arduino application.  More exciting than coding a tree or drop down menus which sadly is something I like too.

Which brings me to how I remembered this Open Source Arduino project. I googled much about hobbies, kits, geek devices, with API’s for Micro-controllers. I just couldn’t find it, I remembered it sounded like the google’s android phone… which of course it’s not… for some reason I kept thinking of Tejuino, a friends band and fermented tortilla drink, which seemed silly.  However, my search did bring up something about those little tin boxes Altoids are packed in.  Maybe that would let me fit my project in it.  But Altoids sounded familiar because of android.  Surprising, I found “make something out of the Altoid Tin box” as item number 23 on the Geek’s list of 100 Must Do Things.  But down at item 95 is “How To Unleash A Laser Pointers Full Potential”, I just had to know. But there, on “Hack N Mod” listing under the 30-Days most popular hacks was the Arduino Powered 4 rotor Helicopter.  Now that’s cool.  4 rotors can provide a very stable platform, mounted with a remote video camera, and you have your very own Kino.

Although my Associative Memory didn’t kick in completely, I did find some interesting things.

Away3D, your sisters’ not going to like this…

I wonder why Away3D looks a lot like PV3D? Away3D seems easier to work with.   I think some of the developers started with Away3D or maybe it’s the other way around. Well both are flash based 3D viewers and both are really limited for viewing large data sets.  The main issue is flash does not access the GPU and the flash 3d viewers all rely on the painters algorithm to fake 3d content.

In the past, maybe security concerns or the lack of 3d capable graphic cards kept 3D Viewer plugins from using a more robust 3D engine.  I’m not an expert, although  I have been looking into web 3D viewer technology since 2003.  Because none of the viewers seemed to meet the need, I helped Precision Lightworks prototype a 3D Viewer plugin which I integrated with a Flex GIS application.  Our prototype views large 3D urban model datasets, textured buildings and ground maps.  It does this and a few other things really well.  However, it would be ideal to have a flash based 3d viewer that used the 3D processor which are now on most computers.

A robust Flash 3D engine would be nice, but it would be good to have an underlying access to 3D from the browser environment, so lots of different apps or plugins in different languages could easily get access to 3D features to drive their displays.

Recently, Thunderhead (Mansour Raad) had developed a 3D Route Finder using Papervision3D, which I am a fan of.  But in discussion, he suggested looking into Away3D, so I did.   Away3D provides a professional web presence and good tutorials, but I really was glad to find “Switch on the code” which provides a good tutorial on how to get started.  Away3d comes with zip read and write utilities by Dave Chang which I may have seen in PV3D as well. The comparison needs to be completed yet, however, what really caught my eye was the use of Haxe which does some cool stuff related to OpenGL.

There is not any easy explanation, a lot is going on with the anticipated release of the new web standard of HTML 5, and the subsequent javascript innovations for SVG and 3D content, which is expected to be released mid 2010. This is a huge undertaking, and if “Fully Successful”, makes the use of browser plugins obsolete.  The Khronos Group, who manages OpenGL, is expected to develop the WebGL. The Khronos Group, is porting the OpenGL library to a web standard called WebGL, which will make it possible to access the graphics processor.  You can read about it on Draw Logic.  This isn’t really “news”, since the standard has been under development for sometime now.

However, After Chrome’s release, Google is hosting an HTML 5, SVG, and Canvas experiment, with a moderate list of samples developed by some of the web’s best known web-3d developers.  One of these samples uses Sandy, one of the sisters, to export the Sandy 3D Flash content into JavaScript using Haxe.  (By the way, be sure to check out Mr. Doob’s samples. He’s always modest, and one of my favorites.)

Even Adobe is discussing their concern, and it seems Adobe Flash customers don’t need to worry (i.e. Flash will write IPhone Apps in CS5).  I bet Adobe is thinking “it’s about time” and moving forward with their own plans to expose their own version of OpenGL in AS3.  Remember hydra? Hydra was the first indication from Adobe Labs that Adobe was working on accessing the graphics card

Well, I am sure all of it is going to be discussed at Adobe’s LA 2009 Max conference, so stay tuned.

A parting thought, Adobe Flash Player plugin is going to develop further into the 3D viewer arena as far as I can see, and even new plugins, like Silverlight, are going to fill obvious gaps that HTML 5 and JavaScript WebGL cannot fill.  While Unity3D and Torque 3D present some compelling gaming authoring environments, I feel encouraged that so many innovations are being developed.

Honolulu Transit - EIS and 3D

The Honolulu Rapid Transit Project uses 3D maps and graphics to educate the public. It is perhaps one of the most innovative uses of 3D urban models for helping people understand where the rail is and how it will impact the community. The website, honolulutransit.org host a map which links to many of the planned stations. For some reason, there is no link anywhere on the site to find it!  Below are two screen shots:

What? Are You Insane?

I am so glad, I didn’t say this. However, I need to hand it to Tom Arah, he really provided a convincing blog entry. I you haven’t read the blog on “I’m Sorry, Dream Weaver ….” I can’t even write it. You could at least have skirted the “in your face” issue by focusing on the reality of how many tools are needed to actually develop web applications.

Invest Wisely, Don’t Gamble, Promote Health and Prosperity

Wow! It’s good so much attention is being brought to shine on financial guru’s. The buying and selling decisions over other business is not my focus and it’s not my intent to promote a particular investment. But if your growing a company, if we’re successful enough, the test of fire from the short seller is going to draw attention sooner or later. Look, investment money has long been known to be a two edged sword. There needs to be simple values we all agree on. The reason all of us are working is to foster a good life for ourselves, our family, our friends, our neighbors, our world. Yes and eventually our enemy too. Focusing our short lives on a negative outcome is not a good thing. The details of investing our out of my realm to judge. I do believe each of us is called upon to lead with good and right decisions. Those decisions need to be made with honor and in-line with our values. All should do so with a full measure of empathy for all parties and hope their actions are not the root of anyone’s misfortune. I really appreciate this wikipedia article on the subject of Socially Responsible Investing.

Flex 3 Tree - XML Object-Relational Underground - con’t.

I am reporting I managed to implement the Flex 3 Tree Control. I need to blog about this soon, but for now, a list of sites and resources used or referenced which you might find useful monkeying with your own data navigation issues.
1) Ellery Chan, it helps to have a mentor or other mythical creature to get you started and keep you out of trouble.
2) Converting Database queries
3) Hierarchial data objects
4) of course livedocs on the Flex Tree
5) Flex 3 Cookbook, I used the pdf version, purchased from o’reilly, but the additional chapter 19 is what really helped and it’s online for free. However, you may also want to buy it, for chapter 5. Lists, Tiles, and Trees

Two Cool Sites

I like these two sites for simplicity and content. The names are cool and the way they were made is unique and awesome. Riley Engines content was created by a 3rd Grader and David Irick provided the expertise. David’s website, twentyone -157 studios, contians some cool content.

Hawaii 3D Islands

I would imagine the first time anyone has seen the ocean topo’s are on National Geographic and then maybe on Google Earth. Would be nice to know the actual numbers of users and frequency of use for GE. However, I just noticed the Hawaii 3D, or 3D Hawaiian Islands which was pretty cool. It would be great if this was more than an image, and it would not take much for them to render this in a 3D interactive content. Still, for what it is, I like the content and it makes a pretty picture too. Enjoy:
3D Hawaii

Flex 3 Tree - XML Object-Relational Underground

I need to say, I am really excited about this. First, I have always liked the tree component, and entirely amazed at being able to use it.  Like the hammer, I think it’s going to be the best fix-it tool in my bag. On investigation, most of the examples seem to be from the Flex 2 period and either too complex to carry out the simple task, or so terse it left me wondering what was going on. I was getting a little frustrated until I rediscovered if I read the instructions, sometimes this pays off too.

The Adobe Flex Tree Control is really a challenging component.  Before leveraging this awesome tool an understanding of just what is going on with the server side is vital.  My configuration is not important, but I guess I should discuss this for a bit.
There are a few server components you need to have inplace before trying this at home. A relational database is not required, but unless your totally locked into useing an xml database, which is entirely possible, you need to be well versed with the dbms of your choice. You need to have a reasonable understanding of how to either generate your SQL or write your own. A major part of my experience has been within a Windows environment, so an understanding of ODBC or ADO is not required, however, the other routes are not easy, which means your going to need to connect directly through a TCPIP connection, DBMS propritary communication port, or utilizing a JRE2 based connection. One of which your going to need to understand. Another item your going to need to know how to do is configure your internet server.  You are also going to need to pick a webpage application type. If you understand all of that, then I am speaking to the right person.   My system configuration: Windows XP professional (with latest ODBC jet dll’s), apache 2, php, and a MS Access database.

The php is used to connect to the database using a dsn-less connection:Â
1) Define the php page content
2) Define the php xml page output
3) bound the xml content with a root item; echo(”“);
4) Define a query, update, or delete
5) Connect to the database and test connection
6) Design your SQL
$sql =”SELECT
7) get the next row from the query result table and assign to variables
8) parse xml from the data names and use variable names for xml labels and values
9) close the connection

The field names from an sql Access query are posted with minor editing into the php page. think about the content that needs to be fed into the Adobe Flex Tree component. A hint, your nodes are going to be where you have primary key’s or foreign keys which is where a logical relationship exist between the data elements. The xml content needs to be parsed to create the content and you need to include both the content of the field and your labeling of the node and or the leaf of the tree. You can either code this… or I prefere to use a spreadsheet to parse it out.

Now that you have your sql, and xml nicely formated in your php file, test it to make sure the content is what goes into the Tree Control.