<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9518639</id><updated>2012-01-31T07:19:39.980Z</updated><category term='jee 7'/><category term='slides'/><category term='SQL'/><category term='bof'/><category term='Machine Learning'/><category term='connacht'/><category term='analytics'/><category term='Full Text Search'/><category term='Ninject'/><category term='ASP.NET'/><category term='SCEA'/><category term='travel'/><category term='Google Go'/><category term='cms'/><category term='javaone'/><category term='ecommerce'/><category term='oracle JEE Java'/><category term='scea exam JEE architect'/><category term='jigsaw'/><category term='JEE'/><category term='study guide'/><category term='exam'/><category term='google analytics'/><category term='Skillsmatter'/><category term='java'/><category term='NewSQL'/><category term='azure'/><category term='coin'/><category term='jdk 7'/><category term='lambda'/><category term='Search'/><category term='book'/><category term='go'/><category term='NoSQL'/><category term='Google'/><category term='oracle'/><category term='DI'/><category term='seo'/><category term='App Engine'/><category term='MVC 3'/><category term='umbraco'/><category term='android'/><category term='#io2011'/><category term='architect'/><category term='microsoft'/><category term='online conversion'/><category term='Prediction'/><category term='J2EE'/><category term='leisure travel'/><category term='.NET'/><title type='text'>Humphrey Sheil</title><subtitle type='html'>Humphrey Sheil's blog covering software engineering design and technology (JEE, .NET, intelligent searching, artificial intelligence), SCEA exam from Oracle.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9518639.post-6260127291981542846</id><published>2011-08-07T22:59:00.001+01:00</published><updated>2011-08-07T23:01:29.414+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NewSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>NoSQL / NewSQL / SQL - future-proofing your persistence architecture (part one)</title><content type='html'>Although its been a few years in the making, the noise / buzz around &lt;a href="http://en.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt; has now reached fever pitch. Or to be more precise, the promise of something better / faster / cheaper / more scalable than standard RDBMSs has sucked in a lot of people (plus getting to use &lt;a href="http://en.wikipedia.org/wiki/MapReduce"&gt;MapReduce&lt;/a&gt; in an application even if it's not needed is a temptation very hard to resist..). And pretty recently, the persistence hydra has grown another head - NewSQL. NewSQL adherents &lt;a href="http://highscalability.com/blog/2010/6/28/voltdb-decapitates-six-sql-urban-myths-and-delivers-internet.html"&gt;essentially believe&lt;/a&gt;&amp;nbsp;that NoSQL is a design pig and that a better approach is to fix relational databases. In turn, NewSQL claims have been open to counter-claim on the constraints inherent in the NewSQL approach. It's all &lt;a href="http://highscalability.com/blog/2011/7/25/is-nosql-a-premature-optimization-thats-worse-than-death-or.html"&gt;very fascinating&lt;/a&gt;&amp;nbsp;(props for working Lady Gaga into a technical article as well..).&lt;br /&gt;&lt;br /&gt;As it turns out, traditional RDBMSs are sometimes slow for valid reasons, and while you can certainly speed things up by relaxing constraints or optimising heavily for a specific use case, that's not a panacea or global solution to the problem of a generic, fast way to store and access structured data. On the other hand, the assertion that Oracle, MySQL and SQL Server have become fat and inefficient because of backwards compatibility requirements definitely strikes a chord with me personally.&lt;br /&gt;&lt;br /&gt;The sheer variety of NoSQL &lt;a href="http://nosql-database.org/"&gt;candidates&lt;/a&gt; (this web page lists ~122!) is evidence that the space is still immature. I don't have a problem with that (every technology goes through the same cycle), but it does raise one nasty problem: what happens if you back the wrong candidate now in 2012 that has disappeared in 2015?&lt;br /&gt;&lt;br /&gt;The current NoSQL marketplace demands a defensive architecture approach - it's reasonable to expect that over the next three years some promising current candidates will lose momentum and support, others will merge and still others will be bought up by a commercial RDBMS vendor, and become quite costly to license.&lt;br /&gt;&lt;br /&gt;What we need is a good, implementation-independent abstraction layer to model the reading and writing from and to a NoSQL store. No hard coding of specific implementation details into multiple layers of your application - instead segregate that reading and writing code into a layer that is written with change in mind - we're talking about pluggable modules, sensible use of interfaces and design patterns to make the replacement of your current NoSQL squeeze as low-pain as possible &lt;i&gt;if and when that replacement is ever needed&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;If the future shows that the current trade-offs made in the NoSQL space (roughly summed up as - a weaker take on A(tomicity),C(onsistency), I(solation) or D(urability), plus with your own favourite blend of &lt;a href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem"&gt;Brewer's CAP theorem&lt;/a&gt;) are rendered unnecessary by software and hardware advances (as is very likely to be the case), then the API should ideally insulate our application code from this change.&lt;br /&gt;&lt;br /&gt;There are interesting moves afoot that demonstrate that the community is actively thinking about this, specifically the very recent &lt;a href="http://www.arnnet.com.au/article/395469/couchbase_sqlite_launch_unified_nosql_query_language"&gt;announcement&lt;/a&gt; ) of UnQL (the NoSQL equivalent to SQL - i.e. a unified NoSQL Query Language). That's good, but UnQL is young enough to shrivel and die just like any of the NoSQL implementations themselves. Also, we know that what has inspired UnQL - SQL - is itself fragmented / with vendor-specific extensions like T-SQL from Microsoft and PL/SQL from Oracle.&lt;br /&gt;&lt;br /&gt;So then, in part one of this two-parter, I've worked to justify what's coming in part two - a minimal set of Java classes and interfaces to provide a concrete implementation of the abstract ideas discussed above.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-6260127291981542846?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/6260127291981542846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=6260127291981542846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6260127291981542846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6260127291981542846'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/08/nosql-newsql-sql-future-proofing-your.html' title='NoSQL / NewSQL / SQL - future-proofing your persistence architecture (part one)'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-9082700845892398361</id><published>2011-07-31T19:27:00.000+01:00</published><updated>2011-07-31T19:27:05.504+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='connacht'/><category scheme='http://www.blogger.com/atom/ns#' term='google analytics'/><title type='text'>New Google Analytics location report doesn't like Connacht so much..</title><content type='html'>The new UI for Google Analytics has a distinctly Cromwellian vibe to it, as the screenshot below shows. Is this just my GA account, or does everyone else see Galway and Sligo a bit more surrounded by the Atlantic than normal?&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-80THavNcWnQ/TjWeA-v2rbI/AAAAAAAAABY/BgfsjcqbWqg/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-80THavNcWnQ/TjWeA-v2rbI/AAAAAAAAABY/BgfsjcqbWqg/s320/Untitled.png" width="315" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-9082700845892398361?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/9082700845892398361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=9082700845892398361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/9082700845892398361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/9082700845892398361'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/07/new-google-analytics-location-report.html' title='New Google Analytics location report doesn&apos;t like Connacht so much..'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-80THavNcWnQ/TjWeA-v2rbI/AAAAAAAAABY/BgfsjcqbWqg/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-811527298595516116</id><published>2011-07-06T14:24:00.001+01:00</published><updated>2011-07-08T14:39:23.450+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='umbraco'/><title type='text'>Umbraco on Azure - take 1.5 (not 2)!</title><content type='html'>Back in August of last year I wrote a step-by-step article on how to get Umbraco running on Windows Azure (the Microsoft cloud computing platform). It got a lot of hits from people looking to do just exactly that.&lt;br /&gt;&lt;br /&gt;There were a few loose ends in that piece, notably not using shared rather than VM-local storage to allow for Umbraco clustering and also not using the .NET 4.0 runtime rather than .NET 3.5 (4.0 was a recent addition to Azure in Aug 2010 and it just didn't work out of the box - missing sections in the machine.config).&lt;br /&gt;&lt;br /&gt;So a follow-up article has been on my to-do list for a while now to tie up these loose ends, and then I found this - &lt;a href="http://waacceleratorumbraco.codeplex.com/"&gt;the Umbraco Accelerator for Windows Azure&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have no idea how good / bad it is, but it's a great idea and well worth a road test if you're looking to use Umbraco in production with Azure.&lt;br /&gt;&lt;br /&gt;Seems to be still active since it's initial release in Oct 2010 with a point release put out there in mid-June.&lt;br /&gt;&lt;br /&gt;It also appears to be part of a wider plan to standardise how ASP.NET applications can be moved to Azure in a standard way (&lt;a href="http://azureaccelerators.codeplex.com/"&gt;the Windows Azure Accelerators project&lt;/a&gt;), again a good thing IMHO.&lt;br /&gt;&lt;br /&gt;Let me know how it works for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-811527298595516116?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/811527298595516116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=811527298595516116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/811527298595516116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/811527298595516116'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/07/umbraco-on-azure-take-15-not-2.html' title='Umbraco on Azure - take 1.5 (not 2)!'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-2049494047653864805</id><published>2011-05-14T02:38:00.000+01:00</published><updated>2011-05-14T02:38:24.447+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Machine Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='Full Text Search'/><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='Prediction'/><title type='text'>Google IO 2011 Day Two recap</title><content type='html'>Oh the perils of making predictions when there is still a conference keynote to go!&lt;br /&gt;&lt;br /&gt;It turns out that Chrome OS and the associated hardware&amp;nbsp;&lt;a href="http://humphreysheil.blogspot.com/2011/05/google-io-2011-io2011-day-one-recap.html"&gt;hasn't been read the last rites after all&lt;/a&gt;. Rather, v1.0 is almost ready for primetime (scheduled for release in mid-June - about a month away). You have to imagine over time though that Google will want one code base for phones, tablets and chromebooks. At the very least, they will want to make it as easy as possible for developers to write their applications once and have them "just work" on devices with radically different screen sizes and input methods, something that Android developers today are already doing. Nonetheless, a very brave play, especially in targeting the enteprise space, where significant replacement costs exist. If it pays off, it will be huge.&lt;br /&gt;&lt;br /&gt;Moving on from Chrome, a couple of sessions I attended yesterday were really interesting, specifically two - Full Text Search and Smart App Design.&lt;br /&gt;&lt;br /&gt;Full Text Search is Google's take on Lucene / Solr and integrated into the App Engine Datastore as well, so it will be compelling for developers who just want to start indexing and scoring documents quickly. The "fully automatic" mode of operation with the Datastore should also be a timesaver.&lt;br /&gt;&lt;br /&gt;Smart App Design covered material of a completely different color. I had already read about the &lt;a href="http://code.google.com/apis/predict/"&gt;Prediction API&lt;/a&gt; in the blogosphere but I hadn't realised exactly what it did until this session. Essentially, Google offers the discerning developer the ability to add machine learning techniques to their application by leveraging a cloud-based service.&lt;br /&gt;&lt;br /&gt;At first glance, I had &lt;i&gt;thought&lt;/i&gt; that the API gave access to the same model that Google uses to predict search terms, and I guess that is one use case. But Google has done much more than that - they have effectively white-labelled their machine learning technology and made it available to non-Google developers &lt;i&gt;to use with their own data&lt;/i&gt;, i.e. learn what's important for their application / business.&lt;br /&gt;&lt;br /&gt;As with all machine-learning techniques, the nub of the matter remains the correct selection and efficient representation of the key attributes in the training set, and that is quite simply a problem that requires deep domain knowledge. &lt;a href="http://googleenterprise.blogspot.com/2011/05/build-smarter-apps-with-improved-google.html"&gt;One announcement yesterday&lt;/a&gt; was quite interesting however, in that Google are now allowing good model authors to sell their models to others. So if I come up with a model that predicts shopping basket behavior on leisure travel websites and a tour operator used that to bump their online conversion rate by 33%, then that model has a &lt;b&gt;lot&lt;/b&gt; of value and it's a win-win situation for the model author and the model user.&lt;br /&gt;&lt;br /&gt;So an API with a lot of promise. But also with two potential flies in the ointment, one commercial and one cultural:&lt;br /&gt;&lt;br /&gt;(a) Commercial - Google are trying to charge for use of the API from day one, this will stymie adoption in the earliest stage&lt;br /&gt;&lt;br /&gt;(b) Cultural - an endemic problem with a lot of machine learning techniques is their black box nature. As someone who spent a fair bit of time working with artificial neural networks at university, quite often a machine learning approach will yield the correct answer but the researcher can't exactly explain why! That's not a Google-specific weakness, but what is Google-specific is that the modules you access via the Prediction API (the man behind the curtain if you will) is not made open at all, so can a company really invest time in building, training and using models that they don't really understand and can never hope to do so? Only time will tell.&lt;br /&gt;&lt;br /&gt;So to recap then, Google IO was definitely worth attending this year - and not just for the hardware gifts! The main items on my research list post the event are:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.google.com/events/io/2011/sessions/writing-web-apps-in-go.html"&gt;Google Go running on App Engine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.google.com/events/io/2011/sessions/smart-app-design.html"&gt;The Prediction API&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.google.com/events/io/2011/sessions/full-text-search.html"&gt;Full Text Search enhancements / module for App Engine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://www.google.com/events/io/2011/sessions/map-your-business-inside-and-out.html"&gt;Adding my own hooks and content into Google Maps and Street View&lt;/a&gt; to greatly enhance what the end user sees when they access Maps from my site&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://code.google.com/apis/fusiontables/"&gt;Fusion tables&lt;/a&gt; + &lt;a href="http://code.google.com/apis/chart/"&gt;Charting &lt;/a&gt;- a good / cheap way to rapidly slice and dice data and provide good interactive widgets to visualize same to end users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-2049494047653864805?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/2049494047653864805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=2049494047653864805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2049494047653864805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2049494047653864805'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/05/google-io-2011-day-two-recap.html' title='Google IO 2011 Day Two recap'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7916945698962092764</id><published>2011-05-11T05:36:00.001+01:00</published><updated>2011-05-11T05:41:15.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='go'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='#io2011'/><title type='text'>Google IO 2011 (#io2011) - day one recap</title><content type='html'>The &lt;a href="http://code.google.com/"&gt;official Google code site&lt;/a&gt; &amp;nbsp;has the lowdown on all of the announcements that came thick and fast today (some 11 major items last time I checked and plenty of API revs and upgrades) and I won't replay them all here.&lt;br /&gt;&lt;br /&gt;Specific announcements that interested me today:&lt;br /&gt;&lt;br /&gt;Google Go is about to become an officially supported language on App Engine, alongside Python and Java (it's currently in "Trusted Tester" mode).&lt;br /&gt;&lt;br /&gt;Rhetorical question: what value does a complete end-to-end technology stack with no overhanging IPR issues or blockers have to Google as a potential insurance policy in case the Oracle lawsuit does not go in their favor / be settled reasonably? Two things I heard today convinced me that there is now serious engineering investment going into Go (as opposed to a small, talented team cranking things out as they work down the list):&lt;br /&gt;&lt;br /&gt;(a) The afore-mentioned App Engine support (this won't have been trivial to implement - Go is the first compiled language to run on App Engine after all for one thing)&lt;br /&gt;&lt;br /&gt;(b) The info that a "comprehensive" Go library for ultimately all of the Google APIs is in development and will be with us "soon".&lt;br /&gt;&lt;br /&gt;Go is a very nice language to write in, and the App Engine support announced today addresses one of the major gaps I identified when I took a &lt;a href="http://humphreysheil.blogspot.com/2009/11/google-go-overview-for-jee-and-net.html"&gt;look at Go&lt;/a&gt; when it was first released in Nov 2009.&lt;br /&gt;&lt;br /&gt;Three final comments on day one:&lt;br /&gt;&lt;br /&gt;1. Press articles I read in March / April this year about the +1 button being a make or break deal for Google to compete with Facebook seem overblown. The +1 button has merited just one session so far and apart from that you wouldn't even know Google had it. Either that or the memo didn't make it to the IO organisers in time.&lt;br /&gt;&lt;br /&gt;2. It's instructive to watch Google see the mistake that companies like Sun Microsystems made and impressive to watch how they studiously avoid it. It's not enough to develop great code / software / hardware - you have to have people **&lt;i&gt;using&lt;/i&gt;** it. Google's continued push into content ensures that usage. Google is not just the place you go to find content on the web, it's also where you consume that content (first youtube, but now books, movies and music too). I'm glad Google don't have a social network offering in their portfolio of services - they would be simply too powerful if they did.&lt;br /&gt;&lt;br /&gt;3. Google IO seems to be **&lt;i&gt;all&lt;/i&gt;** about Android so far - it's absolutely everywhere you look and consumed the entire keynote this morning (Ice Cream in Q4 that unifies tablet and phone, Futures (Android @ Home), open accessories etc.). Barring some crazy and unforeseen announcement tomorrow, I'd say Chrome OS has been given the last rites internally. But then again, who knows what day two will bring?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7916945698962092764?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7916945698962092764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7916945698962092764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7916945698962092764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7916945698962092764'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/05/google-io-2011-io2011-day-one-recap.html' title='Google IO 2011 (#io2011) - day one recap'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7207953450033782999</id><published>2011-03-06T20:10:00.000Z</published><updated>2011-03-06T20:10:00.605Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='leisure travel'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='online conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>A vision for big data in leisure travel ecommerce</title><content type='html'>[&lt;i&gt;This is an article for people working in leisure travel technology / ecommerce online conversion who visit this blog, although many of the take-home points are transferable to other industry verticals.&lt;/i&gt;]&lt;br /&gt;&lt;br /&gt;Data is big, and &lt;a href="http://en.wikipedia.org/wiki/Big_data"&gt;getting bigger&lt;/a&gt;. The more we track and log, the more storage is needed to warehouse it, and the more CPU horsepower is needed to mine it to answer questions posed by the business. As an aside, everyone is facing this issue and it's sink or swim, with the swimmers sure to get a competitive advantage over the sinkers. In this article, I'll examine the main data feeds that matter in leisure travel, and propose an architecture to collect, manage and mine them for business benefit. The end goal is to propose a &lt;i&gt;vision, &lt;/i&gt;explaining why and how to collect data to better inform and drive business decisions that improve ecommerce performance.&lt;br /&gt;&lt;br /&gt;But why now - hasn't this always been an issue? Yes, but now more than ever, leisure travel is poised on the cusp of another big game-changer. Companies like Google and Microsoft are clearly already &lt;a href="http://www.google.com/press/ita/"&gt;focusing more on travel as a segment&lt;/a&gt;, and their data gathering and mining capabilities are considerable. But tour operators and online travel agencies (OTAs) have a significant competitive advantage over pure play technology companies as we'll see a little later.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Important data sources in leisure travel ecommerce&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First, let's examine the primary data sources that affect leisure travel ecommerce. There are some obvious entries in the table that follows, and some less so.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;ID&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt; &lt;td&gt;Internal / External&lt;/td&gt; &lt;td&gt;Controllable&lt;/td&gt; &lt;td&gt;Purpose / Comment&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Availability (internal)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Stock (internal, at-risk / committed inventory) available to sell, down to room type / meal plan / cabin and fare class&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Pricing (internal)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Pricing for internal stock. Entire teams stay focused on this source, ensuring it is (a) competitive, and (b) profitable&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Availability (external)&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Stock available to sell contracted through third parties (usually not committed stock), down to room type / meal plan / cabin and fare class. Usually used to plug gaps in internal stock (resort coverage, star rating, price band etc.). Sources include GDSs, bed banks, car rental companies etc.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Pricing (external)&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Pricing for third party stock.&amp;nbsp;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Rich content (internal)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Provide compelling, unique, accurate text, images and video to convince the consumer to buy&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;6&lt;/td&gt;&lt;td&gt;Rich content (external)&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;Usually&lt;/td&gt; &lt;td&gt;Provide compelling, unique, accurate text, images and video to convince the consumer to buy. Needs to be differentiated otherwise your search engine ranking score will suffer due to duplicate content penalties.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;7&lt;/td&gt;&lt;td&gt;Attributes&lt;/td&gt; &lt;td&gt;Both&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Attributes (aka facets) are becoming increasingly important - star rating, price bands, family-friendly (has a creche, rooms are adjoining), "has a", "is a", "is close to" - attributes provide consumers with a more intelligent and targeted search capability&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;8&lt;/td&gt;&lt;td&gt;User generated content&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;No&lt;/td&gt; &lt;td&gt;&lt;a href="http://www.tripadvisor.co.uk/"&gt;Tripadvisor&lt;/a&gt; is the poster child here, but user generated content (UGC) can be in-house too - but it must be perceived as &lt;i&gt;unbiased&lt;/i&gt; by the consumer, otherwise it becomes a negative.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;9&lt;/td&gt;&lt;td&gt;Meta data&lt;/td&gt; &lt;td&gt;Both&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Every business tags its own data - timestamps, version numbers, # revisions, author, approver, when last yielded. The more meta data you have the merrier - it often helps to tie disparate data sources together and enriches the overall data pool&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;10&lt;/td&gt;&lt;td&gt;Search, cost, book funnel&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Traditionally the core of any ecommerce strategy - measures the complete search, cost and book journey. Needs to be fully instrumented to collect data so that A/B and multivariate testing can be used to fine-tune performance over time. &lt;a href="http://humphreysheil.blogspot.com/2011/01/ecommerce-online-conversion-simple.html"&gt;Google Analytics does this very, very well&lt;/a&gt;.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;11&lt;/td&gt;&lt;td&gt;Offline (shop) interactions&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Few businesses try to tie shop activity back to online activity, but for a bricks and mortar plus clicks business, this is an opportunity missed&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;12&lt;/td&gt;&lt;td&gt;Online advertising (SEO)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Partially&lt;/td&gt; &lt;td&gt;SEO can be thought of as PPC you don't pay for! Critical to making cost of acquisition online as efficient as possible. Only partially controllable due to businesses being at the mercy of search engine scoring (which both Google and Microsoft (Bing)&amp;nbsp;keep&amp;nbsp;as a black box algorithm)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;13&lt;/td&gt;&lt;td&gt;Online advertising (PPC)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Where Google makes its money!.. PPC has pride of place in every well-constructed ecommerce campaign, but the cost and effectiveness should be continuously monitored, challenged and tuned. CSV exports out of AdWords provide a good way to do this&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;14&lt;/td&gt;&lt;td&gt;Personalisation&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Personalisation - both anonymous and known, is a great way to learn &lt;i&gt;what&lt;/i&gt; kind of holiday / vacation people want to buy from you and &lt;i&gt;how&lt;/i&gt; they want to find and buy it. Just don't try to build personalisation before you have (10) working well - personalisation needs a really solid foundation to work well..&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;15&lt;/td&gt;&lt;td&gt;Social media&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;No&lt;/td&gt; &lt;td&gt;The rising star that no-one really knows how to handle. The Facebook API contains a lot of potential for travel ecommerce&amp;nbsp;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;16&lt;/td&gt;&lt;td&gt;Offline / traditional advertising&lt;/td&gt; &lt;td&gt;External&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;The efficacy (or not) of ad spend must extend to traditional / offline as well as the more easily measurable online variant, otherwise you don't know where all of your marketing £s / $s / €s are going&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;17&lt;/td&gt;&lt;td&gt;Post-booking interactions&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;ecommerce data source, but savvy businesses are now looking at post-booking amendments, cancellation rates etc. to identify patterns that can feed back into the search experience&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;18&lt;/td&gt;&lt;td&gt;Customer Relationship Management (CRM)&lt;/td&gt; &lt;td&gt;Internal&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt; &lt;td&gt;Both pre and post travel - it's key to have a good view of what the customer experiences &lt;i&gt;on holiday &lt;/i&gt;and feed that back into what holidays are sold going forward. Is that picture of the pool misleading - change it! If the service is great, promote it more!&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Table 1. A proposed taxonomy on data sources that impact and influence leisure travel ecommerce.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Two important characteristics of data are whether you control it or not (and hence can change it if you need to) and whether it is sourced from an internal system or an external system (and thus how trustworthy / accurate the data is and whether it is unique to you or if other business entities can see it too). We have added these two characteristics to the table above for clarity.&lt;br /&gt;&lt;br /&gt;What should be obvious to the reader is that a holistic picture of ecommerce performance requires multiple data sources, some of which traditionally would not be seen as impacting the effectiveness of a leisure travel ecommerce system. Gone are the days of simply looking at the web logs to see how effective (or leaky) the conversion funnel is! In fact, there are probably some sources that I've inadvertently omitted, and indeed as new systems come on stream, new sources will be added to this table / taxonomy.&lt;br /&gt;&lt;br /&gt;Finally, it's interesting from a &lt;i&gt;barrier to entry&lt;/i&gt; perspective to note that only the well-placed tour operator or OTA actually has the wherewithal and access to collate data from all of the sources noted in the table. Other new entrants simply do not have access to many of the sources listed. &lt;b&gt;The data itself is now a valuable commodity (and is increasing in value), and an asset that leisure travel businesses would do well to guard jealously&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;What we need - Systems and Data working together&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At present, I contend that the average tour operator / OTA is collecting some, but not all of the data sources identified, and that no tour operator or OTA has yet constructed a system that provides a holistic, joined-up view of the data back to the business function to inform decision-making activities. Why not? Because it's not easy to do! The IT estate behind these data sources is fragmented (core res system, yielding system, multiple content management systems, external systems, separate booking repositories / agency management systems, Google Analytics, Google AdWords, Excel spreadsheets), often owned by different companies and wasn't designed to provide with the kind of view that is now needed. Ominously, new entrants into the space do not have a lot of the legacy baggage that incumbents do, meaning their &lt;i&gt;velocity of implementation and ongoing change&lt;/i&gt; creates a hard-to-ignore imperative for all sellers of leisure travel to innovate quickly and learn from their data, or be left behind.&lt;br /&gt;&lt;br /&gt;The technical challenge is four-fold:&lt;br /&gt;&lt;br /&gt;1. &lt;i&gt;Collection and storage&lt;/i&gt; - gather and store as much data as possible for each data source in the table, with that data being as clean and structured as possible (and in the real world, every data set will have some noise to it)&lt;br /&gt;&lt;br /&gt;2. &lt;i&gt;Build a holistic, joined-up data set&lt;/i&gt; - identify ways to link the data sources together - version number, unique keys, foreign keys, link backs, tagging etc. The more your data sources are joined up, the more holistic a view of the business you are building (and can provide back to the business). Conversely, disconnected data sets (data islands) are of much less value to the business and introduce the risk of an incomplete / inaccurate view of what's really happening now being used to influence what's going to happen next&lt;br /&gt;&lt;br /&gt;3. &lt;i&gt;Answering the questions&lt;/i&gt; - provide a mechanism to answer questions over this corpus of data in near real-time to allow the business to modify its behaviour and focus to maximise profits, yield and margin&lt;br /&gt;&lt;br /&gt;4. &lt;i&gt;Suggesting the questions&lt;/i&gt; - once the above three points have been implemented to a mature and repeatable level, the final logical step is for the data function to actually suggest areas of improvement and further exploration based on emergent patterns in the data, using techniques such as artificial neural network and &lt;a href="http://en.wikipedia.org/wiki/Self-organizing_map"&gt;self-organising maps&lt;/a&gt; (SOM) analysis&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Putting it all together - a suggested framework&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are many ways to construct a view over the data sources identified in the previous section. And in fact, multiple views are encouraged depending on the goal of the business. Here however, a hybrid of time and business function is selected in order to select a reasonable framework to hold the data. This framework is depicted in the following diagram.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-IFdfP0daRcI/TXPmNFVZdZI/AAAAAAAAABU/Y9ehYVYbzds/s1600/big-data.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="544" src="https://lh5.googleusercontent.com/-IFdfP0daRcI/TXPmNFVZdZI/AAAAAAAAABU/Y9ehYVYbzds/s640/big-data.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Figure 1. High-level schematic of the big data system for leisure travel ecommerce.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;A concrete implementation of the framework&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The question naturally arises - how would this system be constructed, not just initially but also maintained and extended going forward?&lt;br /&gt;&lt;br /&gt;Some natural candidates already exist, chief among them &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt; and &lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;. In the author's opinion, a hybrid architecture of Cassandra's data storage and innate simplicity and high availability, coupled with the MapReduce framework from Hadoop offers the best blend of performance, scalability, availability / resilience, querying and extensibility. A separate follow-on instalment to this article is warranted to provide a detailed technical treatise on the underpinnings of the system outlined here.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The dominant data sources that impact the effectiveness of a leisure travel ecommerce strategy are identified, named and classified. Developing this classification further, a model is used to create a framework to house the data sources and a concrete implementation suggested.&lt;br /&gt;&lt;br /&gt;About the author: &lt;a href="http://humphreysheil.blogspot.com/2003/12/what-i-do.html"&gt;Humphrey&lt;/a&gt; is the Chief Technology Officer for &lt;a href="http://www.comtec-group.com/"&gt;Comtec Group&lt;/a&gt;, a company that specializes in leisure travel technology.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7207953450033782999?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7207953450033782999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7207953450033782999' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7207953450033782999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7207953450033782999'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/03/vision-for-big-data-in-leisure-travel.html' title='A vision for big data in leisure travel ecommerce'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-IFdfP0daRcI/TXPmNFVZdZI/AAAAAAAAABU/Y9ehYVYbzds/s72-c/big-data.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-3493682024194480105</id><published>2011-03-02T20:44:00.000Z</published><updated>2011-03-02T20:44:30.450Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle JEE Java'/><title type='text'>JDK 7 preview and JEE 7 planning</title><content type='html'>We got two interesting developments in Java land this week:&lt;br /&gt;&lt;br /&gt;1. Oracle released the &lt;a href="http://blogs.sun.com/mr/entry/jdk7_preview"&gt;developer preview of the Java 7 Development Kit (JDK)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Oracle have started &lt;a href="http://www.theregister.co.uk/2011/03/02/java_floats_java_ee_cloud_roadmap/"&gt;talking publically about what JEE 7&lt;/a&gt; (and beyond - JEE 8) will look like in Q3 2012 and Q4 2013.&lt;br /&gt;&lt;br /&gt;(1) has been a long time coming and it's good to see the log jam moving. Simply shipping JDK 7 is good in its own right but it also means that the team will move onto working on JDK 8, which contains some key language features omitted from JDK 7 so that the team could JGIOTFD (Just Get It Out The (reader exercise to complete the acronym)).&lt;br /&gt;&lt;br /&gt;(2) looks to be Oracle really making the JEE stack cloud-based / cloud-friendly &lt;i&gt;by default&lt;/i&gt; rather than a technology stack that merely facilitates cloud computing. This dynamic should see Oracle formalising exactly what constitutes "JEE in the cloud" via a JSR and thus wresting that intellectual responsibility back from Google's App Engine platform, which is pretty much the de facto standard for "JEE in the cloud" at present.&lt;br /&gt;&lt;br /&gt;Looking beyond JEE 7, JEE 8 looks to be embracing Big Data / NoSQL systems like Hadoop and Cassandra, although we can expect to have seen significant consolidation in this space by 2013, making the integration and platform support task easier to accomplish.&lt;br /&gt;&lt;br /&gt;All in all, two nice moves, and good news for the Java eco system / economy. You might or might not like Oracle, but they are getting stuff out the door in a way that Sun kind of forgot how to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-3493682024194480105?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/3493682024194480105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=3493682024194480105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3493682024194480105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3493682024194480105'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/03/jdk-7-preview-and-jee-7-planning.html' title='JDK 7 preview and JEE 7 planning'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-5614869022991582012</id><published>2011-02-22T08:38:00.000Z</published><updated>2011-02-22T08:38:19.815Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='scea exam JEE architect'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Certified Enterprise Architect - JEE 6 refresh update</title><content type='html'>The JEE 6 SCEA exam / certification&lt;br /&gt;&lt;br /&gt;Following on from my earlier post requesting input into my next post, here's an often-requested update: what's happening with the &lt;a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=326&amp;amp;p_org_id=44&amp;amp;lang=US"&gt;Oracle Certified Master, Java EE 5 Enterprise Architect exam / certification&lt;/a&gt; update to JEE 6 standard?&lt;br /&gt;&lt;br /&gt;In a nutshell, here's where it is (covering each of the three parts in turn):&lt;br /&gt;&lt;br /&gt;Parts two and three of the exam (the practical elements) will remain very similar to how they operate today - these elements test your ability to design and document (part two) a solution to a well-defined business problem using the JEE platform and then challenge you (part three) to self-critique and justify key design decisions taken, especially on how non-functional requirements will be adequately satisfied. Parts two and three are pretty much independent of the current JEE revision, because the candidate is given a good degree of latitude in how you use JEE to solve the problem. Were you to use J2EE 1.4 features let's say, then the examiner is going to question the logic of that decision closely, but that's about it. Writing Ruby code and then having it compile to Java bytecodes at runtime using JRuby is also not recommended (don't laugh, someone did ask..)!&lt;br /&gt;&lt;br /&gt;Part one of the exam (the multiple-choice exam) **will** change for JEE 6 - it has to because part one is more tightly coupled to a specific JEE revision - currently JEE 5 (with ~5% of J2EE 1.4 content).&lt;br /&gt;&lt;br /&gt;The last time we revised part one, ~ten architects got together in Broomfield, CO for a week to design and critique the corpus of questions used. After that, Sun Microsystems (as they were then), brought in some external testing folks to benchmark the exam and to critique the overall marking strategy we intended to employ. That was an intense week and overall a fairly involved process, because you want to write difficult, tricky questions that will challenge an architect but at the same time, be fair. Part one of the architect exam is also not allowed to test your ability to memorize APIs or specifications - that is the primary task for the lower certifications. You very quickly find that a lot of difficult / tricky questions in JEE revolve around the APIs and specifications!&lt;br /&gt;&lt;br /&gt;I think with the benefit of hindsight we erred on the side of fairness over toughness. I think we'll look to toughen up the questions for JEE 6.&lt;br /&gt;&lt;br /&gt;I don't expect Oracle to reconvene the team of architects to do this refresh - the last refresh of the exam was a major refresh whereas we would consider this refresh to be more minor. Therefore the time taken to update should be shorter. Once the part one refresh is scheduled in, I'll post again on this topic. For now, the JEE 5 architect exam remains the most current and up to date architect exam you can take.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-5614869022991582012?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/5614869022991582012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=5614869022991582012' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5614869022991582012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5614869022991582012'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/02/oracle-certified-enterprise-architect.html' title='Oracle Certified Enterprise Architect - JEE 6 refresh update'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-8859494046263961245</id><published>2011-01-23T20:49:00.000Z</published><updated>2011-01-23T20:49:50.398Z</updated><title type='text'>What would you like to read about next?</title><content type='html'>I've been pondering what next to write about and thought - why not ask the readers?&amp;nbsp;So here's your chance!&lt;br /&gt;&lt;br /&gt;Turns out that most people visiting / watching this blog fall into four camps (in no order of priority):&lt;br /&gt;&lt;br /&gt;* Want to know more about Enterprise Java architecture / software architecture in general&lt;br /&gt;&lt;br /&gt;*&amp;nbsp;Want to know more about&amp;nbsp;the Oracle Certified Enterprise Architect exam for the Java platform (I'm a co-author of the &lt;a href="http://humphreysheil.blogspot.com/2010_01_01_archive.html"&gt;study guide for this exam&lt;/a&gt; as well as a co-lead assessor)&lt;br /&gt;&lt;br /&gt;* Want to know more about .NET (especially &lt;a href="http://humphreysheil.blogspot.com/2010_08_01_archive.html"&gt;running Umbraco on Windows Azure&lt;/a&gt; and / or MVC 3)&lt;br /&gt;&lt;br /&gt;* Want to know more about &lt;a href="http://humphreysheil.blogspot.com/2011_01_01_archive.html"&gt;ecommerce tracking&lt;/a&gt; (measuring, then improving online conversions)&lt;br /&gt;&lt;br /&gt;At least, that's what the web tracking software gods say! There's a great mix of visitors too from all corners of the globe, but the next post will be in english I'm afraid.&lt;br /&gt;&lt;br /&gt;So if there's a specific topic relating to the categories above that you'd really like to see covered, drop me a note at &lt;a href="mailto:hsheilblog@gmail.com"&gt;hsheilblog@gmail.com&lt;/a&gt; and I'll do my best to - and may the best suggestion win!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-8859494046263961245?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/8859494046263961245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=8859494046263961245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8859494046263961245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8859494046263961245'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/01/what-would-you-like-to-read-about-next.html' title='What would you like to read about next?'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7989637938431359404</id><published>2011-01-09T21:27:00.001Z</published><updated>2011-01-09T21:29:16.459Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='online conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce'/><category scheme='http://www.blogger.com/atom/ns#' term='analytics'/><title type='text'>Ecommerce: online conversion - simple model and toolset</title><content type='html'>Readers of this blog can wax lyrical on how to build a great&amp;nbsp;B2C ecommerce site - either in JEE or .NET. First we get the technology stack right, then frameworks using that technology stack, comprehensive functional and technical specs, testing plans, coding standards + reviews with daily scrum meetings, hardware / cloud estimation and then load / penetration testing - this is bread and butter to the software architect.&lt;br /&gt;&lt;br /&gt;What a lot of software architects don't understand (or underestimate) is what needs to happen to their site &lt;i&gt;after&lt;/i&gt; it goes live. After the go-live of a B2C ecommerce site, a whole other team (which is fairly non-technical) takes it over. This team is really exercised by and focused on three core goals:&lt;br /&gt;&lt;br /&gt;1. Get qualified visitors to the site as cost-effectively as possible&lt;br /&gt;&lt;br /&gt;2. Enable those visitors to find the product they want quickly and easily&lt;br /&gt;&lt;br /&gt;3. Convert the visitor into a customer - convince them to buy on your site&lt;br /&gt;&lt;br /&gt;These goals are completely measurable in monetary terms, and hence you will find senior management taking a serious interest in them as well.&lt;br /&gt;&lt;br /&gt;I work in leisure travel, and there are some very specific nuances to achieving these goals in my industry sector (every industry sector will have their own nuances). But there is also a generic model to be found and some very useful (and free!) tools that you can use to put the model in place.&lt;br /&gt;&lt;br /&gt;Turns out the model is pretty simple. Essentially it consists of three components:&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;Analytics&lt;/b&gt; - where we measure what's happening on our target site - how is the user interacting with the site and can we infer what they do and don't like based on measuring and studying those interactions&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;Hypothesis testing (aka A/B and / or multivariate testing)&lt;/b&gt; - Analytics will give us lots of data to generate ideas on how to improve interactions, therefore we need a mechanism to test out hypotheses in a semi-automated way (if I change X, I bet the conversion rate will increase by Y%)&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;Efficient prospect capture&lt;/b&gt; - we want the best native SEO score possible on all of the search engines and when we spend money on ad campaigns, we want the best return for that investment.&lt;br /&gt;&lt;br /&gt;So that's the high-level model - it's pretty simple.&lt;br /&gt;&lt;br /&gt;Many companies (and especially Google), make an awful lot of money around online ecommerce. And that's where the "free!" I noted above comes in. It makes sense for Google to give away the tools enabling Analytics (1) and Hypothesis testing (2) for free, as they make so much revenue on selling ad campaigns in Efficient Prospect Capture (3). Unkind souls might claim that if you spend any kind of money with Google AdWords at all, then you're not really getting (1) or (2) for free, but you won't find a nefarious cheap shot like that on this blog.&lt;br /&gt;&lt;br /&gt;Let's look at how we can implement the model then:&lt;br /&gt;&lt;br /&gt;1. Analytics - use&amp;nbsp;&lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt;. &lt;a href="http://www.advanced-web-metrics.com/blog/"&gt;Brian Clifton's book&lt;/a&gt; is an excellent treatise on the application, and the &lt;a href="http://www.google.com/support/conversionuniversity/bin/request.py?hl=en-uk&amp;amp;contact_type=indexSplash&amp;amp;rd=1"&gt;online training videos&lt;/a&gt; are of a high standard as well. It's well worth having a couple of developers on your team get Analytics certified to understand what the tool can do - it really is very powerful&lt;br /&gt;&lt;br /&gt;2. Hypothesis (A/B, multivariate) testing - use&amp;nbsp;&lt;a href="http://www.google.com/websiteoptimizer"&gt;Google Website Optimizer&lt;/a&gt;. There's less information about this tool, I guess because it's a bit simpler than Analytics, but &lt;a href="http://www.google.com/support/websiteoptimizer/"&gt;a good overview is available&lt;/a&gt;. Being able to change content and see the impact on the fly is a key part of the model - that's why we use a CMS like Umbraco!&lt;br /&gt;&lt;br /&gt;3. Efficient prospect capture - SEO, SEO and more SEO. &lt;a href="http://www.artofseobook.com/"&gt;The Art of SEO&lt;/a&gt; is a great read. My opinion here is that as long as you're doing a great job on your own SEO, you should begrudge a search engine every penny. By using tagging in conjunction with Google Analytics (make sure you associate your AdWords account with your Analytics account to get all this done for you automagically), you can continually check that your ROI on ad campaigns is worth the spend, and stop buying terms that don't make money.&lt;br /&gt;&lt;br /&gt;And that's pretty much it. A three-component generic model for online ecommerce, followed by the simplest (with zero cost) way to implement that model for your B2C site. I intimated that each industry sector has its own quirks and foibles above and beyond this base model, and I'll focus on the leisure travel industry in more detail in a future post or two. For now, enjoy!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7989637938431359404?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7989637938431359404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7989637938431359404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7989637938431359404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7989637938431359404'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2011/01/ecommerce-online-conversion-simple.html' title='Ecommerce: online conversion - simple model and toolset'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313223687692711</id><published>2010-12-28T17:33:00.003Z</published><updated>2011-05-24T11:41:42.704+01:00</updated><title type='text'>What I do</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HJ98vyQGlls/TWGnZZztIAI/AAAAAAAAABQ/k7BG6td8j20/s1600/WTM+2007+photos+026.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-HJ98vyQGlls/TWGnZZztIAI/AAAAAAAAABQ/k7BG6td8j20/s200/WTM+2007+photos+026.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;(I can be contacted by &lt;a href="mailto:hsheilblog@gmail.com"&gt;email&lt;/a&gt;&amp;nbsp;or &lt;a href="http://twitter.com/#!/humphreysheil"&gt;twitter&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I'm the Chief Technology Officer for &lt;a href="http://www.comtec-group.com/"&gt;Comtec Group&lt;/a&gt; - we build end to end systems for clients in the leisure travel industry, primarily in the UK and US. I spend a lot of time with our architects, product managers and customers.&lt;br /&gt;&lt;br /&gt;The CTO function at Comtec leads the definition and construction of our travel suite, from fast loading of &amp;nbsp;inventory (e.g. Hotel, Air, Transfers etc.) through GDS selection and implementation and with a particular focus on ecommerce. In the ecommerce world we help our customers to&amp;nbsp;measure and increase online conversion rates, optimize PPC spend, increase SEO scores and overall consumer engagement. In order to do this, we leverage analytics, A/B with multivariate testing and&amp;nbsp;personalization techniques,&amp;nbsp;to name just a few tools and techniques in our kit bag.&lt;br /&gt;&lt;br /&gt;Before Comtec I worked for a &lt;a href="http://www.advancedcomputersoftware.com/abs/"&gt;financial services company&lt;/a&gt; as a software architect and before that again I worked as a consultant for a well-known &lt;a href="http://www.sapient.com/"&gt;business and IT consulting company&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In 2000, I became an external examiner and subject matter expert for the &lt;a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=326"&gt;Java Enterprise Architect&lt;/a&gt; accreditation from Sun Microsystems - now Oracle. I have presented at JavaOne and written numerous articles on many different aspects of software engineering. In 2010, I co-authored the &lt;a href="http://www.amazon.com/Certified-Enterprise-Architect-Study-Guide/dp/0131482033/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1293563898&amp;amp;sr=8-1"&gt;definitive official study guide to the SCEA exam&lt;/a&gt; itself.&lt;br /&gt;&lt;br /&gt;I am deeply rooted in Computer Science - I have a particular interest in distributed systems and hold a B.Sc (1998 - First Class Honours) and M.Sc (2002) in Computer Science from &lt;a href="http://www.ucd.ie/"&gt;University College Dublin&lt;/a&gt;.&amp;nbsp;&lt;a href="http://portal.acm.org/citation.cfm?id=957352&amp;amp;dl=ACM&amp;amp;coll=portal"&gt;My M.Sc. thesis&lt;/a&gt; focused on building a high-throughput grid-like compute engine using Java and Artificial Neural Networks to solve a well-known bioinformatics problem (protein secondary structure prediction).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313223687692711?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313223687692711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313223687692711' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313223687692711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313223687692711'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2003/12/what-i-do.html' title='What I do'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-HJ98vyQGlls/TWGnZZztIAI/AAAAAAAAABQ/k7BG6td8j20/s72-c/WTM+2007+photos+026.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-320127913036876906</id><published>2010-12-03T00:06:00.000Z</published><updated>2010-12-03T00:06:14.081Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Early Xmas Cloud presents from Microsoft, Google..</title><content type='html'>Just about 48 hours apart, Microsoft and Google have released significant updates for their Azure and App Engine cloud offerings just in time for Christmas.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://googleappengine.blogspot.com/2010/12/happy-holidays-from-app-engine-team-140.html"&gt;1.4.0 App Engine SDK&lt;/a&gt; addresses some long-criticised weaknesses, in particular not being able to keep an instance ready to rock and roll at all times plus the ability to execute long-running requests (&amp;gt; ten seconds). The ole App Engine has been getting a bit of a kicking recently in the blogosphere so this is a timely release (assuming the unplanned outages have been sorted out in parallel with this). There's nothing in the release notes about a more SQL-like persistence store like &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt;, so you still need to wrap your head around Google's Datastore and the pros and cons it gives you.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2010/11/29/just-released-windows-azure-sdk-1-3-and-the-new-windows-azure-management-portal.aspx"&gt;1.3 Azure SDK&lt;/a&gt;&amp;nbsp;also addresses some weaknesses in Azure, in particular now allowing developers to actually RDP onto their Azure boxen in the cloud, a really big improvement on the current state of affairs (basically you get a headless box with non-straightforward access to log files via the Windows Azure Diagnostics service).&lt;br /&gt;&lt;br /&gt;It's interesting how these SDK releases are solidifying the differences between these two cloud offerings - Google are zeroing in on providing a PaaS model, where you have to code in a supported programming language (currently either Java or Python -&amp;nbsp;wonder when they &lt;a href="http://golang.org/doc/devel/roadmap.html"&gt;will support Google Go&lt;/a&gt;?)&amp;nbsp;against a locked-down set of APIs, where Microsoft are moving more towards an IaaS model where you do what you like cos it's more or less your box. Both approaches have their strengths and weaknesses, the overall ecosystem is stronger for having both.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-320127913036876906?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/320127913036876906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=320127913036876906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/320127913036876906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/320127913036876906'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/12/early-xmas-cloud-presents-from.html' title='Early Xmas Cloud presents from Microsoft, Google..'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-1756581050504990175</id><published>2010-09-27T10:39:00.002+01:00</published><updated>2010-09-27T10:41:38.727+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lambda'/><category scheme='http://www.blogger.com/atom/ns#' term='coin'/><category scheme='http://www.blogger.com/atom/ns#' term='jee 7'/><category scheme='http://www.blogger.com/atom/ns#' term='jdk 7'/><category scheme='http://www.blogger.com/atom/ns#' term='jigsaw'/><title type='text'>The curious case of Oracle, the JDK and plan B (aka the prune juice plan)</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;Mark Reinhold (Chief Architect of the Java Platform Group at Oracle), posted a Plan A and B approach (just like a classic A/B ecommerce conversion test eh?!) for the JDK roadmap in advance of the annual Java love fest that is JavaOne in San Francisco last week. For me, this was the biggest item I was looking for - the time gap between JDK 6 and 7 has been ridiculous.&lt;br /&gt;&lt;br /&gt;From his &lt;a href="http://blogs.sun.com/mr/entry/rethinking_jdk7"&gt;"Re-thinking JDK 7"&lt;/a&gt; post, the options proposed are:&lt;br /&gt;&lt;br /&gt;&amp;lt;snip&amp;gt;&lt;br /&gt;&lt;br /&gt;Plan A:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;JDK 7 (as currently defined)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Mid 2012&lt;br /&gt;&lt;br /&gt;Plan B:&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;JDK 7 (minus Lambda, Jigsaw, and part of Coin)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Mid 2011&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;JDK 8 (Lambda, Jigsaw, the rest of Coin, ++)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Late 2012&lt;br /&gt;&lt;br /&gt;&amp;lt;/snip&amp;gt;&lt;br /&gt;&lt;br /&gt;I am &lt;b&gt;&lt;i&gt;firmly&amp;nbsp;&lt;/i&gt;&lt;/b&gt;in favour of the option eventually selected - option B. It's clear that the JDK has a huge feature log jam. Selecting option B is like giving the JDK release schedule a big dose of prune juice - you know something's gonna start moving.&lt;br /&gt;&lt;br /&gt;So to understand what Plan B means for you as a Java architect, I suggest that it can be broken down into these four steps.&lt;br /&gt;&lt;br /&gt;1. Read the negative comment to a further post by Mark announcing the decision - this comment represents why you would be unhappy with Plan B. I reproduce it here for the lazy reader (not you, the other guy):&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;Hi Mark,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;To me, "JDK 7 minus Lambda, Jigsaw and part of Coin" doesn't sound much like "Getting Java moving again" :-(&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;This schedule is very disappointing.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Posted by Cedric on September 08, 2010 at 10:06 AM PDT&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;2. Read the response to the negative comment to understand what Plan B entails. Again, reproduced here:&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;JDK&lt;/i&gt;&lt;i&gt; 7 - (Lambda + Jigsaw + part of Coin) = Most of Coin + &lt;/i&gt;NIO&lt;i&gt;.2 (&lt;/i&gt;JSR&lt;i&gt; 203) +&lt;/i&gt;&lt;br /&gt;&lt;i&gt;InvokeDynamic (JSR 292) + "JSR 166y" (fork/join, etc.) + most everything else&lt;/i&gt;&lt;br /&gt;&lt;i&gt;on the current feature list (http://openjdk.java.net/projects/jdk7/features/) +&lt;/i&gt;&lt;br /&gt;&lt;i&gt;possibly a few additional features TBD.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Posted by Mark Reinhold on September 08, 2010 at 10:26 AM PDT&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;The TBD bit is a tad ambiguous - let's ignore it by assuming nothing major is going to get in now, given the sheer volume of regression and platform testing needed before a JDK hits gold / GA status.&lt;br /&gt;&lt;br /&gt;3. So now you know Project Coin is the biggie for JDK 7 - therefore you need to download presentation for same from this year's &lt;a href="http://blogs.sun.com/darcy/resource/JavaOne/J1_2010-ProjectCoin.pdf"&gt;JavaOne 2010 session on Coin&lt;/a&gt; (119 slides, but a lot of these are just slides bitching about how hard it is to do, seminal slides are 10 and 23 - 66). Try-with-resources (Automatic Resource Management) looks great - equivalent to C#'s using keyword. Enhanced exception handling will enable better code as well.&lt;br /&gt;&lt;br /&gt;4. [Optional, for the dedicated reader] Some more light bedtime reading - follow the links from the &lt;a href="http://openjdk.java.net/projects/jdk7/features/"&gt;JDK 7 roadmap&lt;/a&gt;, especially for Project Lambda (closures) and Jigsaw (modular Java). This will then get JDK 8 on your forward-looking radar.&lt;br /&gt;&lt;br /&gt;Now the **real** question is what will JEE 7 look like?!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-1756581050504990175?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/1756581050504990175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=1756581050504990175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1756581050504990175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1756581050504990175'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/09/curious-case-of-oracle-jdk-and-plan-b.html' title='The curious case of Oracle, the JDK and plan B (aka the prune juice plan)'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-755091959255772890</id><published>2010-08-29T14:50:00.015+01:00</published><updated>2010-08-30T01:10:29.572+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='cms'/><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='umbraco'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Umbraco CMS - complete install on Windows Azure (the Microsoft cloud)</title><content type='html'>&lt;div&gt;We use the Umbraco CMS a lot at work - it's widely regarded as one of (if not the) best CMSs out there in the .NET world. We've also done quite a bit of R&amp;amp;D work on Microsoft Azure cloud offering and this blog post shares a bit of that knowledge (all of the other guides out there appear to focus on getting the Umbraco database running on SQL Azure, but not how to get the Umbraco server-side application itself up and running on Azure). The cool thing is that Umbraco comes up quite nicely on Azure, with only config changes needed (no code changes).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, first let's review the toolset / platforms I used:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* &lt;a href="http://umbraco.codeplex.com/releases/view/51165"&gt;Umbraco 4.5.2&lt;/a&gt;, built for .NET 3.5 &lt;/div&gt;&lt;div&gt;* Latest Windows Azure Guest OS (1.5 - Release 201006-01)&lt;/div&gt;&lt;div&gt;* Visual Studio 2010 Professional&lt;/div&gt;&lt;div&gt;* &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&amp;amp;displaylang=en"&gt;Azure SDK 1.2&lt;/a&gt; &lt;/div&gt;&lt;div&gt;* SQL Express 2008 Management Studio&lt;/div&gt;&lt;div&gt;* .NET 3.5 sp1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step one is simply to get Umbraco running happily in VS 2010 as a regular ASP.NET project. The steps to achieve this are &lt;a href="http://our.umbraco.org/wiki/codegarden-2009/open-space-minutes/working-in-visual-studio-when-developing-umbraco-solutions/working-in-visual-studio-when-developing-umbraco-solutions-(2nd-way)"&gt;well documented here&lt;/a&gt;. Test your work by firing up Umbraco locally, accessing the admin console and generating a bit of content (XSLTs / Macros / Documents etc.) before progressing further. (The key to working efficiently with Azure is to always have a working case to fall back on, instead of wondering what bit of your project is not cloud-friendly).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then &lt;a href="http://blogs.msdn.com/b/jnak/archive/2010/02/08/migrating-an-existing-asp-net-app-to-run-on-windows-azure.aspx"&gt;use these steps&lt;/a&gt; to make your Umbraco project "Azure-aware" . Again, test your installation by deploying to the Azure Dev Compute and Storage Fabric on your local machine and testing that Umbraco works as it should before going to production. The Azure Dev environment is by no means perfect (see below) or a true synonym for Azure Production, but it's a good check nonetheless.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we need to use the &lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard tool&lt;/a&gt; to migrate the Umbraco SQL Express database. I used v3.3.6 (which worked fine with SQL Express contrary to some of the comments on the site) to convert the Umbraco database to its SQL Azure equivalent - the only thing the migration tool has to change is add a clustered index on one of the tables (dbo.umbracoUserLogins) as follows - everything else migrates over to SQL Azure easily:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;CREATE CLUSTERED INDEX [ci_azure_fixup_dbo_umbracoUserLogins] ON [dbo].[umbracoUserLogins] &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;[userID]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)WITH (IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;GO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then create a new database in SQL Azure and re-play the script generated by AzureMW into it to create the db schema and standing data that Umbraco expects. To connect to it, you'll replace a line like this in the Umbraco web.config:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    &amp;lt;add key="umbracoDbDSN" value="server=.\SQLExpress;database=umbraco452;user id=xxx;password=xxx" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;add key="umbracoDbDSN" value="server=.\SQLExpress;database=umbraco452;user id=xxx;password=xxx"&gt;&lt;/add&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;with a line like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    &amp;lt;add key="umbracoDbDSN" value="server=tcp:&amp;lt;&amp;lt;youraccountname&amp;gt;&amp;gt;.database.windows.net;database=umbraco;user id=&amp;lt;&amp;lt;youruser&amp;gt;&amp;gt;@&amp;lt;&amp;lt;youraccount&amp;gt;&amp;gt;;password=&amp;lt;&amp;lt;yourpassword&amp;gt;&amp;gt;" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So we now have the Umbraco database running in SQL Azure, and the Umbraco codebase itself wrapped using an Azure WebRole and deployed to Azure as a package. If we do this using the Visual Studio tool set, we get:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:27:18 - Preparing...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:27:19 - Connecting...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:27:19 - Uploading...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:29:48 - Creating...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:31:12 - Starting...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:31:52 - Initializing...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:31:52 - Instance 0 of role umbraco452_net35 is initializing&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:38:35 - Instance 0 of role umbraco452_net35 is busy&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:40:15 - Instance 0 of role umbraco452_net35 is ready&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;19:40:16 - Complete.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note the total time taken - Azure is deploying a new VM image for you when it does this, it's not just deploying a web app to IIS, so the time taken is always ~ 13 minutes, give or take. I wish it was quicker..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span"&gt;Final comments&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;If you deploy and it takes longer than ~13 minutes, then double check the common Azure gotchas. In my experience they are:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Missing assemblies in production - so your project runs fine on the Dev Fabric and just hangs in Production on deploy - for Umbraco you need to make sure that Copy Local is set to true for cms.dll, businesslogic.dll and of course umbraco.dll so that they get packaged up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Forgetting to change the default value of DiagnosticsConnectionString in ServiceConfiguration.cscfg (by default it wants to persist to local storage which is inaccessible in production - you'll need to use an Azure storage service and update the connection string to match, e.g. your ServiceConfiguration.cscfg should look something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;serviceconfiguration servicename="UmbracoCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"&gt;&lt;/serviceconfiguration&gt;&lt;/div&gt;&lt;div&gt;&lt;role name="umbraco452_net35"&gt;&lt;/role&gt;&lt;/div&gt;&lt;div&gt;&lt;instances count="1"&gt;&lt;/instances&gt;&lt;/div&gt;&lt;div&gt;&lt;configurationsettings&gt;&lt;/configurationsettings&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;ServiceConfiguration serviceName="UmbracoCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;Role name="umbraco452_net35"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;Instances count="1" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;ConfigurationSettings&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;Setting name="DiagnosticsConnectionString" value="DefaultEndpointsProtocol=https;AccountName=travelinkce;AccountKey=youraccountkey/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;/ConfigurationSettings&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;/Role&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;/ServiceConfiguration&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You also need to run Umbraco in full-trust mode, otherwise you will get a security exception when Umbraco tries to read files that are not inside its own "local store" as defined by the .NET CAS (Code Access Security) sub system running on the production Azure VM. In other words, you need the&amp;nbsp;enableNativeCodeExecution property set to true in your ServiceDefinition.csdef like so:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;lt;ServiceDefinition name="UmbracoCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;WebRole name="umbraco452_net35" enableNativeCodeExecution="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;InputEndpoints&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;InputEndpoint name="HttpIn" protocol="http" port="80" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/InputEndpoints&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;ConfigurationSettings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Setting name="DiagnosticsConnectionString" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/ConfigurationSettings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/WebRole&amp;gt;&lt;br /&gt;&amp;lt;/ServiceDefinition&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Azure development tools (Fabric etc.) are quite immature in my opinion - very slow to start up (circa one minute) and simply crash when you've done something wrong rather than give a meaningful error message and then exit (for example, when trying to access a local SQL Server Express database (which is wrong - fair enough), the loadbalancer simply crashed with a System.Net.Sockets.SocketException{"An existing connection was forcibly closed by the remote host"}. I have the same criticism of the Azure production system - do a search to see how many people spin their wheels waiting for their roles to deploy with no feedback as to what is going / has gone wrong. Azure badly needs more dev-friendly logging output.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I couldn't get the .NET 4.0 build of Umbraco to work (and it should, .NET 4.0 is now supported on Azure). The problem appears to lie in missing sections in the machine.config file on my Azure machine that I haven't had the time or inclination to dig into yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You'll also find that the following directories do not get packaged up into your Azure deployment package by default: xslt, css, scripts, masterpages. To get around this quickly, I just put an empty file in each directory to force their inclusion in the build. If these directories are missing, you will be unable to create content in Umbraco.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span"&gt;Exercises for the reader&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Convert the default InProc session state used by Umbraco to SQLServer mode (otherwise you will have a problem once you scale out beyond one instance on Azure). Starting point is this article - http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx, but google for errata to the script - the original script supplied does not work out of the box.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Use an Azure XDrive or similar to store content in one place and cluster Umbraco.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-755091959255772890?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/755091959255772890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=755091959255772890' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/755091959255772890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/755091959255772890'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/08/umbraco-cms-complete-install-on-windows.html' title='Umbraco CMS - complete install on Windows Azure (the Microsoft cloud)'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-4384505038695084949</id><published>2010-08-18T22:36:00.004+01:00</published><updated>2010-08-18T22:59:16.602+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DI'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Ninject'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC 3'/><title type='text'>Using Ninject as your Dependency Injection container in ASP.NET MVC 3</title><content type='html'>&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx"&gt;MVC 3 Preview 1&lt;/a&gt; has been available for a few weeks now from Microsoft, with Preview 2 scheduled for release sometime next month.&lt;br /&gt;&lt;br /&gt;As a web development framework, MVC 3 is pretty cool - simple to set up and start using, with a terse, clean syntax courtesy of the new Razor view engine. Coupled with Entity Framework 4 (supporting both code-first generation of database schemas and wrapping existing database schemas), MVC 3 + EF 4 has the makings of a very good web development stack.&lt;br /&gt;&lt;br /&gt;If you're interested in using Ninject as the Dependency Injection (DI) container in MVC 3, then you'll find the code below interesting - I couldn't find this anywhere else on the web so ended up writing it. It's the required implementation of the System.Web.Mvc.IMvcServiceLocator that gets instantiated and used in the Application_Start method in Global.asax.cs.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using DI with MVC 3 makes a lot of sense - we use it to decouple concrete implementations from the interface that we code against so that we can quickly swap in alternate implementations, e.g. a quick, self-contained in-memory database for unit testing using Moq or similar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://bradwilson.typepad.com/blog/2010/07/service-location-pt2-controllers.html"&gt;This link&lt;/a&gt; from Brad Wilson shows how to set up Microsoft Unity as the dependency injection container and &lt;a href="http://www.viddler.com/explore/mvcconf/videos/4/"&gt;this presentation&lt;/a&gt; from Phil Haack gives a fleeting, tantalising glimpse of how the Ninject equivalent might look but there's nowhere to get the complete code you need to get it working!&lt;br /&gt;&lt;br /&gt;So I put the two together in order to use Ninject as my DI container. Here's the code (with zero comments as per my normal coding standard):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using System.Web.Mvc;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using Ninject;&lt;br /&gt;&lt;br /&gt;namespace AdminApp.Models&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; public class NinjectMvcServiceLocator : IMvcServiceLocator&lt;br /&gt; {&lt;br /&gt;     public IKernel Kernel { get; private set; }&lt;br /&gt;&lt;br /&gt;     public NinjectMvcServiceLocator(IKernel kernel)&lt;br /&gt;     {&lt;br /&gt;         Kernel = kernel;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public object GetService(Type serviceType)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.Get(serviceType);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     public IEnumerable&amp;lt;tservice&amp;gt; GetAllInstances&amp;lt;tservice&amp;gt;()&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.GetAll&amp;lt;tservice&amp;gt;();&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public IEnumerable&amp;lt;object&amp;gt; GetAllInstances(Type serviceType)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.GetAll(serviceType);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public TService GetInstance&amp;lt;tservice&amp;gt;()&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.Get&amp;lt;tservice&amp;gt;();&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public TService GetInstance&amp;lt;tservice&amp;gt;(string key)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.Get&amp;lt;tservice&amp;gt;(key);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public object GetInstance(Type serviceType)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.Get(serviceType);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public object GetInstance(Type serviceType, string key)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             return Kernel.Get(serviceType, key);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     public void Release(object instance)&lt;br /&gt;     {&lt;br /&gt;         try&lt;br /&gt;         {&lt;br /&gt;             Kernel.Release(instance);&lt;br /&gt;         }&lt;br /&gt;         catch (Ninject.ActivationException e)&lt;br /&gt;         {&lt;br /&gt;             throw new System.Web.Mvc.ActivationException("PAK", e);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here's how to instantiate and use it in Global.asax.cs:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;           var kernel = new StandardKernel(new NinjectRegistrationModule());&lt;br /&gt;         var locator = new NinjectMvcServiceLocator(kernel);&lt;br /&gt;         MvcServiceLocator.SetCurrent(locator);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, here's a sample NinjectRegistrationModule which maps the implementation I want onto the generic interface that my code consumes:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using Ninject.Modules;&lt;br /&gt;using AdminApp.Controllers;&lt;br /&gt;&lt;br /&gt;namespace AdminApp&lt;br /&gt;{&lt;br /&gt;class NinjectRegistrationModule : NinjectModule&lt;br /&gt; {&lt;br /&gt;     public override void Load()&lt;br /&gt;     {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ispecialrepository&gt;&lt;dbspecialrepository&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div&gt;Bind&amp;lt;ISpecialRepository&amp;gt;().To&amp;lt;DbSpecialRepository&amp;gt;().InRequestScope();&lt;/div&gt;}&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/dbspecialrepository&gt;&lt;/ispecialrepository&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-4384505038695084949?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/4384505038695084949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=4384505038695084949' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/4384505038695084949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/4384505038695084949'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/08/using-ninject-as-your-dependency.html' title='Using Ninject as your Dependency Injection container in ASP.NET MVC 3'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-1550112576769418004</id><published>2010-07-23T14:50:00.003+01:00</published><updated>2010-07-23T14:53:36.252+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scea exam JEE architect'/><title type='text'>Effect of the SCEA study guide on the exam</title><content type='html'>The SCEA study guide book - especially chapter nine - is already having an effect on the exam. And that effect is interesting, mostly positive but with some negatives as well.&lt;br /&gt;&lt;br /&gt;In general, it is fair to say that the overall standard of submissions has improved, and a lot of submissions clearly contain cues from chapter nine of the book - naming conventions, diagram layout, adoption of the server A and B spec approach for the deployment diagram - it's all there in a lot of submissions.&lt;br /&gt;&lt;br /&gt;The book has made some of the submissions more anodyne / bland / standardized, which in turn makes me a little sentimental for the past. There's nothing like trying to traverse a crazy class diagram late at night for keeping your brain sharp!&lt;br /&gt;&lt;br /&gt;In my opinion, a small but not insignificant percentage of candidates (a bit less than 10%) actually end up submitting a **worse** assignment under the influence of the book, and for a very interesting reason. If you buy the book and read it and aren't an architect, then you will have an incomplete understanding of the concepts covered within it. By extension, when you apply the book material to your submission, there is a very good chance that you will make mistakes that are pretty glaring. So the book will make your submission worse, not better.&lt;br /&gt;&lt;br /&gt;As a corollary, if you buy the book and really get the material, your application of that new-found material on top of your already substantial knowledge and skills will result in a strong submission.&lt;br /&gt;&lt;br /&gt;In summary then, the book is not a magic book.&lt;br /&gt;&lt;br /&gt;The interesting medium / long-term question is whether or not the exam should always have a pass rate of X% and a fail rate of Y% or if it is acceptable to have X approach 100% as a result of the book (that's not happening but clearly it could).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-1550112576769418004?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/1550112576769418004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=1550112576769418004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1550112576769418004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1550112576769418004'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/07/effect-of-scea-study-guide-on-exam.html' title='Effect of the SCEA study guide on the exam'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-5672983938594699651</id><published>2010-03-27T16:42:00.002Z</published><updated>2010-03-27T16:47:16.476Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Book - feedback so far</title><content type='html'>The book has just gone back to the printers for a second run. Apparently the first print run (a few thousand I think?) was chewed up by Amazon and direct pre-orders. It's fantastic for that many people to have the book and I really hope it helps you in preparing for the exam.&lt;br /&gt;&lt;br /&gt;So, the feedback so far: the reviews on Amazon (both .com and .co.uk) are for the old book, not the new one. Amazon just copied the reviews across (the last one was written two years before the new book published).&lt;br /&gt;&lt;br /&gt;So all I've got to go on are comments that I've received directly. Broadly speaking, reviewers fall into two camps: &lt;br /&gt;&lt;br /&gt;1. Those who like the ~200 page guide / map to a much larger body of research material (happy);&lt;br /&gt;&lt;br /&gt;2. Those who want / expect to find all of the revision material in one book (not so happy).&lt;br /&gt;&lt;br /&gt;Our goal was always to write a book that did not replicate the reams of material that exist for the JEE platform. We simply saw no point in doing that. Instead, we wanted to write a book that the candidate could use to:&lt;br /&gt;&lt;br /&gt;1. Construct a revision schedule for Part One;&lt;br /&gt;&lt;br /&gt;2. Understand how to approach Part Two - constructing your own solution for a given business problem using the JEE platform;&lt;br /&gt;&lt;br /&gt;3. Prepare the candidate for Part Three - defending your Part Two submission and explaining how you solution satisfies various NFRs (non-functional requirements).&lt;br /&gt;&lt;br /&gt;Broadly speaking, I think we've hit the goals we set. There is an errata list that will be sent to the publisher for the second print and will be published here as well for the purchasers of the first run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-5672983938594699651?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/5672983938594699651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=5672983938594699651' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5672983938594699651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5672983938594699651'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/03/book-feedback-so-far.html' title='Book - feedback so far'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-3302475896372215458</id><published>2010-01-26T20:53:00.006Z</published><updated>2010-12-29T13:30:51.139Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>SCEA book publication and shipment dates</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_L4dR-T6tIoY/TRs312u-JKI/AAAAAAAAABI/t7Hu_i7wKwg/s1600/9780131482036.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_L4dR-T6tIoY/TRs312u-JKI/AAAAAAAAABI/t7Hu_i7wKwg/s320/9780131482036.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The book has gone to the printers! It comes off the press on Monday February 1st and gets to Pearson's warehouse on February 4th. From there it usually takes a week to get to Amazon (in the US). Here's the &lt;a href="http://www.amazon.com/Certified-Enterprise-Architect-Study-Guide/dp/0131482033/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1293629160&amp;amp;sr=8-1"&gt;Amazon US&lt;/a&gt; and &lt;a href="http://www.amazon.co.uk/Certified-Enterprise-Architect-Study-Guide/dp/0131482033/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1293629204&amp;amp;sr=8-2"&gt;Amazon UK&lt;/a&gt; links. It's also available for the &lt;a href="http://www.amazon.co.uk/Certified-Enterprise-Architect-Study-Guide/dp/B00371V81Y/ref=sr_1_1?ie=UTF8&amp;amp;s=digital-text&amp;amp;qid=1293629204&amp;amp;sr=8-1"&gt;Kindle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;People who placed pre-orders for hard copy editions will receive their shipment first - shipped direct from Pearson's warehouse next week.&lt;br /&gt;&lt;br /&gt;As far as the online edition goes, the Rough Cut disappears after the final update (which matches the printed book) and it then becomes part of the regular Safari Library and is accessible to all subscribers.&lt;br /&gt;&lt;br /&gt;If these dates change, I'll put out another update. It will be fantastic to see the book finally out there!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-3302475896372215458?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/3302475896372215458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=3302475896372215458' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3302475896372215458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3302475896372215458'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2010/01/scea-book-publication-and-shipment.html' title='SCEA book publication and shipment dates'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_L4dR-T6tIoY/TRs312u-JKI/AAAAAAAAABI/t7Hu_i7wKwg/s72-c/9780131482036.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-3833981075176607657</id><published>2009-11-29T21:52:00.002Z</published><updated>2009-11-29T21:54:33.543Z</updated><title type='text'>Book - chapter nine available for download</title><content type='html'>I've put a PDF copy of chapter nine up on www.box.net for download &lt;a href="http://www.box.net/shared/2s55mfkogg"&gt;here&lt;/a&gt;. Chapter nine is two things - a seminal chapter in terms of the exam content it covers (Parts II and III of the SCEA exam) and also one that Safari Rough Cuts (SRC) keep missing out on in updating it. The version of the book on SRC is a lot older than this version. I'll keep this download link live until SRC is updated with the latest version. Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-3833981075176607657?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/3833981075176607657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=3833981075176607657' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3833981075176607657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3833981075176607657'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/11/book-chapter-nine-available-for.html' title='Book - chapter nine available for download'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-2046046335787899120</id><published>2009-11-26T17:45:00.005Z</published><updated>2009-11-26T20:03:25.955Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='J2EE'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Go'/><title type='text'>Google Go overview for JEE and .NET architects / developers</title><content type='html'>A few days ago, Google released a pre-release / early look copy of a new programming language and platform - Google Go - for general consumption and feedback. After working with Go for a couple of days, I took my notes and thoughts on how it compares to the Java (J2EE / JEE) and .NET platforms - specifically as far as enterprise computing goes - and wrote them up into this &lt;a href="http://www.box.net/shared/4pdk21tjqr"&gt;article&lt;/a&gt;. All feedback appreciated. &lt;br /&gt;&lt;br /&gt;From the Conclusion: "&lt;span style="font-style:italic;"&gt;Go has the potential to completely supplant both C and C++ in the systems programming space and that is clearly it's first goal, but it also has the potential to do much more than that - to reach into the enterprise computing / web+application tier as well. It would be short-sighted in this day and age to design a platform that was restricted to low-level systems programming only, when most companies invest far more time and effort in building applications that are used by consumers to communicate, collaborate, transact ecommerce and more. In this author's opinion, Go has the legs to go further&lt;/span&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-2046046335787899120?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/2046046335787899120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=2046046335787899120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2046046335787899120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2046046335787899120'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/11/google-go-overview-for-jee-and-net.html' title='Google Go overview for JEE and .NET architects / developers'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-4698803279121276024</id><published>2009-11-26T01:42:00.004Z</published><updated>2009-11-26T10:36:22.801Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='study guide'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Another book update (aka where is it..)</title><content type='html'>The book is still moving through pre-production at Pearson. I'm sure a good number of you will be wondering what kind of impetus can be administered to push it along and I feel the same way myself!&lt;br /&gt;&lt;br /&gt;It looks like the book content got caught up in a major upgrade to Safari Rough Cuts that is just about sorted now. A new version has just published, but I know that it does not have the latest chapter nine content that I wrote last month. Chapter nine is a key chapter in the book, focusing as it does on the JustBuildIt scenario that I outlined at JavaOne 2009 and solves it completely. This chapter maps onto Parts II and III of the exam, where candidates download a business scenario of equal complexity and have to propose and defend a solution to it. &lt;br /&gt;&lt;br /&gt;I'm waiting to see when this chapter will show up on Rough Cuts. If it's only a few days away, I'll write another post advising that it's there. But if the delay is going to be as long as the previous delay (essentially four - six weeks to get some content updated), then I'll publish chapter nine as a PDF file on www.box.net, like the other sample chapter and the JavaOne 2008 and 2009 slides. Again, apologies for the delay - I'm pushing as hard as I can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-4698803279121276024?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/4698803279121276024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=4698803279121276024' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/4698803279121276024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/4698803279121276024'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/11/another-book-update-aka-where-is-it.html' title='Another book update (aka where is it..)'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-8565489502046135549</id><published>2009-10-22T14:29:00.003+01:00</published><updated>2009-10-22T14:30:54.850+01:00</updated><title type='text'>Addressing book comments on previous post</title><content type='html'>I just wanted to address some of the comments posted against the previous post in a standalone post (posting my comments against previous comments inline isn't a great way for people to see replies).&lt;br /&gt;&lt;br /&gt;A new version of the book was pushed to Rough Cuts late last week and there is another one waiting to go as well. As I understand it from Pearson, Safari are in the middle of a software upgrade at the mo, hence the tardiness in pushing updated content onto Rough Cuts.&lt;br /&gt;&lt;br /&gt;Once, the next version of the book makes it onto Rough Cuts, I'll be happy that it represents the content for most of the chapters that you'll see in the published book, i.e. go ahead and use it to revise. The one exception is chapter nine, where I consider the content in that chapter to be the bare minimum you need to provide in part two of the exam to pass. We'll be beefing up the UML diagrams and associated English text in that chapter. So the content in chapter nine is correct, but not yet sufficient, for part two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-8565489502046135549?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/8565489502046135549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=8565489502046135549' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8565489502046135549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8565489502046135549'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/10/addressing-book-comments-on-previous.html' title='Addressing book comments on previous post'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-3492645024247358951</id><published>2009-10-15T08:46:00.003+01:00</published><updated>2009-10-15T08:50:56.324+01:00</updated><title type='text'>SCEA study guide - progress update</title><content type='html'>We're pretty much finished with the book edits now. One chapter still looks light and that content will be finished this weekend. But we've underestimated the time the publication process takes at Pearson. Greg tells me that we're looking at late December / early January for the book to be physically on the bookshelves. &lt;br /&gt;&lt;br /&gt;Apologies for setting expectations of mid-October in my blog posts - I didn't realise the time the publication process takes. To mitigate this publication delay, we'll be getting the Rough Cuts content updated with the latest version as soon as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-3492645024247358951?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/3492645024247358951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=3492645024247358951' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3492645024247358951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/3492645024247358951'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/10/scea-study-guide-progress-update.html' title='SCEA study guide - progress update'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7177594268432759280</id><published>2009-09-12T14:45:00.003+01:00</published><updated>2009-09-12T18:39:30.946+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Addressing Rough Cuts feedback received</title><content type='html'>Since the book draft has been released on Safari Rough Cuts, I've received feedback on it, both as blog comments and also directly through the Rough Cuts feedback mechanism.&lt;br /&gt;&lt;br /&gt;Focusing on the areas of improvement that people have commented on:&lt;br /&gt;&lt;br /&gt;1. The final version of the book is significantly longer than the rough cuts version, but it is no weighty tome either. The whole point of the book is to focus on the material that we believe is directly relevant to the JEE Architect exam, as opposed to the JEE platform itself;&lt;br /&gt;&lt;br /&gt;2. The next version of the book contains chapter six (JEE security) which is missing from the current Rough Cuts version - that was a trade-off that we took - to get the book on Rough Cuts in order to get reader feedback, without chapter six; and&lt;br /&gt;&lt;br /&gt;3. The next version of the book contains a completed chapter nine - a fully-worked Part Two and Three solution to an assignment (the JustBuildIt business problem) of similar complexity to the exam assignments.&lt;br /&gt;&lt;br /&gt;Thanks for all the feedback so far - it helps us to make the book better. Unfortunately, time does not permit me to respond to feedback left anonymously, but rest assured that your comments have been read. Finally, we're still shooting for the October date to production.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7177594268432759280?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7177594268432759280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7177594268432759280' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7177594268432759280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7177594268432759280'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/09/addressing-rough-cuts-feedback-received.html' title='Addressing Rough Cuts feedback received'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-6021547076659487866</id><published>2009-08-30T19:10:00.002+01:00</published><updated>2009-08-30T19:13:56.903+01:00</updated><title type='text'>Book update</title><content type='html'>Well, the book edits continue apace, and most of the artwork has been sent to the Pearson graphics team to be transformed from the raw, blocky diagrams that we have created into beautiful images for the book.&lt;br /&gt;&lt;br /&gt;We're basically left with chapter six and nine edits now. There's a bank holiday tomorrow so I'm planning on using that to get my work done and then send it to the editors for review. We're almost there!&lt;br /&gt;&lt;br /&gt;Humphrey&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-6021547076659487866?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/6021547076659487866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=6021547076659487866' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6021547076659487866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6021547076659487866'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/08/book-update.html' title='Book update'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7537552756890400733</id><published>2009-07-01T22:22:00.001+01:00</published><updated>2009-07-01T22:24:14.410+01:00</updated><title type='text'>SCEA study guide now on Rough Cuts</title><content type='html'>Well, the book draft has finally made it onto Rough Cuts &lt;a href="http://my.safaribooksonline.com/9780131363021"&gt;here&lt;/a&gt;. All feedback is truly appreciated and we'll be looking to get a more rounded / completed version up as soon as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7537552756890400733?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7537552756890400733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7537552756890400733' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7537552756890400733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7537552756890400733'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/07/scea-study-guide-now-on-rough-cuts.html' title='SCEA study guide now on Rough Cuts'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-2946524649949096588</id><published>2009-06-21T16:18:00.002+01:00</published><updated>2009-06-21T16:21:46.635+01:00</updated><title type='text'>Sample SCEA book chapter for download - web tier</title><content type='html'>In anticipation of the full book going up on Rough Cuts any day now, I wanted to share one of the chapters to get early feedback on it. The chapter I'm sharing is the third chapter focusing on the web tier portion of the exam and is still in draft status, but with the exception of the graphics needed, is more complete than not. All feedback appreciated. &lt;a href="http://www.box.net/shared/t4sl2qigny"&gt;Link to chapter&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-2946524649949096588?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/2946524649949096588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=2946524649949096588' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2946524649949096588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2946524649949096588'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/06/sample-scea-book-chapter-for-download.html' title='Sample SCEA book chapter for download - web tier'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-7529911013686273750</id><published>2009-06-19T13:52:00.002+01:00</published><updated>2009-06-19T13:59:57.161+01:00</updated><title type='text'>SCEA study guide book update</title><content type='html'>Just a short update on the book for all of the comments asking for an update. I put the content on the Pearson FTP server for peer review and editing the Saturday before JavaOne. Unfortunately it's taking longer than expected to get it pushed through that review process - I'm asking pretty regularly and I'll keep asking on your behalf. As soon as it goes up on Rough Cuts I'll let you guys know.. thanks for the continued interest in the book!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-7529911013686273750?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/7529911013686273750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=7529911013686273750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7529911013686273750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/7529911013686273750'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/06/scea-study-guide-book-update.html' title='SCEA study guide book update'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-9203067392550896481</id><published>2009-06-11T17:20:00.001+01:00</published><updated>2009-06-11T17:22:37.018+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exam'/><category scheme='http://www.blogger.com/atom/ns#' term='slides'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='javaone'/><category scheme='http://www.blogger.com/atom/ns#' term='bof'/><title type='text'>Slides from JavaOne BOF on the SCEA exam</title><content type='html'>I've posted the &lt;a href="http://www.box.net/shared/i5eoqntdaf"&gt;slides&lt;/a&gt; for my BOF talk at JavaOne - enjoy! (including the obvious typo on slide 16).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-9203067392550896481?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/9203067392550896481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=9203067392550896481' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/9203067392550896481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/9203067392550896481'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/06/slides-from-javaone-bof-on-scea-exam.html' title='Slides from JavaOne BOF on the SCEA exam'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-5136587303162184488</id><published>2009-06-11T17:11:00.001+01:00</published><updated>2009-06-11T17:16:37.323+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='exam'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='architect'/><title type='text'>Sample assignment for the SCEA exam - part two</title><content type='html'>So, as a follow-up to part one of this little series, below is the exact list of deliverables that you are required to develop for part two of the exam.&lt;br /&gt;&lt;br /&gt;It is your task to create an architecture and design for the System under Discussion (SuD) with the given business domain model, information provided above and requirements in the use cases. The architecture must be built using the JEE platform.  All deliverables will be accepted as HTML only and each diagram must be UML compliant.&lt;br /&gt;&lt;br /&gt;1.Create a class diagram for the SuD. Public method names referenced in other UML diagrams (e.g. sequence diagrams) should be provided.&lt;br /&gt;&lt;br /&gt;2.Create a Component diagram for the SuD showing the components used in the system and their interaction. Examples of components are EJBs, Servlets, JSPs, major POJOs (Plain Old Java Objects) and important Managers / Controllers / Design Pattern implementations.&lt;br /&gt;&lt;br /&gt;3.Create a Deployment diagram that describes the proposed physical layout of the major tiers of the SuD.&lt;br /&gt;&lt;br /&gt;4.Create either a Sequence or Collaboration diagram for each use case provided.&lt;br /&gt;&lt;br /&gt;In addition to these UML deliverables, the exam requires you to:&lt;br /&gt;&lt;br /&gt;1.List the top three risks and identify a mitigation strategy for each risk.&lt;br /&gt;&lt;br /&gt;2.List any assumptions made during the process of coming up with the architecture and design.&lt;br /&gt;&lt;br /&gt;Your architecture and design will be graded on how well it supports the requirements detailed in this document and on the clarity of all information provided in both textual and diagrammatic form.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-5136587303162184488?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/5136587303162184488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=5136587303162184488' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5136587303162184488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/5136587303162184488'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/06/sample-assignment-for-scea-exam-part_11.html' title='Sample assignment for the SCEA exam - part two'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-1616361653897459211</id><published>2009-06-09T11:54:00.003+01:00</published><updated>2009-06-09T12:01:46.794+01:00</updated><title type='text'>Sample assignment for the SCEA exam - part one</title><content type='html'>&lt;span style="font-style:italic;"&gt;Following up on last week's BOF at JavaOne, I promised to put the slides online as well as the expanded version of a sample scenario for part two of the exam. The slides are coming later, and here is the expanded version of the JustBuildIt scenario. As per the talk, the goal here is to expand on this scenario over time and create a fully-worked solution from it. In subsequent posts, I'll be posting the domain model, deliverables and use case diagrams so that you can see the full complexity of a scenario that I believe is of the same complexity as an actual scenario in the architect's exam today.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You are the architect for JustBuildIt Corporation, an international, vertically-integrated construction company with significant operations in the US and Canada, Europe and the Pacific Rim. JustBuildIt operates its own forests, quarries and steel foundries to supply its own building sites with wood, concrete and steel. This end to end style of operation has helped JustBuildIt to keep its costs of raw material down in an era of soaring commodity prices. The management team has recently concluded a business-wide review from leaves to roots of the entire company and one fact is apparent – JustBuildIt pays a lot of money moving raw materials to construction sites, even when there are materials just as suitable nearby.&lt;br /&gt;&lt;br /&gt;JustBuildIt has decided to build a building commodities exchange to allow it and some of its competitors to pool excess capacity in a co-opetition model. In the future, raw materials for a construction site will be sourced through the exchange, rather than exclusively from JustBuildIt inventory. &lt;br /&gt;&lt;br /&gt;Based on the management’s report and also interviews with key senior staff, you know the following:&lt;br /&gt;&lt;br /&gt;• JustBuildIt have recently invested in an inventory and order management system which tracks capacity of their production facilities and also individual orders coming in from construction sites around the world. This system is accessed via a JMS Queue;&lt;br /&gt;&lt;br /&gt;• JustBuildIt have decided to expose the interface to their exchange as a web services API;&lt;br /&gt;&lt;br /&gt;• In order to counter accusations of unfairness, JustBuildIt has agreed with all participants that 95% of all transactions to and from the exchange will execute in 5 seconds or less, with the remaining 5% executing in 10 seconds or less;&lt;br /&gt;&lt;br /&gt;• The system has an uptime requirement during core working hours (GMT -8 to GMT +8) of 99.99%; and&lt;br /&gt;&lt;br /&gt;• The actual placement of orders into the exchange is a manual process – JustBuildIt site foremen place orders daily based on individual construction site requirements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-1616361653897459211?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/1616361653897459211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=1616361653897459211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1616361653897459211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/1616361653897459211'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/06/sample-assignment-for-scea-exam-part.html' title='Sample assignment for the SCEA exam - part one'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-6513645389961858787</id><published>2009-04-26T22:26:00.003+01:00</published><updated>2009-04-26T22:29:02.202+01:00</updated><title type='text'>Short book update</title><content type='html'>Just a quick update on the book. As with all things literary, this book has taken on a life of its own, and Mark and I missed our self-set date of end Feb to have the book with Pearsons for final review and publishing. But the good news is that we're close to having a draft copy up on Safari - i.e. we're shooting to have the book up on Safari in the next two weeks. I'll post the link as soon as I have it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-6513645389961858787?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/6513645389961858787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=6513645389961858787' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6513645389961858787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6513645389961858787'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/04/short-book-update.html' title='Short book update'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-8894438276690515185</id><published>2009-03-07T20:45:00.003Z</published><updated>2009-03-08T15:35:46.453Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='javaone'/><title type='text'>Presenting at JavaOne 2009 - SCEA Take Two!</title><content type='html'>Sun have accepted my BOF proposal for JavaOne 2009, so it's time to start looking for flights to SFO again and making sure that the hotel I'm staying at isn't right in the middle of the Tenderloin..&lt;br /&gt;&lt;br /&gt;My proposal this year built on the material covered in last year's BOF, and I'll also take time to dig deeper into Part Two of the exam (where a lot of people come a cropper) and work through exactly what the examiners are / aren't looking for and why.&lt;br /&gt;&lt;br /&gt;If you're going to JavaOne in this crunch year, looking forward to seeing you at the BOF!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-8894438276690515185?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/8894438276690515185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=8894438276690515185' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8894438276690515185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/8894438276690515185'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2009/03/presenting-at-javaone-2009-scea-take.html' title='Presenting at JavaOne 2009 - SCEA Take Two!'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-6805742235758162623</id><published>2008-09-06T21:44:00.003+01:00</published><updated>2008-09-06T21:48:41.744+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='SCEA'/><category scheme='http://www.blogger.com/atom/ns#' term='Skillsmatter'/><title type='text'>Skillsmatter - Oct 16th presentation on SCEA</title><content type='html'>Sun UK have kindly invited me to speak as part of the Skills Matter program in London on October 16th. I'm looking forward to it and I'll be covering the topic of the Sun Certified Architect Exam (SCEA) for JEE 5 at this topic. A great way to learn about the exam if you're in London and are interested in pursuing this certification.&lt;br /&gt;&lt;br /&gt;More details on the talk &lt;a href="http://skillsmatter.com/event/java-jee/all-about-the-sun-certified-enterprise-architect-scea-exam"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-6805742235758162623?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/6805742235758162623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=6805742235758162623' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6805742235758162623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/6805742235758162623'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2008/09/skillsmatter-oct-16th-presentation-on.html' title='Skillsmatter - Oct 16th presentation on SCEA'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-2092078500715087438</id><published>2008-07-20T19:44:00.004+01:00</published><updated>2008-07-20T21:21:48.123+01:00</updated><title type='text'>Slides from BOF 5205 at JavaOne 2008 now available</title><content type='html'>Following a number of requests, I've put the slides from BOF 5205 (All About the Sun Certified Enterprise Architect (SCEA) Exam) online &lt;a href="http://www.box.net/shared/rsigspskck"&gt;here&lt;/a&gt;. The BOF was designed to give attendees an end to end overview on the exam as described below.&lt;br /&gt;&lt;br /&gt;The Sun Certified Enterprise Architect (SCEA) exam represents the&lt;br /&gt;culmination of Sun's certification program for the Java™ community. This&lt;br /&gt;session covers the newly revised SCEA certification that is due to be&lt;br /&gt;released in the first quarter of calendar year 2008. In this BOF, attendees will learn about the three parts of the exam and what they test. They will also learn the following:&lt;br /&gt;&lt;br /&gt;• Who is the target audience for the exam&lt;br /&gt;&lt;br /&gt;• Which exam rumors are true and which are false&lt;br /&gt;&lt;br /&gt;• Tips for exam preparation, including preparation materials&lt;br /&gt;&lt;br /&gt;• Tips for taking each part of the exam&lt;br /&gt;&lt;br /&gt;We'll cover how the exam has been completely rewritten to cover the Java EE 5 platform, the design decisions that went into the new exam and the rationale and motivation behind them (and how this affects candidates).&lt;br /&gt;&lt;br /&gt;Perennial exam rumors will be detailed and addressed, we'll dig through the mountain of potential revision material to single out the most relevant books, specifications and articles to focus on and we'll provide practical tips on how best to approach parts one, two and three of the exam.&lt;br /&gt;&lt;br /&gt;If you are interested in becoming a Sun certified enterprise architect, this BOF is definitely for you. If you haven't considered architect certification before, stop by anyway - you'll learn what becoming a Sun Java EE 5 architect can bring you and how effective the exam preparation is in rounding you out as a Java EE 5 architect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-2092078500715087438?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/2092078500715087438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=2092078500715087438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2092078500715087438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/2092078500715087438'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2008/07/slides-from-bof-5205-at-javaone-2008.html' title='Slides from BOF 5205 at JavaOne 2008 now available'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-188233205374248721</id><published>2008-02-24T10:36:00.007Z</published><updated>2008-02-24T11:13:31.478Z</updated><title type='text'>JavaOne 2008 BOF proposal accepted</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/javaone/sf/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_L4dR-T6tIoY/R8FPs1lSBZI/AAAAAAAAAAM/qS8cuSjxRrs/s320/170x93_Speaker_v4.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5170501478914327954" /&gt;&lt;/a&gt;&lt;br /&gt;See you at JavaOne this year if you're going! I'll be co-presenting a BOF with Mark Cade on the new revised JEE 5 Architect exam from Sun Microsystems. Mark and I participated in the workshop to create the multiple choice questions and we designed and implemented parts two and three, plus right now we're heads down writing the book to go with it (phew!).&lt;br /&gt;&lt;br /&gt;We feel that there is a lot of latent interest in the exam and we wanted to give a clear presentation on what taking the exam / certification entails and give guidance on some common gotchas that we see all the time in submissions. Finally we wanted to dispel common misconceptions that circulate perennially (my written english won't be good enough etc.). Check out the BOF description &lt;a href="https://www28.cplan.com/cc191/session_details.jsp?isid=295205&amp;amp;ilocation_id=191-1&amp;amp;ilanguage=english"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-188233205374248721?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/188233205374248721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=188233205374248721' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/188233205374248721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/188233205374248721'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2008/02/javaone-2008-bof-proposal-accepted.html' title='JavaOne 2008 BOF proposal accepted'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_L4dR-T6tIoY/R8FPs1lSBZI/AAAAAAAAAAM/qS8cuSjxRrs/s72-c/170x93_Speaker_v4.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-116473154660406818</id><published>2006-11-28T16:21:00.000Z</published><updated>2006-11-28T16:32:26.666Z</updated><title type='text'>Part two of the multi-core computing series</title><content type='html'>Check out part two of my Javaworld series on multi-core computing &lt;a href="http://www.javaworld.com/javaworld/jw-11-2006/jw-1106-multicore.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This article builds on &lt;a href="http://www.javaworld.com/javaworld/jw-07-2006/jw-0710-multicore.html"&gt;Part One&lt;/a&gt; and describes and implements a simple threaded framework leveraging Java 5/6 features that you can use to build benchmarks pertinent to your application as you look to find the best hardware for your system. The source code for the article is &lt;a href="http://www.javaworld.com/javaworld/jw-11-2006/multicore/jw-11-multicore.zip"&gt;here&lt;/a&gt;. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-116473154660406818?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/116473154660406818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=116473154660406818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/116473154660406818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/116473154660406818'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2006/11/part-two-of-multi-core-computing.html' title='Part two of the multi-core computing series'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-115719847730165441</id><published>2006-09-02T13:00:00.000+01:00</published><updated>2006-09-02T13:01:17.313+01:00</updated><title type='text'>Technorati post</title><content type='html'>&lt;a href="http://www.technorati.com/claim/w8y29yjhw" rel="me"&gt;Technorati Profile&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-115719847730165441?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/115719847730165441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=115719847730165441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/115719847730165441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/115719847730165441'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2006/09/technorati-post.html' title='Technorati post'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-115462419010169039</id><published>2006-08-03T17:16:00.000+01:00</published><updated>2006-08-16T05:30:15.016+01:00</updated><title type='text'>New Javaworld article on multi-core computing</title><content type='html'>My latest Javaworld article details the issues around multi-core computing from a Java perspective with some initial discussion on the theory behind parallel computing (Amdahl, Gustafson et al.).. From the article "&lt;span style="font-style:italic;"&gt;Hardware is really just software crystallized early," says Alan C. Kay in his paper "The Early History of Smalltalk" (ACM, 1993). This quote really explains the inspiration for this article. Software developers have always been at the mercy of hardware manufacturers, although we've had a pretty easy ride of it since the inception of the computing industry itself. From then until now, increasing speeds of every single component that goes into the standard Von Neumann architecture have given our software literally free increases in performance.&lt;br /&gt;&lt;br /&gt;No longer.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;This is a good article to read in order to understand how all the major vendors are in the middle of a concerted move to multi-core computing, how that affects the software you design and develop and Java support for multi-core computing.&lt;br /&gt;&lt;br /&gt;Check it out &lt;a href="http://www.javaworld.com/javaworld/jw-07-2006/jw-0710-multicore.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-115462419010169039?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/115462419010169039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=115462419010169039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/115462419010169039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/115462419010169039'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2006/08/new-javaworld-article-on-multi-core.html' title='New Javaworld article on multi-core computing'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-113690798550782494</id><published>2006-01-10T15:43:00.000Z</published><updated>2006-05-18T21:30:53.406+01:00</updated><title type='text'>Can't we just keep it Simple? (Javaworld SOA article)</title><content type='html'>Check out my latest JEE / SOA article on Javaworld &lt;a href="http://www.javaworld.com/javaworld/jw-01-2006/jw-0109-soa.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The core premise of the article is the KISS (Keep it Simple, Stupid!) principle - SOA has definite benefits when applied to some JEE projects, but not to all and developers need to remain wary of "silver bullet" promises made by SOA vendors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-113690798550782494?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/113690798550782494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=113690798550782494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/113690798550782494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/113690798550782494'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2006/01/cant-we-just-keep-it-simple-javaworld.html' title='Can&apos;t we just keep it Simple? (Javaworld SOA article)'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-112723446008638345</id><published>2005-09-20T17:25:00.000+01:00</published><updated>2005-09-20T17:41:00.093+01:00</updated><title type='text'>Dearth of production-ready JMX Consoles</title><content type='html'>It turns out that although JMX is a mature server-side specification addressing how to remotely monitor and manage a J2EE application, it leaves a lot to be desired in terms of the &lt;span style="font-style:italic;"&gt;presentation&lt;/span&gt; of that information in a UI - whether it be thin or thick client (HTML or Swing in the Java world).&lt;br /&gt;&lt;br /&gt;Various implementations of JMX UIs then leave quite a bit to be desired - system administrators don't manage systems using an MBean concept, they use processes. In addition, I believe that MBeans should be nestable - so that I retrieve a top-level MBean corresponding to my application and then use it to drill-down to MBeans corresponding to specific modules in my application that I want to manage as part of a sys admin process.&lt;br /&gt;&lt;br /&gt;I've chosen to go with a regular thin client suported on IE / Firefox for this - I simply don't need Swing and requiring my end-users to install a heavy-weight client such as &lt;a href="http://mc4j.org/confluence/display/MC4J/Home"&gt;MC4J&lt;/a&gt; plus potentially a JRE just to manage my application is a requirement too far..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-112723446008638345?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/112723446008638345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=112723446008638345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/112723446008638345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/112723446008638345'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2005/09/dearth-of-production-ready-jmx.html' title='Dearth of production-ready JMX Consoles'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313198010189031</id><published>2004-12-15T17:31:00.000Z</published><updated>2004-12-15T17:33:00.103Z</updated><title type='text'>Java Management Extensions - critical for Enterprise Applications</title><content type='html'>Java Management Extensions or JMX for short have been around for a long time now (in technology time at least). I first came across JMX at JavaOne 2000, where a guy from Sun Microsystems France went through what it could do. It didn't take off then - although BEA and JBoss both added JMX to their servers. In the case of JBoss, JMX was crucial to the micro-kernel architecture and still plays a large part today - although they seem to be much more enamoured with AOP now! ;-)&lt;br /&gt;&lt;br /&gt;I'm using &lt;a href="http://mx4j.sourceforge.net/"&gt;mx4j&lt;/a&gt; and &lt;a href="http://mc4j.sourceforge.net/"&gt;mc4j&lt;/a&gt; on a current project to really beef up the remote administration capabilities for one of my projects. It's working out well, although the lack of documentation around mc4j is an issue. I chose mc4j because I found the default HTML view from mx4j to be not enterprise-class and I like the dashboard feature in mc4j. I certainly don't like the netbeans dependencies though.. extending mc4j is needlessly complicated from a compile, build, test point of view..&lt;br /&gt;&lt;br /&gt;Anyhow, I'm now at a point where I'm exposing many hitherto locked-down features of an application easily via the mc4j client connecting to the mx4j runtime as a &lt;a href="http://www.jcp.org/en/jsr/detail?id=160"&gt;JSR160 compliant&lt;/a&gt; application and it's working out well - next to get some dynamic charts working using jfreechart!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313198010189031?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313198010189031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313198010189031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313198010189031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313198010189031'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/java-management-extensions-critical.html' title='Java Management Extensions - critical for Enterprise Applications'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313190031876167</id><published>2004-12-15T17:30:00.000Z</published><updated>2004-12-15T17:31:40.316Z</updated><title type='text'>And moving back away from Linux as a primary desktop OS!</title><content type='html'>I figured an update on my earlier post was warranted, given my failure to move away from Microsoft Windows.&lt;br /&gt;&lt;br /&gt;My successes below still stand, but there were also some unanticipated problems. These problems included:&lt;br /&gt;&lt;br /&gt;   1. Annoying differences between the Eclipse IDE on Windows and on Linux (it is way more usable on Windows, esp. keyboard shortcuts);&lt;br /&gt;&lt;br /&gt;   2. Microsoft lock-in alive and well - I have to take my pst files with me, but they just didn't want to come. More investigation needed here, also I couldn't use Evolution or the Exchange connector because of server-side issues; and&lt;br /&gt;&lt;br /&gt;   3. Speed - subjective opinion, but I felt that the speed-up I gained in not needing Sophos or Symantec running was cancelled out by the lardiness of Gnome / KDE. Yes I'm aware of faster WMs out there, but they don't look as nice or have the same level of features.&lt;br /&gt;&lt;br /&gt;I ran into additional issues where complex formatting in Microsoft Word documents didn't render properly in OpenOffice, problems accessing networked printers etc. - no showstoppers, but not something that I want to wrestle incessantly with either. So I'm still in dual-boot land, planning to move away from Fedora 2/3 in the near future and over to SuSE - I've read good things about it especially when used in a corporate environment. Hopefully it's more laptop-friendly too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313190031876167?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313190031876167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313190031876167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313190031876167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313190031876167'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/and-moving-back-away-from-linux-as.html' title='And moving back away from Linux as a primary desktop OS!'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313184650388456</id><published>2004-12-15T17:29:00.000Z</published><updated>2004-12-15T17:30:46.503Z</updated><title type='text'>Moving towards Linux as a primary desktop OS</title><content type='html'>Over the past few days, I've been doing a lot of work getting ready to move to RH Fedora Core 2 as my primary desktop OS. I've had linux distros of one form or another (but usually RH) on my machines since 1997 but I've never been comfortable relying on it for my day to day job. Simply put, I need a desktop that works.&lt;br /&gt;&lt;br /&gt;So I've chosen RH Fedora Core 2. I would have gone with SuSE 9.1 and Evolution but I spent a weekend trying to get the bloody ftp installation to work and failed miserably..&lt;br /&gt;Successes so far include getting my previously linux-averse WiFI card (US Robotics 2210) working via the &lt;a href="http://www.houseofcraig.net/acx100_howto.php"&gt;acx100 driver&lt;/a&gt; (thank you folks!), moving over my J2EE servers of choice and getting comfortable with the new keyboard shortcuts for Gnome and firefox.&lt;br /&gt;&lt;br /&gt;Major tasks that still await me are moving from outlook to thunderbird (including migrating a 600 MB pst file), getting APM/ACPI working properly and various other linux tweaks for the thinkpad t30.&lt;br /&gt;&lt;br /&gt;Oh, I've finally been using up2date and yum in anger and once &lt;a href="http://tldp.org/HOWTO/Fedora-Multimedia-Installation-HOWTO/index.html"&gt;configured properly&lt;/a&gt; they save loads of time over manually managing rpm dependencies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313184650388456?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313184650388456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313184650388456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313184650388456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313184650388456'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/moving-towards-linux-as-primary.html' title='Moving towards Linux as a primary desktop OS'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313178413951886</id><published>2004-12-15T17:28:00.000Z</published><updated>2004-12-15T17:29:44.140Z</updated><title type='text'>Towards a Java Research Map</title><content type='html'>Recently I posted a &lt;a href="http://www.javaworld.com/weblogs/edit/archives/000178.html"&gt;blog entry&lt;/a&gt; to Javaworld covering my initial attempt to map out the world of Java as I see it with a view to setting some direction for my R&amp;D efforts over the next few months. The diagram has some interesting properties - check out the javaworld blog entry for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313178413951886?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313178413951886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313178413951886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313178413951886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313178413951886'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/towards-java-research-map.html' title='Towards a Java Research Map'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313170486956002</id><published>2004-12-15T17:25:00.000Z</published><updated>2004-12-15T17:28:24.870Z</updated><title type='text'>In Pursuit of Perfection</title><content type='html'>Please use this entry to record your comments on my latest Javaworld article titled In Pursuit of Perfection. The article is here - &lt;a href="http://www.javaworld.com/javaworld/jw-01-2004/jw-0102-perfect.html"&gt;http://www.javaworld.com/javaworld/jw-01-2004/jw-0102-perfect.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looking back on this article now, I think I tried to cover too much - a correct and indepth treatise of the perfect technology platform would probably need a book to cover properly.. well I got a few good flames for my "lightweight" article, notably from Daniel on &lt;a href="http://weblogs.java.net/blog/editors/archives/2004/01/goodbye_again_j.html"&gt;www.java.net&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313170486956002?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313170486956002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313170486956002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313170486956002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313170486956002'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/in-pursuit-of-perfection.html' title='In Pursuit of Perfection'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313151414599755</id><published>2004-12-15T17:24:00.001Z</published><updated>2004-12-15T17:25:14.146Z</updated><title type='text'>The Awards are Out!</title><content type='html'>Check out the 2003 JavaWorld awards here - &lt;a href="http://www.javaworld.com/javaworld/jw-06-2003/jw-0609-eca.html"&gt;http://www.javaworld.com/javaworld/jw-06-2003/jw-0609-eca.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All of the category winners are worthy victors, although I have to say that I was very disappointed that the eclipse IDE (&lt;a href="www.eclipse.org"&gt;www.eclipse.org&lt;/a&gt;) didn't win anything - it has had a profound effect on how I code and I think it's a cracking good IDE. The eclipse AOP implementation AspectJ did win an award however - Most Innovative Java Product or Technology. This is the equivalent of the Best Picture Oscar as far as the JavaWorld awards go..&lt;br /&gt;&lt;br /&gt;Well done to all concerned - it was tough being a judge and having to choose between so many strong offerings (no it wasn't I'm just saying that ;-p)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313151414599755?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313151414599755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313151414599755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313151414599755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313151414599755'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/awards-are-out.html' title='The Awards are Out!'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313146831154049</id><published>2004-12-15T17:24:00.000Z</published><updated>2006-08-16T15:14:27.516+01:00</updated><title type='text'>Keeping up to date in Java</title><content type='html'>It's that time of year again - the annual Java love-in in San Francisco. Due to work commitments, I can't get to Java One this year, although to be honest, I'm looking for a more advanced conference anyway - a lot of the JavaOne sessions are targeted as "101" sessions. Still, there's already been a flurry of announcements that I want to digest to see if they affect our product architecture moving forward. Some look exciting - more on that later.&lt;br /&gt;&lt;br /&gt;Keeping up to speed with JavaOne also raises a wider issue - how to keep up to speed with the Java technology platform in general. With Sun looking like they are going to really up the ante on new additions to the J2SE, J2EE and J2ME platforms, it's going to get more and more time consuming.&lt;br /&gt;&lt;br /&gt;Push technologies - e.g. RSS feeds for blogs and key web sites are a great help. Good blogs are hard to find though, and I tend to use blogs to generate new ideas or areas to explore - I don't buy opinions that are expressed in a blog without doing my own R&amp;D first - the writing style tends to be polemic in order to attract an audience / get a reaction as opposed to even-handed and impartial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313146831154049?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313146831154049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313146831154049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313146831154049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313146831154049'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/keeping-up-to-date-in-java.html' title='Keeping up to date in Java'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313144278791733</id><published>2004-12-15T17:23:00.000Z</published><updated>2004-12-15T17:24:02.786Z</updated><title type='text'>Feedback on the J2EE Architect Certification article</title><content type='html'>[Apologies to those people who added comments to this post on my radio blog - they didn't come over..]&lt;br /&gt;&lt;br /&gt;Well, the article on the SCEA J2EE Architect certification has garnered a respectable level of feedback from the J2EE community - both direct feedback via emails and also through the discussion thread on theserverside.&lt;br /&gt;&lt;br /&gt;On the discussion thread, a number of common themes have come up and I'll address the main one in my opinion - the validity of the certification.&lt;br /&gt;&lt;br /&gt;Some posters have recounted stories about companies where one person sits the exam and then discloses exam details to colleagues, effectively giving them a free ride. Other stories include the 3-hour submission and so on.&lt;br /&gt;&lt;br /&gt;Long story short, I addressed this type of thing in the article. It sucks to see people cheat because they are attempting to devalue all the hard work that decent candidates put into getting the J2EE architect certification, but the fact is that some people will always try to cheat on an exam.&lt;br /&gt;&lt;br /&gt;Cheaters will always be found out when their experience and know-how falls woefully short of their resumes / CVs and any good interviewer will quickly figure this out. Plus they won't take 1% of the value that comes with actually working through the exam itself. I have yet to hear of anyone who walked into a position - contract or permanent - simply because they had the J2EE architect certification. Especially with the job market as tight as it is right now on both sides of the atlantic, that just ain't gonna happen.&lt;br /&gt;&lt;br /&gt;As for people who boast of a successful submission in some ridiculously short timespan - they cannot prove it. Having taken the exam and also seen submissions, I don't believe that a successful submission could be produced in a couple of hours. If someone wants to boast about speed of submission *shrug* so what? Let me know what you think - add a comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313144278791733?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313144278791733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313144278791733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313144278791733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313144278791733'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/feedback-on-j2ee-architect.html' title='Feedback on the J2EE Architect Certification article'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313137190161711</id><published>2004-12-15T17:21:00.000Z</published><updated>2004-12-15T17:22:51.903Z</updated><title type='text'>J2EE Architect Exam</title><content type='html'>This article covers the SCEA J2EE Architect exam. theserverside.com picked up on the article and that garnered some robust discussion on the exam and exactly how valuable it is. Here's the article - &lt;a href="http://www.javaworld.com/javaworld/jw-12-2002/jw-1206-architect.html"&gt;http://www.javaworld.com/javaworld/jw-12-2002/jw-1206-architect.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313137190161711?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313137190161711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313137190161711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313137190161711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313137190161711'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/j2ee-architect-exam.html' title='J2EE Architect Exam'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313128138063157</id><published>2004-12-15T17:18:00.000Z</published><updated>2004-12-15T17:21:21.380Z</updated><title type='text'>JBoss Review</title><content type='html'>Here's a review I did on JBoss four years ago now (December 2000! doesn't seem that long...) There have been a couple of follow-on reviews since this one at theserverside - I liked David Jones' the best. It's cool to see how far JBoss has come. At the time, I had to ask Floyd Marinescu to create a section for JBoss - up until then he had regarded JBoss as not really an app server! I was a judge at the Javaworld awards this year at Java One and JBoss scooped Best Application Server award, so their star is most definitely in the ascendancy at the moment. And what with JBoss 4 and all this hoopla about AOP, they look to be still innovating.&lt;br /&gt;&lt;br /&gt;As long as BEA and IBM insist on charging high licensing fees per CPU, JBoss will continue to wipe the floor with them in terms of market share. Interesting to see the Business Process Modelling (BPM) moves as well - I'm happy to see JBoss make money, but now when I see new technology from the group, I have to wonder is it useful technology or technology that begets maintenance and services revenue.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.theserverside.com/reviews/thread.jsp?thread_id=2918&amp;;article_count=47"&gt;http://www2.theserverside.com/reviews/thread.jsp?thread_id=2918&amp;;article_count=47&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313128138063157?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313128138063157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313128138063157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313128138063157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313128138063157'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/jboss-review.html' title='JBoss Review'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313109071611750</id><published>2004-12-15T17:15:00.000Z</published><updated>2004-12-15T17:18:10.716Z</updated><title type='text'>J2EE versus .NET</title><content type='html'>Update: since I wrote this article, my opinion of .NET has changed, matured even. In my opinion, Microsoft have added significant desktop integration and rich client features to the .NET platform that other technologies need to address and quickly.&lt;br /&gt;&lt;br /&gt;This article took a lot longer to write than I anticipated. Don't tell Microsoft though, or they'll probably publish this quote claiming that J2EE articles take longer to write than .NET equivalents :-) Michael Monteiro and I pooled forces to put together a balanced assessment of J2EE versus .NET. You may find our recommendations bland and "on the fencey", but they're accurate - there is no "winner". J2EE stands for a Java-based cross-platform technology stack, .NET stands for a multiple-language based single platform technology stack.&lt;br /&gt;&lt;br /&gt;Interestingly, a lot of the reader feedback centered on exactly how truthful Microsoft is in claiming that .NET is truly viable for multi-language development. Other readers were quick to point out the hidden effort in porting existing applications to the .NET platform. Javaworld were kind enough to have a special follow-on issue of reader's letters to capture this feedback -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-07-2002/jw-0726-letters.html"&gt;http://www.javaworld.com/javaworld/jw-07-2002/jw-0726-letters.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bottom line #1: J2EE and .NET are both viable systems for enterprise development.&lt;br /&gt;&lt;br /&gt;Bottom line #2: I like .NET. I'm also happy to use Windows as well as {U | Li} nix. Come to think of it, I don't particularly have a problem with any Microsoft technology (except for the security issues). It's the company I have a problem with. I also think that the only entity powerful enough to rein in Microsoft will be Microsoft itself - through exorbitant licensing practices that erode it's own market share.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2002/jw-0628-j2eevsnet.html"&gt;http://www.javaworld.com/javaworld/jw-06-2002/jw-0628-j2eevsnet.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313109071611750?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313109071611750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313109071611750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313109071611750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313109071611750'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/j2ee-versus-net.html' title='J2EE versus .NET'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313092996877873</id><published>2004-12-15T17:13:00.000Z</published><updated>2004-12-15T17:15:29.966Z</updated><title type='text'>To EJB or not to EJB</title><content type='html'>The background to the next article is pretty interesting - it was created solely because of reader demand! Take a look at "top ten J2EE dangers" danger # 2. Look familiar? Yup, it's the old to EJB or not to EJB question.&lt;br /&gt;&lt;br /&gt;Check it out: &lt;a href="http://www.javaworld.com/javaworld/jw-12-2001/jw-1207-yesnoejb.html"&gt;http://www.javaworld.com/javaworld/jw-12-2001/jw-1207-yesnoejb.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;I'm especially proud of my Hamlet take-off, but then again when I was in school (high school for you state-siders) my art teacher used to hold up my paintings so that the class could have a laugh, so my creative opinions are pretty suspect... :-)&lt;br /&gt;&lt;br /&gt;This article is even more pertinent today - large swathes of the latest J2EE specifications, in particular EJB 3.0 are all about reducing complexity - even to the extent of auto-generating a lot of the code that goes to make up an EJB.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313092996877873?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313092996877873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313092996877873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313092996877873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313092996877873'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/to-ejb-or-not-to-ejb.html' title='To EJB or not to EJB'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110313075406778429</id><published>2004-12-15T17:08:00.000Z</published><updated>2004-12-15T17:12:34.066Z</updated><title type='text'>Top Ten J2EE Project Dangers</title><content type='html'>This article is a perennial evergreen - as evidenced by the hits it continually generates on javaworld.com and the fact that it accounts a large proportion of the emails I get on my articles.&lt;br /&gt;&lt;br /&gt;The article is &lt;a href="http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-ten.html"&gt;http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-ten.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and I would classify it as an anti-pattern article. It lists out the top ten reasons in my opinion responsible for J2EE project failures. Read it and weep - we've all been here at some point in the past!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110313075406778429?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110313075406778429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110313075406778429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313075406778429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110313075406778429'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/top-ten-j2ee-project-dangers.html' title='Top Ten J2EE Project Dangers'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110293022034677693</id><published>2004-12-13T09:26:00.000Z</published><updated>2004-12-15T17:08:04.286Z</updated><title type='text'>Frameworks save the day</title><content type='html'>This article sprang directly from the fact that I found most of the commercial and open-source offerings too complicated or unstable, so I built my own &lt;span style="font-weight:bold;"&gt;lightweight&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;easy to use&lt;/span&gt; framework to handle the bread and butter tasks in Java / J2EE development:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-09-2000/jw-0929-ejbframe.html"&gt;http://www.javaworld.com/javaworld/jw-09-2000/jw-0929-ejbframe.html&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;This article was very well-received. Based on the emails I received, I reckon ~ 200 companies are using it world-wide, including at least three Fortune 500 companies. This article is 4 years old now (an age in Java development time) and I still get emails on it - so reducing complexity is just as hot a topic now (2004) as it was back then..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110293022034677693?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110293022034677693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110293022034677693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110293022034677693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110293022034677693'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/frameworks-save-day.html' title='Frameworks save the day'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9518639.post-110250892080420739</id><published>2004-12-08T12:27:00.000Z</published><updated>2004-12-08T12:28:40.803Z</updated><title type='text'>First blogspot post</title><content type='html'>test post - wonder if google is more "efficient" at indexing blogger.com than radio? :-)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9518639-110250892080420739?l=humphreysheil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://humphreysheil.blogspot.com/feeds/110250892080420739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9518639&amp;postID=110250892080420739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110250892080420739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9518639/posts/default/110250892080420739'/><link rel='alternate' type='text/html' href='http://humphreysheil.blogspot.com/2004/12/first-blogspot-post.html' title='First blogspot post'/><author><name>Humphrey Sheil</name><uri>http://www.blogger.com/profile/05439678705729802740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
