Friday 30 December 2011
Enterprise mLearning Predictions for 2012
Wednesday 28 December 2011
Enterprise Mobile Learning 2011 - Year in Review
Prediction #2. Device Diversity is the “New Normal”. After years of BlackBerry dominance in the pockets and purses of enterprise personnel, iOS (Apple) and Android-based mobile phones and tablet devices will supplant RIM-supplied smartphones as the primary desired (and likely used) smart devices for mobile learning – at least in North America. This shift will be driven by a combination of factors including learner (and executive) demand, IT acceptance and infosec approval plus a movement towards the adoption of “bring your own device” use policies within the enterprise...
HTML5 web apps might be ideal for consumer-centric marketing efforts, mobile games and some social tools but these experiences are one-dimensional compared with the full-on, multi-functional mLearning experiences mixing formal and informal interactions, performance tools, ready access to information and experts, gaming systems and more. We’ll certainly see the features and functionality of HTML5 maturing through 2012 along with access to better and faster networks (LTE, 4G, Wi-Max) but, for now, we still feel the best customer/user/learner experience happens via a native but customizable app framework. After all, would you rather check your email, Twitter or Facebook on your smartphone using your device’s native email/twitter/FB app or launch your mobile web browser to stay connected? Vendors (and consultants) touting the “myriad benefits” of the mobile web over the mobile app are everywhere but most are latecomers playing mobile catch up and haven’t spent the requisite time needed to learn and master the native app IDEs that are central to success today.
Prediction #4. Pad/Tablet Use Explodes! The emerging pad/tablet market will gain further momentum and an increasing number of enterprise organizations will start to support/provide the larger form factored devices to their field sales, technical and professional staff. Given the fact these devices slot into our device lineup somewhere between the typical smartphone and a laptop in terms of size and capabilities, many organizations will start to drop the laptop and supply BOTH a tablet and a smartphone for every mobile worker/learner – and don’t be surprised if these are supplied by different vendors too like having a BlackBerry (or similar) handheld AND an iPad (or similar) tablet.
Prediction #5. Authoring Tools Will Evolve. Flash will still not be supported on iOS devices in 2011 but this fact will matter far less over time. Apple’s insistence on never wanting to support Flash content on iOS devices will drive innovation across the authoring tool market that is sure to benefit everyone in the Training & Development field. I feel the time is just around the corner than “Publish to HTML5” options appear within the leading content authoring tools making it easier to design, generate and support compelling interactions and animations without needing a Flash Player on-board the device. On balance, the downside to this means we will actually need more tools to create content that spans all the mobile devices we are targeting for training delivery given most older enterprise mobile devices support neither Flash nor HTML5 due to their very dated browsers. If we lived in a world where everyone had brand new (and updated) devices, mobile learning would be easy but they don’t so it isn’t.
Prediction #6. Private Social Networks Win Over Public. It was no surprise to many of us that Facebook was the most heavily trafficked web site in 2010 and displaced Google for the first time in many years. There’s no denying the power and reach of social networking in the technology space but we remain convinced that PUBLIC SOCIAL sites like Facebook, Linkedin, Twitter, Flickr and YouTube all have diminished value as part of an enterprise learning community when compared with the various PRIVATE SOCIAL sites and applications now available. We strongly agree having anytime/anywhere access to our business social network can provide great value, that having tools to share information like pictures and videos and podcasts generated by users instead of business functions can bridge learning divides, and that weaving informal into formal makes us all better equipped and informed. We believe that public sites like Facebook and Twitter (amongst others) will not end up becoming the hubs where the learning organization wants their community to gather and share insights due to the lack of security, privacy, oversight and control that are relevant today and even more essential tomorrow. As such, most business-centric social interactions must to seamlessly integrated into the enterprise learning environment and at every mobile access point too.
Google’s new Google+ offering aims to start making inroads into enterprise social interactions as well and the message layer social functions of Microsoft’s SharePoint platform are perhaps the only mobile friendly features of that platform ready to work on today’s most popular mobile handsets and tablets. Suffice it to say, mobile and social are becoming intertwined so this prediction may just need another year.
Prediction #7. Market Consolidations Will Occur. Some form of consolidation will come to the mobile device/handset sector as a few of the key but descending players –namely Nokia, Microsoft, HP and RIM – aligning themselves together to try and overcome the momentum of the two ascending players – namely Apple and Google. We wouldn't be shocked to find Microsoft’s new Windows Phone 7 OS appearing on upcoming Nokia handsets or tablet devices, or RIM getting acquired by Microsoft or another tech titan like IBM Global Services in a deal akin to HP acquiring Palm in 2010.
Prediction #9. New Features and New Possibilities. One of the greatest joys and challenges of being in the mobility space is keeping up with the constant pace of change and innovation. In our experience, learners within and teams supporting enterprise mobile learning environments are all interested in finding ways to derive the benefit of new features and functionality offered on better and faster devices. Our own development roadmap is expanding with the many possibilities afforded through upcoming advances like (a) geo-location, (b) near field communications (“NFC”) that may help contextualize learning at a specific location or assist in the bi-directional exchange of pertinent data, (c) augmented reality delivering just-in-time learning opportunities via interactive overlays, (d) the use of gaming scenarios integrated within a structured mobile learning experience, and (e) tighter integration between learning and a devices universal in-box function. And along the way we plan continue to innovate and iterate on “mil-spec” mobile security, authentication/single sign-on, cross-platform integration tools, and interface customization features that will benefit all our customers and partners.
- We succeeded in our efforts to make our entire platform more enterprise IT friendly with enhanced security functionality, single sign-on integration and more sophisticated APIs to tie our tools into other 3rd party platforms (e.g., LMS and TM platforms, CRM, ERP, SFA platforms too).
- Our quest to support the universal inbox concept matured far beyond our vision for it with the outcome of a extensive scripting library we developed that makes it much easier for our customers to integrate whatever learning tasks they’ve defined with not only the learner’s inbox but provides pipes that connect to other 3rd party applications as well.
- We added device-specific Mobile Apps to support several new tablets including Android 4/Ice Cream Sandwich, Cisco Cius, Amazon Kindle Fire and Barnes & Noble Nook eReaders, and RIM’s PlayBook.
- We’ve now added a new gamification layer to our enterprise mobile learning platform – think support for badges, leader boards, rewards/incentives, levels, etc. and these are available to learners whenever they are online or mobile. While all of these advances are great in and of themselves, the most demand we’re experiencing is coming from the interest in using these new gamification features.
All the best to everyone in 2012. And watch for my new predictions later this week too!
Robert :?)
Wednesday 21 December 2011
MVC 3 - Handling 404 errors
Mai jos o sa gasiti cei 3 pasi care trebuie facuti pentru a face handling la erorile de tip 404 cat mai bine, fara sa avem surprize neplacute cand aplicatia este deja in productie. Exista mai multe variante. Varianta aleasa de mine nu necesita existenta sau modificarea unui base controller.
1. Pentru toate erorile care apar in sistem avem nevoie de un loc comun
Toate erorile trebuie sa fie controlate dintr-un loc comun. In cazul in care vrem sa vedem la ce erori se face handling sau care este modalitatea prin care se face handling, ca sa nu cautam prin controale, cel mai usor este sa ne facem un controller care se ocupa doar cu acest lucru. public
class ErrorController
{
public ActionResult Http404(string url)
{
Response.StatusCode = (int)HttpStatusCode.NotFound;
var model = new ErrorViewModel();
model.RequestedUrl = Request.Url.OriginalString.Contains(url) & Request.Url.OriginalString != url
? Request.Url.OriginalString
: url;
model.ReferrerUrl = Request.UrlReferrer != null
&& Request.UrlReferrer.OriginalString != model.RequestedUrl
? Request.UrlReferrer.OriginalString
: null;
return View("NotFound", model);
}
}
In interiorul actiunii Http404 se pot scrie informatii in trace cu privire la eroarea aparuta.2. Handling la erorile de tip 404 din fisierul de configurare
In web.config trebuie sa facem handling la erorile de tip 404 in doua locatii.
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/Error/Http404" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" path="/Error/ServerError" responseMode="ExecuteURL" />
</httpErrors>
<system.webServer>
</system.web>
si
<system.web>
<customErrors mode="On" defaultRedirect="/Error/Http404">
<error statusCode="404" redirect="/Error/ServerError" />
</customErrors>
</system.web>
De foarte multe ori se uita de sectiune httpErrors, care poate sa genereze uneori probleme.3. Global.asax - custom routes
Cand definim "tabela" pentru routes, nu trebuie sa uitam sa mapam erorile de tip 404 si sa le redirectionam spre controlerul de erori.
routes.MapRoute(
"Error - 404",
"NotFound",
new { controller = "Error", action = "Http404" }
);
routes.MapRoute(
"Error - 500",
"ServerError",
new { controller = "Error", action = "ServerError"}
);
Este foarte important ca aceste doua route sa fie primele definite. Dupa aceste route putem sa adaugam cele custom pentru aplicatia noastra.Exista si alte variante. Aceasta mi s-a parut destul ca nu genereaza modificari de cod si in alte zone, unde poate nu vrem sa facem nici o modificare.
Monday 19 December 2011
MVC 3 - Error handling
Cat de mult va place ecranul galben intr-o aplicatie web? Cred ca e la fel de faimos ca si ecranul albastru din Windows. Mai este numit si YSOD – Yellow Screen Of Death. Acest ecran nu ar trebuii sa apara niciodata in productie. Mai jos o sa vorbim despre doua modalitati cum putem sa evitam acest ecran.
MVC 3 ne aduce o functionalitate build-in pentru handling la erori. Atributul HandleErrorAttribute se ocupa de acest lucru pentru noi si face o treaba foarte bine atata timp cat este folosit corespunzator. Putem sa il folosim in doua metode.
O metoda este sa decoram controlerele sau actiniile cu acest atribut. In acest mod, orice eroare care apare in controlerul/actiunea noastra o sa fie prinsa de catre MVC 3. O alta variant este sa adaugam in lista de GlobalFilter si atributul nostru – acest lucru se face in Global.asax.cs - Application_Start. In acest fel nu are importanta de unde vine eroare, o sa fie facut handle la eroare de catre MVC 3.
[HandleError]
public class HelpController : Controller
{
[HandleError]
public ActionResult Index()
{
return View();
}
}
sauDupa ce am facut acest pas trebuie sa active custom errors. Acest lucru se face din fisierul de configurare, in sectiunea system.web:protected void Application_Start()
{
RouteTable.Routes.Add(new HandleErrorAttribute());
}
Configurarea facuta cu atributul de mai sus functioneaza doar pentru erorile de tipul 500, pentru erorile de tip 404, este nevoie sa specificam exact pagina la care facem redirectarea.
In loc sa folosim o pagina HTML, putem sa facem o redirectare spre o actiune a unui controller. View-ul default care se foloseste in cazul in care apare o eroare se gaseste in “/views/shared/Error.cshtml”. By default, acesta afiseaza numele la exceptie, mesajul si locatia de unde a fost aruncata (control + actiune). In cazul in care vreti sa schimbari redirectarea care exista by default, se pate face in felul urmator:
filters.Add(new HandleErrorAttribute
{
ExceptionType = typeof(MyCustomException),
View = "MyCustomError", // Un view care se afla in directorul de shared
// cu numele MyCumstomError.cshtml
Order = 2
});
Trebuie avut grija cum se face handling la errorile de tip 404. O sa scriu putin mai tarziu o explicatie mai detaliata despre 404.