<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Scalene</title>
	<atom:link href="http://scalene.gisxpert.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://scalene.gisxpert.com</link>
	<description>adj.  Having three unequal sides.</description>
	<lastBuildDate>Sat, 12 Mar 2011 05:40:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>This is real life, Johnny&#8230; now fix your JSON parser</title>
		<link>http://scalene.gisxpert.com/2011/03/this-is-real-life-johnny-now-fix-your-json-parser/</link>
		<comments>http://scalene.gisxpert.com/2011/03/this-is-real-life-johnny-now-fix-your-json-parser/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 05:40:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=65</guid>
		<description><![CDATA[If you go to json.org, you&#8217;ll be amazed by simplicity and cleanliness of JSON format. At least I was. Now&#8230; there are some little things you should know before writing JSON parser: Take a look at these: char any-Unicode-character- except-&#8221;-or-\-or- control-character \&#8221; \\ \/ \b \f \n \r \t \u four-hex-digits There&#8217;s one escaped char [...]]]></description>
			<content:encoded><![CDATA[<p>If you go to json.org, you&#8217;ll be amazed by simplicity and cleanliness of JSON format. At least I was.</p>
<p>Now&#8230; there are some little things you should know before writing JSON parser:</p>
<p>Take a look at these:</p>
<p>char<br />
any-Unicode-character-<br />
    except-&#8221;-or-\-or-<br />
    control-character<br />
\&#8221;<br />
\\<br />
\/<br />
\b<br />
\f<br />
\n<br />
\r<br />
\t<br />
\u four-hex-digits</p>
<p>There&#8217;s one escaped char that doesn&#8217;t conform to the reality and there&#8217;s another char that should be escaped. Could you tell me what are these chars?</p>
<p>Hint: there are actually two chars that should be escaped. Answers are below:<br />
<span id="more-65"></span></p>
<p>One: forward slash shouldn&#8217;t be escaped. Moreover, JSON validators like jslint.org and jsonlint.org accept unescaped forward slashes just fine. The reason for this requirement is that escaped forward slashes add complexity to parsing and reading URLs embedded in JSON.</p>
<p>Two: angle brackets < and > should be escaped. Reason: security. For example, IIS (of some versions) will refuse to accept incoming requests with angle brackets inside. Escape or die.</p>
<p>Oh, and you can escape these brackets in any way, like &#038;gt or \u0xxx , but parser (at least parser trying to be true to the spec) will convert only \u0xxx form.</p>
<p>PS Programming JSON writer API in COM is an exercise in humility. WriteLong(), WriteDouble, WriteString,WriteLongVal, WriteDoubleVal, WriteStringVal&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2011/03/this-is-real-life-johnny-now-fix-your-json-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barricades?</title>
		<link>http://scalene.gisxpert.com/2011/03/yeah/</link>
		<comments>http://scalene.gisxpert.com/2011/03/yeah/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 05:23:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=62</guid>
		<description><![CDATA[Just had a chat with my colleague on this and that. Among other things, he shared his point of view on what is real programming is. I&#8217;ll be brief: - real programming is C and C++ on tasks where every mistake could be fatal (graphic drivers?) - .Net and Java are scripting languages. O-ok&#8230; No, [...]]]></description>
			<content:encoded><![CDATA[<p>Just had a chat with my colleague on this and that. Among other things, he shared his point of view on what is real programming is. I&#8217;ll be brief:</p>
<p>- real programming is C and C++ on tasks where every mistake could be fatal (graphic drivers?)<br />
- .Net and Java are scripting languages.</p>
<p>O-ok&#8230;</p>
<p>No, I am not proving any point here, I just think that labeling does not solve anything. </p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2011/03/yeah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why fat-free diet is not always healthy: JSON and the large data</title>
		<link>http://scalene.gisxpert.com/2011/03/why-fat-free-diet-is-not-always-healthy-json-and-the-large-data/</link>
		<comments>http://scalene.gisxpert.com/2011/03/why-fat-free-diet-is-not-always-healthy-json-and-the-large-data/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 00:14:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=52</guid>
		<description><![CDATA[It is widely known that the JSON is a fat-free alternative to XML. However, as with any alternative, there is a price you have to pay. Most people don’t even consider limitations of JSON format when they design their JSON-based protocols. However, they exist and they usually appear later, when there is a need to [...]]]></description>
			<content:encoded><![CDATA[<p>It is widely known that the JSON is a fat-free alternative to XML. However, as with any alternative, there is a price you have to pay. Most people don’t even consider limitations of JSON format when they design their JSON-based protocols. However, they exist and they usually appear later, when there is a need to scale out.</p>
<p><span id="more-52"></span></p>
<p>First, I want to quickly summarize this article: <a href="http://www.cowtowncoder.com/blog/archives/2009/04/entry_243.html">JSON vs XML: confessions of a JSON advocate</a>.</p>
<p>1. Absence of comments. I really can’t comment on this.<br />
2. Absence of attributes. In short, there’s always some properties you want to read first. XML ensured that these properties are available by putting them in attributes. No such luck in JSON.<br />
3. Unquoted linefeeds are not allowed in JSON strings.<br />
4. No ordering except of arrays. See my comment to #2, but that one is not about attributes byt rather xs:sequence.</p>
<p>As I told you earlier, most web service writers and consumers don’t even notice these limitations. If you send out stock price ticker in JSON, there’s no need in comments, attributes or sequential containers, you just parse entire thing into a DOM-like structure and use it.</p>
<p>However, there are people who are forced to overcome such problems. In this post, I’ll try to show a best JSON data container structure that can help most of the people writing JSON-based protocols for the web data exchange. </p>
<p>Let’s start with an example of the most common issue &#8211; large data and important metadata. My example is a spatial data container. It has a seemingly problem-free syntax: <a href="http://help.arcgis.com/en/arcgisserver/10.0/apis/rest/fsquery.html">http://help.arcgis.com/en/arcgisserver/10.0/apis/rest/fsquery.html</a></p>
<p><strong></p>
<blockquote><p>{</p>
<p>&nbsp;&#8221;importantProperty&#8221; : &#8220;&lt;importantPropertyValue&gt;&#8221;,</p>
<p>&nbsp;&#8221;features&#8221; : [</p>
<p>&nbsp;&nbsp;&lt;feature1&gt;, &lt;feature2&gt;</p>
<p>&nbsp;&nbsp;]</p>
<p>}
</p></blockquote>
<p></strong></p>
<p>This REST operation returns JSON featureset which is a simple JSON object. Bulk of the data in this object is a ‘features’ array that contains (obviously) features. All properties before ‘features’ is metadata. These properties are needed to parse the ‘features’ array.The ‘features’ array usually takes 99.9% of the total size of a container.</p>
<p>Now.. what if your response is big? Or even huge?</p>
<p>Most obvious solution is to amend the protocol rules and introduce a limit on a number of features. But there are cases where feature limit cannot be used. For the sake of an example let’s suppose that a pure, innocent soul decided to use this operation to replicate entire database and turned featurelimit off. Or worse, this protocol has no continuation clause, which means that search-engine-style pagination is not available out-of-the-box. (Yes there are tricks to emulate pagination by requesting all feature IDs first&#8230; but I am not talking about these right now.)</p>
<p>While it is possible to read entire featureset into memory, it makes much more sense to use a sequential reader. SAX, not DOM.</p>
<p>Now that I said the word SAX, I should apologize. I didn’t really mean SAX, I actually mean simple sequential one-pass reader, like Microsot .Net’s XmlReader. The sequential reading has simple advantage of not keeping entire DOM-like data tree in memory. But it requires a sequential data container. Oh xs:sequence, where art thou when we need thou? Microsoft had to get around this even for XML &#8211; they introduced XmlBookmarkReader. Basically, it allows you to reset the reader state to any arbitrary position. It’s not cost-free, because every time you go back, you wasted a pass. While skipping tokens in a string is less costly in terms of memory (vs DOM model), it still takes CPU cycles to perform.</p>
<p>Can we avoid double-pass parsing? Can we use JSON syntax to create a container that provides sequential access to the data?</p>
<p>Yes, JSON actually provides an <em>anonymous</em> sequential container: JSON array.</p>
<p>Updated data container syntax will look like this:</p>
<blockquote><p><strong>[</p>
<p>&nbsp;{</p>
<p>&nbsp;"importantProperty" : "&lt;importantPropertyValue&gt;"</p>
<p>&nbsp;},</p>
<p>&nbsp;[ //anonymous array that used to be ‘features’.</p>
<p>&nbsp;&nbsp;&lt;feature1&gt;, &lt;feature2&gt;</p>
<p>&nbsp;]</p>
<p>]<br />
</strong></p></blockquote>
<p>See? We enforced metadata to come before data without violating JSON syntax rules.</p>
<p>Now there’s a bigger problem: types</p>
<p>If you are not a JSON novice like me, you probably noticed that most of serializers that work with JSON introduce a special __type property that holds a type hint for the deserializer. (Examples: OpenLayers, Microsoft WPF JSON deserializer). Apparently, duck typing is not always an option when you want to (painlessly) introduce automatic serialization and code generation. And versioning support for a good measure.</p>
<p>But where do you insert __type in arrays? It only works for objects.</p>
<p>A naive solution would be wrap a sequential container in an object with __type property. However, __type property could very well come last. We just returned to the square one.</p>
<p>When in doubt, look at the giants. How Microsoft got around this? By introducing a DataContract attribute language which is essentially a generalized XML-like schema. In essence, you provide a data contract and expect the server to be conforming to that contract. Typical workflow is to make a first request to the web service by asking a proper version, then use proper DataContract-attributed value type (class) to deserialize a service response.<br />
Aha! This is DOM-like model again! Looks like there’s no way around it&#8230;</p>
<p>Unless we introduce type&amp;version string as a very first mandatory element of the array (use null for the default (lowest) version).</p>
<p>Sequential data container, version 3:</p>
<blockquote><p><strong><br />
[</p>
<p>&nbsp;“sequential.data.container.3”, //type and version</p>
<p>&nbsp;{</p>
<p>&nbsp;&nbsp;"importantProperty" : "&lt;importantPropertyValue&gt;"</p>
<p>&nbsp;},</p>
<p>&nbsp;[ //anonymous array that holds the rest of the data.<br />
&nbsp;&nbsp;//Use importantProperty and type information to read it properly</p>
<p>&nbsp;&nbsp;&lt;feature1&gt;, &lt;feature2&gt;</p>
<p>&nbsp;]</p>
<p>]<br />
</strong>
</p></blockquote>
<p>Yes, this looks ugly, but this is the best we can do without violating JSON syntax.<br />
Now let’s remember why we did all of this. We actually wanted a data structure that we can read and deserialize sequentially in one pass without introducing either intermediate storage (DOM-like model: read stream into an intermediate storage, then read intermediate storage in a specific order) or bookmarks (read stream once to read important parts, read stream once to read the rest).</p>
<p>Thankfully, most of the objects that people work with do not require such exotic treatment because their size is pretty much fixed.</p>
<p>Still, I am not sure if the end result was worth it. Basically, we just got rid of the property names and the result looks confusing. Well, if not confusing, then it’s certainly is not self-describing like XML and (most of the time) JSON are.</p>
<p>To actually solve this problem we need to look higher, beyond the (DOM-like) tree we just tried to climb and see the forest behind it. The answer is simple: JSON and XML are not designed for an efficient bulk data transfer but rather for an interoperability. If you want to transfer large amount of data, you should really use a <strong>binary protocol</strong>. Binary data transmission is well-researched area (think video compression and streaming) and you shouldn’t have any problems choosing the right protocol for you. We can look into this in the next article, if there is a need.</p>
<p><strong>Exercise for the reader:</strong> Name couple of reasons why the sequential container designed in this article is bad.</p>
<p>Also, feel free to tell me where I was wrong. I am usually wrong, so there will be no hurt feelings.</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2011/03/why-fat-free-diet-is-not-always-healthy-json-and-the-large-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why C++ is bad</title>
		<link>http://scalene.gisxpert.com/2010/11/why-cplusplus-is-bad/</link>
		<comments>http://scalene.gisxpert.com/2010/11/why-cplusplus-is-bad/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 20:21:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=42</guid>
		<description><![CDATA[Time for a rant&#8230; A: Say&#8230; do you really need template programming in order to concatenate some strings? or, god forbid, you need to tokenize the std::wstring and have to write a method for that? Of you need a stringBuilder-like functionality? B: C++0x standard is going to be old before it will be released. Come [...]]]></description>
			<content:encoded><![CDATA[<p>Time for a rant&#8230;</p>
<p>A: Say&#8230; do you really need template programming in order to concatenate some strings? or, god forbid, you need to tokenize the std::wstring and have to write a method for that? Of you need a stringBuilder-like functionality?</p>
<p>B: C++0x standard is going to be old before it will be released. Come on guys, I am not even talking about fancy things like closures here. I am tired of not having rvalues. I am tired of not having static constructors. I am tired of non-human-readable errors of template-based metaprogramming. I am just tired of having pointers standing in my way 80% of time.</p>
<p>C: Do you know what takes most time for me when I work in C++? To replicate some functionality I take for granted in managed code like Java or .Net.</p>
<p>Example:</p>
<style type="text/css">
.comment { color: #999999; font-style: italic; }
.pre { color: #000099; }
.string { color: #009900; }
.char { color: #009900; }
.float { color: #996600; }
.int { color: #999900; }
.bool { color: #000000; font-weight: bold; }
.type { color: #FF6633; }
.flow { color: #FF0000; }
.keyword { color: #990000; }
.operator { color: #663300; font-weight: bold; }
.operator { color: #663300; font-weight: bold; }
</style>
<pre><span class="comment">//Error.h
</span><span class="keyword">
class</span> Error<span class="operator">
{</span><span class="keyword">
public</span><span class="operator">:</span><span class="type">
 int</span> code<span class="operator">;</span>
 Error<span class="operator">(</span><span class="type">int</span> c<span class="operator">){</span>code<span class="operator"> =</span> c<span class="operator">;};</span><span class="keyword">
 static const</span> GenericError<span class="operator">;</span><span class="keyword">
 static const</span> DisplayError<span class="operator">;
}</span><span class="comment">

//Error.cpp
</span><span class="keyword">
static</span> map<span class="operator">&lt;</span><span class="type">int</span><span class="operator">,</span><span class="keyword"> const</span> Error<span class="operator">*&gt;</span> g_errMap<span class="operator">;</span><span class="keyword">

class</span> add_values_to_map<span class="operator">
{</span><span class="keyword">
public</span><span class="operator">:</span>
add_values_to_map<span class="operator">(</span>map<span class="operator">&lt;</span><span class="type">int</span><span class="operator">,</span><span class="keyword"> const</span> Error<span class="operator">*&gt;&amp;</span> _map<span class="operator">,</span><span class="type"> int</span><span class="operator">&amp;</span> code<span class="operator">,</span><span class="keyword"> const</span> Error<span class="operator">&amp;</span> err<span class="operator">)
  {</span>
  map<span class="operator">[</span>code<span class="operator">] = &amp;</span>err<span class="operator">;
  }
};</span><span class="keyword">

static</span> map<span class="operator">&lt;</span><span class="type">int</span><span class="operator">,</span><span class="keyword"> const</span> Error<span class="operator">*&gt;</span> g_errMap<span class="operator">;</span><span class="keyword">
static const</span> Error<span class="operator">::</span>GenericError<span class="operator">(-</span><span class="int">1</span><span class="operator">);</span><span class="keyword">
static const</span> add_values_to_map tmp1<span class="operator">(-</span><span class="int">1</span><span class="operator">,</span> Error<span class="operator">::</span>GenericError<span class="operator">);</span><span class="type">

int</span><span class="keyword"> main</span><span class="operator">()
{</span>
  Error<span class="operator">*</span> p<span class="operator"> =</span> find_predefined_err_by_code<span class="operator">(-</span><span class="int">1</span><span class="operator">);
}</span>
</pre>
<p>You probably noticed that this code replaces a static constructor without actually having one. Quite weird half-baked functor class&#8230; but this is the best i could come up with.</p>
<p>I&#8217;ll hug you if you give me a better solution.</p>
<p>NOTE1: No, I don&#8217;t want to call MyFrameworkInit(). Actually, I don&#8217;t have the global init method and I intend to keep it that way.<br />
NOTE2: I don&#8217;t want to init static variables on the first call to class XX or YY or ZZ or in the non-static constructor of Error. Why? Because I  don&#8217;t want to introduce any locks in my code.</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2010/11/why-cplusplus-is-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;ZX-14 lady&#8221; bot</title>
		<link>http://scalene.gisxpert.com/2010/11/zx-14-lady-bot/</link>
		<comments>http://scalene.gisxpert.com/2010/11/zx-14-lady-bot/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 19:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Spam]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=38</guid>
		<description><![CDATA[Google for &#8216;zx-14 lady&#8217;. Quite interesting strategy. Either it is promoting motorbike forum (which is unlikely) or it slowly infiltrates through the spam filters around the world. In couple of years account will reach maturity and the owner will deliver a message&#8230; Or maybe someone just testing improved AI text generator on Markov chains.]]></description>
			<content:encoded><![CDATA[<p>Google for &#8216;zx-14 lady&#8217;.</p>
<p>Quite interesting strategy. Either it is promoting motorbike forum (which is unlikely) or it slowly infiltrates through the spam filters around the world. In couple of years account will reach maturity and the owner will deliver a message&#8230;</p>
<p>Or maybe someone just testing improved AI text generator on Markov chains.</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2010/11/zx-14-lady-bot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LISP SQL</title>
		<link>http://scalene.gisxpert.com/2010/03/lisp-sql/</link>
		<comments>http://scalene.gisxpert.com/2010/03/lisp-sql/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 03:03:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Functional]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=34</guid>
		<description><![CDATA[I probably discovered America&#8230; but this is very LISP-like WITH T1 as ( SELECT SNO AS SA, CITY FROM S ) , T2 as ( SELECT SNO AS SB, CITY FROM S ) , T3 as ( SELECT * from T1 NATURAL JOIN T2 ) , T4 AS ( SELECT * FROM T3 WHERE SA [...]]]></description>
			<content:encoded><![CDATA[<p>I probably discovered America&#8230; but this is very LISP-like <img src='http://scalene.gisxpert.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>WITH T1 as ( SELECT SNO AS SA, CITY FROM S ) ,<br />
T2 as ( SELECT SNO AS SB, CITY FROM S ) ,<br />
T3 as ( SELECT * from T1 NATURAL JOIN T2 ) ,<br />
T4 AS ( SELECT * FROM T3 WHERE SA &lt; SB )<br />
SELECT SA, SB FROM T4</p>
<p>This is what you get from reading <a href="http://www.amazon.com/Structure-Interpretation-Computer-Programs-Second/dp/0070004846/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1270090896&amp;sr=1-1">CISP</a> and &#8216;<a href="http://www.amazon.com/SQL-Relational-Theory-Write-Accurate/dp/0596523068">SQL and Relational theory</a>&#8216; in a row.</p>
<p>PS</p>
<p>Dreamed about newbie installing Linux on himself and attracting zillions of nuclear cyber-cooties. The moral was : always use Windows!</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2010/03/lisp-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ESRI Dev Summit &#8211; musings</title>
		<link>http://scalene.gisxpert.com/2010/03/esri-dev-summit-musings/</link>
		<comments>http://scalene.gisxpert.com/2010/03/esri-dev-summit-musings/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:58:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Conventions]]></category>
		<category><![CDATA[ESRI]]></category>
		<category><![CDATA[GIS]]></category>

		<guid isPermaLink="false">http://scalene.gisxpert.com/?p=24</guid>
		<description><![CDATA[ESRI Dev Summit is much quieter than ESRI UC, for obvious reason of lower count of attendees. It&#8217;s usually held in Palm Springs Convention Center. Palm Springs CC was most likely (forgive me for not checking Wikipedia) built during the shiny days of city&#8217;s glory, when all Hollywood hotshots loved to spend their weekends here. [...]]]></description>
			<content:encoded><![CDATA[<p>ESRI Dev Summit is much quieter than ESRI UC, for obvious reason of lower count of attendees. It&#8217;s usually held in Palm Springs Convention Center.</p>
<p>Palm Springs CC was most likely (forgive me for not checking Wikipedia) built during the shiny days of city&#8217;s glory, when all Hollywood hotshots loved to spend their weekends here. The style is unmistakable. Now about the favorite topic of every convention crasher &#8211; free food. Free food was in abundance. I was there only for one day (Wed Mar 24 2010), for that day ESRI provided free boxed lunch, drinks and snacks before and after lunch and free dinner (including beer and wine) on Dev Summit Attendee party. Beer was from Hangar 24, my favorite local brewery, and food was definitely of acceptable quality.</p>
<p>I attended several sessions presented by my colleagues, also had a good deal of talks in exhibit hall. (Exhibit hall is so small cozy that notion of &#8216;islands&#8217; was close to non-existence, let&#8217;s just say I was there for significant chunk of my day).</p>
<p>Dev Summit is like boot camp for developers who want to get a glimpse of ArcGIS 10 early. Pre-release will be available soon and there&#8217;s plenty of other related activity happening &#8211; dev APIs <a href="http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2010/03/22/ArcGIS-API-for-JavaScript-2.0-public-beta-now-available.aspx">are getting public </a>as well.<span id="more-24"></span></p>
<p>My colleagues and friends Julio Andrade and Rex Hansen delivered a great presentation about<a href="http://events.esri.com/bpc/2010/dev_agenda/index.cfm?fa=Session_Detail_Form&amp;SessionId=29&amp;ScheduleId=133"> extending ArcGIS Server .Net with custom Server Object Extensions</a>.  I helped to write some of the related code (JSON/AMF reading/writing), so I attended as a volunteer cheerleader. I couldn&#8217;t find the session recording online, but I think it&#8217;s going to be available soon for attendees (if not for everyone.)</p>
<p>Julio did great job with helper objects in REST SOESupport assembly. As a result, SOAP and REST SOE samples were concise and clear. If you are curious, these samples will be available from the code gallery for 10. Again, no link yet. Check <a href="http://blogs.esri.com//Dev/blogs/arcgisserver/">server blog</a> from time to time.</p>
<p>Note to myself: raw access to IJSONWriter, IJSONReader is probably will be of some interest to people writing AGS SOEs, especially in C++. I should write separate posts about details of these new public interfaces.</p>
<p>One attendee asked me what SOE he should develop &#8211; SOAP or REST? Obviously REST, if you are creating web app for browser consumption. If you need SOAP, you can add it later to the same SOE.</p>
<p>Next session of note: Roop Goyal and Sud Menon presented &#8220;<a href="http://events.esri.com/bpc/2010/dev_agenda/index.cfm?fa=Session_Detail_Form&amp;SessionId=40&amp;ScheduleId=138">Editing Geodatabases over the Web Using ArcGIS Server</a>&#8220;. Feature Service is pretty cool if you ask me. (Again, no recording available yet.).</p>
]]></content:encoded>
			<wfw:commentRss>http://scalene.gisxpert.com/2010/03/esri-dev-summit-musings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

