Sunday, January 3, 2010

SSW Code Auditor

 

Developers of .NET programs face many challenges in developing applications not the least of which is trying to stay consistent and following best coding practices. It is not uncommon to find variations in coding even though code was developed by the same person. The problem of inconsistent and bad coding is amplified when working in teams and exacerbated when developing large and/or complex programs despite having written coding standards and best practices. One can argue that if developers follow written standards and best practices then the problem can be mitigated but this has been proven wrong time and again and over reliance on developers without proper and timely checks is not only futile but also not prudent and ineffective. Any and all coding issues need to be identified early on during code development in order to be cost effective and develop good quality code. One can also argue in favor of manually checking the code for such inconsistencies but that is just not practical and is ineffective. What is really needed is a solution that is easy to use, flexible, automated, reliable, and developed by experienced professionals. SSW Code Auditor developed by Superior Software for Windows (SSW) is one such code analyzer and auditor that enables developers to identify and fix code bugs and inconsistencies early on in the development process. SSW Code Auditor is a one stop shop for enforcing coding standards and best practices to ensure quality software development in a cost effective manner. It is a simple and professional solution to effectively manage coding practices and standards by also providing ability to have custom audit rules and automate auditing of multiple .NET projects at the same time.

Installation of SSW Code Auditor is simple and very intuitive. I installed it on Windows 7 without any problems. The application itself is very easy to use. SSW Code Auditor provides two easy methods to audit code: from the Visual Studio add-in and from Windows start menu. I use Visual Studio 2008 and the add-in was added automatically by the installation. The add-in is visible as a toolbar in Visual Studio IDE and is easily accessible. Some of the options may be different depending on whether the audit was run from the start menu or visual studio add-in. For instance, the add-in can audit the currently opened project file and does not have email option. There is practically little to no learning curve involved in using the code auditor. Furthermore, the code auditor wizard walks through the auditing process from beginning to finish and makes it a breeze for anyone wishing to audit their code. The wizard feature is a great time saver. The wizard enables users to hit the ground running without spending too much time trying to figure out how to do things.

I think one of the key features of SSW Code Auditor is the extensive set of predefined rules and the ability to create new rules to tailor the auditing process to suit ones requirements. Admittedly, some of the rules identify the most common bad practices or mistakes that I make as a developer and this is evident from the audit report shown in a screenshot later in this review. For instance, I use VbCrlf a lot and there is a rule that identifies this practice and suggests that the best practice is to use “Environment.NewLine”. There are many other user interface related best practices that I often ignore which are promptly identified by the code auditor. These rules not only promote best practices but also enable code optimization. I think the built in wizard is a great strength of the code. In addition, I think the ability to have different set of rules for different audit jobs is also a very useful feature. Another huge plus point in SSW Code Auditor is the ability to create many jobs with the ability to audit many projects in a job and add to that the ability to schedule the audit jobs you get a powerful automated audit process. One more feature of SSW Code Auditor that will be extremely useful to users is the ability to have the audit report emailed to any number of recipients either on demand or on schedule. Last but certainly not the least; in fact the most prominent feature of SSW Code Auditor is the output audit report that is generated after the audit. The audit report is very detailed, intuitive, and organized. The report is in XML format. The report contains the summary of the audit results and links to the problem areas in the analyzed code. The report is well organized and presented in such a way that it is very easy to navigate to the lines of code that have been identified as having issues based on the rules executed as part of the audit. The audit report can be customized to show the results by the rules that failed or by the files that were analyzed. Regardless how the results are ordered the report contains the line number(s) in the project file and links to those lines of code that failed the rules. The links when clicked take you directly to the project file with the lines of code that have failed the rules. Basically, the report is easy to work with, very user friendly, and very detailed.

In conclusion, SSW Code Auditor is a very good, multi-featured code auditing software that is very easy to use. It is a one stop shop for analyzing and auditing .NET code. It allows anyone with any type of skill level to use the software for auditing code. The wizard helps make the audit process a breeze. The extensive predefined rules coupled with the support for the creation of custom rules ranging from basic to advanced complexity is a strong feature of SSW Code Auditor. SSW Code Auditor lets anyone accomplish the goal of having bug free, consistent, good quality software. SSW Code Auditor is very easy to use yet very powerful; provides many advanced features, and provides wizard functionality to assist user in code audit. There is no doubt developers across the board ranging from beginners to experts will find SSW Code Auditor a very useful and cost effective means of developing good quality, error free coded applications.

Add-in code audit screenshots:

clip_image002

clip_image004

clip_image006

clip_image008

clip_image010

clip_image012

clip_image014

Start menu code audit screenshots:

clip_image016

clip_image012[1]

clip_image018

clip_image020

clip_image022

clip_image024

clip_image026

clip_image028

Monday, December 21, 2009

Tic Tac Toe

Tic Tac Toe is a small game program that I developed for others. This game is based on the traditional Tic Tac Toe game but kicked up a notch. There are many features in this game that make it very much exciting and challenging. For instance, every new game player information is requested and stored for future use. There are 4 levels in the game namely Beginner, Intermediate, Advanced, and Expert. Depending upon the level chosen the complexity in the game increases by the increased number of blocks. The game also has capability to save and retrieve the game. This game also stores the information of winner and allows printing of all past winners. This program also allows users to customize the game and its interface. The game also comes with a built in help manual and capability to check for updates to keep the game up to date. See below the screenshots and demo of the game.


Main Window:









Player Information:







Configuration:












Winners:







Demo:

Thursday, December 17, 2009

Computer does not start


I promised to discuss the computer issues I have been having for some time now and so here I am to blog about it in hopes of educating others on what to do when they face a similar situation. I will first talk about the major issue which was essentially the show stopper as far as my computer was concerned. Here is a little background information. One fine day I was copying some files and I noticed that my computer screen froze up – there was no visible dynamic activity on my computer screen and the hard disk activity LED which usually blinks constantly especially when copying files was not lit. I figured the computer was stuck and in order to recover from this problem I did a hard reboot of my computer i.e., powered down and powered back up by pressing the power button on the computer. After doing a hard reboot of my computer every time I started up my computer I would get a message that the computer was not shutdown properly and I was presented with the screen shown below.

So, no matter what option (Safe Mode, Normally, etc.) I selected to start up my computer it simply would not start. The computer would come up to the point where the progress bar is shown as the operating system is loaded and then the computer would crash. The computer would then attempt to start back up automatically only to crash again. It got stuck in this seemingly perpetual cycle of almost starting and crashing. When it crashed the computer would display a blue screen with some error messages but only for a fraction of a second so there was no way for me to see what the messages were and what went wrong in order to troubleshoot the error. See the video below to see what I am talking about.

I had the “Startup and Recovery” settings set in the computer to display the error message every time the computer crashed and not restart automatically and I would have imagined that with this setting the computer would display the error message and wait for me to tell it to restart but that did not happen. I guess the setting was worthless in this case perhaps because the computer never got to completely load the operating system in order to enforce the setting. In any case I was in a limbo not knowing what was wrong and obviously if I don’t know what was wrong then I cannot fix it. But then again I realized you don’t have to know exactly what was wrong as long as you have an idea of what could be wrong and then troubleshoot the problem. My first attempt at resolving the problem was to recover my computer using the computer manufacturer provided recovery CD. But it was not long before I realized that I did not have a recovery CD for my computer. I was really upset because here I was stuck with a computer that does not start and the manufacturer did not provide a recovery CD. I mean would it hurt the computer maker to provide a CD along with the computer? Anyway my next attempt to fix the problem was to use a backup image I made of the computer some time back. As luck would have it I deleted the backup image recently to make some free space on my external hard drive thinking that nothing could go wrong with this computer. So much for that expectation. My final attempt to fix the problem was to research on the internet. Although my research on the internet was scary it was however fruitful in the end. I read many suggestions on how to fix the problem almost all of them were complex and could potentially screw my computer all together if things went south. Fortunately for me I figured out that the simple solution was to fix the Master Boot Record (MBR) and run a check disk with the fix and repair option. After running check disk, my computer was finally able to boot up successfully. There were some lessons I learned in this experience.

Here are my tips to others.

· Always have a backup image of your computer

· Have a recovery CD of your computer

· Run check disks from time to time

· Keep calm, don’t panic

· Always be skeptical and about information on the internet

I hope my experience will serve as a wakeup call to others and prevent others from going through what I had to go through with this issue. Until next time, bye.

Technorati Tags: ,

Tuesday, December 15, 2009

I am back

I have been in hiatus for some time due to some reasons; one very good reason and some not so good reasons. Let me first mention the good reason. My wife and I were blessed with our first child and he is five months old now. I have been busy taking care of him as of course he is my #1 priority so my time went to him first. Needless to say I am having a great time with him. The not so good reason is that I was mired with issues with my computer and I could not use it for a long period of time. I will talk about the issues in later posts. I am not 100% sure why the issues happened but I am slowly getting there to fixing them. Of course my computer is a bit old but I don’t know why it is acting up all of a sudden. Anyway, now that I have some free time on my hands and some of the issues are fixed to the extent that I am able to use my computer, I will be blogging regularly and perhaps more than normal to make up for lost time. One thing I have not done was give up on reading and I read some very interesting topics in the last few months and I will share them with everyone as time progresses. So, check back for my posts daily and I hope to do due diligence in getting out my posts daily.

Tuesday, December 8, 2009

Flair from Wildform

 

Traditional methods of delivering content are increasingly becoming less preferred and less popular because of various reasons such as high cost of such delivery mechanism, high demand for user interactivity, high costs, global audience, internet boom, and in general as a practical matter because of the vast spread of audience in today’s world. With the advancements in internet, information, technology, and the global presence audience, the internet has become the preferred medium to deliver content not only for learning but also to add richness and interactivity to the content. It has never been more important than today to stay efficient, competitive, cost effective, and professional in producing and publishing content on the internet. But, delivering such content via the internet is not free of problems raising concerns about security, intellectual property, management, effectiveness, and size of learning content. Notwithstanding these concerns there are many ways of delivering content on the internet but they either have many shortcomings or require extensive customizations and may not fully offer protections from the issues that beset online content delivery. Furthermore, finding software that provides a single source of comprehensive set of tools and resources to create and publish content is not an easy task. But, Flair from Wildform (http://www.Wildform.com) is an excellent all-in-one software solution that enables users to create and publish a wide variety of content that is interactive, rich, high quality, small in size, reliable, and robust without compromising above mentioned issues or the quality of the content. Flair makes use of the widely popular flash technology to make content creation, publishing, and use very easy. Flair not only enables creation of presentations, tutorials, and demos it also enables creation of animations, surveys, quizzes, surveys, slide shows, and integrates a wide variety of tools to help users accomplish much more. Flair can be used by the broad spectrum of users from novices to professionals, individuals to organizations, and entities to institutions to produce comprehensive and professional flash content for online delivery.

Installation of Flair is very intuitive and easy to use. There were no problems whatsoever in installing the software. Flair has a very intuitive and easy to use user interface. The menus, toolbars and navigation panes provide quick access to many program features, components, and settings. The different panes in the program windows can be auto hidden to view a larger editing area. There is practically little to no learning curve but even if there is some learning involved the help documentation is very comprehensive in explaining the software and its usage. Furthermore, Flair has many wizards that help you create your content very easily and are great time saver. These wizards enable users to hit the ground running without spending too much time trying to figure out how to do things. Not only is Flair simple to use it is indeed packed with advanced features and capabilities that leverage flash technology to deliver excellent quality, professional flash animations to users.

I think some of the key features of Flair are the extensive types of flash animations it supports, extensive animation choices it provides, availability of a variety of objects, extensive flexibility and customization of animations, ability to import from and export to multiple formats, and much more. I think the built in wizards are a great strength of Flair and are particularly useful to quickly created animations. There are many wizards to support creation of many different types of flash animated content. In addition, I think the extensive libraries of objects that are available in Flair are unique to it and are very useful in creating any conceivable shape or animation. Another plus point in Flair is the vast number of different animation types available that can be used to create animation effects. I worked with a couple of other Flash animation creators and noticed that the object library is not as extensive as it is in Flair. Another powerful feature of Flair is the ability to customize the animations. Flair also provides capability to create highly customized or sophisticated animations using the available settings. Flair has a timeline editor that gives a visual indication of animations sequenced in time and enables precise editing of the content. Flair also has many predefined players and pre-loaders and it offers capability to add special effects, players and pre-loaders to animations to add unique and rich perspective to the final content. Flair supports importing of a multitude of formats and also supports the conversion to many different formats. One feature unique to Flair is the comprehensive suite of features that make possible the creation of all aspects of learning content creation. Flair supports the creation of tutorials, presentations, demos, quizzes, surveys, animations, etc. all from one single application. There is not a single software out there that can boast this unified, comprehensive, all inclusive feature set in a single software. Flair has a built-in audio and video recorder to record and embed screen activity and include in flash presentations which makes capturing and embedding live video in your content very easy.

In conclusion, Flair is a very good, multi-featured software that is very easy to use. It is a one stop shop for creating and publishing flash animated content. It allows anyone with any type of skill level to create presentations, tutorials, demos, quizzes, surveys, animations, etc. The various wizards help creation of flash animated content a breeze. Flair has extensive set of animated features and objects that enable the creation of basic to advanced animations, text or object animations, and many more kinds of animations. Flair offers many possibilities in the creation of flash animated content which is limited only by one’s imagination. It allows creation of rich, interactive, appealing, professional, and dynamic content that is superior in quality, small in size, and capable of being published in a variety of formats. The possibilities of creating stunning and rich dynamic flash animations are unimaginable with Flair. Flair lets one accomplish ones goal of having software to produce flash animated content but also get a lot in return in the form of various other features. I am particularly pleased with Flair because it is very easy to use yet very powerful; provides vast number of advanced features, provides many wizards to assist user in content creation, allows creation of variety of flash animations which in my opinion a great feature in Flair. There is no doubt people across the board will find Flair a very useful and cost effective means of producing flash animated content.

 

Technorati Tags: ,,

Wednesday, March 25, 2009

Print2Flash – Flash document

As part of my writing I create presentations, charts, drawings, and work with data and post my work online. Invariably the information I wish to convey contains a lot of overhead. Therefore, the volume of my write up could potentially wind up being more than what is needed to convey the intended message. This is because there is always a need to substantiate or provide my write up with additional data and/or supporting documents and data. At the back of my mind I know that I have to be brief and I make a conscientious effort to accomplish just that but I am not always successful in keeping my message brief. On the flip side occasionally I try to truncate my message in an attempt to keep my message brief. Regardless of what I do I am losing on both accounts because of either overload or undercut of my message. Therefore, in order to keep my message brief and yet provide all the required information there is a great need for me to not only separate desired message from supporting documents (message) but also make them both accessible to the audience. In addition, there are also situations when I have to post my work in the form a Word document, an Excel document, or a PDF document. This means that the reader will need to have appropriate software in order to read my document. This is a severe limiting factor in posting documents online. Therefore, it is highly desirable that my documents are available in a format that makes them easily readable and universally accessible without requiring any expensive dependencies. One such format is Adobe Flash File (.SWF) format. Adobe flash is free and universally acceptable format. This is where Print2Flash comes into picture. Print2Flash enables conversion of documents into Adobe flash format which can be posted online with a great ease. It also allows saving converted documents to html for easy embedding into web pages. Using Print2Flash converted documents can be made available on the internet with a great degree of accessibility.

One of the disadvantages of posting a document online is that it is dependent on the operating system platform on which it was created. In other words, a word document created on a Windows computer will not be compatible with a Macintosh operating system. Therefore, if a document author posts online a document created in Windows environment then a reader who has a Macintosh computer will not be able to read it. Print2Flash overcomes this limitation by converting the document to a platform independent format namely flash format which is universally compatible with all operating systems and all types of computers and devices. Therefore, Print2Flash enables the distribution of documents to virtually any type of computer, device, or operating system.

As noted previously a major disadvantage of posting a document online is the unavailability of appropriate software on the readers’ computer to view the document. In other words, if I have some numerical data in an excel document that I’d like to share with people around the world I’d have to post it online. If I post it online then anyone who wishes to view the numerical data (which is in an excel document) will need an appropriate software be it excel, excel viewer, or other third party software. Some people may have such software while others may not and it is reasonable to assume that many people will not have such software. Therefore, the distribution of documents will be limited because of this limitation. However, Print2Flash comes to the rescue one more time. Print2Flash converts the documents to flash format. The flash converted document can then be uploaded to website from where readers can view it. In this day and age of web technology where rich, interactive web applications and animations are ubiquitous almost all computers have flash player installed on them which enables easy viewing of flash converted documents. Furthermore, Print2Flash allows saving of flash converted documents as a HTML file for easy embedding in a website. Flash converted documents not only can be distributed on the web but also by email and on CDs and DVDs.

Print2Flash is very user friendly and have a very easy, intuitive interface. It is not at all complicated to use. There is zero learning curve to learn how to use Print2Flash. I was able to read the help file and understand Print2Flash functionality in practically negligible time. Print2Flash offers three quick and easy methods to convert documents. One method is to print to Print2Flash printer from the application used to open and view the document. Second method is to simply drag and drop the document into to Print2Flash program window. Third method is to right click the document in windows explorer (to open windows explorer context menu) and print to Print2Flash printer. These three methods of conversion make it very easy, quick, and convenient to convert documents.

Print2Flash comes in different editions which allow different levels of customization. One of the drawbacks of posting a document online is the inability to secure and protect the document content. In other words, there is no mechanism that would protect a document authors copyright and yet enable readers to read the document without preventing them from copying all or portions of the document. A unique feature of Print2Flash is the ability to allow the document author or publisher to secure and protect the documents. During conversion Print2Flash provides options to prevent readers from printing or copying all or any portion of the document. This is a very useful feature that ensures documents and content are protected from unauthorized editing, copying and distribution.

If there is anything I don’t like to do it is repetitive tasks. I am a person of automation. I even wrote few programs to automate some tasks. Therefore, it is no surprise that I am a strong supporter of software that has batch processing functionality. In the server edition Print2Flash allows automation of multiple documents conversions eliminating repetitive conversion tasks. This is a very useful feature especially if there are many documents to convert. In my opinion this feature is useful to software developers who have many help manual files and who wish to put those files on their website. In the server edition Print2Flash also provides OLE Automation API to enable automation of document conversion from other applications and websites. All in all Print2Flash enables automated and unattended conversion of multiple documents thereby saving time and effort.

Print2Flash offers several options to customize interface as well. During conversion several options are presented to customize the converted document. The features include zoom, resize, page navigation buttons, search functionality, page rotation, print functionality, text selection functionality, page drag functionality, open in new window, multiple language interface, and help. The converted documents are accessible to readers with disabilities as required by the law.

clip_image001

Print2Flash Conversion Options

Overall Print2Flash is an excellent choice for all kinds of people and businesses that wish to distribute their content online without being fearful of the various limiting factors that arise in traditional document distribution on the web. Print2Flash comes in different editions albeit with different functionality suitable to all kinds of users. In today’s world of internet technology which presents unique challenges to document distribution and when information is increasingly shared and viewed on the web Print2Flash rescues the day by making it easy, and affordable to distribute documents online. There is no comparable software in the market that can deliver the unique, professional, and customized conversion as Print2Flash. Print2Flash can be downloaded from http://print2flash.com.


Here is sample converted document using Print2Flash.

http://print2flash.com/samples/sample1.php


Here is a video that shows a sample word document converted to flash using Print2Flash.

Print2Flash

del.icio.us Tags:

Technorati Tags:


Sunday, February 15, 2009

Virtual Software

The last two days have been very frustrating for me and frankly not a pleasant experience in using virtual softwares. My computer’s network configuration is gone (I will explain the symptoms later in the post) and neither was I successful in trying to restore network configuration nor was I able to restore my data completely after attempting to restore my computer from a backup image. Actually, I experienced problems with virtual software in the past but I have always been fortunate in resolving the problems. But, as luck would have it, it was just not my day Thursday when the problems started. In order to keep the torch of blogging burning though I am writing this post by using my wife’s computer.

My very first virtual software was Microsoft Virtual PC 2004. This was so long ago that my memory is hazy about my experiences in using it. Not long ago I installed Microsoft Virtual PC 2007 and I still use it today and I don’t have any problems with it. Some time back I installed VMware Server 2.0 beta and did not have any issues in using it but there was a serious side effect when I uninstalled it. Basically, after uninstalling it my network configuration was gone and when I would use IPConfig in command window all I would get was the text “Windows IP Configuration”. It was as if the adapters had disappeared from my computer. I never was able to find out why this happened and how it could be fixed perhaps because I did not do enough research but nonetheless these problems should not have occurred. Fortunately, I had a backup image of the computer and I was able to successfully restore my computer. I am the kind of person who does not accept defeat so easily so I uninstalled the software and restored my computer from a backup image again when I had the same problem. This went on for a few times. Finally, I decided not to restore the computer from the image instead I decided to reboot my computer several times. Magically, after several reboots my computer became normal. My adapters were working again.

I like to work with and learn new technology. After my initial experience with virtual software I developed keen interest in virtualization. I started reading about virtualization especially products offered by VMware. Furthermore, to quench my desire for learning and exploring new technology I decided to try out a couple of virtual softwares thinking that what happened to me in the past with virtual software was an isolated incident. So I picked a freeware virtual software namely VirtualBox offered by Sun Microsystems and a commercial virtual software namely Parallels Workstation offered by Parallels.

So a couple of weeks back first, I installed and tested VirtualBox on my primary computer and did not have any issues. Next, I installed Parallels Workstation but my computer crashed during installation because of either a hardware or I/O fault. I rebooted my computer, got the usual message from Windows operating system that the system has recovered from a serious error. The situation now was that Parallels Workstation was half installed i.e., Start Menu shortcuts were present, program files folder was present but there was no entry in the Add/Remove programs. I was stuck with it because neither could I use it nor could I uninstall it. I have Windows Installer Cleanup utility but Parallels Workstation did not show up in this utility because either the installation never completed or the installer was not MSI based. Anyway, I got busy with other things and forgot about these softwares for sometime.

Last week, I decided to uninstall these softwares. As usual first I made a backup image of my computer. Since there was no uninstall available for Parallels Workstation I decided to uninstall VirtualBox. The uninstall started but it would not complete. It got stuck halfway through for hours. I cancelled the uninstallation and my problems started. I would have expected that cancelling the installation would have rolled back the changes and restored VirtualBox but I was wrong. The same problem relating to network adapters and IP configuration that occurred in the past re-occurred. I was confident however about restoring my computer because I had a backup image. Having full faith in the backup image and without a moment of hesitation I initiated restore of my computer from the backup image and stepped away from my computer. When I came back I was shocked to see the image restore operation stopped because of an error. The error message was that there was an inconsistency in the backup image. I was horrified because first image restore overwrites hard disk and second this was my only backup of my computer. I thought maybe this was a fluke error and tried the restore again. I got the same error. Initially, I panicked but after careful observation noticed that C partition was restored fully and the failure happened during initial stages of D partition restore. I was relieved because at least I had the operating system to reboot my computer. When I rebooted my computer and logged on I got error message after error message because there were some programs that were set to auto start and the programs were installed on D partition. Furthermore, my user profile was on D partition and the auto start programs crashed because they could not access their data stored locally in my user profile. Since image restore failed during initial stages of D partition there was practically no data in D partition. Whatever files I had majority of them showed a file size of 0 KB. I made several attempts to restore data on my D partition but to no avail. I am still in the process of restoring my data and I will hopefully have some good news tomorrow. I will also give my opinions on how to avoid and recover from this type of scenario and talk about virtual software in later posts after I fix my current problems. I have simply stated my experiences and I have no aspersions against any of the softwares. I am sure they are fine softwares and as a developer I understand that softwares behave differently on different configurations and systems (computers). I should have been more cautious in my efforts. Until my next post…goodbye.


Sunday, January 25, 2009

Turbine Video Encoder

Some of the things I do are software development, tutorials creation, and occasionally home video production. As a result I have to present and market my work to others and I do this by creating videos of my work or product. But presenting my work to others is usually not an easy task because of the output format of the videos and the target audience. These factors greatly influence the success of my work because no matter how good my work is if it cannot reach those for whom the work was created then there can be no success or recognition for my work. What complicates matters is the fact that the target audience is not just in my backyard but all over the world. Anyone would agree that the most cost effective and efficient way to reach the global audience is by using the internet or World Wide Web. What complicates matters even further is that my videos are typically in a format not suitable for efficient distribution and viewing over the internet. In addition, my videos even though are functional they are typically basic in functionality in terms of player controls and visual effects. Turbine Video Encoder solves these problems by allowing video authors to encode their videos with a variety of features and publish in different formats to provide the end users with a rich media experience delivered on the internet as well as on physical media. To create rich videos Turbine Video Encoder offers many encoding features such as video settings, audio settings, visual effects, player controls, and addition of subtitles to videos. Turbine Video Encoder enables video authors to customize their videos with the available encoding features. Turbine Video Encoder may not be the only solution to enable internet video distribution and streaming but sure appears to be one of the best solutions.

I got an opportunity to put Turbine Video Encoder to test by using a video of a program I developed. The program is actually the familiar game of Tic Tac Toe. I already had a video (AVI format) of this game program but it was basic in appearance and limited in functionality. Furthermore, this video did not play in windows media player on one of my computers because apparently there was no AVI codec on that computer. I thought AVI was standard but I was wrong. This further pushed me towards a solution that uses a standard, free, and easily available video format. Plus I needed a solution to effectively distribute my video online. Using Turbine Video Encoder I was able to accomplish my objectives i.e., good looking video that uses free and prevalent video format for online distribution.

The process of encoding and converting video was very simple and straightforward. Turbine Video Editor supports majority of video and audio formats. First I opened my video in Turbine Video Encoder. After opening the video Turbine Video Encoder offers two simple views Timeline and Preview. Timeline view gives a timeline of the video. This is view is used to edit a video. Preview view enables the video to be previewed before it can be published. Timeline view provides a slider that can be used to drag by mouse to navigate the video to go to any time or location in the video. There are also indicators that display the start time, end time, and duration of selected video (selection). These indicators are useful in preventing editing of wrong portion (part) of video because they let the author know exactly where he or she is in the video and what portion of the video is being edited.

Program Main Window


Turbine Video Editor provides a lot of pre-defined video and audio settings to adjust the quality of video. I found the availability of these settings to be very useful in adjusting and improving the quality of my video. Audio and video resolution can be fine tuned to produce quality videos.

Video Settings



Audio Settings


Turbine Video Editor provides capability to add visual effects to video. There are many pre-defined visual effects that can be applied to a video to create stunning visual effects. Turbine Video Editor also supports visual effects from the open source FreeFrame framework. Since there is no shortage of visual effects at FreeFrame there is a lot of scope to turn around dull videos into exciting videos.

Visual Effects


Turbine Video Editor provides capability to add and customize player used to play videos. There are a number of pre-defined and excellent players that add professional, rich, and stylistic look to videos. There is also capability to customize the player. Authors can configure options such as auto start video, what to do when video ends, URL navigation links, customize player controls, etc. There are many player customizations to turn a basic video into one that is appealing, interactive, controllable, and automated

Player Settings


Turbine Video Editor also provides capability to add captions to video. This feature is particularly useful in creating videos because it allows addition of information to concisely reiterate what the video is showing, or to separate a video into parts and add titles, or to enable people with hearing disability to follow the video. The captions are highly customizable and help improve content delivery.

Subtitles


Additional tools and features available in Turbine Video Editor are save a video to PowerPoint, use previously saved settings, upload video directly to a web site, batch encoding, capture live video, and check for new version of software. Batch encoding is a useful feature that saves time by allowing encoding multiple videos in one shot. Capture live video feature allows capturing live video such as from webcam easily. Since this feature is available in Turbine Video Editor itself video production of live video becomes very easy. There is no need to use 3rd party software to capture video via webcam, save it as a file, and then open it in Turbine Video Editor to produce a video.

In conclusion all in all Turbine Video Encoder enables video authors to spruce up their videos with stunning visual effects, excellent player controls, customized audio and video settings, and subtitles. Turbine Video Editor is very easy to work with because it has a very simple user interface. Everything is done on the main window and there is no need to switch between multiple windows. I believe Turbine Video Encoder would be very useful to people who publish home videos on the internet, professional who distribute their video content on the internet, entire spectrum of businesses that have a need to share and distribute video both internally and externally, academic institutions that have a need to distribute video tutorials to students, bloggers, and online news media. I cannot imagine any person or business in the business of video production and distribution on the internet to not need Turbine Video Encoder. Turbine Video Encoder leverages flash technology with the above mentioned state of the art features and enables video authors to create professional and stylistic videos for a rich user experience. Turbine Video Encoder is available at http://www.blue-pacific.com/products/turbinevideo/default.htm


Below are the before and after videos. Notice the differences between them both in terms of professionalism and richness.

Here is the video in AVI format.


Here is a video after conversion by Turbine Video Encoder. Notice the player, player controls, text description on the right side, and great looks.


Thursday, September 18, 2008

Visual Studio crashed while adding Toolbox items

I’d like to share my recent experience working in Visual Studio 2008. The other day I was working on a program in Visual Studio 2008 and had to update the Toolbox with some items. When I tried to add some items to the Toolbox Visual Studio quit unexpectedly. I was aghast as there was no error message or indication of reason(s) for the crash. I thought that perhaps it was simply a coincidence that Visual Studio quit when I tried to add items to the Toolbox. Repeated attempts to add items ( I also tried to add different items thinking that perhaps there was something wrong with the items I was trying to add to the Toolbox) to the Toolbox resulted in Visual Studio crashing each and every time. Since there was no error message I decided to check the event viewer and I found the following error message in the application event logs.


After exhausting all my options in troubleshooting this issue I turned my attention to the internet. After a little bit of research I found out that PowerCommands for Visual Studio 2008 may be the culprit. I checked to see if PowerCommands for Visual Studio 2008 was installed on my computer and it was installed on my computer. I uninstalled PowerCommands for Visual Studio 2008 and lo and behold that fixed the issue. I was once again able to add items to Visual Studio Toolbox.

PowerCommands for Visual Studio 2008 is a great add-on for Visual Studio that has many useful features for a developer but to me this is a critical issue that must be fixed otherwise one cannot use the Toolbox. So if you have PowerCommands for Visual Studio 2008 please be aware that you may not be able to add any items to the Toolbox. You have to uninstall it using Add/Remove programs to be able to add items to the Toolbox.

Tuesday, September 2, 2008

ActiveSWF - Dynamic flash creator

As a developer I have seen the need to create and show flash movies dynamically but employed alternative solutions. The alternative solutions was adequate to meet the minimum requirements but as my interest in Flash grew and when I decided to develop programs that would produce flash files (animation) dynamically (on the spot) it was an obvious decision to have a permanent, robust and reliable solution that would meet my needs. To this end, I searched on the internet for a solution but was initially disappointed to find out only handful solutions that were either only online creators with capability to create basic flash animations or offline creators with no dynamic flash creation capabilities. The disadvantage of online creators is that there are only a limited number of pre-defined templates that are available to the user and they require the user to access the website, edit the pre-defined templates configuration to customize the flash content and generate the flash file. One could very easily end up with the same type of animation as another person half the world away that is if both persons used this same service and the same template. Furthermore, one would need an internet connection to access the website to create the animations which severely limits the accessibility and makes the accessibility questionable. Otherwise, I was impressed to see online creators offer some pretty good animations. The offline creators even though had offline software to install and create potentially unlimited nice animations they lacked the capability to create animations from a configuration file or to create animations dynamically.

My search on the internet was eventually fruitful when I found ActiveSWF at http://www.activeswf.com/. ActiveSWF allows the creation of flash content dynamically and from easily configurable XML files. It allows desktop applications and web applications developers and web designers to achieve seamless professional results because of its compatibility with COM and .NET. ActiveSWF opens up the possibilities of flash content creation beyond imagination.

Fundamentally the process of flash content generation with ActiveSWF is very simple as shown in Figure 1. The first step is to create flash content definition in a XML file that conforms to ActiveSWF XML schema. This file is then processed by ActiveSWF platform (executable and libraries installed by ActiveSWF) to produce the flash movie.

Figure 1

If the flash content is to be generated dynamically from a program or a script then the process is as shown in Figure 2. The program or script can use the API provided by ActiveSWF to generate the flash content dynamically. ActiveSWF also provides an extensive list of error codes that a developer can use in his/her programs exception handling. The API library and other files needed for dynamic flash content generation can be redistributed allowing for dynamic generation of flash movies.

Figure 2

ActiveSWF supports many Macromedia Flash features to generate dynamic flash content. Some of the supported flash features include various shapes, images, sounds, plain text, HTML text, buttons, layers, actions, morphing, shape manipulations, shape transformations, vector graphics, font embedding, ActionScript 2.0, etc. The flash content definition XML file must first be created in order to generate the flash content. For the purpose of this review I decided to generate a sample flash movie. I did not have any trouble getting started with ActiveSWF. The first thing I did was go through the documentation which was very informative and helpful. It took me less than two hours to understand the fundamentals and workings of ActiveSWF. I hit the ground running in using ActiveSWF. The learning curve is next to nothing and this is true especially for people who are familiar with XML files.

ActiveSWF provides an XMLPad editor to create and edit the flash content XML files. I created the XML file for my sample using both XMLPad and Notepad++. However, XMLPad must be used to generate flash movie. Personally I find it convenient to edit XML files using Notepad++ because it has built-in XML style configurator and it displays line numbers. Allowing XMLPad to show line numbers would be a very useful feature when debugging the XML file. ActiveSWF supports several styles and objects that can be employed in flash movie creation. All the shape objects (elements) are very useful in creating any conceivable shape or animation. I found the polygon and button elements to be very useful. The button element has events associated with it and actions can be taken when the events are triggered. The other important element is the morph feature which can be used for tweened animations. Another important aspect of ActiveSWF is the ability to manipulate shapes in the frames using show, modify, hide, replace, transform, etc. In my opinion these components are essential in animating shapes. Many built-in actions are provided which can be used to perform various functions. Some of them are to open a URL location, control the flash animation, etc. One powerful action is the capability to include ActionScript code which can be used to create highly customized animations. I have done my reading on ActionScript and based on what I know now I recognize the potential of using it in creating flash movie and ActiveSWF makes it happen by supporting ActionScript. ActionScript can be used to unleash the full potential of ActiveSWF in creating rich flash movies. The documentation is also very good in terms of explaining the usage of ActiveSWF. It was very easy to understand ActiveSWF after reading the documentation.

I generated the flash content dynamically from my C#.Net program. It was a breeze to write a program in C# to generate the flash content dynamically. I was also successful in generating the flash content from XMLPad. ActiveSWF helped me overcome the challenges I faced in dealing with dynamic flash content generation. Not only was I able to accomplish my goal of having a software to produce dynamic flash content but also got a lot in return in the form of various other features. I am particularly pleased with ActiveSWF because it is very easy to use; provide vast number of features, supports ActionScript, allows dynamic creation of flash content which in my opinion is the foremost powerful feature of ActiveSWF. I couldn’t find a single product that could produce flash content dynamically. I could not have imagined doing what I want to do without ActiveSWF. The sample I created is a testament of my statements. It took me less than three hours to create the flash animation. I am very excited about the next release of ActiveSWF which will support ActionScript 3.0. I recommend ActiveSWF to anyone, developer and designer alike, without any reservations. The possibilities of creating stunning and rich dynamic flash animations are unimaginable with ActiveSWF.

For more information please visit ActiveSWF website at http://www.activeswf.com/.


Please see below for the sample dynamic flash animation I created for this write up.


Thursday, July 10, 2008

Obfuscation

One of the things that has always made me nervous is the security of my .Net applications. I was apprehensive of the potential for someone to decompile my .Net programs. I have always wondered why Microsoft developed such a powerful framework and yet left it open to prying eyes. Why didn't Microsoft provide any tools (at least I am not aware of any tools) to protect the .Net assemblies? Well all is not lost. Thank goodness to 3rd party obfuscation and protection software. I used one such software to obfuscate my startup manager program and it worked out pretty good.

{smartassembly} is a great software to obfuscate .Net programs and assemblies. I used
{smartassembly} to protect my startup manager program. The user interface is very simple. The protection process is very intuitive. The software simplified the protection process by presenting the options in a straightforward and easy to understand manner. There are several options to protect the assemblies. I was able to obfuscate the control flow of the program and encode strings in my program. I was able to add extended protection to my program by adding incorrect metadata to confuse decompilers and to prevent decompilation by ILDASM.

One useful feature I found was the capability to embed dependent assemblies where in you could embed dependent assemblies in your main assembly. I was able to take and embed three of my assemblies into the main program and not have to worry about dealing with many assemblies during deployment and runtime. This greatly reduced the number of assemblies I had to deploy with my application.



The size of the obfuscated program was less than the original program. I tried to open the obfuscated program in ILDASM but the program would not open. This was due to an option I selected in {smartassembly} to prevent from being opened in ILDASM.

















I then opened the obfuscated program in Lutz Reflector. The obfuscated program opened but the program was obfuscated and decompilation of the program would be next to impossible. As can be seen from the screenshot strings, classes, methods are obfuscated and classes were automatically sealed. This level of obfuscation makes it very difficult to understand and decompile the program.




{smartassembly} is not just an obfuscator but also provides several extended protection and optimization features such as memory management, pruning to reduce the size of the assembly, compressing, dependency merging and resource compression. Using the string encoding feature I was able to obfuscate sensitive strings that reveal intellectual information. This is a good feature to prevent decompilation of strings that may contain proprietary information. My application uses a lot of resources where icons are one of them. I was concerned about the size of the application but by using the resource compression feature I was able to compress the resources in the application.

Overall not only was I able to achieve protection for my application very easily but also improved and optimized the code, size and performance. I wouldn't have it any other way. For additional information on
{smartassembly} please visit the website by clicking on the following link: http://www.smartassembly.com/

Wednesday, July 9, 2008

Startup Manager

Introduction

After many near sleepless nights I believe the time has come for me to publish the first release version of my newest software application. This is a moment to cherish as it turned out to be better than what I had expected. I will make the software application available pretty soon but before that I’d first like to talk about it.

This is obviously the first release of this software application but I feel that for a first release this is not bad at all. I will obviously add many more features and capabilities in the future releases. This software application will eventually be an all in one utility that will address all the needs of a computer user ranging from managing the installed programs to maintaining the computer itself. At the present moment this software application is a startup manager that allows a user to maintain and manage programs that are set to startup (run) automatically when a user logons to the computer. It is imperative to know what programs are going to run automatically so you can prevent unwanted programs from running automatically and potentially cause damage to your computer.

My objective in developing this software application was straightforward: simple yet powerful. Typically, it is a challenge to make a right blend of these two qualities. It is hard to make something powerful and not make it complex and lose its simplicities. Conversely, it is hard to make something simple and still have powerful capabilities. Simple is inversely proportional to Powerful. I have tried my best to get the mixture right in order to provide a rich user experience.

As can be seen from the screen capture below the application uses the latest Ribbon UI to give a professional look and feel yet making it easy for the user to work with the program. There are basically three sections in the application window. The topmost section is the toolbar section, the larger middle section is the startup list section and the bottom is the detailed information section. Let’s look at each of these sections one by one.




Toolbar

The toolbar section contains a toolbar with all the required commands to manage the startup programs. See the screenshot and the table below for the list of commands.



  • Add Startup Entry: Allows user to add a new program to startup automatically
  • Delete Startup Entry: Allows user to delete an existing startup entry
  • Disable Startup Entry: Allows user to disable a startup entry and thereby prevent the referenced program from starting automatically
  • Refresh Startup List: Refreshes the startup list
  • Run Startup Entry: Runs the program referenced by the selected startup entry
  • Hide Detailed Information: Allows user to show or hide additional information about the program referenced by the startup entry
  • Expand All: Expands all tree nodes
  • Collapse All: Collapses all tree nodes
  • Expand Selected: Expands the selected tree node
  • Collapse Selected: Collapses the selected tree node
  • Configure: Allows user to set startup manager settings

The “add startup entry” and the “configure” commands actually display a popup where the required information can be entered before the actual command is executed.

Startup List

The startup list section lists the startup programs and their associated information. See the screenshot below.

This list is grouped by the type of the startup entry. For instance startup programs for all users in registry are grouped separately from startup programs for the current user in registry. The tree nodes should be expanded to view the startup programs. Users can navigate the list and edit startup program list by clicking the drop down box on the node in the Run Command column. Optionally, users can perform a lot of actions such as delete a startup entry, enable or disable a startup entry, run a startup entry, etc. by invoking the commands from the toolbar.


Detailed Information

The detailed information section is provided to show additional information about the selected startup program in the startup list section. See the screenshot below for the information shown in this section.



Wrap Up

This program is different than others in the market because it provides a simple UI, consistent look and feel, single UI i.e., user does not have to navigate away to other windows to do a task, unified and organized view of information where user does not have to go back and forth between multiple controls. Of course, I plan to expand this application and add many other new useful desktop utilities in the future releases that will make this application even better. In the coming days once everything gets settled down and after I do some housekeeping then I will post a roadmap. In the meantime please leave your comments.


Demo