<?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>Transit Appliance Development</title>
	<atom:link href="http://transitappliance.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://transitappliance.org</link>
	<description>A Portland Transport Production</description>
	<lastBuildDate>Thu, 14 Jun 2012 04:21:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>New Release of Flat Screen software.</title>
		<link>http://transitappliance.org/2012/06/14/new-release-of-flat-screen-software/</link>
		<comments>http://transitappliance.org/2012/06/14/new-release-of-flat-screen-software/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 04:21:08 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Linux/PC]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=36</guid>
		<description><![CDATA[We&#8217;ve released version 1.2 of our Linux appliance stack. The principal change is using a new version of the underlying Webconverger kiosk system, which now has much more robust networking, including the ability to support WiFi! You can download it &#8230; <a href="http://transitappliance.org/2012/06/14/new-release-of-flat-screen-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve released version 1.2 of our Linux appliance stack. The principal change is using a new version of the underlying <a href="http://webconverger.org/">Webconverger kiosk system</a>, which now has much more robust networking, including the ability to support WiFi!</p>
<p>You can download it <a href="http://transitappliance.org/isos/ta-debian-kiosk-v1-2/ta-debian-kiosk-v1-2.iso">here</a> (479M ISO Image)</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2012/06/14/new-release-of-flat-screen-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three-platform Software Release</title>
		<link>http://transitappliance.org/2011/05/30/three-platform-software-release/</link>
		<comments>http://transitappliance.org/2011/05/30/three-platform-software-release/#comments</comments>
		<pubDate>Mon, 30 May 2011 18:15:22 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Chumby/Insignia Infocast]]></category>
		<category><![CDATA[Linux/PC]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=33</guid>
		<description><![CDATA[I&#8217;m happy to announce that we have posted software releases of the Transit Appliance platform code for three hardware platforms: Chumby 8/Infocast 8-inch (22.9M Zip File) Chumby 1/Infocast 3.5-inch (22.6M Zip File) Debian-based &#8220;kiosk&#8221; Linux (226M ISO Image) All three &#8230; <a href="http://transitappliance.org/2011/05/30/three-platform-software-release/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m happy to announce that we have posted software releases of the Transit Appliance platform code for three hardware platforms:</p>
<ul>
<li><a href="http://code.google.com/p/transit-appliance-loader/downloads/detail?name=ta-chumby8-loader-v1-1.zip&amp;can=2&amp;q=">Chumby 8/Infocast 8-inch</a> (22.9M Zip File)</li>
<li><a href="http://code.google.com/p/transit-appliance-loader/downloads/detail?name=ta-chumby1-loader-v1-1.zip&amp;can=2&amp;q=">Chumby 1/Infocast 3.5-inch</a> (22.6M Zip File)</li>
<li><a href="http://transitappliance.org/isos/ta-debian-kiosk-v1-1/ta-debian-kiosk-v1-1.iso">Debian-based &#8220;kiosk&#8221; Linux</a> (226M ISO Image)</li>
</ul>
<p>All three downloads represent version 1.1 of our HTML/Javascript Loader system. I&#8217;d like to thank Matt Conway for his continuing work on improving the robustness of this tool. Additional information about each release, including installation instructions, follows.</p>
<p>The web site to configure Transit Appliances created with these downloads can be found at <a href="http://transitappliance.com/configure">http://transitappliance.com/configure</a>.</p>
<p><strong>Chumbys</strong></p>
<p>The Insignia Infocast was the device that inspired this project, and while it is no longer being manufactured by Best Buy you can still find a few units in some stores (for a very good price). However, Chumby Industries (the original designer of the platform) has now released a very similar device, the <a href="http://store.chumby.com/b/2619998011">Chumby 8</a> and we&#8217;re delighted that the software we created for the Infocast works without modification on the Chumby 8.</p>
<p>And the new V1.1 release is even more robust!</p>
<p>We are also including a software release for the smaller (3.5 inch screen) <a href="http://store.chumby.com/chumby-CHB802XXXX-one/dp/B0030QUU4M?ie=UTF8&amp;id=chumby%20CHB802XXXX%20one&amp;field_product_site_launch_date_utc=-1y&amp;field_availability=-1&amp;field_browse=2619998011&amp;searchSize=12&amp;searchNodeID=2619998011&amp;searchPage=1&amp;class=quickView&amp;refinementHistory=brandtextbin%2Csubjectbin%2Ccolor_map%2Cprice%2Csize_name&amp;searchRank=salesrank">Chumby One</a>. While our Transit Board™ application will run on the smaller screen, you&#8217;ll need a magnifying glass to read it. Watch for an announcement of a transit display application tailored for the smaller screen.</p>
<p>The installation procedure is the same for all the Chumby/Infocast models:</p>
<ol>
<li>Boot up the device normally and use the built-in tools to calibrate the screen and establish a network connection.</li>
<li>Download the appropriate zip file above for your device</li>
<li>Insert a FAT32-formatted USB thumb drive into your computer</li>
<li>Unzip the zip file into the <strong>root directory</strong> of your USB drive (don&#8217;t unzip into a subdirectory &#8211; this will not work)</li>
<li>Power off your Chumby, insert the USB drive, and power it back on</li>
<li>The Chumby should launch into a web browser, and if you have not previously established a configuration, it will prominently display the hardware ID (MAC address) for your Chumby. You can then use our <a href="http://transitappliance.com/configure">configuration service</a> to set up a display configuration.</li>
<li>After creating your configuration, reboot and your Chumby should display your bus and train arrivals!</li>
</ol>
<p><strong>Linux/PC Release</strong></p>
<p>While the Chumby devices are great for &#8220;counter-top&#8221; applications, we&#8217;ve been itching for a larger flat-screen Transit Appliance and we&#8217;re now releasing one!</p>
<p>Our Linux/PC software turns any PC into a transit appliance. The typical configuration is an inexpensive Atom-based PC (we&#8217;ve tested on the <a href="http://www.foxconnchannel.com/product/Barebones/NT525/index.html">Foxconn NetBox-nT525</a> and <a href="http://www.asus.com/Eee/EeeBox_PC/EeeBox_PC_B202/">ASUS EeeBox B202</a>) coupled with a monitor or flat-screen HDTV.</p>
<p>To use this release you&#8217;ll need to download the ISO image and then burn it to a USB drive or SD Card (depending on the media your computer accepts). There are a number of tools for different platforms that allow you to do this. I personally use <a href="http://unetbootin.sourceforge.net/">UNetbootin</a> from Windows, but there&#8217;s a nice tutorial on the many tools available at <a href="http://www.pendrivelinux.com/">http://www.pendrivelinux.com/</a> and you can find tools for any platform.</p>
<p>You may also need to modify the BIOS settings on your PC to make the removable media the first boot device &#8211; follow the manufacturers instructions.</p>
<p>Boot off of the removable media and you should launch into a web browser and get a report indicating that your device is not yet configured. Use our <a href="http://transitappliance.com/configure">configuration service</a> and enter the hardware ID (MAC address) to create your display configuration. Then reboot and go!</p>
<p>At this time the Linux release only supports wired Internet connections, but we hope to add reliable WiFi support in the future.</p>
<p>I&#8217;d like to thank Scott Garman for his assistance and coaching in adapting the <a href="http://webconverger.com/">Webconverger</a> kiosk browser project code for use in this effort!</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2011/05/30/three-platform-software-release/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Getting Ready for Transportation Camp</title>
		<link>http://transitappliance.org/2011/03/12/getting-ready-for-transportation-camp/</link>
		<comments>http://transitappliance.org/2011/03/12/getting-ready-for-transportation-camp/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 21:50:16 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=31</guid>
		<description><![CDATA[Transportation Camp West is next weekend, and I&#8217;m putting the finishing touches on my presentation about the Transit Appliance project. Please take a look and make suggestions! With the help of my co-developer Matt we also have San Francisco&#8217;s MUNI &#8230; <a href="http://transitappliance.org/2011/03/12/getting-ready-for-transportation-camp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://transportationcamp.org/2011/03/gearing-up-for-transportationcamp-west/">Transportation Camp West</a> is next weekend, and I&#8217;m putting the finishing touches on <a href="http://transitappliance.org/wp-content/uploads/2011/03/Transit-Appliance-Project-transporation-camp.pdf">my presentation about the Transit Appliance project</a>. Please take a look and make suggestions!</p>
<p>With the help of my co-developer Matt we also have San Francisco&#8217;s MUNI buses up in the tool and Matt is working on BART now, so we&#8217;re no longer just a Portland service. Here&#8217;s <a href="http://transitboard.com/tbdjs.html?stop[sf-muni][5547]=*&amp;stop[sf-muni][5548]=*&amp;stop[sf-muni][4667]=*&amp;stop[sf-muni][4666]=*&amp;option[stylesheet]=tboard_medium_large&amp;option[banner]=Transportation%20Camp%20West&amp;option[opt_rows_per_page]=12&amp;option[message]=+&amp;appl[id]=SOFT:0C90FDC80C0F4025832BF112961A7D3C">an example!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2011/03/12/getting-ready-for-transportation-camp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Next Steps &#8211; Defining Agency Adapters</title>
		<link>http://transitappliance.org/2011/01/29/next-steps-defining-agency-adapters/</link>
		<comments>http://transitappliance.org/2011/01/29/next-steps-defining-agency-adapters/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 19:56:54 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=27</guid>
		<description><![CDATA[I&#8217;ve completed a re-write of Transit Board™ to eliminate the server-side components and talk directly to the TriMet and NextBus arrivals web-services (in the case of NextBus, I&#8217;m using YQL, at the suggestion of my co-contributor Matt, to act as &#8230; <a href="http://transitappliance.org/2011/01/29/next-steps-defining-agency-adapters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve completed a re-write of Transit Board™ to eliminate the server-side components and talk directly to the TriMet and NextBus arrivals web-services (in the case of NextBus, I&#8217;m using YQL, at the suggestion of my co-contributor Matt, to act as a proxy to get around cross-site data restrictions in AJAX).</p>
<p>Now that this is out of the way, I want to move on to a general architecture for the component we&#8217;re calling &#8216;Agency Adapters&#8217;. My current thinking is that there are two components per agency, a set of &#8216;updaters&#8217; and an &#8216;updater factory&#8217;.</p>
<p>This thinking is based on my experience with TriMet, but I think it&#8217;s probably reasonable for covering a variety of ways that agencies may provide AVL services. It seems pretty clear to me that it will probably be necessary to allow for multiple AVL service calls per agency.</p>
<p>For example, with TriMet, their service will return results for up to 10 stop locations. So if my display requires 12, I&#8217;m going to need to make 2 calls. In addition, if one or more stops serves the Portland Streetcar (included in TriMet&#8217;s GTFS data, but not its AVL web service), I need to make a separate call to NextBus.</p>
<p>So I propose that at startup we call an &#8216;updater factory&#8217; for each agency in our configuration. We would pass all the stop/line configuration information for that agency to the factory, which would in turn create and return an array of &#8216;updater&#8217; objects.</p>
<p>Each updater would be responsible for handling all the web service calls for a specific subset of stops/lines (with the division decided by the factory). The updater would worry about issues like how frequently to call the service, logging errors, etc. and would maintain an &#8216;arrivals array&#8217; with the current best set of predictions for the the delegated stops/lines.</p>
<p>The updater would expose an API allowing its arrivals array to be accessed, possibly along with some kind of indication of how fresh/stale they are.</p>
<p>The next layer up in our application stack would include a process that polls all the available updaters and builds an aggregated arrivals array.</p>
<p>Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2011/01/29/next-steps-defining-agency-adapters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript as a Key Technology</title>
		<link>http://transitappliance.org/2011/01/26/javascript-as-a-key-technology/</link>
		<comments>http://transitappliance.org/2011/01/26/javascript-as-a-key-technology/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 16:51:10 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Presentations]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=23</guid>
		<description><![CDATA[Both the appliance configuration tool and the Transit Board™ application are coded primarily in JavaScript. I&#8217;ll be presenting tonight to the Portland JavaScript Admirers&#8217; group about how we&#8217;re using this technology. Here&#8217;s the presentation: Transit Appliance Project &#8211; pdxjs]]></description>
				<content:encoded><![CDATA[<p>Both the appliance configuration tool and the Transit Board™ application are coded primarily in JavaScript. I&#8217;ll be presenting <a href="http://calagator.org/events/1250459609">tonight</a> to the <a href="http://pdxjs.com/">Portland JavaScript Admirers&#8217; </a>group about how we&#8217;re using this technology.</p>
<p>Here&#8217;s the presentation: <a href="http://transitappliance.org/wp-content/uploads/2011/01/Transit-Appliance-Project-pdxjs.pdf">Transit Appliance Project &#8211; pdxjs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2011/01/26/javascript-as-a-key-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta Release of our Configuration Service</title>
		<link>http://transitappliance.org/2010/12/26/beta-release-of-our-configuration-service/</link>
		<comments>http://transitappliance.org/2010/12/26/beta-release-of-our-configuration-service/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 20:12:37 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Configuration Service]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=21</guid>
		<description><![CDATA[I&#8217;m happy to announce that we now have a beta release of our Transit Appliance configuration service available at http://service.config.transitappliance.com/ Currently it only supports TriMet (and Portland Streetcar, since Streetcar is included in the TriMet GTFS file). So you will &#8230; <a href="http://transitappliance.org/2010/12/26/beta-release-of-our-configuration-service/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m happy to announce that we now have a beta release of our Transit Appliance configuration service available at <a href="http://service.config.transitappliance.com/">http://service.config.transitappliance.com/</a></p>
<p>Currently it only supports TriMet (and Portland Streetcar, since Streetcar is included in the TriMet GTFS file). So you will only have a meaningful experience within the TriMet service district.</p>
<p>It is capable of creating both bookmarkable browser configurations and configurations for the Infocast &#8216;appliance&#8217;. Paired with this release we have a new version of the <a href="http://code.google.com/p/transit-appliance-config/downloads/detail?name=infocast-display-1.0.zip&amp;can=2&amp;q=">Infocast boot stick</a> that calls the new service to get its configuration.</p>
<p>As promised, the project has been open sourced (under an Apache 2.0 license) and has a <a href="http://code.google.com/p/transit-appliance-config/">hosting page on Google Code</a>.</p>
<p>Looking forward to feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2010/12/26/beta-release-of-our-configuration-service/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The &#8220;Phone Home&#8221; Pattern and Roles in the Transit Appliance Ecosystem</title>
		<link>http://transitappliance.org/2010/12/04/the-phone-home-pattern-and-roles-in-the-transit-appliance-ecosystem/</link>
		<comments>http://transitappliance.org/2010/12/04/the-phone-home-pattern-and-roles-in-the-transit-appliance-ecosystem/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 20:24:20 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=17</guid>
		<description><![CDATA[The core idea for transit appliances is that they are from a user perspective, very simple devices. Ideally the only control is an on/off switch. To support this and to support deployment at scale, you want a device that can &#8230; <a href="http://transitappliance.org/2010/12/04/the-phone-home-pattern-and-roles-in-the-transit-appliance-ecosystem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The core idea for transit appliances is that they are from a user perspective, very simple devices. Ideally the only control is an on/off switch.</p>
<p>To support this and to support deployment at scale, you want a device that can simply be installed and then remotely configured and managed. This leads to the &#8216;phone home&#8217; pattern &#8211; the idea that when an appliance is powered up, the first thing it does is &#8216;phone home&#8217; to get its configuration information. For our <a href="http://portlandtransport.com/archives/2010/09/169_transit_inf.html">Insignia Infocast</a> prototype this looks like a simple HTTP GET request passing the MAC (ethernet) id of the device as its identifying information. Here&#8217;s a diagram of the interactions that then ensue:</p>
<p><a href="http://transitappliance.org/wp-content/uploads/2010/12/phone-home-pattern.jpg"><img class="aligncenter size-full wp-image-19" title="phone home pattern" src="http://transitappliance.org/wp-content/uploads/2010/12/phone-home-pattern.jpg" alt="" width="960" height="720" /></a>Here&#8217;s the sequence described:</p>
<ul>
<li>The appliance &#8220;phones home&#8221; with a unique id and gets back a URL pointing to a configured application (assumes the full configuration can be described in a URL).</li>
<li>The appliances uses the URL to fetch its &#8220;application&#8221; (an application in this case being an HTML page with Javascript [or conceivably Flash] logic embedded).</li>
<li>The application then issues an ongoing series of AVL queries to the data provider (running for hours, days or even weeks).</li>
</ul>
<p>So who are the parties in this ecosystem?</p>
<ul>
<li>Appliance providers &#8211; provide hardware platforms that can display web pages. These can be viewed as &#8220;web browser kiosks&#8221; at the simplest level (although they do not need to provide user input devices like keyboards and mice or touch screens).</li>
<li>Configuration providers &#8211; provide a user interface via which configurations can be established and maintained specifying what devices use what applications and display what set of arrival information.</li>
<li>Application providers &#8211; provide alternative ways of displaying arrival information for various use cases.</li>
<li>AVL Providers (probably mostly transit agencies) provide access to the actual arrival data.</li>
</ul>
<p>What are the relationships that need to exist in this ecosystem?</p>
<ul>
<li>Appliance providers MUST partner with configuration providers. An appliance has to know where it &#8216;phones home&#8217; to. An agreement must exist that the configuration provider will answer!</li>
<li>Configuration providers must have knowledge of application providers, but don&#8217;t necessarily have to have a formal relationship if the application providers have made their URL configuration formats open and accessible.</li>
<li>Application providers must know how to get AVL data from the data providers.</li>
<li>AVL providers (transit agencies) don&#8217;t have to do anything other that document the interfaces to their data.</li>
</ul>
<p>Obviously a single entity can play more than one role. To take TriMet&#8217;s <a href="http://trimet.org/arrivals/index.htm">Transit Tracker</a> as an example, the user is the appliance provider, using their PC as the appliance and TriMet plays all three other roles: configuration provider (menus to select stop), application provider (display of arrivals) and the AVL provider (populating the arrivals).</p>
<p>It&#8217;s not clear to me yet how roles will break out in the real world, but I can tell you that in trying to bootstrap this ecosystem Portland Transport is going to try to play three roles:</p>
<ol>
<li>Appliance provider &#8211; we&#8217;re going to at least prototype several types of appliances (the Infocast being the first, I also want to get something wall-mounted, probably driven by a cheap PC, out there as a prototype). We may continue to play this role in the Portland region, working to get the hardware widely distributed, but have little ambition to supply the actual appliances outside Portland. We may also find it more effective to identify partner organizations that can do this more efficiently than we can.</li>
<li>Configuration provider &#8211; this is the service we&#8217;re working hardest on at the moment. This feels like an organizing role in the ecosystem, bridging the various other partners. We&#8217;re going to open source all the code involved, so other people could get into this, but it&#8217;s not clear to me why multiple configuration providers are an advantage in the ecosystem, so maybe this is an enduring role.</li>
<li>Application provider &#8211; my hope is that there are many, many of these so we can provide users with lots of alternatives. But we&#8217;ll continue to develop <a href="http://portlandtransport.com/archives/2007/08/transit_board_1.html">Transit Board™</a> as an example in this category. And we may provide software components to make it easy for other people to develop applications.</li>
</ol>
<p>Does this identification of roles and relationships make sense? Who are candidates to fill the various roles? Are there different ways to think about this ecosystem?</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2010/12/04/the-phone-home-pattern-and-roles-in-the-transit-appliance-ecosystem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An Architecture Stack for Javascript Transit Appliances</title>
		<link>http://transitappliance.org/2010/11/26/an-architecture-stack-for-javascript-transit-appliances/</link>
		<comments>http://transitappliance.org/2010/11/26/an-architecture-stack-for-javascript-transit-appliances/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 16:32:46 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=14</guid>
		<description><![CDATA[Currently I&#8217;m aware of two &#8220;browser-based&#8221; transit display applications: Transit Board™ which is a hybrid of server-based and Javascript technology produced by yours truly for Portland Transport, and an as-yet-unreleased pure Javascript application that TriMet is working on. There may &#8230; <a href="http://transitappliance.org/2010/11/26/an-architecture-stack-for-javascript-transit-appliances/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Currently I&#8217;m aware of two &#8220;browser-based&#8221; transit display applications: Transit Board™ which is a hybrid of server-based and Javascript technology produced by yours truly for Portland Transport, and an as-yet-unreleased pure Javascript application that TriMet is working on. There may well be others that I&#8217;m not aware of.</p>
<p>My belief is that the potential for HTML/CSS/Javascript apps in this space with a variety of use-case-specific interfaces is very large, and part of the brief for this site is to make it easier for developers to crank out different UIs. To that end I want to propose an architecture stack that would support easy UI development:<a href="http://transitappliance.org/wp-content/uploads/2010/11/Slide11.jpg"><img class="aligncenter size-full wp-image-16" title="Slide1" src="http://transitappliance.org/wp-content/uploads/2010/11/Slide11.jpg" alt="" width="960" height="720" /></a></p>
<p><a href="http://transitappliance.org/wp-content/uploads/2010/11/Slide1.jpg"><br />
</a>I&#8217;m going to describe these from the center outward. The core data element would be a queue of arrivals, represented in an agency-independent way. Here are some of the data elements I would suggest should make up a common representation of an arrival:</p>
<ul>
<li>Number of seconds until the arrival</li>
<li>Clock time of the arrival</li>
<li>Is the arrival time an estimate based on AVL or a scheduled time?</li>
<li>Route id of arrival (preferably a GTFS route_id)</li>
<li>Location id of arrival (preferably a GTFS stop_id)</li>
<li>Trip id of arrival (e.g., GTFS trip_id)</li>
<li>Direction of arrival (e.g., GTFS direction_id)</li>
<li>Textual information (headsign, e.g., GTFS trip_headsign or trip_short_name) describing routing or destinations</li>
<li>Service alerts associated with this arrival (detours, delays, etc.)</li>
</ul>
<p>The overlap with GTFS is not accidental &#8211; there is obviously a big overlap with the data elements used for scheduling, and I hope that overlap extends into an AVL standard protocol.</p>
<p>This arrivals queue would be populated by one or more agency adapters (consumers of REST services for example). In Portland, to get a complete set of arrivals for some stops, it would be necessary to query the REST services for both TriMet and Nextbus (for Portland Streetcar arrivals). If at some point we have a standardized AVL REST API (the AVL equivalent of GTFS) we could just code one adapter (passing agency endpoints as a parameter), but until then we&#8217;ll need agency adapter modules for each unique REST format.</p>
<p>I&#8217;ll take a moment here to put in a plug for <a href="http://ajaxian.com/archives/jsonp-json-with-padding">JSONP</a> REST services. The Javascript &#8220;same origin&#8221; security policy is a tricky obstacle that generally means that a web interface has to be sourced from the same domain as the REST API is served from. That&#8217;s pretty restrictive! There are two ways around this: proxy servers that route the data through the same domain as the application is served from (but these consume resources that don&#8217;t add any other value) and the use of the JSONP format, which is an exception to the same origin restriction. I&#8217;m very pleased that as a result of a request coming out of the CivicWebs Hackathon event, TriMet added JSONP as a supported format (if you&#8217;re already supporting <a href="http://en.wikipedia.org/wiki/JSON">JSON</a>, JSONP is a pretty easy addition, just a little bit of extra wrapper syntax).</p>
<p>OK, now working in the other direction from the arrivals queue, we could simply have UI developers directly read the arrivals queue (and we should provide this option). But I also think we could make life easier for UI developers (our mission!) by providing some standard services they are likely to want to make use of. Examples I can think of off the top of my head include:</p>
<ul>
<li>Access arrivals sorted by time of arrival</li>
<li>Access arrivals grouped by stop_id</li>
<li>Paging services (e.g., split arrivals display into multiple pages of &#8216;n&#8217; arrivals each)</li>
<li>Refresh interval management</li>
</ul>
<p>I&#8217;m sure there are more. Better if we can code these once with good APIs than to make UI developers re-invent the wheel over and over again.</p>
<p>So what do you think? Is this a reasonable stack? Are there components I&#8217;m missing? Can something be simplified? Other services that should be included in the API?Let me know how you think this can be improved!</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2010/11/26/an-architecture-stack-for-javascript-transit-appliances/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Infocast Pricing, Networking</title>
		<link>http://transitappliance.org/2010/11/26/infocast-pricing-networking/</link>
		<comments>http://transitappliance.org/2010/11/26/infocast-pricing-networking/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 07:17:33 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Chumby/Insignia Infocast]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=11</guid>
		<description><![CDATA[My current favorite hardware platform for Transit Appliances is the Insignia Infocast (8&#8243;). At some point I need to do a post on the characteristics of this device that make it so friendly for this application&#8230; but that&#8217;s for another &#8230; <a href="http://transitappliance.org/2010/11/26/infocast-pricing-networking/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>My current favorite hardware platform for Transit Appliances is the Insignia Infocast (8&#8243;). At some point I need to do a post on the characteristics of this device that make it so friendly for this application&#8230; but that&#8217;s for another day.</p>
<p>On Wednesday, Best Buy&#8217;s web site was showing the pricing as $129.99 (down from $169.99). Black Friday ads today show it at $99.99!</p>
<p>Also, in the process of <a href="http://portlandtransport.com/archives/2010/11/another_transpo_1.html">setting up an Infocast at the Portland Building</a> (home of many of the City of Portland&#8217;s bureaus) I found that the list of <a href="http://www.chumby.com/pages/help_req_ethernet">Ethernet USB Adapters for the Chumby </a>apparently also applies to the Infocast, so in situations where WiFi is not convenient, there are other options.</p>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2010/11/26/infocast-pricing-networking/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Our Mission, Governance and Projects</title>
		<link>http://transitappliance.org/2010/11/21/our-mission-governance-and-projects/</link>
		<comments>http://transitappliance.org/2010/11/21/our-mission-governance-and-projects/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 21:23:20 +0000</pubDate>
		<dc:creator>Chris Smith</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://transitappliance.org/?p=10</guid>
		<description><![CDATA[The purpose of this site is simply to make it easier for &#8220;transit appliances&#8221;, devices that display transit information, to be created and deployed in as many form factors and with as many interfaces as are useful, ranging from &#8220;countertop&#8221; &#8230; <a href="http://transitappliance.org/2010/11/21/our-mission-governance-and-projects/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The purpose of this site is simply to make it easier for &#8220;transit appliances&#8221;, devices that display transit information, to be created and deployed in as many form factors and with as many interfaces as are useful, ranging from &#8220;countertop&#8221; devices like the Insignia Infocast, to flat-screen TVs, to ??? &#8211; the only limit is the imagination. We&#8217;re dedicated to making it easier for people to use transit by making it easier to be aware where and when the bus, or train, is going to show up.</p>
<p>Our proposition is that to do this, if as much of the common infrastructure, from configuration to the mechanics of fetching arrival information in a standard way, can be made an easily available as open source, commodity services, then the bulk of the creativity of the developer community can be applied to devices and display interfaces, where it can have the most impact.</p>
<p>So this site exists as a place to coordinate the development of those commodity services, and as a gathering point for the discussion and development of interfaces.</p>
<p>This site exists under the auspices of Portland Transport, an Oregon 501(c)(3) non-profit corporation that is primarily known for publishing a <a href="http://portlandtransport.com">transportation blog</a>. But our non-profit status allows us to accept grants and tax-deductible contributions that may help further the transit appliance mission. Our immediate aspirations are regional, but we intend to allow our work to be useful in other transit districts where ever possible.</p>
<p>Welcome to the party! There are two projects that are definitely on our agenda:</p>
<ul>
<li>A self-service interface for configuring what transit stops and lines show up on a given appliance (development began at the CivicWebs hack-a-thon and is well under way)</li>
<li>A standardized javascript object for retrieving arrivals from TriMet, so developers can focus on display, not plumbing. Potentially this will have an architecture to support plugins for other agencies.</li>
</ul>
<p>Some other possible projects:</p>
<ul>
<li>Tweaks to the Qt web browser for better startup and better use of screen real estate on the Infocast.</li>
<li>A &#8220;transit appliance&#8221; Linux distro that can be deployed on a USB stick to turn Atom or ARM PC&#8217;s connected to flat screen monitors or TV&#8217;s into out-of-the-box transit appliances.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://transitappliance.org/2010/11/21/our-mission-governance-and-projects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
