<?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>Mike Desjardins&#039; Series of Tubes &#187; wireless</title>
	<atom:link href="http://www.mikedesjardins.net/content/category/wireless/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikedesjardins.net/content</link>
	<description>freelance software developer consultant in portland, maine</description>
	<lastBuildDate>Wed, 02 Feb 2011 00:14:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>External Configuration with JBoss</title>
		<link>http://www.mikedesjardins.net/content/2009/01/external-configuration-with-jboss/</link>
		<comments>http://www.mikedesjardins.net/content/2009/01/external-configuration-with-jboss/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 21:52:49 +0000</pubDate>
		<dc:creator>Mike Desjardins</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://mikedesjardins.us/wordpress/?p=212</guid>
		<description><![CDATA[In a project I&#8217;m currently working on, I need to make some parameters configurable, and they need to be outside the .war file that I&#8217;m deploying. For example, let&#8217;s say I&#8217;m creating a service which reads data from some other RESTful service. And let&#8217;s say that the other RESTful service has two URLs, one for [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-213" title="private-property" src="http://mikedesjardins.us/wordpress/wp-content/uploads/2009/01/private-property-300x225.jpg" alt="private-property" width="300" height="225" />In a project I&#8217;m currently working on, I need to make some parameters configurable, and they need to be outside the .war file that I&#8217;m deploying.  For example, let&#8217;s say I&#8217;m creating a service which reads data from some other RESTful service.  And let&#8217;s say that the other RESTful service has two URLs, one for test and one for production.  I&#8217;d like to be able to deploy my .war, and then edit a file outside of that .war file to configure which URL my service should be using.</p>
<p>My first inclination was to try to do this with a JNDI Environment Entry, so I began researching that approach.  However, while the EJB spec states in 20.2.4 that the container must &#8220;provide a deployment tool that allows the Deployer to set and modify the values of the enterprise bean&#8217;s environment entries&#8221; (thanks for finding that one, <a href="http://www.jboss.com/?module=bb&amp;op=viewtopic&amp;t=58190">ipage</a>), JBoss does not seem to have such a facility.</p>
<p>Soon I started to wonder if JNDI wasn&#8217;t a bit overkill for what I needed to do, anyway.  I didn&#8217;t want to specify my parameters on the command-line; I wanted to simplify deployment and wanted to be able to change these values at runtime without restarting the server. But perhaps a System Property was all I needed.</p>
<p>As it turns out, JBoss has the <a href="http://docs.jboss.org/jbossas/jboss4guide/r3/html/ch10.html">System Properties Management Service</a> for such things.  Here&#8217;s what you need to do:</p>
<ol>
<li>Make sure properties-plugin.jar is in your ${JBOSS_HOME}/server/&lt;server&gt;/lib directory.</li>
<li>Make sure the properties-service.xml is in your deploy directory (you can find a copy in the &#8220;default&#8221; server directory)</li>
<li>You now have two options, either edit the URLList to have a comma-separated list of locations of properties files, or you can specify your properties directly in properties-service.xml in the &lt;attribute name=&#8221;Properties&#8221;&gt; element.</li>
</ol>
<p>Now, to access your property, all you need to do is call the venerable System.getProperty() method.</p>
<p><em>Photo Credit: <a href="http://flickr.com/people/shelleygibb/">Shelley Gibb</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikedesjardins.net/content/2009/01/external-configuration-with-jboss/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Alltel / Verizon Wireless &#8211; Requiem for the A-Side</title>
		<link>http://www.mikedesjardins.net/content/2008/06/alltel-verizon-wireless-requiem-for-a/</link>
		<comments>http://www.mikedesjardins.net/content/2008/06/alltel-verizon-wireless-requiem-for-a/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 17:49:00 +0000</pubDate>
		<dc:creator>Mike Desjardins</dc:creator>
				<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://mikedesjardins.us/wordpress/2008/06/alltel-verizon-wireless-requiem-for-the-a-side/</guid>
		<description><![CDATA[So I guess it&#8217;s official: Verizon Wireless is acquiring rival Alltel Wireless for $28 billion. I had another topic in mind for my next post, but I decided to write about this market consolidation instead. In a former life, I designed and did programming for billing systems for &#8220;tier three&#8221; (i.e., small, regional) wireless carriers. [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mikedesjardins.us/blog/uploaded_images/cell-phone-suit-733567.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://mikedesjardins.us/blog/uploaded_images/cell-phone-suit-733531.jpg" alt="" border="0" /></a>So I guess it&#8217;s official: <a href="http://www.engadget.com/2008/06/05/verizon-alltel-merger-would-form-largest-carrier-in-the-us-by-f/">Verizon Wireless is acquiring rival Alltel Wireless for $28 billion</a>.  I had another topic in mind for my next post, but I decided to write about this market consolidation instead.  </p>
<p>In a former life, I designed and did programming for billing systems for &#8220;tier three&#8221; (i.e., small, regional) wireless carriers.  In many ways, it&#8217;s saddening to see what the mobile carrier landscape has become in the United States.  One of the things that made it fun to work in the industry was the funky, inspired little companies that were created by scrappy hometown entrepreneurs.  It took a certain amount of chutzpah and ingenuity to take on the behemoth teleco&#8217;s, even if it was a small rural corner of East Podunk, U.S.A.</p>
<p>Lots of people worked for the &#8220;Cellular Ones&#8221; of the world.  I met some folks who got pretty wealthy by building medium-sized businesses by taking on the incumbent wireline carrier in their neck of the woods.  These people hailed from small towns like Beckley, West Virginia, or Fort Morgan, Colorado, or Traverse City, Michigan.  A lot of the employees were self-trained and didn&#8217;t have years of experience as Billing Directors or Network Engineers; sometimes it was so-and-so&#8217;s brother-in-law who was appointed to be the &#8220;Switch Tech&#8221; because he was good with electronic stuff.</p>
<p>I believe that these homegrown businesses are good for America.  The people who operate them care about their communities because they see their neighbors every day.  They hire local people to staff their call centers instead of outsourcing to distant continents.  Their leaders do business with their local friends.     These businesses help give their part of the world its own personality.</p>
<p>At one time, I thought that MVNO&#8217;s might fill this void &#8211; I had hoped that they could supplement the market with their own quirky personalities.  But so far, MVNO&#8217;s have failed to gain much traction in the U.S.</p>
<p>I realize that some good things will come from consolidation.  Bigger companies can often roll out better technology  more quickly.  It&#8217;s harder for, e.g., a small time operation in Decatur, Illinois to roll out 3G data services, than it is for a Goliath like AT&amp;T or Verizon Wireless.  But I still mourn the loss of the tier-3&#8242;s; for me, they exemplified the American entrepreneurial spirit.</p>
<p><span style="font-style: italic;">Photo Credit: </span><a style="font-style: italic;" href="http://www.flickr.com/people/kb35/">KB35</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikedesjardins.net/content/2008/06/alltel-verizon-wireless-requiem-for-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amp&#8217;d Mobile, (Almost) One Year Later</title>
		<link>http://www.mikedesjardins.net/content/2008/05/ampd-mobile-almost-one-year-later/</link>
		<comments>http://www.mikedesjardins.net/content/2008/05/ampd-mobile-almost-one-year-later/#comments</comments>
		<pubDate>Wed, 14 May 2008 12:26:00 +0000</pubDate>
		<dc:creator>Mike Desjardins</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://mikedesjardins.us/wordpress/2008/05/ampd-mobile-almost-one-year-later/</guid>
		<description><![CDATA[It&#8217;s been almost a year since Amp&#8217;d Mobile imploded. Amp&#8217;d Mobile was a Mobile Virtual Network Operator (MVNO). This meant that they were a wireless carrier without a network &#8211; instead, they relied on a &#8220;real&#8221; national carrier&#8217;s network (in Amp&#8217;d's case, Verizon&#8217;s) to deliver voice and data services. As one of the software architects [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mikedesjardins.us/blog/uploaded_images/ampdlogo-792920.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 220px; height: 166px;" src="http://mikedesjardins.us/blog/uploaded_images/ampdlogo-792909.jpg" alt="" border="0" /></a>It&#8217;s been almost a year since <a href="http://en.wikipedia.org/wiki/Amp%27d_Mobile">Amp&#8217;d Mobile</a> imploded.  Amp&#8217;d Mobile was a Mobile Virtual Network Operator (MVNO).  This meant that they were a wireless carrier without a network &#8211; instead, they relied on a &#8220;real&#8221; national carrier&#8217;s network (in Amp&#8217;d's case, Verizon&#8217;s) to deliver voice and data services.  As one of the software architects who designed their central integration point and contributed to their billing platform, <span>I had a unique view into it&#8217;s rise and abrupt demise</span>.  I&#8217;ve wanted to write a post about my experience for quite some time now, and I think that enough time has passed that I can safely speak my mind &#8211; both companies are more-or-less defunct at this point.</p>
<p>I should note that all of these opinions are my own &#8211; <span style="font-weight: bold;">I don&#8217;t speak on behalf of BCGI, Amp&#8217;d Mobile, or anybody else</span>.</p>
<p><span style="font-weight: bold;font-size:130%;" >My Role</span><br />Amp&#8217;d Mobile <a href="http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&amp;STORY=/www/story/03-15-2005/0003196252&amp;EDATE=">contracted</a> with my former employer, Boston Communications Group (usually known by its acronym, BCGI).  Among other things, BCGI sold a Postpaid Billing platform called Voyager.  Up until Amp&#8217;d Mobile, <span>Voyager&#8217;s primary market was small, regional wireless carriers</span> with fewer than 100,000 subscribers.  Before Amp&#8217;d, the Voyager product didn&#8217;t contribute much to BCGI&#8217;s bottom line and served more as a product portfolio completer than as a real potential for revenue.  BCGI&#8217;s main focus had instead been on Prepaid Wireless and Payment Services.</p>
<p>My role was primarily to design and create a web service API to Voyager, so that other components in Amp&#8217;d's back office could interact with the billing system.  This not only included billing for voice and content, but also provisioning prepaid and postpaid services on Verizon&#8217;s network, accepting payments, and providing a customer care UI for Amp&#8217;d's call center.  Additionally, I did some testing to gauge how well the system would scale once Amp&#8217;d added the half-million-or-so subscribers that they were projecting they&#8217;d have in their first year.</p>
<p><span style="font-weight: bold;"><span style="font-size:130%;">What Went Well</span><br /><span style="font-weight: bold;"></span></span><span>I really don&#8217;t intend for this post to be an airing of dirty laundry.  Despite the implosion of both companies, there were a few things that went very well.</span><span style="font-weight: bold;"><span style="font-weight: bold;"></span><br /></span>
<ul>
<li>BCGI was a fairly stodgy company for its size, with a heritage in larger telecom and wireless companies like Verizon and EDS.  Having said that, they gave a lot of latitude to the developers involved with this project.  The pace of the development necessitated a more agile approach than BCGI was accustomed to, and <span style="font-weight: bold;">the upper management at BCGI did a good job of trying to accommodate the furious speed at which things needed to be done</span>.  A lot of the normal paperwork and bureaucracy was pushed aside to get things done more quickly, to everyone&#8217;s benefit.</li>
<li>Some of the development work for the project was offshored, with mixed success.  The projects that I&#8217;d consider successes related to components that did real-time provisioning of services with the carrier&#8217;s network elements.  These projects were <span style="font-weight: bold;">small, self-contained, with clear objectives that did require a lot of business domain knowledge</span>.</li>
<li>With a few exceptions, the API scaled quite well.  <span style="font-weight: bold;">We quickly ramped up to support hundreds of thousands of transactions per day</span>. These came handsets, web sites, payment platforms, etc.</li>
<li>Integration between our API and Amp&#8217;d's web components went very well.  <span style="font-weight: bold;">Developers  from geographically dispersed areas </span><span style="font-weight: bold;">used Instant Messaging quite extensively</span> to communicate, and it was a far more productive means of communication than the old &#8220;our developer talks to our project manager who talks to their project manager who talks to their developer&#8221; scheme that seems so pervasive in larger companies.</li>
</ul>
<p><span style="font-size:130%;"><span style="font-weight: bold;">What Didn&#8217;t Go Well</span></span><br />There wouldn&#8217;t be much to write about if there weren&#8217;t a few negatives in the postmortem, right?  So here they are; first, the technical Challenges:
<ul>
<li>Scaling the batch billing processes were more difficult than I anticipated.  When I did my initial testing, I used an existing carrier&#8217;s data, and multiplied their user data gradually to project how quickly we&#8217;d be able to rate call records with larger carriers.  <span style="font-weight: bold;">I didn&#8217;t count on the fact that my source carrier&#8217;s subscribers made far fewer calls per subscriber than Amp&#8217;d's subscribers eventually made</span>.  Amp&#8217;d's market demographic was much younger than the demographic for the source data that I used, and younger subscribers make more calls.  In retrospect, this should have been obvious.</li>
<li>Another scaling difficulty was caused by the manner by which we received call detail records.  Mediation is the process by which you obtain raw call records from a network device, and turn those records into a billable records in your billing system.  For a traditional carrier, this process takes place daily (at an absolute minimum) or more often as necessary.  In Amp&#8217;d's case, we received call records <span style="font-style: italic;">once per month</span>.  This meant that <span style="font-weight: bold;">we needed to process and rate over 50 million call records in a matter of hours</span>, which is no small feat.  It&#8217;s especially difficult when you&#8217;re using a billing system that was designed to mediate only hundreds of thousands of records daily, and bill an order of magnitude fewer records once per month.  We managed to scrape by, but there were some pretty severe growing pains.</li>
<li><span style="font-weight: bold;">We didn&#8217;t adequately anticipate the level of fraud that we encountered</span>.  We were required to make changes to head off fraud problems rather hurriedly, and that led to slapdash implementations that were prone to errors.</li>
<li>The customer care UI was buggy.  I previously did an <a href="http://mikedesjardins.us/blog/2008/03/anatomy-of-project-failure-corporate.html">entire post</a> just about that topic.</li>
</ul>
<p>Of course, there were business-related challenges, too.
<ul>
<li>Most of the executive staff in <span style="font-style: italic;">both </span>companies (Amp&#8217;d and BCGI) had a lot of experience with prepaid environments and mobile content, but <span style="font-weight: bold;">very little experience in postpaid environments</span>.  This was particularly true when Amp&#8217;d Mobile was first getting started.  By the time Amp&#8217;d brought on more seasoned management with post-paid experience, it was already too late.  It&#8217;s important to note that the postpaid business was about three-quarters of Amp&#8217;d's subscriber base.</li>
<li>Because many of the key players came from a prepaid background, the enhancements that were requested for the platform often involved marketing content or prepaid services, instead off addressing fundamental business processes like billing and collections.   BCGI, itself of prepaid pedigree, was happy to oblige. <span style="font-weight: bold;">Thus, the limited development resources were allocated to content, marketing, and prepaid tasks instead of revenue assurance</span>,<span style="font-weight: bold;"> payment, </span><span style="font-weight: bold;">and other postpaid tasks</span>.  Sadly, Voyager had built-in collections modules that were never used by Amp&#8217;d because it was never a priority for them.  If this had been made a priority in the very beginning, Amp&#8217;d might still be in business today.</li>
<li><span style="font-weight: bold;">People still buy handsets with the intention to talk on them, not to purchase media content.</span>  When Amp&#8217;d launched, their voice plans were not competitive, and the rate of adoption was low.  I think the belief was that the content was a compelling enough reason to sell the phone.  However, having a good plan for good old send-to-end voice calls is still critical to attract new subscribers.  Once they adjusted their rate plans for this, net add rates improved significantly.</li>
</ul>
<p><span style="font-size:130%;"><span style="font-weight: bold;">What I Learned</span></span><br />It&#8217;s easy to armchair-quarterback the Amp&#8217;d experience.  I obviously have the benefit of hindsight.  Here are some of the things that I took away from the experience:
<ul>
<li>As I wrote in an earlier post, <a href="http://mikedesjardins.us/blog/2008/03/anatomy-of-project-failure-corporate.html"><span style="font-weight: bold;">business domain knowledge is key</span></a>.  If you&#8217;re entering a new business space, make sure you have an expert on your side who knows what the pitfalls will be, from the very beginning.</li>
<li><span style="font-weight: bold;">Building a national MVNO, particularly one that offers post-paid service, is a lot harder than it sounds.</span>  I think that a lot of people mistakenly believe that the only difficult part of building a nationwide wireless carrier is having the network.  But building the operational staff to support billing, credit, collections, and customer care is a huge undertaking that takes <span style="font-style: italic;">years</span> to get right at traditional carriers.  These critical business processes aren&#8217;t cheap, either, even if you manage to outsource them.  I&#8217;m not sure if an MVNO can be competitive given the cost of using the host network, plus the cost of the back-office processes.</li>
<li><span style="font-weight: bold;">Always plan for fraud.</span>  The bigger you get, the bigger target you become for fraud.  Look at every process as a thief would &#8211; payment, distribution, service delivery, etc.  Everywhere in your system where there is something of value is a target.  Plan for it in advance.</li>
<li><span style="font-weight: bold;">Scalability tests might be less useful than you think they are.</span>  It&#8217;s hard to predict how things will scale, and which APIs or processes will take the hardest beating.  It&#8217;s probably safe to just assume that your processes will need to adapt quickly to cope with increased volume, and to be prepared for it by designing your processes to scale horizontally wherever possible.</li>
<li><span style="font-weight: bold;">I had a blast</span>.  This project was one of the most rewarding experiences I&#8217;ve ever had as a developer, and it&#8217;ll be a long time before I can top it.  I worked with some amazing people at Amp&#8217;d, BCGI, and a lot of Amp&#8217;d's other vendors.  The brainstorming sessions in Amp&#8217;d's amphitheater with the whiteboard is the stuff that developer/architect types love.  I still pine for the good old days when I felt like I was a part of something revolutionary in the wireless space.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mikedesjardins.net/content/2008/05/ampd-mobile-almost-one-year-later/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Mobile Web&#8217;s Death has been Greatly Exaggerated</title>
		<link>http://www.mikedesjardins.net/content/2008/04/the-mobile-webs-death-has-been-greatly/</link>
		<comments>http://www.mikedesjardins.net/content/2008/04/the-mobile-webs-death-has-been-greatly/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 01:42:00 +0000</pubDate>
		<dc:creator>Mike Desjardins</dc:creator>
				<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://mikedesjardins.us/wordpress/2008/04/the-mobile-webs-death-has-been-greatly-exaggerated/</guid>
		<description><![CDATA[A recent blog post by Russell Beattie somberly announced the end of his company, Mowser. According to Mowser&#8217;s about page, Mowser &#8220;mobilizes the web by taking HTML pages normally viewed on a PC and adapts them so they work on a mobile phone.&#8221; In his post, Beattie says that &#8220;I don&#8217;t actually believe in the [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mikedesjardins.us/blog/uploaded_images/193548748_a8b5293268-712714.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://mikedesjardins.us/blog/uploaded_images/193548748_a8b5293268-712677.jpg" alt="" border="0" /></a><a href="http://www.russellbeattie.com/blog/the-end-of-mowser">A recent blog post</a> by Russell Beattie somberly announced the end of his company, <a href="http://www.mowser.com/">Mowser</a>.  According to Mowser&#8217;s about page, Mowser &#8220;mobilizes the web by taking HTML pages normally viewed on a PC and adapts them so they work on a mobile phone.&#8221;  In his post, Beattie says that &#8220;I don&#8217;t actually believe in the &#8220;Mobile Web&#8221; anymore,&#8221; and from that, some people have extrapolated that Beattie is proclaiming that the Mobile Web is Dead.</p>
<p><span style="font-weight: bold;">But Read What He&#8217;s Actually Saying</span><br />If you read further, and ignore the <a href="http://www.readwriteweb.com/archives/is_the_mobile_web_dead.php">provocative headlines</a>, and understand what Beattie is actually saying, he&#8217;s not claiming the Mobile Web is dead at all:<br />
<blockquote>&#8220;I think anyone currently developing sites using XHTML-MP markup, no Javascript, geared towards cellular connections and two inch screens are simply wasting their time [...]&#8220;</p></blockquote>
<p>This is hardly the death of the mobile web (shame on you, <a href="http://www.readwriteweb.com/">ReadWriteWeb</a>!).  All that this means is that the rules of the game have changed.</p>
<p><span style="font-weight: bold;">What &#8220;The Mobile Web&#8221; Used to Be</span><br />What do people mean when they talk about the Mobile Web?  I think the usual context of the question is &#8220;how can we get people to look at our content from their mobile device?&#8221;  In the past, simply presenting one&#8217;s content on the mobile web was a challenge.  Browser technology was abysmal.  CSS and JavaScript were out of the question.  &#8220;Adapted&#8221; sites were developed in the crippled WML markup, or other <a href="http://en.wikipedia.org/wiki/Imode">proprietary formats</a>, which made the browsing experience more reminiscent of using <a href="http://en.wikipedia.org/wiki/Gopher_%28protocol%29">Gopher</a> than a <a href="http://www.operamini.com/">real web browser</a>.  Services like <a href="http://www.mowser.com/">Mowser</a> and <a href="http://www.skweezer.net/">Skweezer</a> were created to adapt the existing, vibrant content into low-fi versions for phones.</p>
<p><span style="font-weight: bold;">What &#8220;The Mobile Web&#8221; Is</span> <span style="font-weight: bold;">Today</span><br />What I took away from Russell Beattie&#8217;s post was that the need for tools like Mowser and Skweezer have been obviated by advances in mobile browser technology.  Does this mean that the mobile web is dead?  Of course not!  And, as far as I can tell, Beattie wasn&#8217;t even claiming that to be the case.  Instead, I think the definition of the mobile web is changing.</p>
<p>The internet is comprised of three types of pages (behold my amazing <a href="http://www.omnigroup.com/applications/omnigraffle/pro/">OmniGraffle</a> skills):</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mikedesjardins.us/blog/uploaded_images/mobile-web-715962.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://mikedesjardins.us/blog/uploaded_images/mobile-web-715956.png" alt="" border="0" /></a>There are sites that are intended for viewing on a stationary computer, and sites that are intended for viewing on a mobile device.  There is also a huge overlap of pages that work well for both contexts.  This is because the barrier of<span style="font-style: italic;"> how to present</span> data on a mobile device, which was initially a barrier, has been mostly overcome.</p>
<p>Examples of using sites in the &#8220;purple zone&#8221; on a mobile device might be
<ul>
<li>Wikipedia &#8211; looking up a bit of trivia when among friends at a coffee shop (got this one from Tichy on <a href="http://news.ycombinator.com/">News.YC</a>&#8230; thanks, Tichy!)</li>
<li>IMDB &#8211; looking up who the did the voice in the Pixar film that you just saw with your kids.</li>
<li>Google Maps &#8211; Wandering around in Chicago, and you want to know, what the heck is that building?</li>
</ul>
<p>It&#8217;s perhaps the most difficult to define sites in the &#8220;red&#8221; PC-Only area.  I can think of a few:
<ul>
<li>Items requiring intensive keyboard work, like <a href="http://writer.zoho.com/jsp/home.jsp?serviceurl=%2Findex.do">word processing</a> or <a href="http://www.blogger.com/">blogging</a>.</li>
<li>Anything involving heavy graphics, such as online games (and pornographic sites?  Perhaps I&#8217;m just old-fashioned)</li>
<li>Number-crunching or mathematical modelling and simulations.</li>
</ul>
<p><span style="font-weight: bold;">Where Does This Leave the Mobile Web?</span><br />So, what is left in the light blue section?  It has to do with context.  What does someone with a mobile device look at, that a person browsing from a PC or laptop does not?  What makes a mobile device unique?  Well, <span style="font-style: italic;">duh</span>, it&#8217;s mobility!</p>
<p>For years people have been prophecizing the coming of Location Based Services.  I think that this area has lots of potential.  Companies like <a href="https://loopt.com/loopt/sess/index.aspx">Loopt</a> have married social services with location awareness to create a compelling product that started out on Boost and Sprint, and it is supposedly coming to other carriers soon.  Similarly, <a href="http://www.meetro.com/">Meetro</a> combines location and Instant Messaging.  There are companies who produce audio tours which are location-aware.  Fleet management services are exploring the mobile web for business opportunities.  It&#8217;s not hard to imagine that the next killer app is waiting to be discovered in this space, making our iPhones indispensible.  Mobile devices have now advanced to the point where it&#8217;s Location-Based Services turn to shine.</p>
<p><span style="font-weight: bold;">The New Mobile Web</span><br />The key is context.  What do people need from the web when they&#8217;re using a mobile device?  What do you think?</p>
<p>Graveyard Photo Credit: <a href="http://www.flickr.com/photos/qole/">Qole Pejorian</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikedesjardins.net/content/2008/04/the-mobile-webs-death-has-been-greatly/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Anatomy of a Project Failure: Corporate Culture and Lessons Learned</title>
		<link>http://www.mikedesjardins.net/content/2008/03/anatomy-of-project-failure-corporate/</link>
		<comments>http://www.mikedesjardins.net/content/2008/03/anatomy-of-project-failure-corporate/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 11:12:00 +0000</pubDate>
		<dc:creator>Mike Desjardins</dc:creator>
				<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://mikedesjardins.us/wordpress/2008/03/anatomy-of-a-project-failure-corporate-culture-and-lessons-learned/</guid>
		<description><![CDATA[When a big new project lands in a company&#8217;s lap, the instincts of upper management, while well intentioned, are usually to go with people and paradigms that have worked in the past.The culture of my former employer was forced to change suddenly to support new business, and it ultimately resulted in failure. I&#8217;ve had several [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold;"></span>When a big new project lands in a company&#8217;s lap, the instincts of upper management, while well intentioned, are usually to go with people and paradigms that have worked in the past.<br />The culture of my former employer was forced to change suddenly to support new business, and it ultimately resulted in failure.  I&#8217;ve had several months now to think about what happened.  In retrospect, a lot of it could have been avoided if the company&#8217;s leaders had ignored their instincts, and been daring enough to rely more on different people with the right expertise.</p>
<p>This is more long-winded than most of my posts, so those with short attention spans should probably turn back now!</p>
<p><span style="font-weight: bold;">Background</span><br />I started working for a small company (fewer than 20 employees) in 2000 that provided billing services to small, rural wireless carriers in the United States.  That company eventually grew to about sixty employees and was acquired by another medium-sized company about three years later.  The new company provided other services to wireless companies, but lacked a post-paid billing platform.  It seemed like a perfect fit.  The smaller billing company would become a satellite office for the corporate mothership.</p>
<p><span style="font-weight: bold;">A Corporate Culture Shift</span><br />In the past, the team working on the billing system had been allowed a lot of latitude to work independently from the corporate mothership. However, this was a high-profile project with a large national carrier, so the company decided to bring in a lot of its leadership&#8217;s &#8220;big guns,&#8221; who had experience with large carriers.  Unfortunately, they had little or no experience in the business domain, namely post-paid wireless billing.</p>
<p>Unlike the small team that had managed the product in the past, the new folks had little sense of what the carrier&#8217;s priorities <span style="font-style: italic;">should</span> be.  This new team included client relations representatives, many of the project managers, and even a majority of the technical team.  The people who had dutifully supported the small billing program for so many years would continue to work in &#8220;maintenance mode&#8221; on the existing platform for the existing rural clients.  The implication was clear &#8211; they&#8217;d been relegated to the &#8220;less important&#8221; clients.</p>
<p><span style="font-weight: bold;">The User Interface</span><br />The billing system had a user interface which allowed representatives at the customer call centers to change things for the subscriber in real time &#8211; things like rate plans, billing addresses, automatic payment, allowed managers to configure their own rate plans and user privileges and roles, and it even had an integrated Point-of-Sale system.</p>
<p>The system was &#8220;good enough,&#8221; but barely.  Unfortunately, it was written using a poorly supported, obscure 4/GL whose scalability was in doubt.  Deploying it at carrier sites also created some sketchy security issues.  We had been meaning to re-write it for a long time, but didn&#8217;t have the resources to do so.  It wasn&#8217;t going to be good enough for our new client.<br /><span style="font-weight: bold;"></span><br /><span style="font-weight: bold;">Offshoring to the Rescue</span><br />At about that time, the parent company acquired another company in India that processed payments for wireless carriers.  Suddenly we had nearly limitless programming resources at our disposal.  All we&#8217;d need to do is mock up some new screens, write a few specs, and send the work to our new development staff.  We&#8217;d &#8220;keep a close eye&#8221; on their progress, strip the functionality down to the bare necessities, and we&#8217;d have a re-vamped UI in a matter of months.  As an added bonus, the new programmers already knew Java, so we wouldn&#8217;t need to re-train any of the existing workforce to get started.</p>
<p>The first thing the new leadership did was to consult with a UI expert to do the mockups &#8211; one that (of course) had no experience with the product or with wireless carriers.  She was mentored by a product manager who had very little experience with post-paid billing.</p>
<p>Fortunately for me, I got to work on a SOAP-based API for the product to integrate with the other elements of the back-end.  I saw the train wreck coming with the UI project, and I managed to avoid it.  I worked quite independently with another contractor based near the corporate mothership.</p>
<p><span style="font-weight: bold;">Reviewing the Mockup</span><br />The first thing we did was review the new UI mockups.  The new leadership had the right idea, and decided that it might be a good to include some people familiar with the &#8220;legacy&#8221; system in the review. The legacy team was horrified.  The new application looked completely dysfunctional.  Naturally, the &#8220;new team&#8221; got defensive and insisted that the crufty old-timers were thinking too much in the past, that this was the future. Their comments fell on deaf ears.  They weren&#8217;t invited to participate any more.</p>
<p><span style="font-weight: bold;">Developing the UI</span><br />So here&#8217;s how development worked:  The company hired some brand-new Java superstar contractors to work in their corporate office to &#8220;oversee&#8221; the development effort.  The contractors were great Java programmers, but they had literally zero business domain knowledge.  Every morning, they would get onto a conference call with India to review the previous night&#8217;s work and discuss the next day&#8217;s priorities.</p>
<p>Nobody on the project knew if they were doing it right.  There was no connection between the back-end and the wireframes.  They started consulting me with business-related questions, and I helped out where I could, but that ended up being like the game of telephone that you play in grade school &#8211; things are lost when they are translated three times over, and communicated over a garbled conference call and IM.  The rest of the legacy team was too busy supporting the existing customers to help answer questions.</p>
<p>So domain knowledge continued to drip very slowly from wherever it could, over to the mothership, and finally to India.  Too slowly.  They began to sit idly on a UI that, because it followed the mockups religiously, was fairly unusable.</p>
<p>Eventually, the developers on the other side of the ocean started to get fed up, and were leaving the company.  I couldn&#8217;t blame them, and the fact that there are so many jobs available in that market made it easy for them to leave.  What little domain knowledge had been built up was constantly fading away. They began hiring furiously, which compounded the problem further.</p>
<p>I heard complaints from the superstar contractors that the quality of the work was a bit sketchy.  I imagine that the quality of the work must have worsened as the rate of turnover increased.  We started bringing on extra contractors stateside to help out.  Have you ever read Brooks&#8217; <span style="font-style: italic;">The Mythical Man Month</span>?  Yeah, he knew what he was talking about.  Adding developers to a late project makes it later.</p>
<p>One night I was visiting the mothership, as I had to do almost weekly to keep up with the latest news on the project (it was about an hour-long drive from our satellite office).  We were weeks away from the launch date.  The lead UI developer called me into his cubicle and asked if I could spare a few minutes.  We started reviewing the UI, and he began asking me how to wire up the pages with the back-end.  We looked at page after page and I told him &#8220;you can&#8217;t do that &#8211; it doesn&#8217;t make sense,&#8221; or &#8220;we have no feature like that, I don&#8217;t know what it is supposed to mean.&#8221;</p>
<p>We were supposed to use my SOAP API to do the business logic, but they had laid none of the groundwork for it.  The programmers were pretty good at calling stored procedures.  So, on page after page, I told him I&#8217;d write a stored procedure to do the work.  Add a rate plan?  I&#8217;ll throw together a procedure.  View the customer detail?  Yup, that too.  We started eliminating unnecessary pages, buttons, and fields left and right.</p>
<p>The next day I started hacking frantically on a raft of stored procedures that did most of the back-end logic for the UI, and I did a pretty mediocre job.   I was in a hurried marathon session, and I like to believe that I did the best that I could given the circumstances, but at that point it was definitely all about volume, not quality.  Work on the API was pretty much halted, but it was nearly finished anyways.  Soon it was time to start training the call center.</p>
<p><span style="font-weight: bold;">Was the Customer Happy?</span><br />Fortunately, the client had problems of their own with ramping up.  Their operations people were initially satisfied with the product because they had very little experience in the business domain, either.  But it didn&#8217;t last.</p>
<p>As time went on, and more experienced management was hired by the carrier, they became incredulous that the UI couldn&#8217;t perform the simplest of tasks that competitor&#8217;s systems could.  They were frustrated that it was so buggy.  However, the crappy Customer Care UI ended up being the least of the carrier&#8217;s problems &#8211; that story is for another day.  Eventually, both companies more-or-less crashed and burned, which is why I hope it&#8217;s safe to share this story with you now.</p>
<p><span style="font-weight: bold;">Takeaways and Lessons that I Learned</span><br />So, here are the things that I can impart based on what happened to this project:
<ul>
<li><span style="font-weight: bold;">Domain Knowledge is king. </span> Programmers are a tenacious bunch, and we can learn technology fairly well.  Years of insight from business relationships can&#8217;t be learned overnight.  The mothership had the roles reversed &#8211; the big guns with experience with big carriers should have been mentoring the employees with the domain knowledge, instead of the other way around.</li>
<li><span style="font-weight: bold;">Working with people half a world away is hard.</span>  I don&#8217;t think that it had anything to do with the fact that the offshore programmers were in India.  I think it would have been just as difficult if they had been Canadian or Australian or any other English-speaking country.  India has plenty of talented programmers. But sharing domain knowledge becomes even harder over conference calls, Skype, and IM.  When developing an application in a short timespan, you need to be able to holler questions over the cubicle wall, or grab a whiteboard on a moment&#8217;s notice, which isn&#8217;t an option when offshoring.  I&#8217;m sure the Indian team was just as frustrated as we were.  I know that there are companies out there who have been successful at this, but it&#8217;s difficult to pull off, and our company didn&#8217;t manage to do it.  There are probably tools out there to make this easier &#8211; do you know of any that you can recommend?</li>
<li><span style="font-weight: bold;">The User Interface is the Face of the Application.</span>  Your UI probably needs the most attention, and probably gets the least.  Your client&#8217;s perception of the quality of your product and engineering is largely based on what they see.  Our billing back-end was quite sophisticated and managed to scale well enough, but the client didn&#8217;t see that.  They saw the crummy exception messages and the things that they couldn&#8217;t do from the interface.  You can often fake the back-end for a while by throwing more people and process at fixing problems &#8211; you can&#8217;t easily fake quality in your UI.  To the client, our whole product was crap because the quality of the UI was poor, and this should be obvious to everyone.  Have you ever worked with a pathetic UI, and concluded that the company did a shoddy job of engineering?</li>
</ul>
<p>Phew!  What a long post.  Thanks for sticking it out and reading the whole thing.  I&#8217;d be interested in hearing if anyone else has gone through a similar situation, and their company found ways to overcome the knowledge gap.  Have you been in an acquisition where your formerly tightknit team had to integrate and ramp up within a new corporate culture?  How&#8217;d you get through it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikedesjardins.net/content/2008/03/anatomy-of-project-failure-corporate/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

