<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.5 (http://www.squarespace.com/) on Sat, 31 Jul 2010 07:18:07 GMT--><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/"><rss:channel rdf:about="http://vermorel.com/journal/"><rss:title>Joannes Vermorel's blog</rss:title><rss:link>http://vermorel.com/journal/</rss:link><rss:description>Cloud computing, machine learning and startups</rss:description><dc:language>en-US</dc:language><dc:date>2010-07-31T07:18:07Z</dc:date><admin:generatorAgent rdf:resource="http://www.squarespace.com/">Squarespace Site Server v5.11.5 (http://www.squarespace.com/)</admin:generatorAgent><rss:items><rdf:Seq><rdf:li rdf:resource="http://vermorel.com/journal/2010/7/27/wish-list-for-relenta-crm.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/7/10/top-10-cloud-computing-predictions.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/6/23/big-award-for-a-tiny-company-lokad.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/6/15/strategies-logistique-event-in-paris.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/5/26/meeting-eric-rudder-senior-vice-president-microsoft.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/5/15/really-simple-monitoring.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/4/28/sqwarea-open-source-game-on-windows-azure.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/4/17/stack-exchange-20-epic-fail.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/4/9/net-profiler-for-windows-azure.html"/><rdf:li rdf:resource="http://vermorel.com/journal/2010/3/22/thinking-an-academic-package-for-azure.html"/></rdf:Seq></rss:items></rss:channel><rss:item rdf:about="http://vermorel.com/journal/2010/7/27/wish-list-for-relenta-crm.html"><rss:title>Wish list for Relenta CRM</rss:title><rss:link>http://vermorel.com/journal/2010/7/27/wish-list-for-relenta-crm.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-07-27T08:25:53Z</dc:date><dc:subject>Lokad crm uISV</dc:subject><content:encoded><![CDATA[<p>At Lokad, we have using the <a href="http://www.relenta.com/">Relenta CRM</a> for nearly two years. It's an excellent lean CRM that comes with <strong>a core focus on emails </strong>which happen to represent about 90% of our interactions with clients and prospects.If you happen to be an ISV, Relenta is worth having a closer look.</p>
<p>Although, I have been missing a few key features in Relenta for a long time. Hence, I taking the time here to post my wish list for Relenta.</p>
<h3>1. Accounts</h3>
<p>Relenta only deals with <em>Contacts</em> yet, when prospecting larger companies, many contacts are typically involved. It would be much nicer if it was possible to create <em>1-to-many</em> relationships between <em>Accounts</em> and <em>Contacts</em>. In particular, this would let the Relenta user browse at a glance all the latest interactions related to a particular account, instead of jumping from one contact to the next.</p>
<h3>2. Recent updates</h3>
<p>One of the feature that I like the most in wikis are their abilities to display the <em>recent changes</em>. Through <em>recent change</em>, you can gain immediate insights in what other people are doing, without having to bother to actually ask them.</p>
<p>Presently, there is no way to easily figure out who has been doing what in Relenta.&nbsp; It would much nicer if a stream of <em>recent updates</em> was available for browsing. In particular, display could be made more or less compact by aggregating updates per contact (or per account). Eventually, the stream could even be made available as RSS.</p>
<h3>3. Activity capture API</h3>
<p>The Lead Capture API of Relenta is a killer feature due to its simplicity. For an ISV, it's a super simple way to collect all trial registrations that keeps flowing through our online apps with extremely limited integration grunt-work.</p>
<p>Yet, although it's very simple to automate the <em>Contact</em> creation in Relenta, it's not possible to automate the insertion of <em>Activities</em> later on the very same contact. This feature would be extremely handy to automatically report payments, or any kind of noticable activities (in the case of Lokad that would be large forecasts retrieval for example).</p>
<h3>4. Refined tagging</h3>
<p>Tagging is one of the best idea of the <em>Web 2.0 wave</em>. It's a great way to organize complex yet little structured content.</p>
<p>Relenta already provide a minimal tagging system, yet there is no tag auto-completion (killer feature) and it's not possible to search against multiple tags. Pushing a bit more work on tags would be a great move forward to make the most of them.</p>
<h3>5. iCalendar support</h3>
<p><a href="http://en.wikipedia.org/wiki/ICalendar">iCalendar</a> is a very nice and popular format to send meeting request. Presently, Relenta does not support .ics attachments and meeting requests appears as completely garbled. It would be really nice if Relenta was support iCalendar with the possibility to acknowledge meeting requests.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/7/10/top-10-cloud-computing-predictions.html"><rss:title>Top 10 cloud computing predictions</rss:title><rss:link>http://vermorel.com/journal/2010/7/10/top-10-cloud-computing-predictions.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-07-10T13:18:11Z</dc:date><dc:subject>Cloud Computing cloudcomputing predictions</dc:subject><content:encoded><![CDATA[<p>The <a href="http://digitalwpc.com/">Microsoft World Partner Conference 2010</a> is due to begin next Monday, and it's clear that Windows Azure is going to be one of the product that will get the most attention this year.<br /><br />Over the last 2 years, I have attended and even took part to many cloud computing talks, and I am hearing <strong>tons of very confused opinions on cloud computing</strong>, and even more concerning the future of cloud computing. Hence, here are <strong>my top 10 cloud computing predictions</strong> for the next 5 years.<br /><br /></p>
<h3>1) Cloud will become mainstream in enterprise adoptions</h3>
<p>Cloud computing is already mainstream in consumer markets. Amazon, Google, Yahoo, Microsoft, ... all of them are running on top of their own clouds. If you're using a web search engine, then <strong>you're using the cloud already</strong>. In the next 5 years, I expect the cloud to become the mainstream <em>adoption</em> pattern. I am NOT saying that the cloud will dominate the enterprise in just 5 years from now, I am saying that <strong>it will dominate setups and upgrades</strong>. It might take one or two decades to progressively move away from strict on-premise solutions.</p>
<h3>2) ISVs will vastly dominate the overall cloud consumption</h3>
<p>Yet, the migration toward the cloud will be implicit. Indeed, <strong>enterprises care little about cloud computing itself</strong>, they will buy SaaS solutions not raw processing power. The vast majority of those SaaS solutions will be powered by public clouds, but for non-IT companies this fact will be irrelevant. The economical forces will drive ISVs toward the cloud, which will vastly dominate the overall cloud consumption. Single-tenant apps have very hard time competing with the low management  costs of multi-tenant apps. Nothing will actually prevent companies to buy raw cloud processing power, but I expect this behavior to be marginalized as the SaaS ecosystem grows.</p>
<h3>3) Private clouds are nonexistent and will remain marginal</h3>
<p>We keep hearing about <em>private clouds</em>, yet, if we exclude the few private clouds designed by internet consumer leaders (eBay, Yahoo, Facebook, Yandex, ...) that have not been turned into public clouds, there is NOTHING even close to a <em>private cloud</em> at present day on the market. The only product that would start looking like a private cloud is <a href="http://www.eucalyptus.com/">Eucaliptus</a>, but it's still lightyears away from global solutions build on top of containerized data-centers that public clouds represent. <strong>The skills and the costs required to operate a cloud are steep</strong>, I can't figure out why would companies go for private clouds. Some will argue that <em>control</em> is of utmost importance, but shareholders might not agree when they will realize that a small cloud costs millions upfront, and millions for ongoing management. Although, <strong>companies with ad-hoc data centers will keep improving them</strong>, probably importing best practices established by major cloud hosters, but that's it. Yet, those <em>improved</em> data centers will still be extremely far feature-wise, reliability-wise, security-wise from public clouds.</p>
<h3>4) Hybrid clouds are fantasy and will remain fantasy</h3>
<p>Another myth I keep hearing about is the idea of hybrid clouds: <em>you have your own private cloud, and when you lack capacity, you rent some extra from a public cloud</em>. <strong>Although the idea is fascinating, IMHO, it's vastly impractical</strong>. Designing a true auto-scalable app on top of a cloud - any cloud - is already quite hard. Clouds are easing the scale-out process by offering some very normalized environments, but scaling-out remains a challenge, especially for enterprise apps. Offloading processing power into some heterogeneous computing environment is bad idea, software complexity would skyrocket, and it will fail like grid computing failed before. What was a nice idea in <em>theory</em> was just way to difficult to be routinely implemented. Although, please note I am not stating that hybrid clouds are <em>impossible</em>; I am just stating that it's very unwise, and that complexity will comes back as punishment.</p>
<h3>5) Cloud mashups will be the dominant pattern</h3>
<p>I expect SaaS mashups to become the dominant pattern in enterprise environments - for consumer environments, it's already the case. <strong>Companies and people alike will combine the apps they want most, irrespective of the underlying clouds</strong>. As a results, scenarios where a single company adopts Salesforce for the CRM, Microsoft BPOS for the collaborative suite and Netsuite for the ERP are likely. Obviously, those mashups will requires very capable integration tools, which will also be offered on the cloud. RunMyProcess would be a good example of such tools.</p>
<h3>6) Self-hosted servers will be considered as liability</h3>
<p>Some people consider <strong>self-hosted servers as more secure</strong> than remote or cloud-hosted solutions. As far I can tell, 99.99% of the time, <strong>this appears to be complete fallacy</strong>. Securing a computing environment takes skills that even my bank (a very large international bank) is obviously lacking. The situation is worse in nearly all non-IT companies I have investigated while running <a href="http://www.lokad.com/">Lokad</a>. Some companies happen to be very confident in their IT security, but most of time, <strong>it's just over-confidence</strong>, with no tangible processes to support this confidence. As cloud computing grows more mature, I expect the community consensus to gradually converge toward the opinion that <em>unless proven otherwise</em>, any self-hosted server should be considered as an IT liability.</p>
<h3>7) No1 cloud issue will stay the lack of qualified manpower</h3>
<p>Media, influencers, integrators, and cloud providers keep discussing the relative strengths and weaknesses of the cloud, but there is <strong>one issue that dwarf all others</strong>, and yet, this issue is barely mentioned: <strong>the extreme lack of talented workforces to develop in the cloud</strong>. Not believing me? Just try to hire any experienced cloud computing software architect. Hiring good developers is already extremely hard, hiring good developers who happen to have skills and experience in large scale distributed systems is only harder.</p>
<h3>8) Fine-grained geolocation will be the No1 entry barrier</h3>
<p>Two years ago I was stating that <a href="http://vermorel.com/journal/2008/11/11/cloud-computing-a-personal-review-about-azure-amazon-google.html">cloud computing was an arena for big players</a>. I still believe this isn't going to change. In particular, <strong>geolocation capabilities</strong> - aka the possibility to bring the computing resources close to the end-user - <strong>are already exponentially increasing the entry costs in the cloud market</strong>. Closer data-centers will mean lower latencies, and smoother UI behaviors for cloud-hosted apps. Ultra-responsive UI are so much more enjoyable that it's little wonder than Google recently started to add <a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html">website speed</a> as an extra criterion for their website ranking. In 5 years, clouds will no more be expected to have half a dozen of worldwide locations (Windows Azure has 6 locations at the moment), but dozens, with <strong>a data-center close to every major megalopolis</strong>. Considering that each data center costs more than a few hundred millions USD, entering the cloud market will be just impossible for anyone but the largest IT companies of the planet.</p>
<h3>9) Cloud computing is not going to kill desktop apps</h3>
<p>Some believe that the cloud is going to kill desktop apps. <strong>I don't</strong>. I believe that all software areas will be growing (cloud / desktop / embedded / games, ...). There will be <strong>more desktop apps in 5 years</strong> from now, and <strong>WAY much more cloud apps</strong>. Although cloud computing will shift the purpose and the value of desktop apps. The AppStore is a good example of the strong interactions that are likely to exist between non-web apps and the cloud: apps are available on the cloud at any time, typically interact with the cloud, and bring a top user experience that would be very hard to deliver otherwise. And no I don't think that <em>World of Warcraft</em> is going to run on HTML 5 any time soon.</p>
<h3>10) Dev stacks are going to develop their cloud affinity</h3>
<p>The software world is basically divided between a hand-few development stacks: Microsoft/.NET, Linux/LAMP, Oracle/Java, ... <strong>I expect each stack to develop some growing affinity with one public cloud in particular</strong>. The .NET world as already a very natural orientation toward Windows Azure. Linux-based solutions will keep moving forward with Amazon, eventually Rackspace. As Google is expending the coverage of its App Engine, I expect more development Java/Python tools to be released - basically the ones internally developed and used at Google. Some are dreaming about <em>cloud interoperability</em>, but considering the pace of change in the cloud computing world, I don't see that happening in the next 5 years.</p>
<p><em>What are your predictions for the cloud in the next 5 years?</em></p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/6/23/big-award-for-a-tiny-company-lokad.html"><rss:title>BIG award for a TINY company (Lokad)</rss:title><rss:link>http://vermorel.com/journal/2010/6/23/big-award-for-a-tiny-company-lokad.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-06-23T13:13:37Z</dc:date><dc:subject>Lokad azure</dc:subject><content:encoded><![CDATA[<p>Lokad just won the <a href="http://blog.lokad.com/journal/2010/6/23/honored-by-the-windows-azure-partner-award-of-2010.html">Windows Azure Partner award of 2010</a>. That's an extremely big award for an exceptionally small company. The last French company to get such as an award was no less than Dassault Syst&egrave;mes, the largest software company in France. I am proud of the work done by the <a href="http://www.lokad.com/AboutUs.ashx">Lokad team</a>.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/6/15/strategies-logistique-event-in-paris.html"><rss:title>Strategies Logistique event in Paris</rss:title><rss:link>http://vermorel.com/journal/2010/6/15/strategies-logistique-event-in-paris.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-06-15T11:31:02Z</dc:date><dc:subject>Lokad supply chain</dc:subject><content:encoded><![CDATA[<p>I have been giving a talk at the <a href="http://www.strategielogistique.com/rencontres-experts-la-prevision,2960"><em>Strategies Logistique</em> event</a> in Paris last week about cloud computing, supply chain and Lokad. Beyond forecasting, I believe that supply chain will be one of the entreprise area that will benefit the most in the next decade of the migration toward the cloud.</p>
<p><span class="full-image-float-left ssNonEditable"><span><a href="http://www.flickr.com/photos/38737012@N04/4688643660/in/set-72157624121318451/"><img src="http://farm5.static.flickr.com/4063/4688643660_04533b0ca9_m_d.jpg?__SQUARESPACE_CACHEVERSION=1276601046408" alt="" /></a></span></span></p>
<p><span class="full-image-inline ssNonEditable"><span><a href="http://www.flickr.com/photos/38737012@N04/4687946155/in/set-72157624121318451/"><img src="http://farm5.static.flickr.com/4015/4687946155_976f652a48_m_d.jpg?__SQUARESPACE_CACHEVERSION=1276601014478" alt="" /></a></span></span>&nbsp; <span class="full-image-inline ssNonEditable"><span><a href="http://www.flickr.com/photos/38737012@N04/4687990531/in/set-72157624121318451/"><img src="http://farm5.static.flickr.com/4005/4687990531_d83fabb774_m_d.jpg?__SQUARESPACE_CACHEVERSION=1276600998353" alt="" /></a></span></span>&nbsp;</p>
<p>More <a href="http://www.flickr.com/photos/38737012@N04/sets/72157624121318451/">pictures</a>. Special thanks to <a href="http://www.strategieslogistique.com/gilles-solard,2">Gilles Solard</a> for the smooth organization of this great event.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/5/26/meeting-eric-rudder-senior-vice-president-microsoft.html"><rss:title>Meeting Eric Rudder, Senior Vice-President, Microsoft</rss:title><rss:link>http://vermorel.com/journal/2010/5/26/meeting-eric-rudder-senior-vice-president-microsoft.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-05-26T17:14:30Z</dc:date><dc:subject>Software Engineering azure microsoft</dc:subject><content:encoded><![CDATA[<p>Yesterday, I had the chance to meet <a href="http://www.microsoft.com/presspass/exec/ericr/">Eric Rudder</a>, Senior Vice President at Microsoft for nearly 1h30, along with three of my students who actively contributed to the <a href="http://vermorel.com/journal/2010/4/28/sqwarea-open-source-game-on-windows-azure.html">Sqwarea</a> project, an open source C# game designed for Windows Azure.</p>
<p>Eric proposed internships at MS Research after about 45min of discussion (<em>really nice since CS students are expected to make a research internship in the US in their 2nd year at the ENS</em>).</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://vermorel.com/storage/meeting-eric-rudder-20100525.jpg?__SQUARESPACE_CACHEVERSION=1274894100532" alt="" /></span></span></p>
<p>(From left to right: Joannes Vermorel, Ludovic Patey, Robin Morisset, Eric Rudder, Fabrice Ben Hamouda)</p>
<p><em>Special thanks to Thomas Serval and Pierre-Louis Xech who made this meeting possible in the first place.</em></p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/5/15/really-simple-monitoring.html"><rss:title>Really Simple Monitoring</rss:title><rss:link>http://vermorel.com/journal/2010/5/15/really-simple-monitoring.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-05-15T10:12:13Z</dc:date><dc:subject>Cloud Computing cloudcomputing monitoring</dc:subject><content:encoded><![CDATA[<p>Moving toward cloud computing relieves from (most) hardware downtime worries, yet, cloud computing is no magic pill that garanties that every single of our apps is ready to serve users as expected.</p>
<p>You need a <strong>monitoring system</strong> to achieve this. In particular, OS uptime and simple HTTP responsiveness is only scratching the surface as far monitoring is concerned.</p>
<p>In order to go beyond plain uptime monitoring, Lokad has started a new Windows Azure open source project named <a href="http://code.google.com/p/lokad-monitoring/">Lokad.Monitoring</a>. The project comes with several tenants:</p>
<ul>
<li>A monitoring philosophy,</li>
<li>A XML format, the <em>Really Simply Monitoring</em> (shamelessly inspired by RSS),</li>
<li>A web client for Windows Azure</li>
</ul>
<p>Beta is version is already in production. Check <a href="http://code.google.com/p/lokad-monitoring/wiki/Introduction">project introduction</a> page.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/4/28/sqwarea-open-source-game-on-windows-azure.html"><rss:title>Sqwarea, open source game on Windows Azure</rss:title><rss:link>http://vermorel.com/journal/2010/4/28/sqwarea-open-source-game-on-windows-azure.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-04-28T15:21:55Z</dc:date><dc:subject>.NET Cloud Computing ENS Software Engineering azure cloudcomputing teaching</dc:subject><content:encoded><![CDATA[<p>Beyond running a small software company, I am also responsible for the <a href="http://diplome.di.ens.fr/eng/SoftwareEngineeringAndDi.html">Sofware Engineering and Distributed Computing course</a> at the ENS Paris. For the fourth year in a row, Microsoft offered gracious support for this course (include some <a href="http://vermorel.com/journal/2010/3/22/thinking-an-academic-package-for-azure.html">Windows Azure resources</a>).</p>
<p>Every year, a small dozen of 1st year Computer Science students take over a sofware project. Last year, my students produced <a href="http://cloudster.sourceforge.net/">Clouster</a>, a scalable clustering algorithm on top of Windows Azure. It was already significant achievement considering the beta status of Windows Azure at the time (student upgraded <strong>twice</strong> from a SKD version to another during the time of the course).</p>
<p style="text-align: center;"><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fsqwarea-large.png%3F__SQUARESPACE_CACHEVERSION%3D1272465944933',812,1326);"><img src="http://vermorel.com/storage/thumbnails/5041097-6720829-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1272465944935" alt="" /></a></span></span></p>
<p>This year, my students went (*) for an <strong>online massively multiplayer strategy game</strong> named <a href="http://www.sqwarea.com/">Sqwarea</a> (heavy contraction of <em>square+war+area</em>).</p>
<blockquote>
<p>You are a King battling over a gigantic map to conquer the world. Train  soldiers, conquer new territories, and resist the assault of other  kingdoms. The world is flat, <a href="http://www.sqwarea.com/">see for yourself</a>.</p>
</blockquote>
<p>Despite <a href="http://vermorel.com/journal/2006/10/3/the-unteachable-parts-of-software-engineering.html">my teaching methods</a>, students managed to do really great (especially considering that we are only at 2/3 of the project at this point of time), so let's review a <strong>few salient facts</strong> about this project:</p>
<ul>
<li>Open source, see <a href="http://sqwarea.codeplex.com/">sqwarea.codeplex.com</a></li>
<li>ASP.NET MVC, C#, jQuery, OpenId for the front-end.</li>
<li><a href="http://code.google.com/p/lokad-cloud/">Lokad.Cloud</a> for the persistence, and back-end execution framework.</li>
<li>Windows Azure used as the hoster.</li>
<li>Table Storage for the persistence (1 entity per map square).</li>
<li>Queue Storage to spread the workload among VMs.</li>
</ul>
<p>&nbsp;Then, in order to make sure, project wasn't going to be easy, I included a game rule real hard to implement:</p>
<blockquote>
<p>People and soldiers have to be constantly reminded who is the King;  otherwise, they just do it their own way. If, after a conquest, a part  of your kingdom is no more connected to your King through a path of  controlled land squares, then the <em>disconnected area is reverted as neutral.</em></p>
</blockquote>
<p>Apparently, students managed to implement a good (and expectedly complicated) scheme to get it this connectivity rule working in a very scalable way.</p>
<p>(*) Actually, every year, I choose the project to be carried on by my students. Hence, if you think the project idea is lame, blame me.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/4/17/stack-exchange-20-epic-fail.html"><rss:title>Stack Exchange 2.0: epic fail?</rss:title><rss:link>http://vermorel.com/journal/2010/4/17/stack-exchange-20-epic-fail.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-04-17T17:00:59Z</dc:date><dc:subject>Software Business business insights startups</dc:subject><content:encoded><![CDATA[<p>It's a sad thing to see a pair of <a href="http://www.codinghorror.com/blog/">brilliant</a> <a href="http://www.joelonsoftware.com/">entrepreneurs</a> going for a probable epic fail with best intentions in mind.</p>
<p>IMHO, the recently announced <a href="http://www.joelonsoftware.com/items/2010/04/13.html">Stack Exchange 2.0</a>&nbsp; has a high probability of failure, and worse (as far I am concerned) it might marginally hurt my business due to the lack of ongoing commitment for the <a href="http://ask.lokad.com/">forum I did setup</a> for my own company a few months ago.</p>
<p>Let consider the situation:</p>
<ul>
<li>Stack Exchange is an excellent Q&amp;A engine, something that the market had been waiting for a long time, as illustrated by the success of Stack Overflow.</li>
<li>Stack Exchange 1.0 had a very reasonable business model, announced with an entry price of about $120 / month.</li>
</ul>
<p>Now, Stack Exchange 2.0 for a business plan that urgently reminds me of the 37signals announcement of their <a href="http://37signals.com/svn/posts/1941-press-release-37signals-valuation-tops-100-billion-after-bold-vc-investment">$100 billion valuation</a>:</p>
<blockquote>
<p>When it comes to valuation, making money is a real obstacle. Our  profitability has been a real drag on our valuation.We&rsquo;ll give away everything for free and<strong> let the market speculate about  how much money we could make if we wanted to make money</strong>. That way, the  sky&rsquo;s the limit!</p>
</blockquote>
<p>So let start by discussing the <a href="http://blog.stackexchange.com/post/518474918/stack-exchange-2-0">arguments</a> proposed by the SE team to go for a free service:</p>
<ol>
<li>SE had not enough enough beta volunteers. They were expecting "<em>thousands of sites would start to sprout up on every possible topic</em>" (sic)</li>
<li>People were prone to create "<em>ghost-town sites that nobody visited</em>" (sic).&nbsp; "<em>Allowing anyone with a credit card to make a site</em>" (sic) wasn't a  good idea.</li>
<li>People were prone to "<em>multiple sites on the same topi</em>c" (sic).</li>
</ol>
<p><strong>Expecting an overnight success</strong></p>
<p>Well, as far <strong>point 1</strong> is concerned, that was just <strong>plain unrealistic expectations</strong>. Yes, I am 100% sure that SE 1.0 (Stack Exchange 1.0) could have ultimately had thousands of happily paying customers, but it turns out there is <a href="http://www.codinghorror.com/blog/2009/01/overnight-success-it-takes-years.html">no overnight success</a>. Stack Overflow was a quick success because it benefited from two famous bloggers with huge 100% focused audience.</p>
<p>Yet, SE 1.0 is a B2B product, and needs to be marketed and sold accordingly; and it turns out that the SO (Stack Overflow) is <strong>definitively not the right audience</strong> to market SE. All the SO folks happen to be software developers: little wonder that you get half a dozen SE spawn focusing on startups (but we will get back to this point).</p>
<p>Hence, <strong>SE 1.0 had not even been marketed yet, not to the relevant audience anyway</strong>.</p>
<p>Then, the <em>beta</em> branding is sufficient to scare away about 99% of all B2B prospects; software tools are sort of a one-of-a-kind exception here. Thus, to even get a chance for SE to succeed, it would need to branded as v1.0 then <strong>start charging for it</strong>.</p>
<p>Companies don't trust "gratis" stuff, and rightly so. B2B is the contrary of B2C: you have to start charging for it to succeed (open source entered the business the day people started <a href="http://www.mysql.com/products/enterprise/unlimited.html">to charge for it</a>).</p>
<p><strong>What about the ghost sites?</strong></p>
<p>Building a community is a very significant investment. It takes a lot of time, typically years, and thousands of hours of work. SE 1.0 was <em>beta</em>. How could it be expected any reasonable organization to push such a commitment on an <em>unproven</em> solution? For most businesses, a solution becomes <em>proven</em> when someone gets charged for it, and this person claims that is was <a href="http://en.wikipedia.org/wiki/Business_case">money profitably spent</a>.</p>
<p>Then, the SE team implicitly assumed that low traffic means implicit failure: those guys with credit cards they don't know what they are doing.</p>
<blockquote>
<p>The market gets it wrong, and we are going to do it better.</p>
</blockquote>
<p>I am very skeptical when anyone (even bright people) pretend to <strong>know more than the market</strong>. If somebody is selling <a href="http://en.wikipedia.org/wiki/Luxury_yacht">Luxury Yatch</a>, then a single answered question might be worth millions of USD if it makes the difference to close the deal.</p>
<p>If people (like me) are ready to be pay $100 / month for low traffic websites, then there might be another explanation than <em>those people don't know how to spent their money</em>.</p>
<p>Pushing the point further, how do ghost sites hurt the SE business in anyway? Companies pay for the websites, nobody looks at those websites, nobody gets hurt by those websites. Take the money and stop whining.</p>
<p><strong>Websites on similar subjects are created</strong></p>
<p>Considering that SE was primarily addressed at a near monolithic audience (software developers), it's little wonder to see that many people had the same idea at the same time.</p>
<p>This is <strong>old behavior inherited from Economy 1.0</strong>: it's called <a href="http://en.wikipedia.org/wiki/Competition_%28economics%29">competition</a>.</p>
<p>And so what? Software editors sell their products to companies who happen to compete against each other. This is a <em>healthy</em> situation. At some point the market may decide to elect a "outstanding" winner, but most of the time, market does not, and competition keeps going.</p>
<p>Again, pretending to know more than the market is a wild assumption.</p>
<p>As final point of the analysis of SE 1.0: the outlook was bright, it needed an official v1.0 release, some meaningful marketing outside the software crowd, and <strong>SE 1.0 was very likely to become a profitable business</strong>. Dropping the SE 1.0 at this point almost look like a bad case of <em>Fear of Success</em>.</p>
<p><strong>Outlook on Stack Exchange 2.0</strong></p>
<p>The SE 2.0 business model claims that service will be offering <em>for free</em>. Yet, there is nothing as <a href="http://en.wikipedia.org/wiki/No_free_lunch"><em>free</em> in business</a>. Most likely SE 2.0 will be paid through the <a href="http://vermorel.com/journal/2007/2/4/wetpaint-is-far-too-expensive-migrate-or-die.html">advertising tax</a> which happen to be <a href="http://www.useit.com/alertbox/free_software.html">extremely expensive</a>.</p>
<p>In particular, this business model will be way to expensive for most organization to commit any significant resources.</p>
<p>Basically, SE 2.0 is positioning itself in the <a href="http://www.chrisbrogan.com/attention-as-currency/">attention sharing economy</a> trying to re-introduce the old <a href="http://www.faqs.org/faqs/alt-creation-guide/">byzantine</a> usenet rules. The intrinsic problem is that creating a community is matter very different from actually creating business value.</p>
<p>For example, Wikipedia is a worldwide community success, but it's actual business value is zilch: you might <a href="http://wikimediafoundation.org/wiki/Support_Wikipedia/en">donate</a> to Wikipedia, but you can't <em>invest</em> in Wikipedia and expect any financial reward.</p>
<p>Then, SE 1.0 had low profile <a href="http://www.osqa.net/">unknown competitors</a>; SE 2.0 is getting up ahead a direct confrontation with big guys: Google, Facebook, LinkedIn which will - no doubt - deliver their own variants (if SE 2.0 prove to get some traction) to be marketed much more effectively using their social communities.</p>
<p>As a final note, I am hoping, if the SE team sticks to its plans, that <strong>the market will quickly fill the room left empty by the now defunct SE 1.0</strong>. <a href="http://meta.stackexchange.com/questions/5387/which-clones-allow-me-to-import-my-stackexchange-site">Contenders</a> are already in place.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/4/9/net-profiler-for-windows-azure.html"><rss:title>.NET profiler for Windows Azure</rss:title><rss:link>http://vermorel.com/journal/2010/4/9/net-profiler-for-windows-azure.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-04-09T09:01:20Z</dc:date><dc:subject>.NET Cloud Computing Software Engineering cloudcomputing</dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://vermorel.com/storage/magnifying-glass.jpg?__SQUARESPACE_CACHEVERSION=1270759439229" alt="" /></span></span>Under modern <em>managed</em> runtimes, <a href="http://en.wikipedia.org/wiki/Profiling_%28computer_programming%29">performance profiling</a> comes in two flavors:</p>
<ul>
<li>CPU profiling</li>
<li>memory profiling</li>
</ul>
<p>In last decade, the No1 breakthrough in the profiling arena was the introduction of <strong>sampling</strong>. Instead of intercepting every single method call, every single object allocation - introducing a 10x slowdown in the process - the profiler takes only sample at regular intervals.</p>
<p>Sampling decreases the accuracy in favor of gain in performance. In practice, sampling is not just a tradeoff,<strong> it's a game changer</strong>.</p>
<p>Indeed, even a modest sampling rate - say 2 or 3% of your processing capacity - give you already incredibly precise execution profile. Hint: with a 2Ghz CPU, 1% already accounts for 10M cycles per second.</p>
<p><em>With sampling, it becomes possible to aggregate fine grained execution statistics in production conditions, or even in </em><em><strong>actual</strong> <strong>production</strong> leaving the profiler ON all the time.</em></p>
<p>In the .NET ecosystem, Microsoft has been offering for years a free (yet rudimentary) <a href="http://msdn.microsoft.com/en-us/library/ms979205.aspx">memory profiler</a> - while 3rd party vendors were providing more advance tools, such as the excellent <a href="http://www.jetbrains.com/profiler/">dotTrace by JetBrains</a>.</p>
<p>Lately, I discovered that Microsoft had released a new free <a href="http://www.microsoft.com/downloads/details.aspx?familyid=fd02c7d6-5306-41f2-a1be-b7dcb74c9c0b&amp;displaylang=en">CPU Profiler for .NET</a> along with Visual Studio 2008. Caution: while running this tool for the 1st time, I did get a <a href="http://en.wikipedia.org/wiki/Blue_Screen_of_Death">BSOD</a> caused by an unsupported proc, problem was fixed through <a href="http://code.msdn.microsoft.com/KB958842">this hotfix</a> .</p>
<p>The MS profiler is rather crude, especially on UI part. Yet, its strong orientation toward command-line and CSV/XML exports makes it rather handy for continuous integration scenarios where the profiler is run behind unit tests (or batch execs) putting the system under performance stress.</p>
<p>Back to the<strong> cloudy</strong> part announced in the post title, I believe that profilers will soon be considered a must-have components for cloud computing. Indeed, with the cloud you end-up precisely <strong>charged for the resources you consume</strong>.&nbsp; Thus, the performance gains obtained with a profiler have a very real and <strong>very measurable ROI</strong>.</p>
<p>Cloud computing is not cheap <em>per se</em>: if you really want cheap stuff, you can roll your own hardware and <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">get a 90% discount</a>. Cloud computing is low cost only if performance is kept under control: no need to be a <a href="http://blogs.msdn.com/ricom/">performance hero</a>, but poor performance - that could be tolerated in good <em>ol</em>'days where the customer was paying for the hardware too - now impacts the SaaS vendor instead.</p>
<p>Forecasters expect the cloud computing market to top over <a href="http://blogs.idc.com/ie/?p=543">dozens of billions</a>: <strong>cost-killer technologies are bound to emerge</strong> in such a large market, and I expect profilers to be one of them.</p>
<p>Comparing the very marginal overhead of a sampling profiler to the significant savings that could be obtained by fine-tuning the precise hotspots of cloud apps, I expect <strong>cloud profilers to be used in the background for all apps in both testing AND production environments alike</strong>.</p>
<p>The strong orientation of Windows Azure toward .NET makes it one of the best cloud to introduce early on such a profiling layer on top of cloud apps.</p>
<p>I am actually toying with the idea of trying to run the MS profiler on Azure directly (you can run <a href="http://blog.smarx.com/posts/using-other-web-servers-on-windows-azure">arbitrary exec files</a>), however it may prove <a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/aa080766-9e90-4a1a-bcca-f7b138659faa">a bit difficult for the time being</a>.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://vermorel.com/journal/2010/3/22/thinking-an-academic-package-for-azure.html"><rss:title>Thinking an academic package for Azure</rss:title><rss:link>http://vermorel.com/journal/2010/3/22/thinking-an-academic-package-for-azure.html</rss:link><dc:creator>Joannes Vermorel</dc:creator><dc:date>2010-03-22T16:41:41Z</dc:date><dc:subject>Cloud Computing academics cloudcomputing microsoft</dc:subject><content:encoded><![CDATA[<p>This year, this is the 4<sup>th</sup> time that I am a teaching Software Engineering and Distributed Computing at the <a href="http://www.di.ens.fr/">ENS</a>. The classroom project of 2010 is based on Windows Azure, like <a href="http://cloudster.sourceforge.net/">the one of 2009</a>.</p>
<p>Today, I have been kindly asked by Microsoft folks to suggest an <em>academic package</em> for Windows Azure, to help those like me who wants <strong>to get their students started with cloud computing</strong> in general, and Windows Azure in particular.</p>
<p>Thus, I decided to post here my early thoughts on that one. Keep in mind <strong>I have strictly no power whatsoever on Microsoft strategy</strong>. I am merely publishing here some thoughts in the hope of getting extra community feedback.</p>
<p>I believe that Windows Azure, with its strong emphasis on tooling experience, is a very well suited platform for introducing cloud computing to Computer Science students.</p>
<p>Unfortunately, getting an extra budget allocated for the cloud computing course in the Computer Science Department of your local university is typically complicated. Indeed, very few CS courses require a specific budget for experiments. Furthermore, the pay-as-you-go pricing of cloud computing goes against nearly every single budgeting rule that universities have in place - at least for France - but I would guess similar policies in other countries. <strong>Administrations tend to be wary of &ldquo;elastic&rdquo; budgeting</strong>, and IMHO, rightfully so. This is not a criticism, merely an observation.</p>
<p>In my short 2-years cloud teaching experience, a nice academic package sponsored by Microsoft has tremendously simplified my situation to deliver the &ldquo;experimental&rdquo; part of my cloud computing course.</p>
<p>Obviously, unlike software licenses, <strong>offering cloud resources costs very real money</strong>. In order to make the most of resources allocated to academics, I would suggest narrowing the offer down to the students who are the most likely to have an impact on the software industry in the next decade.</p>
<p>The following conditions could be applied to the offer:</p>
<ol>
<li>Course is setup by a Computer Science Department.</li>
<li>It focuses on cloud computing and/or software engineering.</li>
<li>Hands-on, project-oriented teaching.</li>
<li>Small classroom, 30 students or less.</li>
</ol>
<p>Obviously there are plenty of situations where cloud computing would make sense, and not fit into these constraints such as bioinformatics class with data crunching project or large audience courses with +100 students &hellip; but the package that I am proposing below is unlikely to match the needs of those situations anyway.</p>
<p>For the academic package itself, I would suggest:</p>
<ol>
<li><strong>1 book</strong> per student on <em>Visual Studio 20XY</em> (replace XY by the latest edition).</li>
<li><strong>4 months</strong> of Azure hosting with:         
<ul>
<li>4 small VMs</li>
<li>30 storage accounts, cumulative storage limited to 50GB.</li>
<li>4 small SQL instances of 1GB.</li>
<li>Cumulative bandwidth limited to 5GB per day.</li>
</ul>
</li>
</ol>
<p>Although, it might be surprising in this day and age of cloud computing, I have found that artifacts made out of dead trees tend to be the most valuable ingredient for a good cloud computing course, especially those <strong>+1000 pages ones about the latest versions of Visual Studio / .NET</strong> (future editions might even include a chapter or two about Windows Azure which would be really nice).</p>
<p>Indeed, in order to tackle the cloud, <strong>students must first overcome difficulties posed by their programming environments</strong>. One can argue that everything can be found on the web. That&rsquo;s true, but there is so much information online about .NET and Visual Studio, and that <strong>students get lost and lose their motivation</strong> if they have to browse through an endless flow of information.</p>
<p>Furthermore, I have found that <strong>teaching basics of C# or .NET in a Computer Science is a bad idea</strong>. First, it's like an attempt to kill students out of sheer boredom. <em>Just imagine yourself listening for 3h straight at someone enumerating keywords of a programming language</em>. Second, you have little or no control on the background of your students. Some might be Java or C++ gurus already; while some might have never heard of OO programming.</p>
<p>With the book on hand, I suggest t<strong>o simply ask students to read a couple of chapters from one week to the next</strong>, and to interrogate them on their reading at the beginning of each session.</p>
<p>Then, concerning the Windows Azure package itself, I suggest 4 months worth of CPU as it should fit for most courses. If the course spread longer than 4 months then I would suggest students to start optimizing their app <em>not to use all the 4 VMs all the time</em>.</p>
<p><strong>4 VMs seems just enough to feel both the power and the pain of scaling out</strong>. It brings a handy 4x speed-up if the app is well designed, but represents a world of pain if the app does not correctly handle concurrency.</p>
<p>Same idea applies to SQL instances. Offering a single 10GB instance would make things easier, but&nbsp; <strong>course should be focused on scaling out, not scaling up</strong>. Thus, there is no reason to make things easier here.</p>
<p>In practice, I have found that <strong>offering individual storage accounts simplifies experiments</strong>, although there is little support for offering either lot of storage or lot of bandwidth.</p>
<p>In total, <strong>the package would represent a value of roughly $2500</strong> (assuming $30 per book), and, from a different angle, about <strong>$100 per student</strong>. Not cheap, but attracting talented students seems worth a worthy (albeit long-term) investment.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 349px; width: 1px; height: 1px; overflow: hidden;">
<link href="file:///C:%5CUsers%5CJOANNE%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List" />
<link href="file:///C:%5CUsers%5CJOANNE%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData" />
<link href="file:///C:%5CUsers%5CJOANNE%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping" />
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>FR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	mso-ansi-language:EN-US;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	mso-ansi-language:EN-US;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	mso-ansi-language:EN-US;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	mso-ansi-language:EN-US;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:"Times New Roman"; 	mso-ansi-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 70.85pt 70.85pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1263761311; 	mso-list-type:hybrid; 	mso-list-template-ids:-249104292 67895311 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;} @list l0:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} ol 	{margin-bottom:0cm;} ul 	{margin-bottom:0cm;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman","serif";} --> <!--[endif]-->
<p class="MsoListParagraph" style="text-indent: -18pt;"><!--[if !supportLists]--><span lang="EN-US"><span>1.<span style="font: 7pt &amp;amp;amp;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><!--[endif]--><span lang="EN-US">Focus on cloud computing and/or software engineering.</span></p>
</div>]]></content:encoded></rss:item></rdf:RDF>