<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10242196</id><updated>2011-09-24T03:40:28.994-07:00</updated><category term='Php'/><category term='SVG'/><category term='Dojo'/><category term='iPhone'/><category term='JavaScript'/><category term='REST'/><category term='JSAPI'/><title type='text'>Jayant's Blog</title><subtitle type='html'>This is my ramblings on iPhone dev and development in general.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10242196.post-2917285333765809247</id><published>2011-07-26T09:27:00.000-07:00</published><updated>2011-07-26T09:29:21.960-07:00</updated><title type='text'>Moving to new blog platform...</title><content type='html'>&lt;a href="http://jayantbsai.tumblr.com/"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Tumblr&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-2917285333765809247?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/2917285333765809247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=2917285333765809247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2917285333765809247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2917285333765809247'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2011/07/moving-to-new-blog-platform.html' title='Moving to new blog platform...'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-7050413589220486350</id><published>2010-07-10T11:22:00.000-07:00</published><updated>2010-07-10T15:57:59.827-07:00</updated><title type='text'>So much to do! So much unfinished!</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Software is never complete, period.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course its a good way to keep your job, but no project is ever complete. Even projects that get shipped have small quirks that need to put in because of some limitation of the platform or environment (or engineer). Sometimes there are things you want to come back to, but never do because there were other pressing issues. I've always tried to do the best I can and trying to use the best approach to solving a problem. But I know there's always a different way to get the same results and I'm always searching for it.&lt;br /&gt;&lt;br /&gt;The good thing about iOS development in my opinion is that there are so many APIs that can do the job for you. The bad thing about iOS development is that there are so many APIs that can do the job for you. Yes, I know, its the same. iOS being HUGE, there's always a way to get something done. Its just a pain in the butt to look for it. Of course the more you use the SDK the easier it gets to find the correct API, but it does need a little searching and learning all the APIs.&lt;br /&gt;&lt;br /&gt;I've always had a TODO list of things I want to try/play around with in the projects I've worked on. Its usually in my head, but I have made a conscious effort to maintain it in a todo list on my machine. Unfortunately, the TODO list is never without items that I have never done. For example Sqlite &amp; XML were 2 that I had never worked with on iOS, but now I have used these APIs and feel pretty confident using these. &lt;a href="http://developer.apple.com/iphone/library/samplecode/Reachability/Introduction/Intro.html"&gt;Reachability&lt;/a&gt; is something that I &lt;a href="http://blog.ddg.com/?p=24"&gt;should integrate&lt;/a&gt;, but just have not sat down to get cozy with. But my Achilles' heel in iOS development is OpenGL ES.&lt;br /&gt;&lt;br /&gt;While working on the &lt;a href="http://resources.arcgis.com/content/arcgis-iphone/api"&gt;ArcGIS API for iOS&lt;/a&gt;, I found &lt;a href="http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html"&gt;Quartz 2D&lt;/a&gt; to be sufficient for the job for drawing graphics. Its very performant and for the job at hand, perfect.&lt;br /&gt;&lt;br /&gt;OpenGL ES... well. I've taken the time several times to start learning it, but have some how just not been able to go through the tutorials. I first started with &lt;a href="http://web.me.com/smaurice/AppleCoder/iPhone_OpenGL/Archive.html"&gt;iPhone OpenGL ES Tutorial Series&lt;/a&gt; a while ago, but left it after 3 tutorials. When I got back, the site was gone. Then I started looking at &lt;a href="http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html"&gt;OpenGL ES from the Ground Up&lt;/a&gt;, which is really good. But now, I have other things on my plate, to it moves to the back burner... again!&lt;br /&gt;&lt;br /&gt;So long story short: There's always some better way to do something. Seek it out. Find it. Learn it. Use it. It doesn't mean you're work will be always complete, but you will have the satisfaction of doing the best job possible with the right tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-7050413589220486350?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/7050413589220486350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=7050413589220486350' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7050413589220486350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7050413589220486350'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2010/07/so-much-to-do-so-much-unfinished.html' title='So much to do! So much unfinished!'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-2677277340121520367</id><published>2010-02-25T09:57:00.000-08:00</published><updated>2010-02-25T10:19:13.393-08:00</updated><title type='text'>And time for change</title><content type='html'>After 9 great years at ESRI, working on ArcIMS, MapObjects Java, Java ADF, JavaScript API &amp; iPhone SDK, its time for change. Moving to Yahoo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-2677277340121520367?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/2677277340121520367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=2677277340121520367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2677277340121520367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2677277340121520367'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2010/02/and-time-for-change.html' title='And time for change'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-7129836818177653549</id><published>2009-12-05T07:44:00.000-08:00</published><updated>2009-12-05T18:20:39.904-08:00</updated><title type='text'>Inadvertently adding nil to NSArray</title><content type='html'>In Cocoa, when populating a &lt;code&gt;NSArray&lt;/code&gt;, you use &lt;code&gt;nil&lt;/code&gt; to mark the end of the objects being added. So lets say you were populating an array using values from 2 &lt;code&gt;UITextfield&lt;/code&gt;s and a property, such that:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NSArray *array = [NSArray arrayWithObjects:self.textField1.text, self.textField2.text, self.nsnumberProperty, nil];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The values populated at runtime would look something like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NSArray *array = [NSArray arrayWithObjects:"foo", "bar", 10, nil];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When you print out the array you get: &lt;code&gt;{ "foo", "bar", 10 }&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;But what happens, if say &lt;code&gt;self.textField2.text&lt;/code&gt; is &lt;code&gt;nil&lt;/code&gt;? Now the code at runtime would look like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NSArray *array = [NSArray arrayWithObjects:"foo", nil, 10, nil];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When you print the array now: &lt;code&gt;{ "foo" }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ouch! Noticed what happened there? The array was terminated by the first &lt;code&gt;nil&lt;/code&gt;, so you may have expected 3 values, but you only got 1. So beware of inadvertently adding a &lt;code&gt;nil&lt;/code&gt; and terminating a &lt;code&gt;NSArray&lt;/code&gt;. Use &lt;code&gt;[NSNull null]&lt;/code&gt; if you want to add a null object in an array. &lt;a href="http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html#//apple_ref/doc/uid/20000132"&gt;Arrays: Ordered Collections&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is definitely the case in &lt;code&gt;NSDictionary&lt;/code&gt; also, but not sure if this is the case in &lt;code&gt;NSSet&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-7129836818177653549?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/7129836818177653549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=7129836818177653549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7129836818177653549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7129836818177653549'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2009/12/inadvertently-adding-nil-to-nsarray.html' title='Inadvertently adding &lt;code&gt;nil&lt;/code&gt; to NSArray'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-8621579293214438143</id><published>2009-08-09T17:56:00.001-07:00</published><updated>2009-08-09T18:45:02.062-07:00</updated><title type='text'>Wow, need to post more often!</title><content type='html'>Life has been quite busy for the past 5 months. Released v1.4 of the JSAPI and got done with UC and the sessions there, but the big news is iPhone development.&lt;br /&gt;&lt;br /&gt;I have been working on developing iPhone apps for a few months now, finally convinced the appropriate people, built a prototype app in 2 weeks that was showcased during the plenary session of the recently concluded User Conference. Check out the video: &lt;a href="http://www.esri.com/events/uc/agenda/plenary.html"&gt;Plenary Session - 2009 ESRI User Conference&lt;/a&gt; -&gt; 'ArcGIS 9.4: Mobile GIS' -&gt; about 2/3rds way into the video, presented by Chris Capelli.&lt;br /&gt;&lt;br /&gt;So now I am leading the development of the iPhone API, similar to the &lt;a href="http://resources.esri.com/arcgisserver/index.cfm?fa=applications"&gt;JavaScript API&lt;/a&gt;, and have handed over the reins to the JSAPI to &lt;a href="http://twitter.com/prav33n"&gt;Praveen&lt;/a&gt;. So finally I am getting to make my move into mobile computing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-8621579293214438143?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/8621579293214438143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=8621579293214438143' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8621579293214438143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8621579293214438143'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2009/08/wow-need-to-post-more-often.html' title='Wow, need to post more often!'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-1784391935821425517</id><published>2009-02-27T09:46:00.000-08:00</published><updated>2009-02-27T10:01:51.361-08:00</updated><title type='text'>ArcGIS JavaScript API v1.3 OUT</title><content type='html'>This is a developer centric release. The enhancements include custom layers, error handling and more layer management in the Map which have been requested time &amp; time again. Check out the full list of &lt;a href="http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/new_v13.htm"&gt;What's New&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;At the &lt;a href="http://www.esri.com/events/devsummit/index.html"&gt;Dev Summit&lt;/a&gt; in March, Jeremy &amp; I will be presenting the 'An overview of the ArcGIS JavaScript APIs' and 'Developing Advanced Applications with the ArcGIS JavaScript API' sessions. Jeremy will also be presenting 'Patterns and Best Practices for Building Applications with ArcGIS API for JavaScript' and finally 'Using the ArcGIS Server REST API' with Keyur. To see when these sessions are offered, go to the &lt;a href="http://events.esri.com/bpc/2009/dev_agenda/index.cfm?fa=Session_Search_Form"&gt;session search&lt;/a&gt; page and search by session name.&lt;br /&gt;&lt;br /&gt;We will take an in-depth look into the v1.3 developer features in the advanced sessions. In depth looks into error handling, using esri.request, custom layer, etc. You can hear a &lt;a href="http://www.esri.com/news/podcasts/audio/speaker/staff_bartley_sai.mp3"&gt;podcast&lt;/a&gt; about our sessions too.&lt;br /&gt;&lt;br /&gt;In case you are interested in attending for the ESRI Developer Summit, check out the &lt;a href="http://www.esri.com/events/devsummit/index.html"&gt;website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-1784391935821425517?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/1784391935821425517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=1784391935821425517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1784391935821425517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1784391935821425517'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2009/02/arcgis-javascript-api-v13-out.html' title='ArcGIS JavaScript API v1.3 OUT'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-4326469545722946544</id><published>2009-02-07T14:21:00.000-08:00</published><updated>2009-02-07T14:37:06.905-08:00</updated><title type='text'>Google Latitude &amp; the iPhone</title><content type='html'>I'm sure everyone has heard about &lt;a href="http://google.com/latitude"&gt;Google Latitude&lt;/a&gt;, essentially a mobile app that lets you share and find friends in the vicinity, with caveats. Well, what it may potentially tell us about the next iPhone OS release is that the OS will probably have background processes. I know its a long shot, but here goes:&lt;br /&gt;&lt;br /&gt;The google latitude page states: http://google.com/latitude -&gt; Will it work with my phone? -&gt; iPhone and iPod touch devices (coming soon).&lt;br /&gt;&lt;br /&gt;In the FAQ for Latitude: http://www.google.com/support/mobile/bin/answer.py?answer=136647&amp;topic=20071, the page states:&lt;br /&gt;&lt;li&gt;... Latitude can automatically detect and update your location in the background ...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;... you will have the option to continue sharing your location in the background even with Maps for mobile closed.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;So in order for Latitude to truly work on the iPhone, they need background process support in the SDK. And guess what, it may be 'coming soon'. Fingers crossed &amp; hoping so...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-4326469545722946544?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/4326469545722946544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=4326469545722946544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4326469545722946544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4326469545722946544'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2009/02/google-latitude-iphone.html' title='Google Latitude &amp; the iPhone'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-1911945558624596575</id><published>2008-12-31T12:16:00.000-08:00</published><updated>2008-12-31T13:04:55.950-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>Integrating SVG in blogger post</title><content type='html'>This is in response to a comment to my earlier post &lt;a href="http://jayantbsai.blogspot.com/2008/10/dojo-in-blogger.html"&gt;Integrating Dojo in blogger post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you want to just use SVG, the following sample works. It uses 2 external JavaScript files, one for basic &lt;a href="http://ecodevil.net/dev/blog/svg.js"&gt;SVG context and drawing&lt;/a&gt; (also used in the &lt;a href="http://jayantbsai.blogspot.com/2008/09/simple-svg-shapes.html"&gt;Simple SVG Shapes&lt;/a&gt; post) and the 2nd one for actually &lt;a href="http://ecodevil.net/dev/blog/blogger_svg.js"&gt;drawing the content&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div id="surface" style="width:300px; height:300px; border:1px solid #000;"&gt;&lt;/div&gt;&lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/svg.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/blogger_svg.js"&gt;&lt;/script&gt;&lt;br /&gt;Here is the HTML markup:&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;&lt;br /&gt;&amp;lt;div id="surface" style="width:300px; height:300px; border:1px solid #000;"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/svg.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/blogger_svg.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I also tried with Dojo GFX. GFX is a nice abstraction layer to SVG/VML graphics. I tried integrating it into the blogger page, but that didn't worry, it kept throwing a console not found error. Here's the &lt;a href="http://ecodevil.net/dev/blog/blogger_gfx.js"&gt;external JavaScript file&lt;/a&gt; incase you would like to try it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-1911945558624596575?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/1911945558624596575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=1911945558624596575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1911945558624596575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1911945558624596575'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/12/dojo-gfx-in-blogger.html' title='Integrating SVG in blogger post'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-8389423188065293397</id><published>2008-11-21T09:01:00.000-08:00</published><updated>2008-11-21T09:19:27.395-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><title type='text'>ArcGIS JavaScript API v1.2 OUT</title><content type='html'>We've worked on this for the last 3-4 months or so. Its a major release for us with a LOT of &lt;a href="http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp/new_v12.htm"&gt;new features &amp; updates&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have tried to keep the backward compatibility and we pretty much have it. Just a few minor things which are stricter, for example, setting an Extent in the Map constructor should have a SpatialReference and the SR and extent values should be in sync.&lt;br /&gt;&lt;br /&gt;Go check it out... the &lt;a href="http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2008/11/21/Version-1.2-of-the-ArcGIS-JavaScript-API-released.aspx"&gt;ArcGIS Server Blog post&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-8389423188065293397?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/8389423188065293397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=8389423188065293397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8389423188065293397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8389423188065293397'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/11/arcgis-javascript-api-v12-out.html' title='ArcGIS JavaScript API v1.2 OUT'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-2852928482048526291</id><published>2008-10-22T20:16:00.000-07:00</published><updated>2008-10-22T21:27:16.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>Integrating Dojo in blogger post</title><content type='html'>So I have been working on integrating Dojo within my blog... so here goes.&lt;br /&gt;&lt;br /&gt;&lt;div class="tundra"&gt;&lt;a href="http://lh5.ggpht.com/jayant.b.sai/SLrn82traRI/AAAAAAAABR0/5UNt16sswzg/s800/IMG_0429.JPG" dojoType="dojox.image.Lightbox" group="sunset" title="A beautiful sunset"&gt;Open lightbox&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/jayant.b.sai/SLroBbKcUDI/AAAAAAAABR4/DxthCUN9wkg/s800/IMG_0433.JPG" dojoType="dojox.image.Lightbox" group="sunset" title="The colors where AMAZING"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/jayant.b.sai/SLroFj-kTkI/AAAAAAAABR8/GZPO_Jp9s-U/s800/IMG_0439.JPG" dojoType="dojox.image.Lightbox" group="sunset" title="Taken from my friend's apartment"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/blogger_lightbox.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;br /&gt;So first, I should thank &lt;a href="http://blog.nirav.name/2007/10/how-to-add-dzone-voting-to-your-blogger.html"&gt;this&lt;/a&gt; blog post on integrating an external JavaScript module within a blogger post. So essentially all the work is done in an &lt;a href="http://ecodevil.net/dev/blog/blogger_lightbox.js"&gt;external file&lt;/a&gt;. But this document still contains the markup that the dojo parser parses to render the light box.&lt;br /&gt;&lt;br /&gt;Click on the 'Open lightbox' link below and it will open up a &lt;a href="http://dojocampus.org/explorer/#Dojox_Image_Lightbox"&gt;dojo lightbox&lt;/a&gt;. These are photos of a sunset I took while in Vancouver in August. Use the keyboard cursor keys to navigate through the photos.&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;&amp;lt;div class="tundra"&amp;gt;&lt;br /&gt;&lt;div style="padding-left:10px;"&gt;&amp;lt;a href="..." dojoType="dojox.image.Lightbox" group="sunset" title="A beautiful sunset"&amp;gt;Open lightbox&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href="..." dojoType="dojox.image.Lightbox" group="sunset" title="The colors where AMAZING"&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href="..." dojoType="dojox.image.Lightbox" group="sunset" title="Taken from my friend's apartment"&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://ecodevil.net/dev/blog/blogger_lightbox.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;br /&gt;Thats it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-2852928482048526291?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/2852928482048526291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=2852928482048526291' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2852928482048526291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2852928482048526291'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/10/dojo-in-blogger.html' title='Integrating Dojo in blogger post'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-1103965820698804510</id><published>2008-10-21T22:52:00.000-07:00</published><updated>2008-10-21T23:07:10.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><title type='text'>The Mobile Web</title><content type='html'>So recently the guys in the ArcGIS Mobile team (Fred, Jeff &amp; Myles) asked me whether I could put together a blog posting about integrating the JSAPI to work in mobile browsers. So here's a first of several blog posts on &lt;a href="http://blogs.esri.com/Dev/blogs/mobilecentral/archive/2008/10/20/The-Mobile-Web.aspx"&gt;The Mobile Web&lt;/a&gt;. If you're interested in the bringing your ArcGIS Server content to mobile devices, watch the the &lt;a href="http://blogs.esri.com/dev/blogs/mobilecentral/default.aspx"&gt;ArcGIS Mobile Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This particular post simply shows how to make REST calls and doesn't have any JSAPI, but this one will work on any mobile browser, even &lt;a href="http://www.microsoft.com/windowsmobile/en-us/downloads/microsoft/internet-explorer-mobile.mspx"&gt;IE Mobile&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can find the page hosted &lt;a href="http://ecodevil.net/dev/blog/basicMap.php"&gt;here&lt;/a&gt;. So whip out that mobile phone of yours and go to &lt;span style="font-weight:bold;"&gt;http://ecodevil.net/dev/blog/basicMap.php&lt;/span&gt; and check it out. Click the +/- to zoom in/out and the N/E/S/W to pan in the specific direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-1103965820698804510?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/1103965820698804510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=1103965820698804510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1103965820698804510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/1103965820698804510'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/10/jsapi-mobile.html' title='The Mobile Web'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-659822317269721394</id><published>2008-10-14T20:23:00.000-07:00</published><updated>2008-10-15T17:27:50.553-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>DDD &amp; AjaxExperiece</title><content type='html'>A couple of weeks ago the Dojo guys gave me the opportunity to present the &lt;a href="http://resources.esri.com/arcgisserver/apis/javascript/arcgis/index.cfm?fa=home"&gt;ArcGIS JavaScript API&lt;/a&gt; at the &lt;a href="http://dojotoolkit.org/2008/07/10/dojo-developer-day-boston"&gt;Dojo Developer Day&lt;/a&gt; and &lt;a href="http://ajaxexperience.techtarget.com/east/html/frameworks.html#Dojo"&gt;Ajax Experience&lt;/a&gt;. Here's a wrap up on the proceedings from both at &lt;a href="http://blog.uxebu.com/2008/10/08/boston-wrap-up-dojo-12/"&gt;Uxebu's blog&lt;/a&gt; and &lt;a href="http://www.sitepen.com/blog/2008/10/07/ajax-experienced/"&gt;Sitepen's blog&lt;/a&gt;. Btw, I'm in the right corner in the red shirt in the group photo. I wore my Dojo shirt the previous day and didn't wear it that morning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-659822317269721394?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/659822317269721394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=659822317269721394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/659822317269721394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/659822317269721394'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/10/ddd-ajaxexperiece.html' title='DDD &amp; AjaxExperiece'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-4473822099010607626</id><published>2008-10-08T22:40:00.000-07:00</published><updated>2008-10-14T20:23:00.720-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><title type='text'>SVG events in Safari vs FF3/Opera</title><content type='html'>So don't get me wrong... FF3 is awesome, but when it comes to rendering HTML/SVG/JavaScript... I think WebKit kicks Gecko's butt! So recently while doing some R&amp;D, where I wanted to layer 2 SVG containers on top of each other, I noticed that the events actually work differently. So check out &lt;a href="http://ecodevil.net/dev/blog/safari_ff3_svg_events.html"&gt;this sample&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So this is a really simple test page. The code essentially creates and adds an svg element (z-index:0) to the root div. To this new surface, a rectangle is added to it. Next an image to the root div (z-index:1). Finally another svg element (z-index:2) is created and added to the root div and a circle added to it.&lt;br /&gt;&lt;br /&gt;Now to test this out, make sure to have Safari/WebKit's console open and in Firefox, Firebug. Click on the 'green rect', 'image', the 'red circle' &amp; finally the 'white background' div.&lt;br /&gt;&lt;br /&gt;In Safari, the output looks like:&lt;br /&gt;&lt;div style="font-style:italic; padding-left:15px;"&gt;rect : rect&lt;br /&gt;IMG : image&lt;br /&gt;circle : circle&lt;br /&gt;DIV : div&lt;/div&gt;&lt;br /&gt;Where as in Firefox (and Opera)&lt;br /&gt;&lt;div style="font-style:italic; padding-left:15px;"&gt;svg : surface2&lt;br /&gt;svg : surface2&lt;br /&gt;circle : circle&lt;br /&gt;svg : surface2&lt;/div&gt;&lt;br /&gt;So basically you can see that, since the 2nd surface is above in z-ordering, it traps all events outside the itself and doesn't let it go through. But Safari seems to have a different algorithm for determining the event source/target. Googling around, I have not been able to find more details on how the each rendering engine determines the event source/target.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-4473822099010607626?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/4473822099010607626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=4473822099010607626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4473822099010607626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4473822099010607626'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/10/svg-events-in-safari-vs-ff3opera.html' title='SVG events in Safari vs FF3/Opera'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-6120005582132859243</id><published>2008-09-16T20:05:00.000-07:00</published><updated>2008-09-17T08:29:19.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone SVG Events</title><content type='html'>The way the events work on a browser is pretty simple. If you want to listen to a particular event (say mousedown) on the whole document, you simply add an event listener to the &lt;span style="font-style:italic;"&gt;document: document.&lt;a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Registration-interfaces"&gt;addEventListener&lt;/a&gt;("mousedown", listenerFunction, false);&lt;/span&gt;. Setting 'false' for the 'useCapture' argument sets the event to &lt;a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-bubbling"&gt;bubble&lt;/a&gt;, which is the preferred event flow.&lt;br /&gt;&lt;br /&gt;The test that we have is really simple. On your iPhone, the page renders a circle, a rectangle &amp; of course these are rendered within a SVG container which is created within a background div. Tap on the circle, then rect and finally the background div. The test pages have 'touchstart' or 'click' event listeners registered by default. Click the 'Add'/'Remove' buttons to add/remove event listeners from the SVG element. There are 2 listener functions, one for logging document events and one for svg events. The events are logged with 'short function name: event.type : event.target'. &lt;br /&gt;&lt;br /&gt;If you didn't know this already, you can enable the &lt;a href="http://developer.apple.com/documentation/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/chapter_10_section_2.html"&gt;debug console in Safari&lt;/a&gt; on the iPhone.&lt;br /&gt;&lt;br /&gt;Now, on the iPhone, the 'touchstart' event is similar to the 'mousedown' on a browser. Go to &lt;a href="http://ecodevil.net/dev/blog/events_touch.html"&gt;http://ecodevil.net/dev/blog/events_touch.html&lt;/a&gt; using your iPhone. Click on the circle, then rect and finally the white background. You should see 3 events logged.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_touch_1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Now click on the 'Add' button and as expected you will see 1 event (for the button). Now clear the console and click the circle, rect &amp;amp; background again. This time, you will have 5 events logged.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_touch_2.png" /&gt;&lt;br /&gt;&lt;br /&gt;This is actually the expected behavior.&lt;br /&gt;&lt;br /&gt;Now from your desktop Safari, go to &lt;a href="http://ecodevil.net/dev/blog/events_click.html"&gt;http://ecodevil.net/dev/blog/events_click.html&lt;/a&gt;. You can enable your developer menu as well, see '&lt;a href="http://developer.apple.com/internet/safari/faq.html#anchor14"&gt;Safari Developer FAQ&lt;/a&gt;'. You will notice that you have 3 click events logged.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_click_browser_1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Now click on the 'Add' button and try the test again. You will once again have 1 + 5 events.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_click_browser_2.png" /&gt;&lt;br /&gt;&lt;br /&gt;Again try &lt;a href="http://ecodevil.net/dev/blog/events_click.html"&gt;http://ecodevil.net/dev/blog/events_click.html&lt;/a&gt; using your iPhone 2.1. When you run through the first set of tests, you will see no events logged.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_click_1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Now click on the 'Add' button and try the test again. You will now see 4 events logged, but there is no click event on the background div.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ecodevil.net/dev/blog/images/events_click_2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So What?&lt;/span&gt;&lt;br /&gt;So basically, events don't work exactly the same on the iPhone as the desktop browser. On a desktop browser, if an event listener is registered to listen to a particular event on the document, any event of the same type, on any element on the document bubbles up and will be logged, &lt;a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation"&gt;unless the event is stopped from propagating&lt;/a&gt;. But seems like on the iPhone, the touch/gesture events work by default on the document as well as the SVG element. But for the click/mouse* events to work on the document, there needs to be an event listener registered to listen to the SVG element. And removing this event listener will stop all click/mouse* events on the document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-6120005582132859243?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/6120005582132859243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=6120005582132859243' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/6120005582132859243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/6120005582132859243'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/09/iphone-svg-events.html' title='iPhone SVG Events'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-8945682973054962020</id><published>2008-09-15T21:19:00.000-07:00</published><updated>2008-09-16T20:21:03.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Simple SVG Shapes</title><content type='html'>Here's a simple test page which will draw different SVG shapes on your canvas. Of course if your iPhone OS is not 2.1, &lt;a href="http://www.apple.com/iphone/softwareupdate/"&gt;go get it&lt;/a&gt; and try out &lt;a href="http://ecodevil.net/dev/blog/shapes.html"&gt;http://ecodevil.net/dev/blog/shapes.html&lt;/a&gt;. So lets looks at the code for &lt;a href="http://ecodevil.net/dev/blog/svg.js"&gt;http://ecodevil.net/dev/blog/svg.js&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Firstly, I have 3 JavaScript functions. The &lt;span style="font-style:italic;"&gt;createNode&lt;/span&gt; is the main one which creates the appropriate SVG node using the node type and applies all properties from the argument hash to the new node. The &lt;span style="font-style:italic;"&gt;createImage&lt;/span&gt; &amp; &lt;span style="font-style:italic;"&gt;createText&lt;/span&gt; are just specialized uses of this function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;javascript&amp;gt;&lt;/span&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;function createNode(type, hash) {&lt;br /&gt;  var node = svg.appendChild(document.createElementNS("http://www.w3.org/2000/svg", type));&lt;br /&gt;  for (var key in hash) {&lt;br /&gt;    node.setAttribute(key, hash[key]);&lt;br /&gt;  }&lt;br /&gt;  return node;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function createImage(href, hash) {&lt;br /&gt;  var node = createNode("image", hash);&lt;br /&gt;  node.setAttributeNS("http://www.w3.org/1999/xlink", "href", href);&lt;br /&gt;  return node;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function createText(text, hash) {&lt;br /&gt;  var node = createNode("text", hash);&lt;br /&gt;  node.appendChild(document.createTextNode(text));&lt;br /&gt;  return node;&lt;br /&gt;}&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;/javascript&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next is the &lt;span style="font-style:italic;"&gt;test&lt;/span&gt; function which is called on document.onload. It creates a &lt;a href="http://apike.ca/prog_svg_shapes.html"&gt;rect, circle, ellipse, line, polyline, polygon&lt;/a&gt;, &lt;a href="http://apike.ca/prog_svg_images.html"&gt;image&lt;/a&gt;, &lt;a href="http://apike.ca/prog_svg_text.html"&gt;text&lt;/a&gt; &amp; &lt;a href="http://apike.ca/prog_svg_paths.html"&gt;path&lt;/a&gt;. I've found the &lt;a href="http://apike.ca/prog_svg.html"&gt;Pike's SVG Tutorial&lt;/a&gt; to be a good quick reference for SVG syntax.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;javascript&amp;gt;&lt;/span&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;function test() {&lt;br /&gt;  var div = document.getElementById("surface");&lt;br /&gt;  svg = div.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg"));&lt;br /&gt;  svg.setAttribute("style", "left:0px; top:0px; width:320px; height:326px;");&lt;br /&gt;  &lt;br /&gt;  createNode("rect", { x:10, y:10, width:50, height:30, fill:"rgb(0,255,0)" });&lt;br /&gt;  createNode("circle", { cx:95, cy:25, r:15, fill:"rgb(255,0,0)" });&lt;br /&gt;  createNode("ellipse", { cx:170, cy:25, rx:35, ry:15, fill:"rgb(0,0,255)" });&lt;br /&gt;  createNode("line", { x1:230, y1:10, x2:290, y2:40, stroke:"rgb(255,0,255)", "stroke-width":3 });&lt;br /&gt;  createNode("polyline", { points:"10,100 10,75 65,75 65,100 120,100 120,75 175,75 175,100 230,100 230,75 285,75 285,100", stroke:"rgb(0,255,255)", "stroke-width":3, fill:"none" });&lt;br /&gt;  createNode("polygon", { points:"10,125 285,165 285,125 10,165 10,125", fill:"rgb(255,255,0)" });&lt;br /&gt;  &lt;br /&gt;  createImage("http://news.bbc.co.uk/shared/img/v4/header_blocks.gif", { x:10, y:190, width:107, height:32 });&lt;br /&gt;  createText("Ola World", { x:210, y:215, "font-size":32, "text-anchor":"middle", "font-weight":"bold" });&lt;br /&gt;  createNode("path", { d:"M10,265 L10,300 L100,265 C100,265 300,265 200,300 H285", stroke:"rgb(0,0,0)", "stroke-width":5, fill:"none" });&lt;br /&gt;}&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;/javascript&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thats it. You can try this page using Safari/Firefox/Opera or Chrome... not IE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-8945682973054962020?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/8945682973054962020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=8945682973054962020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8945682973054962020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8945682973054962020'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/09/simple-svg-shapes.html' title='Simple SVG Shapes'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-4330559995922662173</id><published>2008-09-12T13:12:00.000-07:00</published><updated>2008-09-15T21:43:59.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone 2.1 now supports SVG</title><content type='html'>At iPhone 2.0, &lt;a href="http://www.w3.org/Graphics/SVG/"&gt;SVG&lt;/a&gt; was to be supported but when trying using the iPhone safari browser, even simple stuff it didn't work. So it was promised that the support would be there at the next major release and well its here. There's not too much noise about it in the blogs... but this is HUGE.&lt;br /&gt;&lt;br /&gt;Currently dojox.gfx defaults to canvas on the iPhone but the following &lt;a href=" http://bugs.dojotoolkit.org/ticket/7659"&gt;bug&lt;/a&gt; will fix that, hopefully in time for v1.2.&lt;br /&gt;&lt;br /&gt;The iPhone has had &lt;a href="http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/"&gt;touch &amp; gesture events&lt;/a&gt; since iPhone 2.0 for handling single &amp; double-touch events respectively. With this release, there should be support for drawing vector geometry using SVG and also events on SVG elements.&lt;br /&gt;&lt;br /&gt;More to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-4330559995922662173?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/4330559995922662173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=4330559995922662173' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4330559995922662173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4330559995922662173'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/09/iphone-21-now-supports-svg.html' title='iPhone 2.1 now supports SVG'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-4710146455358065217</id><published>2008-09-06T22:51:00.000-07:00</published><updated>2008-09-06T23:12:22.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><title type='text'>YouTube video</title><content type='html'>ESRI puts videos about its software online, including on youtube. Recently Andy stopped by to have a chat with Jeremy &amp; me about the &lt;a href="http://resources.esri.com/arcgisserver/apis/javascript/arcgis/"&gt;ArcGIS JavaScript API&lt;/a&gt;. You can see my office, with my Colts cap, the Dilbert head, my miniature planes and my Star Wars fighter models. I forgot about the chat that morning and forgot to shave and wear a good shirt. Oh well! &lt;a href="http://www.youtube.com/watch?v=0OHrvnOToj4"&gt;Link to the video&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-4710146455358065217?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/4710146455358065217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=4710146455358065217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4710146455358065217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4710146455358065217'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/09/you-tube-video.html' title='YouTube video'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-2246652025968670651</id><published>2008-08-13T21:48:00.000-07:00</published><updated>2008-08-13T22:10:40.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Using Php with ArcGIS Server 9.3 REST (v0.03)</title><content type='html'>So here's another sample. I have a pre-populated JSON file (addresses.txt) with a bunch of addresses to be geocoded.&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;{&lt;br /&gt;&amp;nbsp; "addresses": [&lt;br /&gt;&amp;nbsp; &amp;nbsp; { "name":"ESRI", "street":"380 New York St", "city":"Redlands", "state":"CA", "zip":92373 },&lt;br /&gt;&amp;nbsp; &amp;nbsp; { "name":"Google", "street":"1600 Amphitheatre Parkway", "city":"Mountain View", "state":"CA", "zip":94043 },&lt;br /&gt;&amp;nbsp; &amp;nbsp; { "name":"Yahoo", "street":"701 First Avenue", "city":"Sunnyvale", "state":"CA", "zip":94089 },&lt;br /&gt;&amp;nbsp; &amp;nbsp; { "name":"Microsoft", "street":"One Microsoft Way", "city":"Redmond", "state":"WA", "zip":98052 }&lt;br /&gt;&amp;nbsp; ]&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This code shows how to load up the address list from the JSON file. I tried naming the file as .json, but am guessing since my json mime-type has not been set correctly, it wasn't loaded properly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;$url = "addresses.txt";&lt;br /&gt;$response = file_get_contents($url);&lt;br /&gt;$json = json_decode($response);&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next is the code to take the address, build the request and use the &lt;a href="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Locators/ESRI_Geocode_USA/GeocodeServer"&gt;geocoding service on sample server&lt;/a&gt; to geocode the addresses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;$geocodeUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" . "Locators/ESRI_Geocode_USA/GeocodeServer/" . "findAddressCandidates?f=json";&lt;br /&gt;foreach($json-&gt;addresses as $address) {&lt;br /&gt;&amp;nbsp; $url = str_replace(" ", "+", $geocodeUrl . "&amp;amp;Address=" . $address-&gt;street . "&amp;amp;City=" . $address-&gt;city . "&amp;amp;State=" . $address-&gt;state . "&amp;amp;Zip=" . $address-&gt;zip);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; $response = file_get_contents($url);&lt;br /&gt;&amp;nbsp; $candidates = json_decode($response);&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next filter the address candidates and display only those candidates who's score is 100. We simply print these.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;&amp;nbsp; $html = "Address candidate(s) for (" . $address-&gt;name . "\n&amp;lt;ul&amp;gt;\n";&lt;br /&gt;&amp;nbsp; foreach($candidates-&gt;candidates as $candidate) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; if ($candidate-&gt;score == 100) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $html .= "&amp;lt;li&amp;gt;" . $candidate-&gt;address . " (" . $candidate-&gt;location-&gt;x . ", " . $candidate-&gt;location-&gt;y . ")&amp;lt;/li&amp;gt;";&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; $html .= "&amp;lt;/ul&amp;gt;\n";&lt;br /&gt;&amp;nbsp; echo $html;&lt;br /&gt;}&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-2246652025968670651?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/2246652025968670651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=2246652025968670651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2246652025968670651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/2246652025968670651'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/08/using-php-with-arcgis-server-93-rest_13.html' title='Using Php with ArcGIS Server 9.3 REST (v0.03)'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-8736411146140250711</id><published>2008-08-09T22:56:00.000-07:00</published><updated>2008-08-09T23:14:49.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Using Php with ArcGIS Server 9.3 REST (v0.02)</title><content type='html'>One of the powers of using GIS is that in addition to tabular data you also have access to spatial data as part of each record. So in the following Php code, I will query to find 'Los Angeles' and simple display the result with the coordinates of the city.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;$url = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services" . "/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0/query" . "?f=json&amp;where=CITY_NAME='Los+Angeles'";&lt;br /&gt;$response = file_get_contents($url);&lt;br /&gt;$json = json_decode($response);&lt;br /&gt;&lt;br /&gt;$la = $json-&gt;features[0];&lt;br /&gt;echo $la-&gt;attributes-&gt;CITY_NAME . " (" . $la-&gt;geometry-&gt;x . ", " . $la-&gt;geometry-&gt;y . ")";&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-8736411146140250711?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/8736411146140250711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=8736411146140250711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8736411146140250711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/8736411146140250711'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/08/using-php-with-arcgis-server-93-rest_09.html' title='Using Php with ArcGIS Server 9.3 REST (v0.02)'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-3504006866767633117</id><published>2008-08-09T14:55:00.000-07:00</published><updated>2008-08-09T23:15:20.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>Using Php with ArcGIS Server 9.3 REST</title><content type='html'>The latest release of &lt;a href="http://www.esri.com/software/arcgis/arcgisserver/index.html"&gt;ArcGIS Server&lt;/a&gt; now supports &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; access to the services. The best thing, it returns JSON. And at Php 5.2, there is support  for &lt;a href="http://en.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;. So how simple is it to request an process a response?&lt;br /&gt;&lt;br /&gt;Well, first use &lt;a href="http://www.php.net/file_get_contents"&gt;file_get_contents&lt;/a&gt; to call the REST endpoint. Next decode the JSON response as an object using &lt;a href="http://www.php.net/json_decode"&gt;json_decode&lt;/a&gt;. So here's a really simple sample to get a map image. Although I can't really see why you would use this rather than using the &lt;a href="http://resources.esri.com/arcgisserver/apis/javascript/arcgis/"&gt;ArcGIS JavaScript API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left:10px; font-style:italic;"&gt;$url = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services" . "/Specialty/ESRI_StateCityHighway_USA/MapServer/export?f=json";&lt;br /&gt;$response = file_get_contents($url);&lt;br /&gt;$json = json_decode($response);&lt;br /&gt;&lt;br /&gt;echo "&amp;lt;img src='" . $json-&gt;href . "' width='" . $json-&gt;width . "' height='" . $json-&gt;height . "' /&amp;gt;";&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-3504006866767633117?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/3504006866767633117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=3504006866767633117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/3504006866767633117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/3504006866767633117'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/08/using-php-with-arcgis-server-93-rest.html' title='Using Php with ArcGIS Server 9.3 REST'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-4550195526520582881</id><published>2008-08-02T10:09:00.000-07:00</published><updated>2008-08-10T12:37:32.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>The ArcGIS JavaScript API on dojotoolkit.org</title><content type='html'>The &lt;a href="http://dojotoolkit.org"&gt;Dojo Toolkit website&lt;/a&gt; has added a section in their spotlight page about the ArcGIS JavaScript API page. Check it out &lt;a href="http://dojotoolkit.org/spotlight"&gt;http://dojotoolkit.org/spotlight&lt;/a&gt;. Click on the ESRI link to see the details page. Dylan also added a blog entry on the website as well &lt;a href="http://dojotoolkit.org/2008/08/01/esri-launches-dojo-based-gis-javascript-api"&gt;ESRI Launches Dojo-based GIS JavaScript API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://dylanschiemann.com/"&gt;Dylan&lt;/a&gt; for spending the time putting this page up despite his busy schedule.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-4550195526520582881?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/4550195526520582881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=4550195526520582881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4550195526520582881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/4550195526520582881'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/08/arcgis-javascript-api-on-dojotoolkitorg.html' title='The ArcGIS JavaScript API on dojotoolkit.org'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-7042577312975651332</id><published>2008-07-28T21:30:00.000-07:00</published><updated>2008-09-06T23:00:40.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Dojo'/><title type='text'>Presenting the ArcGIS JavaScript API</title><content type='html'>For the last couple of years, I've been working hard on &lt;b&gt;TONS&lt;/b&gt; of client side JavaScript for the ArcGIS Server product. The first year and a half was working on the ArcGIS JavaADF client side code (JavaScript/CSS/Ajax) and for the last year and a half, its been the ArcGIS JavaScript API.&lt;br /&gt;&lt;br /&gt;The ArcGIS JavaScript API is basically a lightweight API for doing GIS on the web. It works with ESRI's ArcGIS 9.3 new REST serivices. Its been a GREAT experience working with Jeremy (The Bartley), &lt;a href="http://abstractfinal.blogspot.com/"&gt;Keyur&lt;/a&gt; and Praveen.&lt;br /&gt;&lt;br /&gt;The API is now available so check out ESRI's new &lt;a href="http://resources.esri.com/arcgisserver/apis/javascript/arcgis/index.cfm?fa=home"&gt;Resource Center&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More posts coming now that I have time to do other things than just work all the time... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-7042577312975651332?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/7042577312975651332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=7042577312975651332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7042577312975651332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/7042577312975651332'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2008/07/presenting-arcgis-javascript-api.html' title='Presenting the ArcGIS JavaScript API'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10242196.post-114315150356604750</id><published>2006-03-23T13:50:00.000-08:00</published><updated>2006-03-23T14:05:03.576-08:00</updated><title type='text'>Moving to Java dev team @ ESRI</title><content type='html'>Well I am formally moving to the Java development team at &lt;a href="http://www.esri.com"&gt;ESRI&lt;/a&gt;, and one of the popular trends here is blogging... well in keeping with the trend, I will join my piers in doing the same...&lt;br /&gt;&lt;br /&gt;My work is primarily on the client side web libraries and some server side, AJAX integration and some other stuff... I plan on using this blog to talk about what we're working on, show code bits, tips, tricks, hooks, etc and hopefully get input on how to improve the client side web libraries that we are working on... and will ship in our products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10242196-114315150356604750?l=jayantbsai.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayantbsai.blogspot.com/feeds/114315150356604750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10242196&amp;postID=114315150356604750' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/114315150356604750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10242196/posts/default/114315150356604750'/><link rel='alternate' type='text/html' href='http://jayantbsai.blogspot.com/2006/03/moving-to-java-dev-team-esri.html' title='Moving to Java dev team @ ESRI'/><author><name>Jayant</name><uri>http://www.blogger.com/profile/05979455377177603751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
