YAB (yet another blog) Site

Archive for October, 2011

Windows 8 on the go

For weeks now, I’m running my Windows 8 using the open source Oracle Virtual Box. Initial Wow factor, enthusiasm to play with Metro style apps kept the ball rolling very fast. The Host and the Guest spared 2GB RAM each. All is well, until I started working with VS 11 Developer preview in the guest OS. The wait time between clicks kept on increasing. Obvious that 2GB of RAM is no more sufficient enough for dev box. I could not afford a new separate PC for Windows 8. Forget about that in the corporate environment, it’s way not possible through red tapes and governance model they have. Then, one day on a coffee talk, someone was explaining about the Linux on the go option. Wherein, User can carry their entire OS in a USB Thumb drive. After few initial failed google’ing, I came across the Build presentation by Steve Silverberg, which mentioned about Windows 8 on the GO…. To be frank, my initial thought was, it is going to be as easy as To-go order at McD. Later, I realized, it is going to cost me some round trips.

That’s interesting. I decided to try the Windows 8 on the go. Before we get carried away, let us understand, what’s this Windows 8 on the go?, By Windows-on-the-go means, installing Windows operating system on a removable/distributable disk like a USB pen drive or USB Hard Disk. When Windows 8 is installed on the USB drive, plug the USB drive into a particular computer (it can be multiple computers) and alter the boot sequence to boot from USB, for the first time, it installs required drivers for the devices around in that computer and reboots, from next time on, it boots straight into Windows 8 on the USB distributable. This is not something unique to Windows 8. Linux OS flavors have been doing this for years now. And infact, Enterprise edition of Windows 7 too have tools to make windows distributed on the go. Microsoft has been optimizing Windows 8 to run from flash, and to use flash storage, over a USB bus. Also, I read that this is not perfect, yet but better. 

Some pre-requisite for this to work on host computer,

The computer is to have either USB 2.0 or USB 3.0 and BIOS to support boot from USB and UEFI. And on the deployment side, I’m supposed to have a USB pen drive which is 32GB minimum. Portable Workspace Creator (pwcreator.exe) rejects anything below 32GB! Why is this restriction? When my Windows 8 on VDI can run on anything as low as 15GB of space! I could not find any answers. The smallest foot print virtual drive I tried for a Windows 8 32 Bit OS was 15 GB, in size. So, I wanted to still try this On-the-go stuff with a 16GB USB drive (Crazy, am I !?).

As a preparative step, with all the enthusiasm, I ordered a 16 GB HP Pen drive from FlipKart for Rs840. Flipkart took three days to deliver (a nice safe 7″ packing for a  1″ long pen drive). Now that I’ve a USB drive, I wanted to use PWCreater.Exe to load the image of Windows 8 into the portable drive.

The first bad news: I searched the entire Windows 8 systems folder for the Portable workspace creator. There’s no file called PWcreator.exe in the entire machine. Where did it go, what happened to all those Web sites which talked abt ‘The Portable Workspace creator’. Alas, this is available only for Enterprise Edition and not available part of the preview version! Bugged! MS restricted it for Volume licensing Enterprise customers only.

Back to Google, I came by one write-up by Günter Born. The time I started looking for this option only a handful of initial writers wrote about this approach. By the time, I get this completed; I could see a lot of blog posting on the same topic. Thanks to Born for this write-up. Otherwise, I would have stopped and waited for inclusion of PWCreator. Born also tried the same steps and options, I had thought but finally cracked a way out! The idea is, make use of DiskPart (Disk Partition tool) to create a clean primary partition and use an Imaging tool to copy the windows image into the USB drive and as a final step move necessary files into BOOT sector so that when UEFI/USB boot enabled computer can boot from the OS in the removable drive. Ta da!

Windows 7 rather Vista onwards provided an Automated Installation Kit. Part of this free downloadable, we get a command line tool called IMAGEX.exe, to create and deploy Windows Disk Images in the Windows Imaging Format (WIM). You can locate the WIM file under <Drive:>\Source\install.wim. WIM is a file based image format. Of late, windows setup themselves uses WAIK APIs to install the fresh instance or cloned instance of the OS. One deterrent was the download for AIK for windows 7 itself. It is hosted in one of the slowest download servers! It took very long time to download, that too, multiple times, for a single a 1.66 GB file! FlashGet is of good use, here.

Once WAIK got downloaded, I installed the AIK toolkit in the host machine. Then build an ISO of entire Tools\X86 of the toolkit and hosted it in the Guest OS, so that I could make use of these tools inside Windows 8. By the way, the Guest Virtual box setup was of the spec: A 32-bit Windows 8 8150 build. It used 2 GB of Ram from host with a 15GB VDI. Before using imaging tool, we need to prepare the USB drive for required partition. I used DIskPart tool with the sequence of commands:

DISKPART

DISKPART> LIST DISK
DISKPART> SELECT DISK 1
REM: In my case, the HP w165 was in #1.

DISKPART> CLEAN
REM: To clean drive

DISKPART> CREATE PARTITION PRIMARY
REM: Creates a partition and makes it a primary

DISKPART> FORMAT fs=ntfs quick
REM: Format the partition in NTFS format

DISKPART> ACTIVE
REM: Mark the selected partition as active

DISKPART> exit

This prepares the partition part of the requirement for USB drive. Next comes the part to restore image using IMAGEX.exe. Open the command prompt with Adminstrator privilege and run:

> imagex.exe /apply d:\sources\install.wim 1 f:\
Here, my Windows 8 ISO was available in D drive and HP-w165 USB is in F drive.

For some of them, Imagex took 3 hours to copy. It took me close to 127 mins to complete. Next step, is to copy windows boot files into boot sector. For this, used the command,

bcdboot.exe f:\windows /s f:

For some reason, ALL option (as mentioned in born’s site was not working for me). F: represents the target media USB drive.

BCDBoot worked and successfully loaded the boot files to target USB drive. Quickly, I restarted my machine and altered the boot sequence to accommodate USB boot. I was too eager to see the windows running on the stick.

More eager you are, result sounds more critical (esp., when it is bad): The initial run on my laptop took nearly 2 hours. That too just for initial setup (Good part in that, I had the patience to wait through the 2 hours setup! ). After all slow boot up and ‘Getting Device information’ and setup cycles, Windows 8 was finally getting loaded from my USB pen drive. Any operations other than Disk read/write works like charm. But poor 16 GB kid of hard disk could not keep up to the speed. Probably, a USB 3.0 on my machine could have made is a better experience.

After some playing with Win8, I shut down the machine and took the USB out. Could feel the heat on the USB connector pin! Thank god, it didn’t melt! 😀

Anyways, Windows 8 on the Go, worked. Did it solve my problem of programming faster? No, I need to go back to a richer virtual box or set up a new separate box.

“Good judgment comes from bad experience. Experience comes from bad judgment.”

Using Microsoft Visual Studio LightSwitch 2011

Writing Application is never the same again with LightSwitch 2011. LightSwitch is simplified and self-service model for application development. It lets the user decide whether the applications developed be deployed for Desktop or Web or Cloud.

Most of the business applications are data-centric application. Meaning, they revolve around business entities and in simpler perspective, they are either Add/Update/Delete/View of the business entities spiced with business rules, on top. That evolves the style of developing application, as well. LightSwitch is all about the smartest and easiest way of building highly robust applications, in the way we think of these business applications.

What is LightSwitch?

One line answer: LightSwitch is a new edition of Visual Studio.

LightSwitch helps developer to build application using .NET stack and wrap them into an abstraction layer which can be further optimized for maintenance and management of business entities. LightSwitch business applications are multi-tiered, featuring a client application and a combination of LINQ, WCF RIA Services and the Entity Framework to implement the application services tier. LightSwitch application is built using development best practices, on top, eliminates exhaustive and repetitive plumbing code required to construct a properly architected database, data access tier, and user interface (UI) framework.

LightSwitch comes with a unique designer and development templates. The designer include facility to design business entities, database or some form to persist these business entities (List a SharePoint), design screens to perform business action on those entities and finally, the logic and rules that bind them all together. In short, the designer with LightSwitch helps the developer with the entire ingredient required to build an application from scratch.

Where to begin the app development, did you say screen design? Let us take a step back. Typically, the screen design requirements are driven by the Data model. The Data Model is driven by the business requirement. First thing first, let us come up with Data Model and persist the data. The Data Model is presented using the entity framework 4.1.

The screen design can now be inferred from the data model or the table schema or can be built using a hybrid approach where the screens are generated and customized as per requirements. In addition to the screen design, the other part is the data rules. LightSwitch provides both declarative and imperative option. Either the rules can be defined in the property window (declarative) or written in the code (imperative), as well. They can be simple language expressions or a complete method embedded into the application using C# or VB.NET.

Let us try to create a LightSwitch Application. Before starting with a LightSwitch app development, Visual Studio LightSwitch has to be installed. For this demonstration, we had installed LightSwitch on top of Visual Studio 2010 ultimate on the machine. Hence application is built using the VS2010, as well.

Ok. Begin with a new Project. After LightSwitch is installed, on the ‘New project template’, you’ll get a new category for ‘LightSwitch Applications (Visual C#)’.

Visual Studio, as usual, does a lot of ‘behind the scene’ plumbing for the application. As mentioned earlier, the next step is to ‘Start with Data’.

Let us start with a new table. For illustration, let us build an application around an imaginative Customer who has attributes like ID, Name, DateOfBirth, etc.

With the above step, we created a business entity, named it as Customer and defined its attributes. In addition to this, the other things to do are to create Queries, add computed properties, add more entities and build relationship between them, write business rules in C# and bind them, etc. For the brevity of this demonstration, let us jump to screen design by clicking on Add Screens button on the top.

Voilà! There are so many screen templates already, by default. Do developers need to think of any other standard screens?? Well, let’s begin with ‘New Data Screen’ and then create a ‘List and Details Screen’. Note, the important aspect here is to attach the Customer entity as Business Model under Screen Data section.

Once the screen is created, the VS takes you back to the Designer page where developer can do further customization,as required. Would like to add one more screen for List and details? Let us use the Solution Explorer, right click on Screens folder and add ‘List and details’ screen. Again, remember to bind the Customer entity with the newly built CustomerListDetail screen.

To recap, so far, we’ve not written a line of code. We created an entity and two screens on top of this entity. Let us say, one for ‘New data form’ and another to ‘List and details’ screen. Can we now build the application? Do we need to do any more plumbing? May be not required! I trust LightSwitch.

Go ‘F5’ (Start debugging). The application is built and starts running.

Enter a customer detail and Save the data with save icon on the top. Then get into List view to see the other screen.

That’s it folks!! The application is ready! As required, the developer can now fit in the remaining business logics and customizations as per needs. LightSwitch makes developer’s life a lot easier.

There are many more aspects to talk about LightSwitch applications. What is covered in this write up is just an iota of the ocean. ! A lot more can happen over extensibility provisioned on LightSwitch. In addition to this simple approach of building a new application from the scratch in no-time, it also provides a customizable template that enables the developer to write custom business logic and build application that logic in no time. Also, we get tons of plug-ins and starter kit to build different kinds of applications like BI Solutions, etc. LightSwitch fundamentally enabled extension models so that the eco-system with strong developer community and independent software vendors can provide their own extensible templates and starter kits to build new applications integrated with advanced functionalities, out of box.

Reference

Windows Reimagined

First hand report on Windows 8

Indeed. Windows 8 is reimagined from underlying Chipset to Charms. The more we get hands-on with Windows 8, the fact is even more overwhelming that this next-generation Windows OS has undergone a lot of thought and too many good things have gone into it. Win8 is still Pre-beta and Developer Preview stage. The RTM version is rumored to hit MSDN by April 2012. Yes, that’s a long way to go. However, the wave this touch-first OS has brought is amazing and we thought of bringing you some details into its features and explain them as much as we could. Readers would find tons of features, and the UI gimmicks about windows 8 in many websites now. Our intention, rather, is to throw light on a Metro Style Applications, the context, architect, process-life-cycle and characteristics of the Metro style applications re-introduced along with Windows 8 OS. Though the Metro style is not new, for those who are used to Mango or Win Phones 7.

Chipsets to Charms

When we meant Chipset to Charms it is reimagined to the core, windows 8 development means it. Windows 8 is targeted to run on Intel based processors and newly added to the bandwagon is ARM based processors. Windows developer preview is still not available for ARM based processor. However, Microsoft claims that there will be a full-fledged equivalent windows 8 version that runs seamlessly on ARM based processors. For the readers, ARM based processors like Qualcomm’s Snapdragon is one of the most popular and powerful processors in the Tablets and Mobile devices world. Windows 8 masks the underlying processor architecture and provides similar functionalities across the different processor families.

Metro Style Apps

In short, it is a new UI standard for how the application should look like. Windows 8 introduces the new Metro style interface, which shows the information that is important to the end-user, embodies simplicity, and gives user the control. The new interface, built for touch, is a personalized layout with clean typography and animations to make interacting with your PC fluid and intuitive. The new Start screen puts all of your apps in front of user for immediate access. Windows 8 is optimized for easier navigation so moving around the operating system is effortless with touch interface or Mouse and Keyboard.

Charms

‘Charms’ are the standard fundamental contracts that bind Metro Style Apps with System UI and also with other Metro Style Apps. Charms are displayed on the Right-corner of the touch enabled screens and left bottom on a Mouse based screen. There are can be many contracts defined for Metro Style Apps. Search, Share, Devices, Picker & Settings is some of the fundamental ‘charms‘ contract defined in the Windows 8. Imagine an application about list of RSS Feed; the app can expose a Search Contract. A Search for this app is about searching RSS feed. When User clicks on ‘Search’ charm, without leaving the application, a search overlay panel is displayed on the right side of the screen. The search can behave differently, based on this contract each application has exposed. Search on Windows will be on Apps, whereas Search on Internet Explorer can be defined to that of BING Search and similarly, a search on Socialite application can be searching on Facebook Social Site. However the contract exposed as part of Search Charm is common experience across Metro Style applications.


Touch-First experience

Touch-first: What’s the big deal; it’s just an articulation of mouse operations on an UI with touch screen. It is much more than mouse orientation with touch senses. A lot of pre-defined meaningful gestures add the spice to the usability factor of this OS. The touch-first is designed with multi-touch functionality everywhere. Did I say touch is not only for tablets but soon into Desktop? Yes, days are not far when Desktops too have touch screens. By the way, Windows 8 is One OS for all form factors. It’s not only for Tablets but also for Desktops, Large Screen display machines as well! It is the same OS that provides the seamless touch experience on all. Apart from Touch as UI input method, Vision of Touch-first experience is to introduce a language for touch. It is lot more than moving a mouse pointer with fingers. For instance, how do we visualize Right click using touch? Right click is replaced with press & hold gesture on touch paradigm. The Touch-first experience brings in a whole lot of defining a windows touch language. That language has to simple, consistent, fast, based on limited gesture set and avoid timed gestures as much as possible, reversible and directly manipulated on the UI elements. Refer to the touch language picture below, most of them are familiar to us and few are new gestures. Remember, these gestures are not just for Windows 8 Start screen but also for all those Metro style applications that developers write using WinRT with not much of additional code for touch-first plumbing.

Architecture

Metro Style apps are different from Desktop applications that run on Windows 7. Desktop applications are allowed to continue running on Windows 8 for backward compatibility. Refer to the architecture diagram below; Metro Style Apps are completely built on top of Windows runtime. WinRT is a One-window API application model with full-fledged APIs on the foundation.

When developers gear-up to build a Metro style application, they have freedom of choice to choose their favorite language, use their style of markup and ready-use windows RT libraries. Developer could write the UI using XAML and code behind on conventional C++. Or for that matter, use C# or VB to do the plumbing for XAML UI. The Windows 8 surprise inclusion into the programming bandwagon is HTML 5. Developers can now use the full-fledged HTML5 with CSS as the UI markup and use JavaScript to access the same set of Windows Run Time APIs as they could do with other programming languages. To make this happen, Windows has provided common metadata and uniform namespaces and APIs that can be accessed upon different language projections. When it comes to HTML/JavaScript metro style apps are hosted and executed inside WWAHost process (Windows Web Application Host). Windows runtime (win RT) is an efficient solid foundation to build the metro style apps. WinRT provides all necessary APIs including UI, Storage, and Network. Above all these UI APIs exploit and provide the developer with graphics, animation and hardware acceleration features inbuilt in those APIs for the developers to exploit free.

Process Life Cycle

Where’s my close button on the top right corner of the application? First of all, Metro style Apps do not have Windows or Chrome. Second, User does not need to close the applications they open. What are we talking? When do these Apps get closed? When will the CPU & Memory utilization come down? The Answer is AUTOMATIC, OS takes care. When the application is no more in the front view (after losing focus), and no background running is required, the OS will move the process to Suspended state. For people who have used iPhones or Androids, the Suspended state of application is not new. The Suspended state helps in reducing the resource consumptions (like CPU or memory) and improves responsiveness of other applications. There are some applications which try to run at the background even after losing focus, like Windows Media Player, will signal OS that they should not be suspended. When OS pushes an application to Suspended state, the App has 5 sec to save session state, in response to the event to mark suspended state. Similar to Suspended state, when app resumes from Suspended state, the app is notified of the state change. However, No event is notified when App is moved to ‘Terminated’ state. It is imperative to mention that Developers have to additionally take care of these App/process life cycle events, as well, to ensure they work consistently within Win8. By the way, if you desperately want to close an app, you always have the task manager.

Visual Studio 11 Developer preview

11? Yes, you read that right, the new visual studio for developing Metro Style apps. As usual Visual studio makes the life easier by providing a lot of new template to build from the scratch, and a lot of plumbing and usual features like stronger intellisense is provided. WinRT, like .NET, has a rich namespace and meta-data format, VS taps on this rich Meta data to provide intellisense. While developing Metro Apps, developer could use HTML/JavaScript or XAML with C++ or C# or VB. Apart from that, there are different application templates to be used as basis, like Grid Template (suitable for News feed or Tweeter update kind of apps) or Navigation template or blank template to begin with. For those UI design savvy, Expression Blend is now more closely integrated with VS for styling and animation background. The new part of this story is that these animations use WinRT graphics APIs for those effects. One feature that caught my attention and many eyes is Store Menu. You would have heard of the Windows Store, and this menu will compile the solution and package it and upload them into store as well! That way, VS 11 provides integrated development experience that covers the entire life cycle of software creation, right from architecture to code creation and beyond that now selling and marketing.

Before we close on, for all those .Net lovers, Visual Studio 11 supports development with .NET 4.5 framework. However, that is not significant when we talk about Metro style which is based on WinRT rather.

Reference

http://channel9.msdn.com/

Architecture, Process Lifecycle, Languages representations are from Slides prepared by Jensen Harris & Scott Dickens, at the Build conference

Repository

Sometimes, at work, I used to write some technical write-up that are free from IPR & confindentiality, for educative purpose. Using this opportunity at wordpress to host them somewhere on the web !