Few day ago I was asked to provide assistance to one of my former partner on the Burundi Passport project. He asked about the WYSIWYG HTML editor that he can use with ASP.NET WebForms.

Quite easy, as I just integrated it few weeks ago in on of my products. My recommendation was to use FreeTextBox as it is free, easy to integrate and with decent documentation and users base. The downside is the fact it is not maintained regularly any more.

As they say:

The most-used free ASP.NET WYSIWYG HTML editor featured in open source and commerical projects. Just drop FreeTextbox.dll in your /bin/folder, change <asp:Textbox /> to <FTB:FreeTextbox />, and you're done.  

Easy? Yes!


Razor and Javascript: True != true

This does not work!
$(document).ready(function () {
	if (@ViewBag.isEditMode == true) {

I tried to combine MVC ViewBag dynamic boolean property to evaluate and to compare within JavaScript, but found that ViewBag evaluates to value 'True' and that in this context JavaScript compares it with true, which is not the same.


var isEditMode = @(ViewBag.isEditMode?"true":"false");
if (isEditMode) {


You don’t need a Mac to build iOS apps

Today I have again successfully build app code for Android and iOS. Thanks to Apache Cordova and Ionic Framework and Platform I was able to submit the same code and build the production apps for both platforms.

JavaScript is a new ‘assembler level language’ and AngularJS lifts it to the level of a proper high level language.

A lot of people still thinks that you need to have Mac (physical, virtual or in the cloud) to build .ipa package to be submited to AppStore. With free online build tools like Ionic Package or PhoneGap Build you just need to upload certificates and profiles. One Ionic line to let cloud build it.

ionic package build ios --release --profile production
ionic package build android --release -profile production

I am impressed. Again. Thank you Ionic. This is what I call hybrid application development. One code, all platforms.



This happens because you have already installed version of the app on you device with different signature. For example: You have tested production app (signed by production keys) and later continue to debug the app with the same name.

Resolution is to uninstall app from the device and try to build and install application again.


How to Migrate Cordova Ionic App from Visual Studio 2013 to 2015

Today I had to update hybrid mobile application from a year ago. It was written with Visual Studio 2013 and with Tools for Apache Cordova and when I tried to open it with Visual Studio 2015 with latest Tools for Apache Cordova installed I got an error saying ‘Incompatible version’.

The structure of the hybrid application project has changed recently, so you have to do some manual work. I found an excellent article that made my day. I would like to share it with you.

[Microsoft Windows 10 Upgrade] Click Close Button to Upgrade Now

I love Windows 10, but I hate how it is being pushed out to the people that don’t want it – and there are many among older users of desktop computers. For months Microsoft has been stepping up pressure on users to upgrade to Windows 10. Lately Microsoft made a move that resembles to a web based pop-ups that would appear when closing some porn sites 5 years ago.

According to multiple sources Microsoft has changed behaviour of ‘red X at the top of the window’ so that users cannot opt-out by closing the window.

I am sure Microsoft will come out with an explanation that will be covered by some small text users always accept. But for the ‘normal’ users, this move is an example of a ‘dark-pattern’. People who like Windows 10 and new versions of the software are already upgraded. For all other people such an pressure could mean they will switch to some version of Linux, OS X or event to ChromeOS. And you know – I don’t blame them.



Finding DropDownList Index Based on the Item Value

When you need to set initial DropDownList on Page_Load method to the value from database, you can use

// If you want to find text by value field.
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue("x")); 
// If you want to find text by TextField.
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText("x"));