2012 Illinois Technology Association - CityLights Finalist

BLOGS

MPS Partners provides functional and technical expertise and insights into business process management trends and Microsoft technologies.

Contact Us
HOT JOBS
Interested in reviewing our current job openings or submitting a resume?
CLICK HERE
Home » Blog

Targeting a wide range of devices with your application (4 of 4)

Targeting a wide range of devices with your application (4 of 4)

<- Previous post of the series
<<- Start from the beginning

Let me start this post with a small incident that happened in our organization a couple of years back. We had switched our insurance provider and the representative of the new provider was giving a presentation of the benefit plan. Then came a slide that had their “mobile app” mentioned, among other things. While they talked how one could look up health care providers and other information via the app, someone mentioned that they couldn’t find the app in the store. After a few seconds of confusion, the presenter assured to get back with the information about the app.

The disconnect was – the app they were talking about was a mobile web site, where as people were instinctively searching in the app store. This brings out many interesting points. One of the most important being – the discoverability of your application. When you look for an app that provides a functionality do you open the browser and search online? Maybe, depending upon what are you searching for, but it is highly likely that you will look for it in the App Store of your device.

Which leads us straight to the ultimate option of targeting multiple devices and platforms:

Publishing the application in the app store of the platform.

There are a few ways to go about it –

One would be to choose the device/platform and re-write an app using the platform’s API and language. But given that right now we are talking about targeting multiple devices and platforms, I would not recommend it.

The second will be to abstract the business logic / functionality to a restful service and write multiple UI clients (AKA Apps) using the native platform. That is a decent option, however there is a cost associated with hiring multiple developers each with their own platform skills (Objective C with iOS, Java with Android, C# with Windows 8/Phone etc.). The cost for development and maintenance adds up, every time a new version of the platform is released and newer devices stop supporting older platform versions.

The ultimate goal is to implement this option using the existing skills and without re-writing the entire application. This can be achieved in two ways. But to achieve either, the application has to be well structured. Any well written application defines the boundaries of at least the three traditional layers – UI, Business layer and Data access later. To be able to reuse most of the code across apps, it is rather required to separate out at least the UI layer from the rest of the application logic.

Let’s take a look at these options now:

1 – Speak the Universal language – HTML5

Each and every mobile platform supports HTML based applications in their native platform. Some provide JavaScript based APIs to work directly against (like Windows 8 and webOS), while others allow HTML files to run in a control that works like a browser, inside the app.

There is a great framework to keep the application suite consistent across and independent of the platforms – PhoneGap. PhoneGap allows an application built using HTML, CSS and JavaScript, to run on a variety of mobile devices, packaged to be delivered via their platform’s app store. It provides JavaScript based APIs that give access to native resources of the device, otherwise not available to a web application. This includes Accelerometer, Camera, Compass, Contacts, File, Geolocation, Media, Network, Notification and Storage. PhoneGap is also known as Apache Cordova and is a free open source software.

PhoneGap

To get the full benefit, the reusable business and data access logic should be abstracted into a RESTful service which would be consumed by your application that will be consuming the PhoneGap framework.

2 – Hire an interpreter – Xamarin

Xamarin allows you to write native iOS, Android and Windows store apps using a single application platform (Microsoft .NET) and language (C#). Applications build in Xamarin enjoy full native access to platform APIs, get native performance and user interfaces. Xamarin provides the ultimate ease of development and maintenance by integrating its tools right into Visual Studio and by extending Microsoft tooling. Microsoft released Portable Class Library (PCL) to develop functionality using C# to be used across a verity of platforms. This was initially created to support Microsoft platforms like .NET and Windows, Windows 8 Store, Windows Phone, etc. In 2013 the PCL feature was extended to iOS, Android and Mac using Xamarin. Since PCL is independent of the platforms it does not support some platform specific features, like certain encryption. Also Entity framework 6.X is not supported PCLs, but as per the forums, EF 7 will be.

That said, you can create the shared business logic of the using PCLs, which each separate client application can use. The new release of Xamarin includes a new feature – Xamarin Forms which allows the sharing of UI logic across platform too.

Xamarin

PhoneGap packages your HTML, JavaScript and CSS based application to create a hybrid application, whereas Xamarin creates a truly native application using C#.

Posted in Mobile Solutions | Tagged , , , , , | Leave a comment

Power BI: Part 3 – Deployment Scenarios

This is the final part of a 3 part series on Power BI.  Part 1 discussed the tenets of self-service analytics and how Power BI and be leveraged.  Part 2 provided a more in depth discussion of Power BI capabilities.  Part 3 will look at Power BI deployment scenarios.

Before deploying Power BI, you must clearly understand who your content creators and content consumers are.  The following personas typically exist within an organization:

Personas

The Executive needs information that is highly aggregated to give a high-level picture of the state of a business or functional area. Often presented in the form of a dashboard or scorecard, information for the executive is intended to spark questions and drive strategic decision making.

The Analytist needs raw or lightly summarized data to consume for the purpose of creating a detailed analysis of a specific business problem or opportunity. Analysts present data in the form of spreadsheets, presentations or ad hoc reports that have limited use beyond the specific problem they are tasked to solve.

The Manager needs information that provides a detailed analysis of a specific business area or function. Data for the manager is used in planning future activities or assessing past performance. It is at a level of detail that can help define specific actions, such as a territorial sales plan or marketing activities for a product launch. Data for the manager is generally provided as reports or detailed scorecards.

Operational users deal with data presented at a transactional level. Examples of an operational report may include invoice registers created by accounting or a daily production plan published by a production planner. Operational data has been traditionally presented in the form of reports. Increasingly, data for the operational user is being presented on-line via Intranets or mobile devices.

Consumption Modes

Desktop applications, Web Browsers, Smart Phone/Tablet Applications

The mix of personas, audiences and consumption modes along with core business requirements provides input into deciding on how best to deploy Power BI as a whole or its individual components.

image.png

Deployment Scenario 1 : Desktop Excel 2013

This is the simplest scenario and can service the needs of individuals accessing local and remote data sources.  In this scenario an Analyst is typically trying to address a specific domain problem related to an assigned task.  The output of the solution may provide insights into a related issue or it may be a one-time solution.  At this level Power Pivot, Power View, Power Maps and/or Power Query may be leveraged to address the specific analysis.  One important characteristic of this scenario is that it may never venture far from the Analysts’ desk. Also, the content creators and consumers may be the same individual.  The consumption mode is generally at the desktop level using Excel.

Deployment Scenario 2 : Desktop Excel 2013 Power Pivot workbooks deployed via SharePoint

This scenario expands on deployment scenario 1.  This scenario also facilitates using multiple disparate data sources via Power Pivot and Power Query.  A specific domain problem has been identified but the value of the analysis is far more reaching than an individual analysts’ desk.  The problem may address a department need or the broader need of a functional area.  SharePoint is leveraged for the dissemination of information to a wider audience.  Data can be refreshed on a regular basis using Power Pivot refresh.  Since the data is stored in the Excel/Power Pivot workbook, it is possible to drilldown into the transactions that support the analysis.  This deployment scenario can support the operational, managerial, analytic and executive personas for domain specific problems.  Any limitations are related to managing the volume of data stored in an individual workbook as well as preventing duplication of effort within an organization.  The consumption mode is via desktop applications or Web Browsers.  This includes smartphone and tablet based web browsers.

Deployment Scenario 3 : Power View, Excel workbooks deployed via SharePoint Leveraging Tabular/Multidimensional mode Analysis Services

In this scenario,  the analysis can be much more detailed, and encompass much larger volumes of data.  The physical data is typically external  but may also be embedded in an Excel/Power Pivot workbook.  Disparate data sources have been integrated via a Tabular model or an Analysis Services cube.  Complex solutions can be deployed via Power View in SharePoint or Excel Services.  This deployment scenario supports all of the personas and provides a great deal of flexibility in how the solution can be processed and delivered as well as a rich interactive user experience. The consumption mode is via desktop applications or Web Browsers.  This includes smartphone and tablet based web browsers.

Deployment Scenario 4 :  Power BI via Office 365

Power BI via Office 365 provides the ability to service all of the above personas as well as all of the consumption modes.  As in deployment scenario 3, the analysis can be much more detailed, and encompass much larger volumes of data.  This includes full access to all of the Power BI components (Power Maps, Power Query, Power View, and Power Pivot).  Additional information consumption methods are available above and beyond the base interactive functionality.  For instance,  there may be a situation where a specific analyses does not exist.  Power BI via Office 365 provides a question and answer mode in which natural language queries may be executed against the associated Excel/Power Pivot workbook data source (e.g.  “Show total sales by product category”). A dictionary of business terms (synonyms) should be created to fully leverage this capability.  The synonyms map information consumer concepts to the underlying analytic model.  Information may also be consumed via a Power BI app available via the Windows App Store.  The Power BI app is linked to an Office 365 site supporting the deployed Excel/Power Pivot workbooks. One item to note is that Office 365 BI capabilities (question and answer) are cloud based as a component of the Office 365 subscription.  In deployment scenarios 2-3 on-premises or off-premises SharePoint can be used for information delivery.  This raises the additional question of should the deployment mechanism for an BI content be on or off premises.  This in itself is a complex topic and cannot be fully addressed without understanding an organizations specific requirements.

Summary

The above deployment scenarios by no means cover all of the possible options available for the deployment of Power BI, but they do represent the more common ones.  If you are considering using and deploying Power BI the above scenarios can be used as a starting point and modified as required to fit an organization’s specific requirements.

Posted in Business Intelligence | Tagged , | Leave a comment

Empower with people-oriented governance for Enterprise Social – MPS Social Series 8 of 8

Click here to read the previous post, or you can start from the beginning.

There’s no argument that governance is a critical component of any successful Enterprise Social deployment; but the truth is, most implementations begin with little to no governance. Why’s that? Because this promising method of collaboration and communication will not be stuffed into the tight box of control and comply. As a result, there’s broad uncertainty about how best to construct effective policies. Make no mistake, an old school, IT-oriented approach to governing will fail. Here’s why. One clear source of value-creation from Enterprise Social is the unmitigated openness of the platform. This inherent capability flattens an organization, spurring communications across the entity without regard to conventional hierarchies. Any governance methodologies that constrict this openness is counter-intuitive, resulting in diminished value.

social_governance_chart
Other significant challenges for governance exist as well. The top three, based on a 2013 Collaboration Benchmark Study commissioned by ViewDo Labs, are; managing security and permissions, visibility across all tools, and driving user adoption. With the complexities in mind, let’s consider how to build policies that empower instead of negate.

  1. Don’t reinvent the wheel.
    To begin, awareness of and adherence to specific guidelines, regulations and laws applicable to your region, state, and country are paramount. Specifically, those regarding the collection of data and the newer ones relevant to social media in particular. Right now, numerous government bodies and regulators; including the National Labor Relations Board, the Financial Industry Regulatory Authority, the Federal Trade Commission and others, are revising guidelines and regulations regarding Social Media. Changes are ongoing, so be aware and work to align your internal policies with those applicable.Also, consider Enterprise Social networks as an expansion (if not an imminent replacement) of email and phone. As such, extending many of the guidelines in place for these modalities is an appropriate choice. Common elements of email policies cover best practices, prohibited content, integrity considerations and more. So it’s easy to see how these can also apply to Enterprise Social. Another similarity, information associated with internal social networks is classified as Electronically Stored Information (ESI). Which means, it must be discoverable. The point is to sensibly adapt current policies where you can.
  1. Create a comprehensive framework for governance.
    The concept of governance can be unwieldy, especially when applied to Enterprise Social. That’s because the volume of moving parts is daunting, so start with clarity around what areas require policies. Essentially, there are four; people, processes, technology and data. For each area, you’ll need to craft specific governance strategies. Consider only what’s absolutely necessary; unwarranted constraints can defer the creation of positive business outcomes. Tasks may include; incenting behaviors and defining usage, integrating workflows and creating access schemes, content creation and the like.Let’s look at the people portion of the equation. Here’s where we intend to define 1) the common interest and 2) the rules of engagement. The chart below offers potential components of a strong, comprehensive set of people policies, as well as the expected value of each.
    social_governance_table
    The General Policy Statement should closely align with the organization’s stated business conduct guidelines; with integrity, respect and privacy as dominant themes. The additional guidelines offer a roadmap for successful engagement. They provide details around the creation of trust, define what mutual value is all about and enable self-guided behaviors. Since Enterprise Social is squarely about people, this set of guidelines may be the most crucial. Policy around the other segments; processes, technology and data are (potentially) easier to develop and refine.
  1. Be forward-thinking about who owns what. IT or Business.
    When it comes to technology and data, the decision is clear. These are owned and operated by IT. It’s what they do and they’re good at it. But business stakeholders need a few seats at the table. While we expect that BDM’s helped select the technology, they should also have input in terms of access control and process. The people part of those. IT governs tools. Business governs people. Bottom line is, governance should be less about control and more about guidance and leadership. As explained in a previous post, Uncover. Align. Adopt. Refine…with Enterprise Social Analytics, trust between individuals is a vital component of a successful internal social deployment. Command and control does not promote trust.Here’s my final point, becoming a social business is not a reactive process. Be prudent, be adaptive, but drop the fear!

    Create simple, clear guidelines and processes. And be sure to inject some well-developed training to teach employees how to fully engage, while remaining compliant to internal and external regulations. social_governance_chain

Want to know more about launching your Enterprise Social journey? Questions and comments can be addressed directly to:

Melissa McElroy
User Experience & Social Collaboration Evangelist – Senior Manager
e. melissa.mcelroy@mpspartners.com
LinkedIn http://linkedin.com/in/melissamcelroy

Posted in Enterprise Social | Tagged , , , , , , , , , , , , , , , | Leave a comment

CNUG June’14 meet-up – slides and demo code

It was a pleasure to present TDD as an evolving methodology and talk about its current state.

I want to thank the group for active participation while discussing application design, benefits & challenges around the methodology.

Also, thanks to Keith Franklin for the opportunity and organizing the event.

The slides and demo code from the meet-up can be downloaded from GitHub here – https://github.com/MayankSri/CNUG-TDD

The YouTube videos on discussion on “Is TDD Dead?” can be found on Martin Fowler’s site here – http://martinfowler.com/articles/is-tdd-dead

Posted in .NET Development | Tagged , , , | Leave a comment

Key Takeaways from SAPPHIRE 2014


Simplicity

Leonardo da Vinci said “Simplicity is the ultimate sophistication.”

In 2012 at a time when business and technology was growing increasingly complex, MPS Partners evolved its thinking toward a more simplified approach to solve customers’ problems. We make the implementation of SAP solutions simpler using the Microsoft platform. We think about client engagements differently and challenge the status quo to deliver simplified yet sophisticated solutions that deliver greater value.

It was interesting, and a testament to our thinking and direction, to hear SAP’s new mantra is also around simplicity. I hope this materializes for them because simplifying all solutions on the SAP platform is an arduous undertaking as compared to MPS Partners simplifying a specific business solution.

Fiori

Fiori is the new user experience paradigm that came out of SAP Labs a couple of years ago. It was a big announcement during this year’s SAPPHIRE that Fiori is now included free with SAP Software. Fiori is the next generation user experience built on top of SAP applications. This change was based on the feedback from both customers and partners.

With the consumerization of IT, SAP users have been asking for better user experience, so solutions such as SAP Business Suite are using SAP Fiori UX principles to deliver it. Fiori helps provide a consistent UX across multiple devices – desktop, tablet, and smartphone.

HANA

SAP HANA is at the center of everything that SAP is doing these days. I heard about HANA at every announcement/session I was in. It was a great discussion during the Day II keynote between Prof Clayton from Harvard and Dr.Hasso Plattner. The takeaway there is that we need to look across organizational boundaries in finance, supply chain, etc. and enable customer engagement. The HANA platform enables a non-aggregate based solution focused on the customer to get their job done. This supports both the transactional model and getting insights from the data collected.

SAP on Microsoft Azure

SAPSolutions_Simplified_160WSAP now officially supports Azure as a platform for production systems with a combination of SAP products, Operating Systems and DBMS systems. This is a big step in the relationship between Microsoft and SAP as Microsoft Azure is becoming a key cloud platform provider.

I have always discussed with my customers how Microsoft Azure can be used for SAP sandbox environments such as DEV, QA and Training. Support for productive SAP environment is a big step though there are several limitations and kinks which I am sure will be fixed in time.

Devices

It was clear that it is the age of the omni-present user. We all carry multiple devices, we might start our day at home with our smartphones, switch to our tablet on the way to work, to desktop at work and back in reverse order as we end our day. Added to this are the Internet of Things world consuming/collecting data. Enterprise applications needs to address this. It is about devices, from your smartphone to your refrigerator.

The future is about providing highly-available solutions that provide consistent user-experience across devices anywhere, anytime.

In future articles I will be elaborating on each of these topics.

Posted in SAP Integration | Tagged , , , | Leave a comment

Uncover. Align. Adapt. Refine…with Enterprise Social Analytics – MPS Social Series 7 of 8

Read the previous post in the series, Enterprise Social News Feeds are all about action!, or start from the beginning.

You’ve done all the right stuff. Your organization has evangelized and implemented Enterprise Social capabilities, and from what you can tell, employees are making connections and creating value inside and outside the company. Yes, things are humming along nicely. You know this because you’ve been diligent about observing and listening. But here’s where things can get sticky. How do you take the next step to uncovering and assessing, in an evidentiary way, the extent and benefit of what’s going on? The easy answer is – analytics. Right? Sure, that seems an appropriate direction, but easy is up for debate. Let’s explore.

Enterprise_Social_Analytics

  1. What is Enterprise Social Analytics?
    Essentially, we’re talking about analyzing collected data and looking for patterns or behaviors that yield unexpected insights. These capabilities will help organizations make informed judgments about who’s using the software, who those users are connected to and the extent of those connections. In short, the primary objective of analytics is to influence business outcomes. Here’s how. Enterprise Social Analytics can:

    • Identify and eliminate disconnects between work groups; increasing the quality of an organization’s internal connections
    • Offer insights that support change; like broad or departmental reorganizations meant to elevate process efficiencies
    • Measure user adoption; analyze, validate and optimize how the tools are being used
    • Provide guidance on allocation of resources, utilization of assets, and time-management concerns
  1. Begin with the basics. Grow from there.
    Often, analytics is not an up-front consideration. In fact, most organizations haven’t measured usage on internal social deployments yet. The firms eyeing analytics tend to be further along in the journey. And it’s good to start simple. Gather details on how many employees are participating, who they are, and how fast the group is growing. What are folks liking, following or sharing?

    And keep people at the center, then layer on analytics to learn more about them and how they do their jobs. The idea is to uncover context regarding where the conversations are happening and why. How many relationships are forged? Are genuine experts being identified? Are hierarchies being considered or disregarded? Social_Cloudwww.business2community .com

    Sure, these kinds of questions are more difficult to quantify. But yet they strike at the heart of the value of Enterprise Social.

  1. What’s trust got to do with it?
    In a recent survey and report evaluating success with business analytics overall, a leading researcher and major industry player uncovered nine levers of differentiation. These levers, it seems, enable organizations to create value from expanding volumes of data gleaned from a variety of sources. The last of the nine, surprisingly, was identified as trust. Otherwise classified as organizational confidence. And it’s not what you think. It’s not about the quality of data or reliability of the analysis. It’s that old-fashioned kind of trust, between individuals. The kind that’s earned. The study states, “Within organizations creating value from analytics, there is a strong and pervasive level of personal trust.” What’s super interesting about this is the tie to culture; that all-important ethos of a company that permeates processes, systems and outcomes. In a previous post, (insert link to post #6) we affirmed that Enterprise Social can (and ideally, should) impact the culture of an organization. These findings add grist for the mill. Note to leadership; when implementing internal social tools and analyzing their impact, it’s downright crucial to consider how best to evolve the company’s cultural tendencies.
  1. As Analytics go, Enterprise Social Analytics is the newbie.
    Social_Analytics_Map
    http://www.cmswire.com/cms/social-business/
    To start, leading players like SharePoint, Yammer, Chatter, and IBM Connections now offer basic analytics in their social software. A handful of more comprehensive tools (and services) are extending value by integrating social and traditional data sources. A good example? The People Analytics solution

    from VoloMetrix. In this case; analytics is applied to email, calendaring, instant messaging and social platforms. The result is laser-like visibility into where your organization is focused, providing potentially game-changing insights. The chart above (called an Enterprise SocialGraph) is output from one of the tools. This visual offers granular detail around how individuals and teams work together. The next wave of this fledgling discipline goes even further, linking analyses of Social Media and Enterprise Social. This emerging path seeks to uncover insights for every social connection related to an organization, particularly at the intersections.

Our final topic in the series Empower with people-oriented governance for Enterprise Social, will be posted in two weeks. For now, check out this article where Bilal Jaffery offers his take on How Analytics Inform the Social Enterprise. Or give some time to reading what Sharon Florentine, writing for CIO.com thinks about mining emails to gather data for analytics.

Questions and comments can be addressed directly to:

Melissa McElroy
User Experience & Social Collaboration Evangelist – Senior Manager
e. melissa.mcelroy@mpspartners.com
LinkedIn http://linkedin.com/in/melissamcelroy

Posted in Enterprise Social | Tagged , , , , , , , , , , , , , , | Leave a comment

Targeting a wide range of devices with your application (3 of 4)

Option 2 – Separate sites for mobile and desktop

Moving the application forward from the previous post – this option talks about creating separate sites for desktop and mobile browsers. This approach relied on the same User Agent that Adaptive Web Rendering relies on, to get information about the native platform and the browser.

Separate sites for mobile and desktop got a huge boost around 2011 when HTML 5 enabled the mobile browsers with a bunch of new capabilities. Within a year, most of the mobile browsers implemented flashy new HTML5 features while the desktop browsers were still catching up. So it made perfect sense to create a separate site for mobile browsers.

In this model, based on the user agent information, the request is directed to a separate site (typically m.MyApp.com as opposed to MyApp.com for desktop browsers).

Web&MobileWeb

The mobile site brings in smarter functionalities up front using newer features like Geo Location, Web Socket based duplex communication etc. Using a separate site for mobile means reduced bytes sent across the wire to minimize data usage and keeping the site performance up. The mobile site might be in a better position to be SoLoMo (Social-Local-Mobile) than the desktop site. However, depending on the business of the application, SoLoMo is something you always want to consider, whether mobile or desktop.

As far as the native look and feel is concerned, all the techniques discussed in the previous option – responsive design and adaptive rendering – are still available to the application. In this case the application is category aware (desktop or mobile) so, it can be more fine-tuned towards the target platform.

Web&MobileWeb2

While this model is still great and is a common practice by most applications, there has been some decline in the usage of this model. Firstly because the desktop browsers have caught up on the latest and greatest features of HTML 5. Secondly, the heavy reliance on user agent can be risky. Every time a new version of the platform and browser comes out, the algorithm that reads it to understand the device might need a re-adjustment.

In spite of these issues, using a separate Web site for Mobile and Desktop enables the application to be seen and heard clearly, across platforms and form factors. It gives you the option to think differently for mobile users and achieve more with Responsive Web Design and Adaptive Rendering.

We will go one step further in the next post to being as native to the platform as possible without rewriting the application in the native technology.

Posted in Mobile Solutions, Web Development | Tagged , , , , , | Leave a comment

Enterprise Social News Feeds are all about action! – MPS Social Series 6 of 8

Read the previous post in the series, 4 Keys to Successful Community Sites, or start from the beginning.

In Enterprise Social, the News Feed (also known as the activity stream or conversation thread) is where the action is. This free-flowing sequence of pure engagement provides the framework for making magic happen. How? Because it’s an always-on live stream of authentic consciousness that gets people sharing ideas, asking questions, and supporting each other in often surprising ways. No matter where individuals are, organizations can communicate better across the company, give everyone a voice regardless of title and enhance business agility. Here are four ways News Feeds prove they can transform the way business gets done.

  1. Engage every employee. Whoever. Wherever. Whenever. Organizations are rife with hierarchies and silos – of people and information. Often, these boundaries serve to keep both in their places. When a young, un-minted employee has an idea, he might be reluctant to share, intimidated by the traditional chain of command. Likewise, valuable information is typically jammed in a hard drive or stuffed in that black hole of a file server. Ugh! File servers are the worst.SharePointNewsfeed
    www.brandmysharepoint.de/wp-content/Imagine this. The VP of sales from a national retail coffee business posts that repeat sales are down and she’s looking for ideas. A barista in the San Francisco store sees the post and replies that in San Fran, customers love everything local. So why not create a campaign that capitalizes on that? Tell me more, the VP asks. The barista, who happens to be working her way through grad school, commits to putting her ideas on paper. Realizing she’s short on budget info, she posts a request for help and gets a copy of last quarter’s marketing budget from a resource who helps her interpret it. It’s just what she needs to bring her ideas to life. Her proposal complete, she’s invited to present to the team and blows them away. In short order, she lands a marketing gig. Now this may seem idealized, but as Enterprise Social capabilities smash through barriers, these kinds of scenarios are happening. Organizations are tapping into talent they didn’t know existed. And team members are making contributions and getting recognition beyond their pay grades.
  1. Accelerate teamwork and propel the work product. We all know that sending documents back and forth via email, holding meetings and tracking down others with phone calls is a less than optimal way to collaborate. Here’s another way News Feeds change the game and improve workflow. Let’s run with our example of coffee shops. The internal marketing team is creating a Coffee Table book to sell in the stores. Beth, a project lead posts to ask how the layouts are looking. Toni, a designer from an outside firm, replies that the layouts are coming along nicely and making the deadline looks good. Then Sam, who works for the photographer (also a contractor) chimes in to say he’s not sold on the cover photo. He’s concerned they may have to reshoot. Carla, a marketing PM not involved in the project, mentions that she has a stash of unused pics which might be useful and posts them. Beth finds that more than one would make a fantastic cover. Sam chooses a pic, then posts a mock-up of the cover. All of this goes down in less than a few hours! Consider the awesome value of this interaction. The deadline is secure. No additional funds are spent on a reshoot. The project is back on track.
  1. Spark innovation, uncover new ideas and stay a step ahead! Markets change quickly and organizations must respond and adapt just as fast. Getting out ahead of the change is even better. Those same entrenched barriers mentioned above work overtime to stall progress and hold back innovation.Yammer
    https://about.yammer.com/business-benefits/business-agility/Back at the coffee house, a new product team is pondering a name for the luscious bean they’ve uncovered in the forests of Bolivia. You know the drill. Simply ask and watch the suggestions roll in. Of course some of the ideas won’t be viable. That’s the case even when using the old, slow, send an email and wait to see what happens approach. But many will be viable, and some will even be spectacular. Crowdsourcing, enabled by Enterprise Social News Feeds, is an outstanding way to be inundated with opportunity. And often the answer comes lightning fast.
  1. Evolve, strengthen and unify the culture.
    There’s a lot of talk these days about how culture in an organization can overcome strategy. Truth is, many established

    and successful companies are proving (to the dismay of leadership) that as business transforms, the cultural archetypes CorporateCulture

    which thrived in 1990, or even 2000, are no longer effective. In fact, most are like albatrosses dangling about the collective corporate throat. And now, because employees are dispersed and not consistently housed in office settings, it’s even more difficult to evolve a culture into something that works today.The speed-of-light communication provided by News Feeds is helping organizations reshape cultures like never before. The best part is, this effort is no longer done inside the polished walls of HQ. It’s an iterative process that includes those who actually do the ground level work of building the culture. We, the employees. This only happens as perspectives, processes and systems are impacted by people, how they internalize values and ideals, and how those translate into day-to-day behaviors.
    Image courtesy of http://creativecorporateculture.com/wordpress/wp-content/uploads/2013/07/Creative-corporate-culture1.png

For the next post in this series coming in two weeks, we’ll turn our attention to Uncover. Align. Adapt. Refine…with Enterprise Social Analytics. But before you go, have a look at this enlightening Harvard Business Review post. Author, Michael Schrage states that while Enterprise Social is about “communication, coordination, collaboration and transparency;” it’s also about the “power of individuals and teams to reach within and across the enterprise to effect meaningful change.” And that’s pretty cool.

Questions and comments can be addressed directly to:

Melissa McElroy
User Experience & Social Collaboration Evangelist – Senior Manager
e. melissa.mcelroy@mpspartners.com
LinkedIn http://linkedin.com/in/melissamcelroy

Posted in Enterprise Social, SharePoint | Tagged , , , , , , , , , , , , , , | Leave a comment

MVC File Upload with progress bar and IE8 Fallback

We needed to add a file upload feature with a progress bar to an MVC application, and needed an IE8 fallback. MVC doesn’t give us easy access to a POST before the upload is complete, so we ended up doing this mostly client side.

One of the goals was to minimize duplicate code. This means using the same markup and having a single callback for both the progress-enabled and fallback paths.

We adapted a solution from http://www.matlus.com/html5-file-upload-with-progress/ and it works very well! We end up with one server-side handler and one client-side handler.

Controller:

[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file, int consumerId)
{
	file.SaveAs(file.FileName);
	return View("UploadComplete", upload);
}

UploadComplete.cshtml

@{
    Layout = null;
}<!-- Upload Complete :: don't modify this line, it is used as a key to verify completion -->
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Upload Complete</title>
</head>
<body>
    Upload complete!
    <p>
        <script>
            try {
                window.parent.uploadCompleteFallback();
            } catch(ex) {
                console.log(ex);
                document.write("Couldn't notify parent of completion.");
            }
        </script>
    </p>
</body>
</html>

Upload.cshtml

@model dynamic
@{
    Layout = null;
}
<html>
    <head runat="server">
        <title>Upload</title>
    </head>

    <body>
        <iframe name="uploadFrame"></iframe>
        @using (Html.BeginForm("UploadFile", "VideoUpload", FormMethod.Post, new {enctype = "multipart/form-data", id = "uploadForm", target = "uploadFrame"}))
        {
            <input type="file" name="file" id="file" onchange=" fileSelected(); "/>
            <p id="fileName"></p>
            <p id="fileSize"></p>
            <p id="fileType"></p>
            <p id="progressNumber">-</p>
            <input type="button" onclick=" uploadFile(); " value="Upload"/>
            <input type="submit" value="use fallback" />
        }

        <script type="text/javascript">
            // IE Fallback, called from iframe
            window.uploadCompleteFallback = function () {
                uploadComplete({target: {responseText:"<!-- Upload Complete"}});
            };

            function fileSelected() {
                var file = event.target.files[0];
                if (file) {
                    var fileSize = 0;
                    if (file.size > 1024 * 1024)
                        fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
                    else
                        fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';

                    document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
                    document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
                    document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
                }
            }

            function uploadFile() {
                    if (typeof FormData === 'undefined') {
                        // This is probably IE8 or the like, try fallback
                        document.getElementById('uploadForm').submit();
                        return;
                    }
                    var fd = new FormData();
                    fd.append("file", document.getElementById('file').files[0]);
                    var xhr = new XMLHttpRequest();
                    xhr.upload.addEventListener("progress", uploadProgress, false);
                    xhr.addEventListener("load", uploadComplete, false);
                    xhr.addEventListener("error", uploadFailed, false);
                    xhr.addEventListener("abort", uploadCanceled, false);
                    xhr.open("POST", "@Url.Action("UploadFile")");
                    xhr.send(fd);

            }

            function uploadProgress(evt) {
                if (evt.lengthComputable) {
                    var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                    document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
                }
                else {
                    document.getElementById('progressNumber').innerHTML = 'unable to compute';
                }
            }

            function uploadComplete(evt) {
                /* This event is raised when the upload is complete */
                if (evt.target.responseText.indexOf("<!-- Upload Complete") == 0)
                    alert("success!");
            }

            function uploadFailed(evt) {
                alert("There was an error attempting to upload the file.");
            }

            function uploadCanceled(evt) {
                alert("The upload has been canceled by the user or the browser dropped the connection.");
            }
        </script>
    </body>
</html>
Posted in .NET Development, HTML5, User Experience, Web Development | Tagged , , , , | Leave a comment

Targeting a wide range of devices with your application (2 of 4)

Continuing from the previous post, let’s look at some options that are available to us:

Option 1 – A single Web Application

This one size might not fit all, but most. Web applications can be accessed by any device that has a browser. A web application is created, keeping a certain minimum screen resolution in mind to target, say desktop browsers. But it can be accessed from any device that can run a browser.

BasicOption

So has this basic minimum option targeted all devices? Maybe not, depending on what kind of application are we talking about. Is it a line of business application or a static content website (blog / wiki) or a simple productivity tool like a TODO list? Also, is the application really usable across all the devices and form factors? Probably not.

Improvements in Option 1 – Adaptive Web Application

Taking advantage of modern JavaScript libraries, HTML5 and modern browser capabilities a web application can be made really slick. It can adapt to the platform (device, location, form factor) almost as good as an app native to a device.

The application can be pushed further by adapting to the device on which it is being viewed. There are various techniques that can be used to make the web application look native to the device:

  • Responsive Web Design (RWD):

RWD is a designing approach aimed to provide an optimal viewing experience with a minimum of resizing across a wide range of devices (from mobile phones to desktop computer monitors). Using this approach, the web application would identify the visible portion on the page affected by the monitor resolution (aka Viewport) and resize itself, change alignments, change icon size, etc. most of this is achieved with CSS and CSS3 media queries.

 

  • Adaptive Rendering (aka Adaptive Web Delivery):

The adaptive rendering techniques refer to rendering different version of a page or part of a page for different devices or platforms. It checks the the user agent information to identify the operating system version and the browser used to decide which version of the page needs to be rendered. Imagine the app has 4 versions of a view file for menus. One each for iOS, Android and Windows phone along with a default one for the rest. The file to be rendered will depend on the device. Any number of devices can be targeted, by creating another version of the file for the device.

The web application can have the same UI theme, buttons, icons and navigation that the device platform (say iOS) provides giving a much richer user experience. ASP.NET MVC framework (version 4) came up with Display Modes making it easy to achieve.

While RWD takes Viewport into consideration and works on the client side (browser), adaptive rendering looks at the OS and device and decides what should reach the browser. Both these techniques should work together to target a wide range of devices and browsers.

AdaptiveRendering

So now in this option, the application is being accessed from a wide variety of devices and some targeted devices get targeted content. If a targeted content for the device is not available, it gets the standard / generic content.

 

Option 2 in the next post.

Posted in Mobile Solutions, Web Development | Tagged , , , , | Leave a comment
 
View By Author
  • View By Category
View By Date
Part Of SPR COMPANIES
© 2014 SPR Companies. All rights reserved. About | Competencies | Products | Solutions | Clients | Events & Resources | Careers | Site Map | Legal/Privacy