What is Go in SQL Server and the Importance of Using Go
25-05-2012 Go is not a SQL or Transact SQL command. Go is a command recognized by sqlcmd and osql facilities provided by SQL server studio. Go specifies an end to a particular SQL batch. Once the parser interprets a Go, that block is considered com...

See the good and go for the best
See the good and go for the best   -  Cassian Menol Razeek

How to Implement a Background Worker Thread that Supports Cancellation (How to Stop A Background Thread)
30-05-2012 The background worker in .net provides a method CancelAsync() to cancel a background worker. However, calling this method will not stop a worker thread there has to be several things you have to implement before. 1. First of all, for a ...

If you sell for a high price, people will think before they buy and if you sell for a low price then they will wonder. - Cassian Menol Razeek

I learnt today...
2008-11-21 As an IT professional, I go through many problems, challenges and new stuff everyday. Every challenge I face teaches me a new lesson. Every problem shows me a new path. Also I come across new stuff daily through various methods. The in...

ILT - How to Create a Simple ArrayList Within XAML
25-09-2012 Following is a sample to create a simple ArrayList in XAML. This most of the time serves as a simple straightforward data-source to test your controls. <col:ArrayList> <sys:String>one</sys:St...

Cannot Find Contents Of System.Configurations?
29-05-2012 The visual studio shows the System.Configurations namespace by default. But it doesn't show that namespace content (such as System.Configuration.Configuration class) by default. You have to add a new reference to System.Configurations name...

ILT - AWordADay - Boycott
Boycott : Voluntarily avoiding using, buying or even dealing with a person, service, product, company or a country to express a disagreement or protest. Origination: A person called Charles Cunningham Boycott was protested by a community in Ireland ...

When you try to win everything you tend to lose more things because you have blinded your mind -Cassian Menol Razeek

How To Read Articles On Financial Times For Free Saving £5.19 or $6.25 a week
13-06-2012 It usually costs £5.19 or $6.25 a week to get unlimited access to FT (Financial Times). You can open a free account which will allow you to access a certain number of articles a month. Or You can follow below steps :) What you need to...

The real winner in any argument is the one who first realizes that no one can win in an argument. - Cassian Menol Razeek

Sometimes, God’s long time plans for us hurts a lot in the short run. - Cassian Menol Razeek

How to auto save the data table in memory into database?
2010-04-01 We frequently get to fetch data from the database, update them and then write them back to the database. Most of the time we only have to write them back as individual records. How about updating a whole database table in the memory ...

It's all about the way we see...
2008-11-22 Today I went to a party at my dad's office. There I met this wonderful person who is 57 years old now. Let me tell something that I found about him: He's 57 years old now and married. His wife still works abroad as a house maid and his all...

My Goals for the New Year 2009!
2009-01-01 It's a New Year...! I want to be much more improved in both my personal and professional lives when I look back at the end of this New Year! So I decided to make a list of goals I want to achieve in this year. And I will make sure that I a...

Posted in General | Comments Off on

How Software Engineers Became Software Developers


This article looks at how and why modern software projects easily become messy and extremely convoluted. This article should not be understood as against new concepts but as a promoter of software engineering education, skills, and experience that allows engineers to make rational decisions to choose when a concept should be practiced.

The History

Software development (programming) was always a sub category of software engineering. However, over the last decade, software development was pretty much forcefully divorced from software engineering.


It is human nature to make things easy for everyone. In addition to this a lot of money was invested into software related projects making everyone wanting to become a software developer.

But everyone didn’t want to go through the hard work of serious education and then starting from the bottom of the ladder to gain experience. it was not fun.

So software development technologies became very simple and the need to have proper education in IT was taken down as a compulsory qualification to become involved in serious software engineering projects.

This created a massive boom in numbers of software engineers which also resulted in a large boom in supporting services for this large crowd.

While many companies stepped forward to provide educational and other services for this crowd, more experienced already established Software Engineers became technical writers. The concept of blog and blogging was boosted by potential advertising revenue.

Soon there was a great competition among these service companies and bloggers who basically had to bring in new and unique articles (resources) to keep their businesses, websites, and blogs popular.

The Crown went to Cool from Practical

For many years software engineering (like any other engineering discipline) was practiced with main focus on providing practical and reliable solutions.

This obviously required a lot of background knowledge and experience and there was not a lot of money to be made for the booming “developer support” industry.

So the supporting industry started creating new libraries and tools to make developers life easy. The most talked about topic in the industry became “the next helpful library or tool” that would reduce developer workload.

Mushrooming Concepts

* mushrooms just pop up randomly Reliability, stability, and logic are not concerns for mushrooms. They just pop up overnight.

The critical issue was that in addition to specific tools and libraries, some experienced bloggers and companies started creating their own flavors of established concepts.

As of now, you can see many new concepts arriving at the Internet every night.

Basically, everything that an experienced developer do to implement a known concept would be written on their blogs as if it’s a new concept and will be called cooler than the original concept it inherits.

The next morning all blindly following developers will read about this new thing and do their best to implement it on their projects because it is the cool thing to do.

Mushroom Filter

While the more experienced and educated engineers had the skill set to understand and decide when to use these new branched “cool” concepts, the large potion of “software developers” do not have that critical knowledge or relevant experience to make such decisions.

Every Pie is a Mushroom Pie

So the unfortunate result we see is that eventually this coolness took over. All semi-skilled developers blindly follow whatever they read on the Internet.

Then they put pressure on the management to bring all of these cool stuff into the projects they are working on.

This is why most of the projects you see today look nothing better than the inside of a badly made mushroom pie.

Posted in Practical Software Engineering, Software Architecture, Software Engineering Concepts | Leave a comment

Using sqlpackage.exe parameters and properties to publish your db with less hassle


This article is for anyone who already knows how to use sqlpackage.exe. Visit the Microsoft link at the bottom to learn about sqlpackage.exe usage.

Where I work we use sqlpackage.exe to deploy our database snapshots (DACPACs) to various locations.

Since I have started to use this I faced several problems as the script was trying to make changes to the target database.

There were two main problems I faced:

  1. The main reason was that the script would not (by default) ignore data loses. It will normally break and error when it detects a data loss.
  2. The script does not (by default) rollback everything when it aborts the script (e.g. when it detects data losses).
    I had real bad situations when the script failed half-way through and left a lot of changes it made till it decided to abort.
    I had to restore the db from a backup and go through the whole thing again.

So I found these settings/switches you can use to instruct sqlpackage.exe to get around above issues.

  • Ignore data losses and continue
    Specifies whether the publish episode is terminated if the publish operation might cause data loss.

    Set this to to ‘true’ and the resulting script will not abort when it detects data losses

  • /p:IncludeTransactionalScripts=True
    Specifies whether to use transactional statements wherever possible when you publish to a database.

    Set this flag to true and sqlpackage.exe will do its best to use transactions as much as possible.
    This will make sure that you will not end-up with a mess when the script fails.

There are many other useful properties provided by this tool.

for example, you can use /p:GenerateSmartDefaults=True to get sqlpackage.exe to generate default values for new columns that don’t allow nulls.

Read the below link for the full set of options you can use.


Posted in SQL Server | Leave a comment

See the good and go for the best

See the good and go for the best   –  Cassian Menol Razeek

Posted in Quotes | Leave a comment

Crosscutting concerns (in software design)


In software designing crosscutting concerns are concerns (requirements) that span over many layers (tiers) of your application.

Generally, the majority of the application functionality will be arranged in tiers and there will be some functionalities (examples below) that would span across those layers. these are crosscutting concerns.


  • Authorization
  • Caching
  • Exception handling

It is important to consider how crosscutting concerns are facilitated at the design stage to avoid untidy and unreadable solutions.

This Microsoft article explains the topic further and also explains methods to handle common crosscutting concerns.

Posted in Software Architecture | Leave a comment

You need a 64bit text editor to open IIS config files on a 64bit computer


If you wanted to open or edit IIS 7+ config files on a 64bit computer and if you try to use an editor like 32bit notepad++ then you would get a random error from windows.

The error I received was “The operation could not be completed. Unspecified error”.

Well, it turns out the reason behind this not very helpful error is that you cannot open these files using 32bit editor.

Simply use windows notepad or any other 64bit text editor.

Source: http://stackoverflow.com/questions/8635884/iis7-settings-file-locations

Posted in Web Development | Leave a comment

Browser and length independent CSV download code


Downloading a csv string as a file on browser can be troublesome. Some techniques don’t work for very long CSV strings and some techniques only work on some browsers.

Below code is tested on Internet Explorer 11, Firefox 27.0.1, and Chrome 45.0.2454.93 m

And you can extend the code (where it alerts user that their browser isn’t compatible) to support more browsers.

Please comment if you do so, it will help others.

var csvString = your csv string;
var blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob)
{ // IE 10+
navigator.msSaveBlob(blob, fileName);
var link = document.createElement("a");
if (link.download !== undefined)
{ // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", fileName);
link.style.visibility = 'hidden';
// extend support for additional browsers here.
alert('Sorry, your browser does not support this export. Please contact support');


Posted in Web Development | Tagged , | Leave a comment

Protect your (software) architecture


The most common problem I have seen in software projects that don’t have a responsible, capable, and experienced architect is that those projects tend to be very messy.

Most such projects are filled with pretty much all technologies and libraries that were popular during the projects life time.

The main reason behind this problem is:

Software developers get blown away by the overwhelming amount of new products that reaches the industry everyday.

Recent booms in software industry has made many software library vendors as well as software related writers who promotes these new libraries and products.

They talk about “what” but hide “where” and “when”
For some reason (I believe it’s the competition among them) these technical writers (a.k.a. bloggers, geeks, etc…) fail to include thorough information about WHERE and WHEN each concept or library can make an improvement to a software project.

The only message you can see in most sites and reviews is, “hey, this is a really cool library and you should use it”.

Most developers fall in:
According to my experience most developers, regardless of their technical expertise, have not trained themselves on decision making skills.

Therefore developers are under constant pressure to implement these “cool stuff” into their projects.

This is where you come in:
As a technical leader it is important that you maintain an open atmosphere in your team encouraging your developers to bring in ideas and new suggestions to use new things.

At the same time, as a strong architect you need to measure all potential benefits of these new suggestions and make a judgement with respect to following factors:

  1. Implementation cost – how much effort will it cost to introduce this.
  2. Validity – validate if your project would actually benefit from this change or if the benefits are minuscule, or even simply theoretical.

Your past experience should indicate whether it’s a good idea by conceptually applying it to your project.

The deference between an architect and a skilled developer is that the architect can visualize implementations and changes without having to try and fail.

Know how to say No!
It is important that you know how to explain-away wrong suggestions without making your important developers disappointed.

Posted in Software Architecture | Leave a comment

Always on top web browser


Today I wanted to watch an online video while working on other windows but couldn’t get my browser to do it.

After failing with recommended solutions such as browser extensions I thought to quickly bring together a little browser using .Net.

I built this as a windows application (C#) and didn’t go for WPF to keeps things simple.

This is very simple and uses the off-the-shelf web browser tool in windows application tool box (Visual Studio).

I have attached the solution as well as the executable as separate downloads.

Feel free to further implement this and please let us know how you get on.


always on top web browser









Download links:

Important: password to open archives : aabc

Executable: always on top web browser

Source code: browser

Hope this help someone!


Posted in C#.Net, Products | Leave a comment

html css it is not possible to have inline styles for different aspects of an element like hover, and visited

You cannot specify css styles for different aspects of an HTML element.

e.g. I wanted to do something like this. But you CAN NOT do this.

<a href="www.unicef.org" style="hover(color:00AEFD);active(color:00AEFD)">

Unfortunately the only solution is to write a custom css class and use it.

Like this:

a.unicef:link {
color: #00AEFD;
text-decoration: none;

a.unicef:visited {
color: #00AEFD;
text-decoration: none;

a.unicef:hover {
color: #00AEFD;
text-decoration: none;

a.unicef:active {
color: #00AEFD;
text-decoration: none;

Then use the class in your link

<a href="http://www.unicef.org.uk/Donate/Donate-Now" class="unicef" target="_blank">Please Donate To unicef</a>


W3 Schools
Stack Overflow


Posted in General, Web Development | Tagged , , , | Leave a comment

How to Control a Ton of Inputs using Shift Registers! – YouTube

I have always been fascinated by how circuits manage many inputs and outputs without the need of hundreds of i/o pins…

This shows how you can listen to many inputs by using a very few pins.

Video credit: Kevin Darrah (Youtube).

Posted in Electronics | Tagged , , | Leave a comment