I found a desktop CPU heat sink lying around in my work desk. I’ve never given it a detailed look, until today because I thought of returning it to it’s owner.




Was then left wondering what the liquid cooled heat sink in Surface Pro 3 would be like and then stumbled upon this jaw dropping video

BTW, the thickness of Surface Pro 3 is nearly the same as the copper plate (marked in green in the first picture above)


For the previous (and latest) release of Indian Cinema UK app for Windows Phone 8.1, I wanted to display the Film Info in a Hub, but the screen estate to look like the Bing Apps on Windows Phone. I got this inspiration from Amar’s blog post.

But, having done it, there was a problem. There was a margin on the left and because I was displaying the film poster, it looked odd. I wanted the film poster to look flushed left.

Being new to Hub control, I thought it was the 1st Hub Section adding some kind of margin, so I tried a negative margin with a guessed value. This did not work. So, I wanted to inspect the Xaml Visual Tree to find out

  1. which control was contributing the left margin
  2. how much margin was being set

And to do this, XAML Spy came to help. This incredible piece of software shows the visual tree, rather than having to guess the complex XAML rendering behaviour.

Turns out that a default margin is added by the Hub control for all the Hub Sections and the value is 19 as shown below.



Having discovered that, I then set the margin for the Hub control and here is how it appears now.


One word: Incredible! The Background: I’ve got the privilege to work on a Greenfield project which involves:
  • Collecting and Analysing Requirements
  • Web Application Designing (not Graphic/Web Designing)
  • Implementing
  • Testing
  • Deploying and Going live
As in my previous projects, it is the first task that takes a lot of time and effort. In my previous projects, I’ve never overlooked the Use Case Analysis and has thus resulted in completing the projects on time and to the stakeholder’s satisfaction. I have, in the past, effectively communicated my understanding of “"WHAT” needs to be done in the project by providing a PowerPoint presentation. In one case, I earned both the confidence and the trust of my Project Manager. Such is the importance of effectively communicating what I have understood to the stakeholder. While, PowerPoint is sufficient for small projects, with complicated ones, I’ve often found something missing in my arsenal. I intended to learn sketching on paper as a profession, but never found the time to. But, now there is a prototyping/sketching tool available in the set of software products that I own. Thanks to my attendance at ReMix UK 2008 where I got a 1 year subscription to Microsoft Expression Suite and related software. A couple of weeks ago, Microsoft Expression 3 was released and in there was the new “Blend 3 + SketchFlow”. Never realised how influential Bill Buxton, from whom I bought a signed copy of his “Sketching User Experiences” book, would be. The default font used in the SketchFlow is named “Buxton Sketch”! I have realised that despite being a non-designer, there is nothing stopping me from sketching the product design well ahead even before coding. That way, as proved in my past experiences, I can focus on “How to do” armed with a list of “What to do”. I’ve started learning SketchFlow using an excellent sample chapter from the book “Dynamic Prototyping”. The language used by the author in this book is simply great. The book does not feed the reader with all detailed steps. It invites the reader to observe and try to implement the features as shown in the figures in the book. This, to me is the first of such experiences. That way, the reading does not get boring and keeps the reader on toes. I can’t wait for the book to be released. The most impressive of this sample chapter is that it covers almost many basic things that as a developer I would need to get started with SketchFlow. Here is a gist:
  1. Understanding Blend 3 workspace for SketchFlow
  2. Working with SketchFlow Map
  3. Importing freehand drawings and creating own content
  4. Sharing Sketches and getting Feedback (this one rocks!)
  5. Animation
  6. Navigation
  7. States
  8. Sampling Data
  9. Components
  10. Annotations
  11. Creating Documentation of the SketchFlow
After having completed this sample chapter, I am confident of now creating sketches to show to my new project’s stakeholder. Hopefully, I won’t meet him because the SketchFlow Player (which is essentially a Silverlight application) enables all possible basic scenarios to obtain feedback from the stakeholder while working remotely. Once I publish my sketchflow in a secure location online for my stakeholder to view, then begins the impressive process of refining requirements and use cases. The step after that would be to create User Stories for the minimal Scrum based project management tool Scrumy. Then with the great online repository of Unfuddle, I should be unfuddling in no time at all to implement the project. Expecting an exciting August month.


In redesigning and redeveloping Tapovanam's (my friend's organisation) web site, I want to put in place a good architecture. The following are some of the considerations:

  • A multi-tier design (mainly to separate presentation code from business logic)
  • Support themes in presentation layer to switch designs easily at later stage.
  • Object oriented business logic layer (BLL) (with business objects)
  • Data access layer (DAL) to be independent of underlying database (to switch databases or even use XML files as data store at a later time)
  • Data Transfer Objects (DTO) to pass data between BLL and DAL
  • Maximum use of Data Binding at the presentation layer

Following are few ideas in mind at this moment to solve the above problems:

Multi-tier Design

Presentation Layer - ASP.NET Web Forms

Business Logic Layer - C# business objects having all the validation logic and an abstracted view of underlying data schema.

Data Access Layer - C# data access classes to retrieve and store data in data transfer objects

Plug-in model for Data Access

To be able to change or use multiple data stores with least effort, the Data Access Layer will use the Provider Model design pattern.

An abstract base class containing common data access methods like ExecuteNonQuery, ExecuteReader will be used. This methods in this abstract base class serve as Helper methods for data access. (similar to Data Access Application Block in Enterprise Library). This could be named as DataAccess

For each module in the web site (Eg.. Photos, Events, Commentaries), an abstract provider class and a concrete class is created.

The abstract provider class will have abstract CRUD (create, retrieve, update, delete) methods which will be implemented by the concrete class. For example, GetPhoto(), GetPhotosByCategory() etc. This class is data store agnostic. This could be named as PhotoProvider

The concrete class will have the data store specific method implementations defined in the abstract provider. This could be named as SqlPhotoProvider

Data Transfer Object

To transfer objects with data between BLL and DAL, separate classes are created. For example, PhotoDetails class to store the Photo record obtained from data store. Using un-typed DataSets as DTOs is problematic when it comes to maintenance (spelling mistakes are a pain)

A collection (like List<T>) of DTOs is used to pass a set of retrieved data from data store to BLL.

Object Oriented BLL

The business logic layer consists of C# classes that represent the business objects. These classes have all the validation logic, business logic and methods that talk to the DAL. These classes also use the respective Data Transfer Objects to pass and retrieve data from DAL. These classes can be named like Photo, Event etc.

DataBinding in Presentation Layer

To databind UI components like ListView, GridView, DetailsView etc. the ObjectDataSource controls are used in the aspx pages. The ObjectDataSource controls use the Business Objects in BLL and facilitate as binding adapters between the aspx page and business objects.

Other considerations include :

  • Using all the existing ASP.NET built-in Provider services like Membership, Profile, Health Monitoring and Personalisation
  • Using Enterprise Library's Data Access, Exception, Logging, Security blocks.
  • Pay-pal integration for e-shop
  • Globalisation and Localisation to display web site in Indian Language
  • Content managed pages (allow contributors to compose and publish pages)

Hmm.....After VSS came CVS and now after CVS it's time to try out SVN! Yesterday, I was finally determined to make my machine a build system(with WinXP SP2 Pro) for which I had to install and configure CruiseControl.NET. For which I had to install VSS. Then I thought of CVS (because, I was comfortable with CVS way of doing things for the past 1 year). Oh...then I thought of SVN (because, SVN is to be a compelling replacement for CVS). The best part of SVN is the availability of the free e-book which is quite exhaustive. I was indeed more happy to read the TortoiseSVN e-book because it gave detailed steps to install the SVN Server and not just the TortoiseSVN Client. Since I did not have Apache Web Server in my system, I prefered the SVNServe type of SVN Server which listens on port 3690. With that I had my svn server setup but before running the server, I read a piece of information in the book which said that the svnserve.exe can be run as a windows service using a wrapper called SVNService. Without much thought, I tried running the svnserve as windows service. But, to my despair when I tried to view the repository which I had just created using TortoiseSVN, I could not find the repository using the repo-browser of TortoiseSVN. Something has gone wrong somewhere....After 30 minutes, I started to suspect the SVNService wrapper. So, instead of going to that level of abstraction, I decided to run the svnserve manually using command prompt. And lo there was Windows XP SP2 in action asking my permission to unblock the port 3690. Phew! that was a relief. After unblocking it, I reverted back to SVNService. There ended my initial adventure with SVN which was quite less exciting than my earlier ones with CVS and TortoiseCVS. I am expecting the real thrill when I start using ASP.NET application with SVN.