Sunday 9 November 2014

Microsoft Expression Encoder

This post is not in response to a specific problem or question, but could be a response to a potential question from some one.

I was looking for a cost effective and easy to use tool for capturing screens and produce videos. There are many tools, in the freeware, shareware and commercial category for the purpose. But the one that I find interesting is the one from Microsoft, the Expression Encoder. While Microsoft has stopped supporting the commercial version of the product, the same is available as a free download. I am sure, many of you might know about this, but for those who are not, this post will give a glimpse, so that one can start using it and see its advantages.

Expression Encoder Pro is a component of the Expression Studio, which is currently not sold as a product. In addition to Expression Encoder Pro, the studio also bundles with it Expression Web, Expression Blend and Expression Design. Expression Web is intended for creation of responsive websites leveraging CSS3 and HTML5. Expression Blend is intended to build interactive UI for windows store applications. Expression Design, combined with Expression Blend and Visual Studio helps building innovative, user-centric, fast and fluid applications. Check out more about the changes and availability of Expression products on the microsoft site.

Let us look at what Expression Encoder can offer us. Expression Encoder 4 Screen Capture is also installed along with the Expression Encoder 4. The Screen Capture component offers you to record videos using the camera attached to the device / PC, record audio using the microphone, and to record the selected area of the screen.

On clicking the Record button, you will be prompted to select a rectangle area to capture and once done, you can continue with your actions on the screen as the recording continues.Once, done, you stop the recording and the output is produced as a .xesc file, which can be further edited using the Encoder.

To get your captured video encoded into a video output, you will perform the following using the Expression Encoder

  • Choose your project. 
  • Import your source video. 
  • Modify your video. 
  • Set preview and encoding options. 
  • Choose an output format. 
  • Render your video.
Getting used to was not very difficult and the product comes with a useful help document. The tool allows you to overlay visual still and moving image file, edit the sub titles, captions and descriptions, add audio streams, apart from allowing you to insert and cut parts of the source video.

Few of the limitations include, inabitlity to add more than one overlay, the supported output format limited to Windows Media Video (.wmv) and IIS smooth streaming. While the tool has much more capabilities, for the specific purpose of creating product demo or tutorial videos, this suits very well. As you know there are many tools out there to convert .wmv to other video formats, like .mp4.

Try it out and share your feedback here.

Thursday 6 November 2014

Windows Steps Recorder - For Problem Reporting


I work in QA department, where reporting issues and defects with all supporting details to well describe the problem is key. We usually use a screen capture tool to capture the images, but then to assemble them as a problem report, we need to depend upon MS Word or such other tool. I am writing to you to check if there is a better tool that helps to perform this task even better.

By: Krishnan Sadasivam


If you are asking about a tool for screen capture, Snipping tool, which is part of Windows OS from version 7 onwards is a nice tool to capture parts of the screen. There is another tool which again is part of the Windows OS from version 7 upwards, which is called 'Steps Recorder'. This tool captures your actions and associated screen and produce a descriptive output, which will make it a lot easier for the problem reporter and the problem sover. Here is how it works in Windows 8 or 8.1:

  • Press Windows Key+Q to bring up the search panel on the right.
  • Type steps and you will see the "Steps Recorder" tool show up in the search results
  • Click on it and it will launch the Steps Recorder Tool

  • Click on the Record button and then start reproducing the problem you want to report. 
  • As the recording is in progress, you have the option of adding comments to certain specific area of screen by highlighting it.
  • Once done click on stop recording and your actions is compiled as multiple steps and optionally as a slide show.

  • You have option to save the steps as a compiled html and email it as well.

This free tool will certainly be handly for reporting computer software problems.

Sunday 2 November 2014

Excel Pivot & Shortcut Keys


I understand Microsoft Excel is a good start for analytics on data. Please direct me as to how to create a basic Pivot Table. You may also share me any tutorial references to learn more on Pivot feature in Excel. Also share Short Cut keys in Excel

By: Vinay Kumar


Learning to create a Pivot is fairly easy but the tough part is to know how you want the data to be presented in the Pivot. For this you need to know a good understanding of the data on hand and what you want out of the data. For this question, I assume that you are already clear about your needs.

Here is how you can quickly get a Pivot of your Excel Data:

  • Select the data range that you want to apply Pivot on and then click on the Pivot button, which is in the Toll bar ribbon under the Insert Menu. You may also use the short cut key Alt + NV
  • This will open up the Pivot dialog window where you will have option to adjust or change your your data range (as you may observe, you can also use an external data source by choosing the appropriate option) and other options.
  • Clicking ok on this dialog window will open up the Pivot table in a new work sheet (default option) and will show the Pivot Table Fields task pane on the right side. You can drag and drop the fields into Filters, Columns, Rows and Values. 
    • FILTERS: This area contains the fields that enable you to page through the data summaries shown in the pivot table by filtering out sets of data — they act as the filters. For example, if you designate the Year field from a data list as a report filter, you can display data summaries in the pivot table for individual years or for all years represented in the data list.
    • COLUMNS: This area contains the fields that determine the arrangement of data shown in the columns of the pivot table.
    • ROWS: This area contains the fields that determine the arrangement of data shown in the rows of the pivot table.
    • VALUES: This area contains the fields that determine which data are presented in the cells of the pivot table — they are the values that are summarized in its last column (totaled by default).
  • Set these in the way you want and your Pivot table is ready.

To know more about other complex and advanced features of the Pivot Table, check here.

Here is a nice Cheat Sheet containing all the Short Cut keys for Excel. If you are a key board expert, then you will want to check out this as well.

Friday 29 August 2014

Windows 8.1 - Switching to Local Account


Microsoft Windows 8.1 update by default prompts to use a Microsoft live account and without noticing, I just went ahead and got signed in using my Microsoft Account. Now how do I switch to a local account?


Yes, Windows 8.1 by default takes the users to sign in using Microsoft live account. However, if you carefull observe, you have the option to use a local account, but Microsoft ensured that you will miss that. Windows however allows users to switch between live account and local accounts.  To switch to a local account, follow these steps:

  • Goto Your Account Settings screen. You can do this by typing "Your Account" on the Windows Search screen (Windows Key + Q) .  

  • You will see a link "Disconnect" under your user account. You should click on Disconnect, which will take you through setting up your local account.

  • As a next step, Windows will have to authenticate you once again and will prompt for your current password.
  • The next step will prompt you for inputs to have your local account created. 
  • You will then be prompted for a confirmation and you click on the Singout and Finish button.

You may want to note that by switching to your local account, you will lose the synchronization with your sky drive.

Sunday 24 August 2014

Error connecting to SMTP Server


All of you would have faced issues when connecting to a remote server on ceertain ports. The issue will be strange to trouble shoot as the same connection works from a different network or on the server and so on. I came across such a situation when building and testing a mailing component and I experienced that the .NET SmtpClient component was encountering exception. It took considerable time for me to trouble shoot and get it resolved.


My first take was to try whether the credentials that I have used is just fine, by creating an email account in outlook and that worked fine. I just wanted to isolate various probable areas of concern. As such I then tried using an online SMTP server test service, which was showing an error that the client must first check for incoming mails. Telnet to the mailserver on port 25 also gave an error. I then examined our mail server, whether it has any such restrictions, but I could not find any specific restriction that could cause this issue.

My next step was to examine the details of the exception for any possible clues. The inner exception nested couple of levels deep revealed the error as "An attempt was made to access a socket in a way forbidden by its access permissions"

I then tried looking for solutions online there were many posts and one solution was about to try the following and one of that could solve this issue:
  • Restart the windows firewall service
  • Reboot the problematic machine
  • Restart the “TCP/IP stack”. Run CMD as administrator, type “netsh int ip reset resetlog.txt” to reset TCP/IP.
  • Try to temporarily disable antivirus.
After a bit of analysis, I could find that in my case it was the McAfee Endpoint Protection. I could find that the rule "Prevent mass mailing worms from sending mail" was set to block connections on port 25 with certain exceptions. I added the VWDExpress.exe to the exception list and then it started working fine.

Saturday 2 August 2014

Losing Wi-Fi connection after sleep


I use a HP Probook Laptop at home running Windows 8.1 pro. I usually close the laptop whenever I take a short break so that I can resume my work where I left after the break. But, I find that upon opening the Laptop, the wifi does not connect and that too randomly. That means, it works fine on certain occasions and it doesn't on certain occasions. Some times, a restart helps connecting but not always. What could be the problem and how to get this resolved.

By: Lalith Venkateswaran


This could be due to a combination of multiple issues relating to the configurations in your laptop and as well as on your router.

Upon closing the lid, the laptop goes to sleep mode and powers down the built in wifi device. Which might cause orphaned IPs at your router end and as you reconnect again and again, you might exhaust the DHCP range that your router is configured with. Check if this issue happens when you are on battery. If yes, then you may configure your power options so that your device does not get powered down, every time you close your laptop. You find this setting in the Power management tab of the wifi-adapter configuration. You may also review the advanced power settings for the wifi adaptor under the power options.

When your wifi connection fails upon wake up, you may check if you are able to connect to a different wifi network. If you don't have a different wifi network, you simply use the hotspot feature on your smartphone and try if your laptop can connect to it. If yes, then it is not just the wifi device on your laptop, it could be due to issues with your wifi router as well. Some routers may have issues in accepting connections from the same devices with the same mac id, as the previous connection might still be there. Try the following steps, which might solve your problem:

  • Try setting a shorter DHCP lease time, so that the orphaned connections get released sooner, so that your router has no problem in accepting a fresh connection.
  • Use the DHCP reservation, so that every time the laptop tries to establish a connection, the router assigns the same IP and thus no need for lease expiry / renewal.

Post a comment if this does not solve your problem.

Sunday 29 June 2014

Administration of Vodafone HG556 Router


I have a Vodafone HG556a router, which I was using while I was in Ireland with Vodafone network. This router has a USB port and as well as an ADSL port. So I thought that this router can be used back in India with BSNL or such other ADSL Networks in India. When I login to the router with the given default password, I could only see the basic settings and I could not see menu / options to setup the mac filtering and other advanced security settings. I searched google and figured out that there will be a different credential to get into the advanced settings. I tried with the default admin credientials but it does not work. Any help that you can offer here will be of great use for me.

By: Sreekumar Rajan


Luckily, I too have a similar router and so I am sure I can help you here. Basically, these routers are locked with the network service providers and hence for any advanced setup, you may have to reach out to their customer service, who will be able to reconfigure your router remotely. Don't worry, there is a way to get the admin credentials and you do not have to reach out to the customer service team of Vodafone (overseas).

I assume that you have your basic user credentials. If not, you may perform a hard reset of the router and then look for the credentials
on the back of the router. Usually, the default basic credentials are mentioned in the router itself, if not you may consult the user guide if any that came with the router. The defualt user name is 'vodafone' and the default password is also the same - 'vodafone'. Refer the image, which is that of my Vodafone router and you can see the defaults printed there in.

You connect your router to your laptop or desktop using ethernet cable and login into the web administration of the router using the default IP of Alternatively, you may connect through wifi as well, using the default SSID and the WPA as printed at the back of the router. Type the URL on the browser after logging in with the basic credentials.

This will prompt you to download the settings file and depending on your browser settings, allow the download into a desired location. This settings file is basically in xml format and so, you may open this using notepad or wordpad. Search for the word 'syspassword' and you will see the admin password as in this image. You may observe that the value for the key sysPassword in this case is "VF-456gIr". This is the password for the user 'admin'. Log out of the basic user login and then login again using the admin credentials as retrieved above and you are now on course to perform advanced setup tasks on your router.

It may be possible that the firmware version of your router may be different and in that case, there is a possibility that this technique might not work for you. If so, share with me more details about your router and I can see if some help is available elsewhere.

Saturday 3 May 2014

Glitch in Power Switch on the Desktop


The power switch on my desktop has developed some glitches. On a quick examination, I found that the switch mounted on a small board fixed on to the cabinet and this cabinet is an unbranded one bought in the grey market. I have doubts if the switch can be replaced or if the small board housing the switch will be available at all in the market. Is there a work around for this?

By: Anonymous


There is no straight answer for your question, as the switch, the board housing the switch will greatly vary from the cabinet to cabinet. For example, some cabinets are designed to have the LED cluster integrated in the same board and the physical dimension of such boards vary depending on the position and layout of the cluster. The switch can certainly be replaced, but needs a physical examination. As such, you may get hold of a next door PC repair shop, who does chip level servicing and get this serviced.

Just in case if your PC is 4 or 5 years older, and depending on your usage, you may consider upgrading your PC and in the process, change the cabinet as well. If you think, you are fine with your PC and it has much life left over to serve you, you may try the following:

Open your cabinet and locate the front panel connectors and figure out the pins that are connected to your reset switch. Now, pull out your reset switch connector and plug onto the pins marked for power switch. You may also plug the power switch connector onto the reset pins. You may need to consult your mother board manual to do this right or else, things may go wrong and you may even you may brick the mother board or the processor. With this, you may use the reset switch to power on your system and your power switch will act as reset, if to the extent it works. With modern PC mother board designs, and the operating systems, the power off is in fact soft and thus you don't need the switch for powering off. This won't work if your PC is very old and the power switch is mechanical.

Saturday 26 April 2014

Start PXE Over IPv4


My six months old HP Laptop which was working fine all along, once did not boot and I could see the text "Start PXE over IPv4" in the black MS DOS like screen and was unresponsive to keyboard and mouse. I waited for some time and then used the power button to hard shut down and then powered it again. This time it booted normally without any issues. Though the problem did occur thereafter, I am curious to know what PXE is all about. Can you explain what it is and the reason for it showing up?

By: Anonymous


PXE is the short form for Preboot Execution Environment.It allows PCs or laptops to boot over a network as against booting from the local hard disk. Those who have worked with Novell Netware should be familiar with this network booting, where the Network Interface Cards carry a small add on chip containing the Network Boot Program, which will perform the boot over the network.

To address the large deployment challenges, Microsoft began developing the technology that would allow for network-based installation and PXE was the solution for this. To PXE boot a PC, the BIOS should be setup to boot from network. When set so, the BIOS will first get an IP address for the PC from the PXE Server and thereafter to get the boot image using TFTP on to the RAM and then boot out of that image.

Now in your case, as you have described the issue, it just happened, without you changing any BIOS setting. Normally the BIOS have multiple boot options configured with an order of priority. Your BIOS probably had the Network boot as one of the boot options and on that occasion, for some reason, your hard drive would have been unresponsive for a moment at the time of boot, as the next choice, the BIOS would have attempted to boot from network using PXE. As it might not find a PXE server over the IPv4 network it stayed there. 

You can check the BIOS by pressing F2 when your laptop boots and check if the network boot is configured as an option. You may disable this option, if you are not using the Network booting in your environment. On a different note, you may want to check why your local hard disk was not responsive for the boot on that occasion. That could be an odd occurrence and  the disk may be just fine too.

To know more about PXE booting, check the following resources:

Sunday 16 March 2014

Code Quality - Refactoring


My project team has been asked to improve code quality by performing refactoring. I know that code refactoring is all about reviewing the code and ensuring that it follows the best coding practices. I however seek your guidance as to what are the aspects one should look into while performing code refactoring and also point me to some references, where I can learn more about the same.

By: Rajesh Dhawan


Your question has the answer to some extent. Martin Fowler and Kent Beck originally defined refactoring as "a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior… It is a disciplined way to clean up code that minimizes the chances of introducing bugs". Refactoring can be as minor as an inline change or it could be a massive code rewrite. Though large scale code refactoring can be an architectural redesign, as long as it does not change the business logic and when it is done in steps, it can be called as refactoring as well.

This is mostly done to improve the non-functional attributes of the program thus leading to improved code readability and maintainability. The design priorities or constraints for the enterprise applications are usually defined by the Enterprise Architecture teams, considering the vision, mission and goals of the enterprise and in turn the IT organization. Having said that while refactoring is all about making code changes to make it conform to the non functional attributes like maintainability, scalability, performance, etc, the specific design best practice or design pattern to consider would differ case to case.

Ideally, refactoring is done in iterations and technically there is no end to refactoring. However, one can say that refactoring ends when the code becomes 'simple', in which case, the definition of simple is subjective. As a programmer, you should be able to smell your code to figure out whether it needs refactoring. Here are some situations when your code smells, inviting you to refactor:

  • Duplicated Code - extract out the common bits into theirown method (extract method) if code is in same class if two classes duplicate code, consider extract class to create a new class to hold the shared functionality.
  • Long Methods - extract method!
  • Large Class - Class trying to do too much often shows up as too many instance variables.
  • Long Parameter List - replace parameter with method (receiver explicitly asks sender for data via sender getter method) Example: day month, year, hour minute second ==> date
  • Divergent Change - If you have a fixed class that does distinctly different things consider separating out the varying code into varying classes (extract class) that either subclassor are contained by the non-varying class.
  • Shotgun Surgery - The smell: a change in one class repeatedly requires little changes in a bunch of other classes. try to move method and move field to get all the bits into one class since they areobviously highly dependent.
  • Feature Envy - Method in one class uses lots of pieces from another class. move method to move it to the other class.
  • Data Clumps - Data that's always hanging with each other (e.g. name street zip). Extract out a class (extract class) for the data. Will help trim argument lists too since name street zip now passed as one address object.
  • Switch (case) statements - Use inheritance and polymorphism instead (exampleof this was in Fowler Chapter 1; this is one of the more difficult refactorings)
  • Lazy Class - Class doesn't seem to be doing anything. Get rid of it!
  • Speculative generality - Class designed to do something in the future but never ends up doing it. Thinking too far ahead or you though you needed this generality but you didn't. like above, collapse hierarchyor inline class
  • Message chains - Say you want to send a message toobject D in class A but you have to go through B to get C and C to get D. use hide delagate to hide C and D in B, and add a method to B that does what A wanted to do with D.
  • Inappropriate Intimacy - Directly getting in and munging with the internals of another class. To fix this, move methods, inline methods, to consolidate the intimate bits.
  • Incomplete Library Class - If method missing from library, and we can't change the library, so either: o make this method in yourobject (introduce foreign method) If there is a lot of stuff you want to change: o make yourown extension/subclass (introduce local extension)
  • Data Class - We have already talked about this extensively: in data-centric design, there are some data classes which are pretty much structs: no interesting methods. first don't letother directly get and set fields (make them private) and don't have setter for things outsiders shouldn't change look who uses the data and how they use it and move someof that code to the data class via a combinationofextract method and move method (see the Fowler chapter 1 example for several examplesof this)
  • Comments - Comments in the middleof methods are deodorant. You should really refactor so each comment block is its own method. Do extract method.

Check out the following to know more on the subject:

Friday 28 February 2014

TIFF image support in HTML5


I am working on a requirement to display multi-page tiff image in a web application. We have been exploring the new canvas feature of html5 but find that handling multiple pages in the tiff image using canvas a bit of challenge. Please share some ideas in resolving this which would be a great help. You may direct me to javascript or such other resources that might help addressing this. Thanks in advance.

By: Nilima Jain


Though most browsers support the canvas feature of HTML5, the tiff format is not supported by all browsers, though IE supports it. So, first ensure you have an agreement on the supported browsers for which you are building this feature, or else you would need a plugin / control for handling tiff images. If you are taking the plugin or activex or applet route, then you have the liberty to make use of some of the client libraries and expose methods to interact with javascript calls from the browser and you are done.

Just in case you are fine with the browser support and are looking for using canvas for handling tiff, then try exploring the tiff.js library. Google also has a code library called tiffus. But I have not personally explored these libaries and you may spend some time trying out these whether these are of any help.

The other approach could be to try out the following approach:

Have a server side component with service APIs to be able to split the pages in the tiff image into multiple jpg images of the same resolution. This service API when queried without any specific page number would load the tiff image and have the pages parsed as individual images and would return the binary of the first page as jpg format. Similarly, the API, when queried with a specific page, it would ensure returning the specific page. The challenge with this approach would be that there would be more hits between the client and server. This can however be optimized by handling this process in-memory and thus minimizing the disk i/o on the server. This approach is likely to work with all browsers and the canvas feature can be leveraged as well.

However, if you have a specific browser to work with, for instance Internet Explorer, the best and easy approach would be to build an ActiveX control and wrapping the tiff image handling within it. In this case, the native windows imaging components might just suffice and no need for a third party library to handle the multi-page tiff image. This ActiveX component should expose necessary APIs, which can be invoked by javascript in response to various events at the client side.

There are quite a few third party commercial libraries to meet this need too.

Sunday 26 January 2014

Continuous Integration in Agile Software Development


I am a fresher and have recently joined an IT firm as a .NET developer. After 15 days of orientation and training I am not part of a project team. I have been hearing a lot about Continuous Integration. Can you help me understand what it is and how does it help the project execution?

By: Rajesh Narayanan


One of the important reason behind the software project failure was that the defects or issues discovered in the later phases proving to be too expensive to address and thus adding to the time and cost of the project. The industry has come up with different methodologies to address such issues and thus Agile Methodology has gained much adoption and recognition. As you may be aware, one of the key principles of Agile is to put in processes and techniques, so that the defects or issues are detected early on and thus giving opportunity to address sooner. Practices like SCRUM, Pair Programming, Test Driven Development are all expected to address this issue of catching the defects early on. On the same lines Continuous Integration and Deployment also contributes towards offering an opportunity to discover issues early on by offering the customer a working software product every now and then.

Traditionally, developers work on building components or modules independently and there will be a phase which will be fairly closer to UAT for integrating these modules together. No wonder, the development teams will discover many inconsistencies leading to the modules not working in tandem as intended. This calls for rework on one or more of the already built modules.

Continuous Integration addresses this problem by ensuring that every time the developer checks-in the code changes, the code modules are integrated with other related modules and deployed as well. This activity is best achieved by automating the build and deployment process. That means, the developer as he checks in code changes, will see the build and deployment errors and or warnings, which are expected to be resolved then and there, so that every code change that is checkedin does not break the working product. Thus the end customer will be able to see a working product always and able to validate the change as it is implemented.

The following are some of the key practices that makes the Continuous Integration workable and useful as well:

  • Maintain a Single Code Repository - Continuous Integration won't work if developers maintain isolated code repositories for different component or modules. There are plenty of open source and commercial source code control tools that offers robust conflict resolution techniques and facilitates usage of single code repository.
  • Build Automation - The Continuous build and deployment activity is best accomplished by automating the same. Most of the programming languages support this requirement and tools like CruiseControl are also very useful to accomplish this.
  • Test Automation - The automation process shall also execute the basic tests by itself. this where Test Drivent Development is in use. The developers, as they write code are also expected to create test scripts, so that these will also be executed during the automated build process.
  • Frequent Code Commits - The developers should commit the code more frequently and at the least every day. They should commit the code after every logical completion of a code change, so that the build does not break. This where, the Agile principles revolves around braking the coding tasks into smaller units, so that such tasks typically take 8 or 16 hours to complete.
  • Automated Deployment - Coupled with build automation, the code should also be deployed on to the test environment, so those involved in testing see the latest changes as soon as they are committed into the repository.

Hope the above explains the purpose and the principles of Continuous Integration. You can look up Martin Fowler's article on the subject to know more.

Thursday 16 January 2014

Essential Skills For an UI Architect


I have been working on designing and building web applications both for mobile and desktop and am getting exposed to related tools and languages as well. I want to further improve my skills and want to shape myself as an UI Architect in the longer term. I seek your advice and guidance on pursuing my career in that direction.

By: Rajkumar Krishnan


Given that you have experience and exposure on UI design, it is natural to aspire for becoming an UI Architect. As you would know, the word Architect has larger significance and calls for certain abilities which go beyond the core UI design. If you take a closer look, UI implementation is one aspect and UI design is another aspect of it. As an UI developer, you would be implementing the designs created by someone else, who is good at visualizing the user experience. It is essential that the UI designer also have sound knowledge on various current and emerging tools and technologies, so as to come up with a design that is implementable. The UI Architect role is much wider which should have the broader skills on every other related aspects of the solution being designed. Here are some of the essential skills an UI Architect should be capable of:

Core Skills: The core skills that an UI Architect should be capable of include but not limited to the following:

  • Ability to comprehend and discover the goals of the target users, motivations, and the work and interaction patterns and come up with a design that is intuitive, responsive and usable.
  • Exposure and ability to comprehend the Product design skills are very essential as UI does not stand alone and it has to be a part of the product that is being built. The UI that the architect comes up with should go well with the product design principles and concepts.
  • Good understanding on the information architecture is also key for a good UI design. Afterall the UI is all about presenting information to the users using different colors, layouts, graphics etc. Without a good understanding of the information and the inter relationships of the underlying data, the UI architect is most likely to end up with a poor design.
  • Great deal of understanding on the behavioral aspects of the users would be key to come up with a usable UI.
  • Testing skills are equally essential without which the design that the UI Architect comes up may not be testable at all.
  • Ability to unlearn is another key skill that every architect should posses. If you are a developer and if you know certain specific tools or technology you will tend to come up with a design that suits the tools or technology that you know but there are quite many other tools and technology out there which can assist to implement even better designs. While it is important that the design is implementable, the Architect should also understand that there is nothing that is impossible and should have wide exposure on various other current and emerging technology out there.
  • Should have sound knowledge on the fundamentals of the multi-media, for instance, in-depth knowledge on the various image formats and attributes, the technical attributes of the screens of differing sizes as used in desktop PC, smartphones, etc.

Other Skills: The following are some of the other related skills that an UI Architect should have:

  • Should be open minded without bias and should be able to sketch the visual UIs on paper or on appropriate drawing tools.
  • Should have reasonable business skills which will help in enhancing the ability to understand the interactions between the product and the human users, the motivation and goals of the end users, etc.
  • Should have very good communication and language skills. Needless to say that the UI Architect should have the documentation and presentation skills as well.
  • Other soft skills that are relatively important for any role are active listening, interviewing, observation, collaboration and inter-personal team skills, etc.
  • Know the art of trade-off. i.e. in any design there will be conflicting attributes and the architect should be good at trading off one for the other. For example, if response time is a key attribute for you, you cannot afford to use fat image in your design. You should be able to balance and trade off certain attributes for the other.

You may work towards sharpening your skills in the above areas you can eventually look at becoming an UI / UX Architect in the longer term. Good luck with your career aspiration.