Apache Storm on Windows

In a release in February Apache Storm community added Windows platform support for Storm 0.9.1

I for one have been very excited to see this.  The Hortonworks distribution of Hadoop (HDP) is the only one that runs on both Windows and Linux and this gives a lot more choice to traditional enterprise clients.  I’ve been working with HDP for about a year and a half now and really like the experience – both on Linux and Windows. 

Storm is a very exciting development in real time data processing using a Hadoop cluster.  This is useful for running models that you’ve created by more traditional batch processing and map reduce within Hadoop.  Storm uses a simple spout and bolt topology for processing tuples of information at scale and in real time.  More information can be found at the storm site: http://storm.incubator.apache.org/

I am now wondering if this technology, now running on Windows, will make it into the Windows Azure HDInsight service.  I certainly don’t have any inside information on this, but I’d be interested to see it. 

Wayfinding, Simplicity, and Design

Looking back on the last few years and the amount of travel I’ve done I’ve realized that the art and science of Wayfinding is an excellent tool for user experience testing and specifically for testing devices or apps.  According to Wikipedia: “Wayfinding encompasses all of the ways in which people and animals orient themselves in physical space and navigate from place to place”.

I’ve begun testing this theory out after long haul flights.  I have found that this is a peculiar time in human consciousness when your normal abilities of reason and logic are deeply impaired.  When flying long haul everyone experiences a certain amount of discomfort even when travelling in style.  It could be the dry recycled air or the small and highly used lavatories, or the lack of space in the back of the plane, or even the abundance of libations in the front.  After an epic journey (especially transpacific) everyone is out of sorts.  Yet we all find our way through customs and to the train or taxi that we’re looking for.  I recently pulled a 28 hour 11 time zone journey that involved four airports, three flights, and two sets of immigration.  At the end I found my rental car shuttle (yes, I am an American, I rent cars), found my car, and then found my way to the hotel.  Believe me none of this is due to any special abilities I have in navigation or even common sense – it is completely due to the wayfinding design principles that have been used throughout the world to show us where to go.  This idea first came to me after reading one of Garr Reynolds books.  I thought his presentation of this was brilliant.  This is design that must work, for a large variety and number of people.

This is what has lead me to testing my new apps and devices in this state of mind.  Case in point I learned on this particular journey they my non-model specific mobile phone windshield mount has a terrible design flaw with my Nokia Lumia 1020 – or for that matter any Windows Phone: the camera button is in the area where the side clamps hold the phone in place.  Result: I’m looking at a live (and small) image of the nighttime road ahead of me instead of my Nokia Drive app.  Fortunately getting back to an app on Windows Phone is easy – even after a 28 hour trip (there’s some good design).

Now whenever I build an app – or my team does – I always try to get that same level of detachment when I review it.  I’ve even begun to extend this to mock ups, concepts, and presentations.  Sometimes I learn where a user flow is confusing or the next step in unclear.  Since I started writing this I traversed the Atlantic – twice – after the first flight I learned that my presentation on Real World Business Activity Monitoring for BizTalk Summit 2014 had a rather strange sequence in it that didn’t flow as well in this reduced functionality state.  I rearranged some content and dropped some that didn’t fit as well, then it seemed strong.  The crowd seems to have agreed thankfully!

I suppose this last part of Wayfinding is sort of the key to it all: remove that which is not completely necessary to convey the message / information.  Anything else is waste or distraction.  Next time you travel anywhere check out the signage and notice how relatively easy it is to navigate.  This is a good inspiration.  When searching for simplicity use that long day or that sleepless night to your advantage to review something you’ve been thinking about too much, this will give you a different perspective on the topic.

BizTalk Summit 2014 London

This week I had the pleasure to speak at the BizTalk Summit 2013 in London which was sponsored by BizTalk 360.  I have to say it was the best BizTalk event I’ve ever been to.  My presentation is posted here but the slides aren’t much without the presenter… or the videos showing how I implement BAM on an order processing solution with zero code - fortunately there is a video to be posted by BizTalk 360 if you’re interested in seeing the message.  The sample solution I use, with all artifacts, is located at http://danrosanova.wordpress.com/rwb.

The talk was about Real World Business Activity Monitoring and the message was well received.  In short I drive home that we owe it to our customers (i.e. business people) to provide BAM so they can see what’s happening in the way they are comfortable – which is normally Excel or Reporting Services.  I took away two strong points from giving this talk.

First – more BizTalk shops use BAM than I had ever imagined.  Its use is fairly limited in the US, sadly, and some markets, but clearly many people use it.  About half the audience said they use it in production – I expected 1-2%.  This is encouraging as BAM is really worth doing.  It’s easy to implement and delivers high value at both technical and business levels.

Second I learned that there is still a lot of interest in building these sorts of dashboards and that many people were eager to give BAM a try given how easy my presentation makes it look.  There is also a lot of interest in BizTalk – which I was really glad to see.  It is a great platform and used correctly has a strong place in many organizations.  I will be blogging a lot about BAM in the coming weeks and about Big Data, which brings me to my final take away.

Big Data is a big topic and it’s in the news a lot.  My next four presentations all focus on Big Data and Advanced Analytics and I’m going to dedicate some time to bringing these together with BizTalk and with BAM.  My next talk at the Informs Conference on Business Analytics and Operations Research on April 1 in Boston is focused on Situational Awareness with Big Data tools.  It is very much like BAM with Big Data with even more dimensions.

Inspiration from Dyson CEO and West Monroe Partners

A little while back I read a great interview with Dyson Chief Executive Max Conze that really made me think about my career and the firm that I work for: West Monroe Partners.  In this article, which really was fascinating to me considering how innovative Dyson is and how high profile their founder is, Mr. Conze states: “The best you can do is hire a lot of smart young people, give them a lot of responsibility and they’re going to grow on it”. 

That is a truly profound statement – and the exact opposite of how most organizations work, but not all.  Nowhere in my fifteen year career have I seen this done more effectively than at West Monroe Partners, where I have been for nearly three years.  We hire bright young people and very quickly they have a lot of responsibility and a lot of freedom.  This helps them develop extremely fast and I find myself trusting people ten or more years my junior with tasks I hardly trust myself with. 

Dyson is obviously doing amazing and innovative work, and so is West Monroe.  I am really coming to realize it is because the way we hire and the people we hire that we are able to be so agile and so innovative.  It can be very tempting to not delegate to junior staff, but is important for them, for you, and for your company to do so. 

Mr. Conze credits his military background with this philosophy and it reminds me of a quote by a military legend: “Never tell people how to do things. Tell them what to do and they will surprise you with their ingenuity” – General George S. Patton Jr.

I really am proud and fortunate to work at an organization that places such value on its people.  At the end of the day it is all a consulting firm has.  We do hire smart young people (and smart older people like me as well).  And we’re hiring now!

 

The biggest change in BizTalk 2013 and how to undo it

As I said earlier, been doing a lot of BizTalk lately and I’m definitely loving the BizTalk 2013 changes. The XSLCompiledTransform is one of the things I’ve been really happy to see. I’m planning some real Side by Side benchmark numbers for a blog soon, but this is a feature that I think came out of research Paolo Salvatori wrote about in How To Boost Message Transformations Using the XslCompiledTransform class. Paolo you are my hero.

I was recently working on a very large very complex BizTalk implementation that is being upgraded and stumbled upon some very strange behaviors I could not fully understand. The first issue was that maps that I have good reason to believe are exactly as they are working in production now started to fail during testing. Eventually I tracked down that the maps used inline C# in scripting functoids and did not mark them as public. At first I thought the code must have been changed in these maps, but it hadn’t (thanks ILSpy). So I tried the maps back on an older BizTalk machine and sure enough, they worked. I know the XslCompiledTransform replaced the XslTransform class back when .NET 2.0 came out (and was happy as I did a lot of XSLT and XML in .NET before my BizTalk days). I also know BizTalk 2013 uses this much faster transform class. I decided to check out Migrating From the XslTransform Class on MSDN. Sure enough there was my answer under Extension Objects and Script Functions:

XslCompiledTransform introduces two new restrictions on the use of script functions:

  • Only public methods may be called from XPath expressions.
  • Overloads are distinguishable from each other based on the number of arguments. If more than one overload has the same number of arguments, an exception will be raised.

So this was a bummer, but thanks to some handy RegEx skills I found all the places this was an issue in every map in the very large solution quite quickly (one of my computer science professors is smiling right now).

So life was good, or so I thought. Deeper into testing some results were not as they were expected. I looked at these issues and again ended up looking at maps with inline C# in scripting functoids. Testing these maps on my workstation I could see they were not working as I had expected. It seemed like implicit Boolean conversion issues were happening. I changed a few maps and went on with my work, but eventually the scope of the issue dawned on me. This wasn’t some maps, it was all the maps that used inline C# (which is something I don’t like anyway) with Boolean parameters. Now I had a real problem. I reached out to the super-secret group of BizTalk experts I’m a part of, but I must not have used the proper secret handshake as no one replied.

I got my testing to the point that I could walk through the maps, which was complicated by the fact that they also used external classes (thank you Maxime Labelle for Debugging XSLT Stylesheet with Custom Extension Objects from Within Visual Studio). I ended up dropping the method calls and extension objects and being able to reproduce this just inside of Visual Studio with XSLT debugging. The strange part was that the value in question would be a Boolean in the XSLT debugger. The BizTalk Mapper turns all such parameters into strings (for good reason) and even debugging the string($valx) in Visual Studio returned the correct value, but as soon as the .NET method was invoked the parameter would be passed in as true – no matter what, even if it was false.

Eventually, exasperated I turned to a Premier Field Engineer from Microsoft who I had crossed paths with. I showed him what was happening and he confirmed I hadn’t completely lost my mind – or at least not on this issue. He soon came back to me with this: http://support.microsoft.com/kb/2887564/en-us which despite my best Bing-ing I was unable to find myself (I even tried that other search engine out of desperation, but nothing). Here was the answer! As I read on I grew slightly concerned that this would be a “by design” sort of answer like other software companies give, but this is Microsoft! The company whose biggest weakness is staunchly maintaining backwards compatibility IMO – another blog perhaps. But there was hope, further in the article was my salvation:

It is also possible to configured the BizTalk 2013 Transform Engine to use the older XSLTransform class. This approach is not recommended since the environment will lose the many performance and memory usage improvements provided by the XSLCompiledTransform class. This change can be made by adding DWORD UseXslTransform with value 1 at the following locations:

  • For 64 bit BizTalk host instances: HKLM\SOFTWARE\Microsoft\BizTalk Server\3.0\Configuration
  • For 32 bit BizTalk host instances and Visual Studio’s Test Map functionality: HKLM\SOFTWARE\Wow6432Node\Microsoft\BizTalk Server\3.0\Configuration

Not only was there a way around it, it was already built into the product! No patch, or hotfix, or anything!

I know I’m losing performance with this, but I’m also not changing dozens or hundreds of maps either. BizTalk ran fine before and will run fine still for these needs.

Thank you to the BizTalk development team for doing this right and to that PFE who saved my bacon.

Configuring the AS2 Runtime on BizTalk 2013 – one small caveat

I’ve been doing a lot of BizTalk lately, even by my standards, and a lot of BizTalk installations as well.  I’ve blogged and written (in BizTalk 2010 Patterns) about how important it is to change the default configurations that come out of the BizTalk Configuration Wizard.  The most important item is to create separate BizTalk hosts for processing.  I normally do at least four: send, receive, processing (orchestration), and tracking.  In keeping with this I also create handlers for all the adapters for the send and receive hosts.  I also remove the handlers for the default BizTalkServerApplication host. 

 

This has led me a small but important detail.  Although BizTalk easily accommodates configuring further features later (like EDI or BAM), I did run into one issue.  The AS2 Runtime configuration creates a SQL receive location (Classic SQL not the WCF kind) and it expects, nay demands, the default host to have a receive handler for the SQL Adapter.  This wasn’t that hard to track down, but could cause headaches for others so I thought I would share. 

Surface Pro – Deep Dive

In the past few weeks I’ve had the time to put the Surface Pro through its paces and decided I would write about this user experience in depth.  I’ve already shared my overwhelmingly positive views of the Surface in previous write ups covering both the retail experience / packaging and the hardware design.  Now it’s time to get into the nitty gritty of using the Surface Pro.

Background

Before we start a little background is probably in order.  First off I am a professional software architect so I spend a lot of time with computers and use some heave hitting tools like Visual Studio and SQL Server (oh and yea, I’m a BizTalk MVP).  I also work for a consulting firm which means that in addition to my ample keyboard time programming I spend a considerable amount of time in PowerPoint, Excel, Word, and Outlook – and Lync.  I also speak frequently at conferences and travel extensively adding to both my presentation and portability demands.  More often than not over the last ten years I have carried two laptops with me at most times.  Today my work rig is a Lenovo W530 with an extended battery.  This is a pretty heavy hitting machine with an i7 quad core, 16 GB RAM, and a large SSD.  Oh it also has a Kepler GPU in it, which I actually use for GPU coding – not gaming.  I even spoke at GPU Technology Conference recently in San Jose.  It is definitely a workhorse, but it weighs in excess of ten pounds with the charger (which is so large it has rubber feet on it, really).  In the past I have normally purchased my own hardware relying on Fujitsu for very small, but very powerful laptops.  Today we might call these ultrabooks, but the Japanese have been making these for more than a decade and they probably still make the best hardware in this space.  As a result I’m used to 10-12” displays on small and powerful machines with excellent battery life.

Setup

So getting the Surface Pro going was quite easy.  The instruction card is a fold out pamphlet of a few pages and less than about 300 words total.  Almost all directions were just pictures.  Turning on the device walks you through a setup process that could not be simpler: select language, accept license, personalize the look and feel.  Then enter a username & password or Microsoft account of some sort (and an internet connection if you have it).  I was impressed by the fact that despite not having an internet connection working when I initially configured the machine it was easy to later tell it my Microsoft account and it just worked without any new Windows login or different library settings.  This is a challenge I’ve had before with Windows tablets (my old Q550) – changing user accounts can mean all new libraries and settings and is generally something I try to avoid.  Thankfully this was not an issue.

Windows 8 & Surface Pro

The user interface of Windows 8 really comes alive with the Surface Pro.  It has the power in both CPU and graphics to keep up with fast and fluid touch motions and provides a very natural experience.  Even some of the same apps like the PDF reader that got complaints in the Surface RT are fast and responsive on the Surface Pro.  I particularly like the deep use of context based gestures and zooming that happen in Windows 8 apps.  This seems to go much farther than any other touch enabled platform at this time.

Admittedly the gesture stuff can take some getting used.  I don’t think this is the fault of the OS or device, but really of the user (in this case me).  The technology we live with really begins to program us over time and I’ve certainly been programmed quite a bit over the years.  Despite heavily using touch devices for a decade it’s been in a point and click world.  Even phone UIs, which are touch centric, are still within a small touch box and generally made for single handed operation.  Windows 8 apps bring new paradigms with them that expand beyond what is being used in any other platform at this time and sometimes you just need to experiment to find what they are or how they work in a specific app.  It’s not always apparent what gestures will do what in a Windows 8 app.

I actually had this happen while writing this piece.  I was using the Maps app which is a full Windows 8 app not a legacy desktop app.  I was zooming in and out of areas in Japan that I will soon be visiting and wanted to change the perspective.  Using the same two fingers I had zoomed with I simply rotated the map and my perspective changed from the North-up orientation that is typical of all maps into whatever direction I wanted to see it from.  A small compass shows which direction is north giving me a clear visual cue as to what I was looking at. This was really a unique experience for me as I never would have thought to do this if I hadn’t accidentally turned my hand while zooming.  The result was a smooth fluid transition with a bounce forward visual cue to alert me that I could keep moving in this gesture.  I was impressed.  Especially when I took this out in the field – where I’ll would imagine the maps app will be frequently used from a table.

I think someone who had never seen any computing device before, like a child, would probably have a lesser learning curve because they don’t have the contextual box they’ve been living in.  I still find myself thinking inside the non-touch box that most of us live in.  I am impressed, however, with at least how some of the apps are taking advantage of the immense capabilities of Windows 8 to leverage new touch paradigms.

The Desktop

There is really nothing new here.  Being a true Windows 8 laptop all current desktop applications run as you would expect in the Surface Pro.  For me this mostly means Office.  I have installed Office 2013 and must say I like the new interface a lot – though again I did have some learning curves with this as well.  That said it is quick to settle into a much more productive flow and I definitely like the new Office experience a lot.

I have chosen not to install Visual Studio on this machine despite having the ability to do so.  Like I mentioned before, I still carry a full featured desktop replacement with me (though currently in my roll aboard now – yes, I’m on a flight writing this).  I like the fact that this machine boots in less than ten seconds and want to keep it that way.  Also I’m increasingly using Azure Virtual Machines to host my development environments which I just RDP into and everything works fine.  Since most of my domestic flights even have internet that tends to work well for me.

I will say that the pen works pretty well in Desktop mode and Office fully supports inking in all applications.  I still use the mouse quite a bit though, which is why I purchased the wedge mouse with the Surface Pro.  My desktop interaction is now basically multimodal in that I often touch (which is supported fairly well) and use the touchpad, pen, or mouse depending what I’m doing and what is closest at hand at the time.  This is actually the first serious indicator of how different this device is from other computing experiences.  The pen, magnetically affixed to the right side of the device is easy to grab and use – so is the touch screen.  I’ve stopped using the zoom bar in Office as I can simply touch the screen and accomplish the same thing (which I just did to make this font larger for reviewing).

I will agree with some previous reviews that the amazing resolution of this device can make some programs hard to read or use.  The place I see it most is in Remote Desktop where the increased font size settings don’t translate over to the remote machine.  This can make fonts quite small, but is a small price to pay for such a crisp and amazing display.  Since few people really use RDP (I think mostly IT types) I don’t consider this a major issue.

Charming Indeed – Search & Share Contracts

Perhaps the features of Windows 8 that get the least media coverage, but stood out to me when I first learned of them, are the charms in Windows 8.  By this I mean the deeply integrated extensibility features of the Windows 8 operating system in the RT / non-desktop mode.  Windows 8 allows something significant that other touch focused operating systems (and yes, I am talking about iOS) do not: namely the ability of apps to share data and actions with each other.  The Search and Share charms allow any app developer to build these capabilities into their app.  The result is that in the Windows 8 IE app I can share a page with Email or People (or Twitter in my case).  If you’re on a page that doesn’t have Tweet icon you can still share it just as easily thanks to IShareable.

Unless you have a good imagination this may not seem like a big deal at first, but it really is.  In the iOS world only Siri can share information between apps and that’s not really sharing or searching between them, it is just Siri being able to access them.  In Windows 8 any app can announce itself as Shareable or Searchable – doing so is extremely easy as well.  As the Windows app ecosystem grows (which is certainly happening already) this will only become more significant.  It becomes easy to search inside of application data, not just inside files, which really changes search at a fundamental level that is still in its infancy.  This will eventually make for a profound change in our computing experience.

Again, this is an opt-in approach meaning that if you don’t want your app (perhaps a banking or personal finance app) to share or be searchable, it will not be by default.

One Note

If nothing else OneNote makes this entire SurfacePro package worthwhile – seriously.  People may think they can ink on their iPads and other passive digitizer devices, but they’re wrong.  They are basically using markers or crayons on a two state canvas: their ink can be on or off.  The active digitizer of the SurfacePro is truly amazing.  I have used other active digitizer tablets before, notably the Fujitsu Q550, but they’ve lacked the horsepower to really use InfoPath well.  This is most definitely not the case with the Surface Pro.

For instance I take nearly all of my meeting notes in OneNote and also have been using it to plan my presentations (in the style of Presentation Zen – Garr you rock!).  I find that the Surface Pro makes both of these activities even more natural than before.  Not only is the inking experience fluid and easy to use the zoom experience is amazing as well with zero lag.

Digital Ink on Surface Pro

Digital Ink on Surface Pro

The right click feature I have come to love on the pen makes highlighting and moving content in OneNote very easy and natural.  Again this is really improving the usability of InfoPath – a tool that is good with a keyboard, but outstanding with digital ink.  I have completely stopped carrying notebooks – which is something I have done consistently since university.  Not clear in the screenshot above is that I also uses color extensively in my notes and InfoPath does this well.  Interestingly it is this ability of OneNote to use screen shots, web pasting’s, and digital ink that really makes it feel like my old notebook.  The palm block technology works very well and this is by far the best digitizer I’ve ever seen on a tablet.

Conclusion

As a general computing device the Surface Pro is really a capable device.  For a person who lives in the Microsoft ecosystem it has a lot more to offer than the Surface RT or any other tablet on the market at any price.  In fact, it is a totally unique form factor and computing experience.  It is a quality hardware platform with an exquisite user experience.  This device really makes Windows 8 shine and has taken over almost all of my daily computing responsibilities (including writing all of my Surface blog posts and PowerPoint presentations).  This is the best technology purchase I have probably ever made.  In the month since I bought the Surface Pro I have had few issues and am even considering putting Visual Studio on the device.

Follow

Get every new post delivered to your Inbox.

Join 282 other followers