<?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>Global Access &#187; AJAX</title>
	<atom:link href="http://jj.gbtopia.com/blog/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://jj.gbtopia.com/blog</link>
	<description>Jorge Juan's Blog</description>
	<lastBuildDate>Fri, 25 Jun 2010 07:22:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Books site</title>
		<link>http://jj.gbtopia.com/blog/2007/08/20/books-site/</link>
		<comments>http://jj.gbtopia.com/blog/2007/08/20/books-site/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 05:37:15 +0000</pubDate>
		<dc:creator>jjgb</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[MAS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://jj.gbtopia.com/blog/2007/08/20/books-site/</guid>
		<description><![CDATA[Being the administrator and active user of my highschool&#8217;s alumni website, masalumni.org I have noticed that the most active post in the forums is regarding book recommendations for the literature class. As anyone who has been paying attention to my sidebar knows, one of my hobbies is reading books (just finished Harry Potter and the [...]]]></description>
			<content:encoded><![CDATA[<p>Being the administrator and active user of my highschool&#8217;s alumni website, <a href="http://masalumni.org">masalumni.org</a> I have noticed that the most active post in the forums is regarding book recommendations for the literature class. As anyone who has been paying attention to my sidebar knows, one of my hobbies is reading books (just finished <em><a href="http://www.amazon.com/exec/obidos/ASIN/0545010225/globalaccess-20/">Harry Potter and the Deathly Hallows</a></em> <img src='http://jj.gbtopia.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Given this background, I decided to create a specific site to list all the books that have been mentioned in this <a href="http://masalumni.org/forumL/topic.asp?TOPIC_ID=12">forum</a> (restricted registration required).</p>
<p>Here&#8217;s the link, for those of you who can wait to finish reading:<br /><a href="http://mas.gbtopia.com/books" onclick="javascript:urchinTracker('/bookssite');">http://mas.gbtopia.com/books</a></p>
<div style="text-align: center;">
<div class="imageframe imgaligncenter" style="width:400px;"><a id="p67" class="imagelink" href="http://mas.gbtopia.com/books" title="Books site screenshot" onclick="javascript:urchinTracker('/bookssite');"><img id="image67" src="http://jj.gbtopia.com/blog/wp-content/uploads/2007/08/books-site-screenshot_400.png" alt="Books site screenshot" height="368" width="400" /></a>
<div class="imagecaption">Books site screenshot</div>
</div>
</div>
<p>I used the same Wordpress plugin that powers my sidebar, called <a href="http://www.sozu.co.uk/software/amm/">Amazon Media Manager</a>. I had to make several changes to add support for ratings, comments and dynamically retrieving book descriptions. The result is an AJAX application that displays a list of books, allows users to rate them and add their own comments. Users can also filter the list to display only the recommendations made by a particular user. I had to brush up a bit on my PHP skill. It was rather easy, and was ready in about five days during my free time.</p>
<p><strong>Update (2007-08-25)</strong>: Now you can sort the books by different criteria. Added screenshot.</p>
]]></content:encoded>
			<wfw:commentRss>http://jj.gbtopia.com/blog/2007/08/20/books-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultimate Web Development war</title>
		<link>http://jj.gbtopia.com/blog/2007/05/13/ultimate-web-development-war/</link>
		<comments>http://jj.gbtopia.com/blog/2007/05/13/ultimate-web-development-war/#comments</comments>
		<pubDate>Sun, 13 May 2007 23:34:45 +0000</pubDate>
		<dc:creator>jjgb</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[photos]]></category>

		<guid isPermaLink="false">http://jj.gbtopia.com/blog/2007/05/13/ultimate-web-development-war/</guid>
		<description><![CDATA[I saw these products placed side by side at my local supermarket and couldn't resist to post it. I guess it's just another chapter in the Flash vs AJAX war.


digg_url = 'http://digg.com/programming/Flash_vs_AJAX_picture';

]]></description>
			<content:encoded><![CDATA[<p>I saw these products placed side by side at my local supermarket and couldn't resist to post it. I guess it's just another chapter in the Flash vs AJAX war.</p>
<p style="text-align:center" align="center"><img id="image51" src="http://jj.gbtopia.com/blog/wp-content/uploads/2007/05/FlashVSAjax.jpg" alt="Flash vs AJAX" width="400" height="457" /></p>
<p style="text-align:center" align="center">
<script type="text/javascript">digg_url = 'http://digg.com/programming/Flash_vs_AJAX_picture';</script><br />
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://jj.gbtopia.com/blog/2007/05/13/ultimate-web-development-war/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Global Access Maps: alpha release</title>
		<link>http://jj.gbtopia.com/blog/2007/03/26/global-access-maps-alpha-release/</link>
		<comments>http://jj.gbtopia.com/blog/2007/03/26/global-access-maps-alpha-release/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 06:06:10 +0000</pubDate>
		<dc:creator>jjgb</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://jj.gbtopia.com/blog/2007/03/26/global-access-maps-alpha-release/</guid>
		<description><![CDATA[I&#8217;m finally releasing the alpha version of Global Access Maps. An alpha release means that the application is working but not necessarily stable and some features are partially implemented or not implemented at all. It might break, but it should be good enough for casual and curious users. It also means that I use this [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m finally releasing the alpha version of Global Access Maps. An alpha release means that the application is working but not necessarily stable and some features are partially implemented or not implemented at all. It might break, but it should be good enough for casual and curious users. It also means that I use this version for development, so some features might unexpectedly stop working for a while as a result of me tweaking the code. Another important note is that I&#8217;ve used Firefox 2.0.x mostly during development. Safari 2.0.x should work, but Internet Explorer users might encounter several issues that won&#8217;t be taken care of until the beta release.</p>
<h3>Features</h3>
<ul>
<li>Supports multiple maps</li>
<li>Multiple markers per map</li>
<li>The user may choose the marker color and style (numbered, circle, square, &#8230;). Numbered markers go from 0 to 99, but by choosing different colors up to 1800 numbered markers may be used in a single map.</li>
<li>Markers can be tagged with multi word tags.</li>
<li>After loading the map, a tag cloud is displayed, with varying sizes an colors to reflect the most popular tags for a specific map.</li>
<li>The marker list can be filtered by choosing a tag</li>
<li>The Google geocoder is used by default, if this fails or for some specific queries, it can use data from the most appropriate source by querying up to five different geo location services.</li>
<li>If multiple results are found for a location, it&#8217;s possible to choose and preview each result before adding the marker</li>
<li>Supports &#8220;inverse markers&#8221;, a marker can be added by double clicking on the map and an inverse query is executed to find location details</li>
<li>Administration interface may be hidden to maximize map size.</li>
<li>All external operations are done through AJAX calls, so the page is never reloaded, not even to load a new set of markers from another map.</li>
<li>Can calculate distances from the selected marker to all the other markers. These distances are point to point, not following streets or roads.</li>
<li>A user can select a start and end marker and click <strong>directions</strong> to load directions from Google in the directions panel.</li>
<li>Powered by Google Maps with v2.x API</li>
</ul>
<p>Some future features:</p>
<ul>
<li>Each marker may have several trips associated to it</li>
<li>A trip has origin, destination, dates and URLs that point to photographs, or additional information</li>
<li>Ability to print maps easily</li>
<li>Use Marker Manager to handle lots of markers effectively</li>
</ul>
<p>Some of the technologies used to create this application are: AJAX (which, for the uninitiated, includes Javascript and XML), XSL (Extensible Stylesheet Language), Java Servlets, JDBC, MySQL database, CSS, DOM.</p>
<p>Here&#8217;s a screenshot of the alpha release of Global Access maps. Click on the image for a full size version.</p>
<p style="margin-left:45px;margin-right:45px;"><a href="http://jj.gbtopia.com/blog/wp-content/uploads/2007/03/globalaccessmaps-alpha.png"><img id="image17" src="http://jj.gbtopia.com/blog/wp-content/uploads/2007/03/globalaccessmaps-alpha-thumb.png" alt="Global Access Maps - Alpha Release Screenshot" border="0" align="center" width="400" height="286" /></a></p>
<p>I&#8217;ve set up a test map for people who&#8217;d like to test the maps for themselves. Feel free to add markers and please report any strange behaviors found, except when related to Internet Explorer or the list of limitations described below.</p>
<p style="text-align:center;font-size:14px;"><a href="http://gbtopia.com/maps/index.html?mapid=24">Test Map</a></p>
<h3>Basic instructions</h3>
</p>
<p>To <b>add a marker</b>, just type the search text in the <em>query</em> field and press <b>search maps</b>. The results will appear in the results tab, on the left of the map. If there&#8217;s a single result, the marker preview will appear automatically, otherwise a list of results will be displayed, which can be previewed individually by clicking on the <b>></b>. To add the marker to the map, just fill the <em>name</em> and the optional <em>tags</em> and <em>url</em> fields, and press the <b>add marker</b> button. The marker will be added and will be displayed at the end of the markers list.</p>
<p>To <b>select a marker</b>, either click on the text link that appears in the markers list or on the marker icon in the map. The information window will appear, and the icon will change to a star. The calculate distances link may be used after selecting a marker to calculate the distance from the current marker to all the other markers.</p>
<p>The rest of the options are pretty self explanatory, but I will expand this brief guide if requested.</p>
<h3>Examples</h3>
<p>Over the past few years, I&#8217;ve created several maps, linked below. Please do <b>NOT</b> add markers to these maps:</p>
<ul>
<li><a href="http://gbtopia.com/maps/index.html?mapid=5">Dallas, TX, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=6">Las Vegas, NV, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=7">Chicago, IL, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=9">Miami, FL, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=21">New York, NY, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=22">New York Subway, NY, USA</a></li>
<li><a href="http://gbtopia.com/maps/index.html?mapid=23">Los Angeles, CA, USA</a></li>
</ul>
<h3>Known limitations of the alpha release</h3>
<ul>
<li>Editing a marker might result in an error</li>
<li>After adding a marker, the tag cloud is not dynamically updated</li>
<li>The following features haven&#8217;t been implemented: <em>add map</em>, <em>add trip</em>, <em>delete marker</em>, <em>deselect marker</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jj.gbtopia.com/blog/2007/03/26/global-access-maps-alpha-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nike+ style charts using SVG</title>
		<link>http://jj.gbtopia.com/blog/2006/11/15/nike-style-charts-using-svg/</link>
		<comments>http://jj.gbtopia.com/blog/2006/11/15/nike-style-charts-using-svg/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 02:11:36 +0000</pubDate>
		<dc:creator>jjgb</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://jj.gbtopia.com/blog/2006/11/15/nike-style-charts-using-svg/</guid>
		<description><![CDATA[Remember the Proof of Concept from my last post? Well, the latest request to complete this PoC was to create a chart that plotted all the human tasks from the Accounts Payable process. The customer wanted a &#8216;clickable&#8217; chart that enabled a business user to know at a glance the state of the invoices being [...]]]></description>
			<content:encoded><![CDATA[<p>Remember the Proof of Concept from my last post? Well, the latest request to complete this PoC was to create a chart that plotted all the human tasks from the Accounts Payable process. The customer wanted a &#8216;clickable&#8217; chart that enabled a business user to know at a glance the state of the invoices being processed, in other words, how many invoices are stopped in each stage, waiting for someone to click <em>Next</em> (or <em>Reject</em>, <em>Return</em>, <em>Back</em>)</p>
<p>The first solution I considered was <a href="http://jj.gbtopia.com/g_iportal.html">Instant Charts</a>, a tag library that produces charts by using the <a href="http://www.jfree.org/jfreechart/">JFreeChart</a> library. However, this would produce a static, hardly clickable image, and where&#8217;s the fun in that?</p>
<p>The second alternative was to improvise a graphic with some HTML + CSS magic, but this seemed a bit primitive for my taste.</p>
<p>Having just bought the Nike+iPod kit, I was inspired by the beautiful charts provided by Nike and decided this is what I wanted. Nike&#8217;s site uses Flash extensively, and even though I&#8217;ve worked with Flash <a href="http://jj.gbtopia.com/g_ceedr.html">a</a> <a href="http://jj.gbtopia.com/g_ads.html">bit</a>, I&#8217;m certainly not a fan. That&#8217;s when I remembered the open source alternative created by Adobe (which ironically now also owns Flash), Scalable Vector Graphics, or SVG. Since it&#8217;s built around XML, Javascript, DOM and CSS I thought that it would be easy to create a nice looking vector graphic with it. Turns out I was right <img src='http://jj.gbtopia.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>My first approach was to create some graphics with Illustrator and export them to SVG, this would help me produce results faster. It didn&#8217;t. If you&#8217;re planning on working with the generated XML, you might as well steer away from Illustrator and look for some SVG online reference. Illustrator does produce valid SVG, but it uses properties in the XML that are not easily interpreted. For example, text is not positioned with X, Y coordinates, instead you&#8217;ll find a transform matrix used to calculate the position, which isn&#8217;t really intuitive. After a bit of work based on several SVG reference sites, I achieved the desired effect for each bar, a rounded rectangle with a gradient an a cool reflection (sort of). I then created a JSP that would dynamically generate the SVG, creating a bar for each kind of task and the chart was ready. Almost.</p>
<p>The chart was looking good, but not as good as those from Nike. It was missing some interactivity. Hovering over Nike&#8217;s &#8220;Runs&#8221; chart displays a tooltip where you can see details of each run. That&#8217;s exactly what my chart needed. After a bit more research, I discovered that all interactivity in SVG could be programmed using Javascript. Elements in the XML are accessed using the DOM, so after some more work I had an interactive version. I had some issues getting it to work with Firefox&#8217;s SVG engine (some methods were not being recognized), but I managed to fix everything except for the filters, which are not supported by Firefox.</p>
<p>Here&#8217;s the final result:</p>
<p><embed src="http://jj.gbtopia.com/blog/wp-content/uploads/2006/11/graficaTareas.svg" width="460" height="365" type="image/svg+xml"></embed><noembed>This is where the chart is supposed to appear. Try the alternatives below if you&#8217;re reading this.</noembed></p>
<p>If you&#8217;re having trouble seeing the chart, you might need Adobe&#8217;s SVG plugin, which you can get <a href="http://www.adobe.com/svg/viewer/install/main.html">here</a>. If you&#8217;re not in the mood of installing the plugin, you might just watch a screenshot of the final version, <a href="http://jj.gbtopia.com/blog/wp-content/uploads/2006/11/GraficaTareasSVG.gif" target="_blank">here</a> (minus the interactive part).</p>
<p>Feel free to look at the <a href="http://jj.gbtopia.com/blog/wp-content/uploads/2006/11/graficaTareas.svg">code</a> if you need something similar (select Save Link As or Alt-click).</p>
<p>There&#8217;s an additional feature that complements the cool chart, a drill down capability. Clicking on the chart produces a list of all the tasks in a particular stage of the process. I used an AJAX request to retrieve this list and enhance the user experience. Clicking on a particular task displays the current information for a specific process instance, including a list of the activities that have been executed so far and all the data from the current task. This only works on the actual application, not on this demo.</p>
<p>P.S. The PoC runs on WebSphere Process Server, for those of you who were wondering.</p>
]]></content:encoded>
			<wfw:commentRss>http://jj.gbtopia.com/blog/2006/11/15/nike-style-charts-using-svg/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Maps</title>
		<link>http://jj.gbtopia.com/blog/2006/05/06/maps/</link>
		<comments>http://jj.gbtopia.com/blog/2006/05/06/maps/#comments</comments>
		<pubDate>Sun, 07 May 2006 05:29:30 +0000</pubDate>
		<dc:creator>jjgb</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://jj.gbtopia.com/blog/2006/05/06/maps/</guid>
		<description><![CDATA[It&#8217;s been a bit more than a month since my last post. However, I have a good excuse, I&#8217;ve been working in the gbtopia Maps application. It started as a simple static AJAX application where I manually created an XML file based on an example at Google&#8217;s site, and I had to input the coordinates [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a bit more than a month since my last post. However, I have a good excuse, I&#8217;ve been working in the gbtopia Maps application. It started as a simple static AJAX application where I manually created an XML file based on an example at Google&#8217;s site, and I had to input the coordinates and information for each marker manually. However, it has evolved into a dynamic application with the following major features:</p>
<ul>
<li>Supports creation of multiple maps</li>
<li>Multiple markers per map</li>
<li>Each marker may have several trips associated to it</li>
<li>A trip has origin, destination, dates and URLs that point to photographs, or additional information</li>
<li>Markers can be tagged, a tag cloud is displayed, and the marker list can be filtered by choosing a tag</li>
<li>Uses data from the most appropriate source by querying up to five different geo location services</li>
<li>If multiple results are found for a location, it&#8217;s possibel to choose and preview each result before adding the marker</li>
<li>Supports &#8220;inverse markers&#8221;, a marker is added by double clicking on the map and an inverse query is executed to find location details</li>
<li>Administration interface may be hidden to take advantage to maximize map size.</li>
<li>All external operations are done through AJAX calls, so the page is never reloaded.</li>
<li>Powered by Google Maps with v2 API</li>
</ul>
<p>Some of the technologies that I&#8217;ve been using in this application are: AJAX (which, for the uninitiated, includes Javascript and XML), XSL (Extensible Stylesheet Language), Java Servlets, JDBC, MySQL database, CSS, DOM.</p>
<p>The bad news is that gbtopia maps are not yet ready for the general public. I&#8217;m still polishing some details and hope to have an alpha release soon. However, if after reading this description you&#8217;re thrilled to try them, leave a comment and we can work something out.</p>
<p>Here&#8217;s a screenshot of the maps as of right now. Click on the image for a full size version.</p>
<p style="margin-left:45px;margin-right:45px;"><a href="http://jj.gbtopia.com/blog/wp-content/uploads/2006/05/maps-preview.png"><img id="image17" src="http://jj.gbtopia.com/blog/wp-content/uploads/2006/05/maps-preview.png" alt="gbtopia maps full size" border="0" align="center" width="400" height="279" /></a></p>
<p><b>Update (2007-03-26):</b> I have released an alpha version of Global Access Maps, click <a href="http://jj.gbtopia.com/blog/2007/03/26/global-access-maps-alpha-release/">here</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://jj.gbtopia.com/blog/2006/05/06/maps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
