Jan 18, 2010

Public Issue tracking system launched today!

If you haven't heard yet - we have a brand new Silverlight Public Issue tracking system.

It was built to help you track your issues and features and be instantly informed about the new things we are doing here.
You can also vote for your favourite feature, thus rising their priorities.



The PITS is still tagged beta but it is very usable, so you can start using it right away.

Are you still here?
Click here to be taken directly to PITS so you can start subscribing for the stuff you like ;).

http://www.telerik.com/support/pits.aspx#/home

Jan 16, 2010

Two-way binding is only supported for properties exception.

That was very strange. I used #Bind in the markup of a user control in order to set a property value and got this nasty exception.

It told me nothing. I couldn't figure out what was wrong with the property and what does it mean that the property is not valid.

I did what every one of you will probably do ;)
Google with the exception and found that if you convert the property from the type it has to string it should work.

Couldn't make it.
Probably my scenario is different.
I will write another blogpost as soon as I find the solution. For now I worked it around another way - using the code behind ;)

Jan 13, 2010

Do it worse!

Here is a very interesting blog post a collegue of mine accidently found and posted to me:

http://thedailywtf.com/Articles/The-Utlimate-State-Selector.aspx

It is PHP but a regular web developer (even being ASP.NET developer) would realise the problem and the great mind behind this code :).

Lesson learned - your code is great as there can always be a worse solution :).

Jan 7, 2010

The access to the path bin\ is forbidden exception while building - Visual Studio 2008 and TFS

I had this strange error yesterday and it took me some time to understand what is going on.
It appeared that the bin folder of the main project is under source control, so TFS was locking the folder, the subfolders and the files.
In order to resolve it - checkout the bin folder in Visual Studio and then build.
The build should be OK.
Then you can Undo Changes on the folder and everything should work as it was before.

Hope this helps someone ...

Jan 6, 2010

Have you tried the Windows 7 God mode?

I did and it really exists :D

In order to try it:

1. Create new folder under Windows 7
2. Name it : "GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}" (without the quotes).
3. The folder will change its icon, double click it ...


Source : CNet

Jan 5, 2010

My chapter in the C# book is almost done!

I am about 80% ready with the first chapter of the book "Introduction to programming with C#" (this one was assigned to me on the initial meeting).
Lot's of things borrowed from the Java version of the book, still lot of things are new.

In the first chapter I teach the reader what he / she needs in order to create a simple console application.

Both ways are shown - using simple text editor (notepad in our case) and csc and using Visual Studio 2010 Express Edition (as being free for students).

I will mention #Develop. How to debug is also mentioned in the book.
I will soon (probably today) include some information about the .NET Reflector.


Wish me luck!

Jan 4, 2010

2012 and some other stuff

I just couldn't resist to take a few minutes of my time and post this picture just to make you stop working for a minute or two :D

I accidently found this picture:

2012

It is kind of mix of Y2K problem but for the next "end of the world" :).



You can take a look at http://bizarrocomic.blogspot.com/, you may find some more funny pics.

Good night :)

Dec 3, 2009

Introduction to programming with C#

As Vesko Kolev stated in his blog - a new bulgarian book about C# programming is in progress.
I decided to take part because it seems very interesting. I haven't much experience in publishing so it will be very beneficial for me to work on this.
Actually I was author in a software magazine few years ago (as far as I remember I was about 17 years old so it must have been about 6 years ago). It should help me as I took the first chapter - introduction to programming where I will show the readers how to install Visual Studio 2010, how to start their first project and how to write their first program, some diagrams of the .NET framework 4.0 will also be included in this chapter.

We decided not to include any advanced features in this book, just core programming language, no extensions, no lambda expressions, no var, no automatic properties, no nothing.
This is because this book targets potential software developers and not software developers. It should show the developer how to code, how to think etc. We decided that if a man / lady without any software experience may think that auto property won't take memory after it doesn't involve variables (at least visualy :).
That is why we do only core things.

Wish us luck. We would really love to expand bulgarian software development community with few more people :). After all if even one guy / gal of all the people that will potentiall read the book becomes an expert - our mission would be completed (we are dreaming for more impact ofcourse :).

As Svetlin Nakov and Vesko Kolev said - telerik is sponsor for this book so it should be published easilly than their prеvious book - "Introduction to programming with Java" and would probably joy some more marketing efforts.

That was it about the book.
Now about my motivation to join the project no matter my personal engagements and all the work I have at telerik and at the university.
The first reason is that I am a self - taught (almost) developer.
I never had degree that will help me find my work, join some society of developers that will help me when I hit a difficult problem.
There wasn't even internet in my hometown. A friend of mine gave me a book on programming with Delphi (that Sams 21 days brick :).
The Delphi help also helped me and I also downloaded html files to read later when I was at school.

Then I applied for a job in the city where I was studying (Veliko Tyrnovo).
It was all my collegues that helped me improve my skills.
I don't feel as a worldwide recognised expert or something but getting to the intermediate level from nowhere is achievement to me.
So reason #1 to join this book is to give something back.

Another reason is that I would like to see how a book is written, are there different proccesses than in the software development. It has something to do with the blog posts I guess :)
So reason #2 is to steal some knowledge :)

And some kind of nostalgy would be the last reason to join :).As I said, I was an editor in a software magazine, it was very nice thing to do. The article, then the readers asking for some more information. I miss this a bit :)
Reason #3 - to feel the old days when I was an editor :)

The specified service has been marked for deletion error message when removing a service

If you receive this message while trying to delete a windows service - check if the Services.msc application is open.

You will need to restart in order to delete the service, but you will know to first close the Services.msc application the next time PRIOR uninstalling the service (using installutil /u service_exe_name).

Hope this helps someone outthere...

Edit : I found another scenario when this can happen and it seems to be more .NET specific and common to software developers - if your service creates some worker threads, Windows will attempt to kill the main thread, the main thread will attempt to kill the main thread but the worker threads if not marked as BackgroundThreads via the IsBackgroundThread property will remain. The GC will wait for them to reach a safe point so they can be terminated and the service will most probably be only marked for deletion, requiring you to restart windows.

Please note - if you are using the ThreadPool class you will probably not hit this problem as the ThreadPool internal threads are automatically marked as background threads.

Edit 2: Another case when you will receive The specified service has been marked for deletion error message is when you try to uninstall service which wasn't stopped first or it was marked as unstopable.
This is done if you have this.CanStop = false in your service code.
Windows knows this service shouldn't be stopped and it will only mark it for deletion but will not delete it right away.
Be careful with CanStop property.

Nov 24, 2009

Limiting your Internet connection speed with Fiddler.

In some cases you may need to limit your connection for testing purposes.
This is / should be extremely easy using Fiddler.
Here is a simple walkthrough on how to do this:

1. Go to Fiddler site and download Fiddler latest version (http://www.fiddler2.com/fiddler2/)
2. Install it and start it.
3. Click on Rules -> Customize Rules:

4. An instance of notepad should open. Find the line that says something like "oSession["request-trickle-delay"]":

This setting tells Fiddler how much milliseconds should halt the request. (not quite sure how a request halt will help you though)
5. Find the line that says "oSession["response-trickle-delay"]" and change it:


Save the file.
You should have a connection limitation.
Now, when you want your connections slowed down, you will need to check the following option:

6. Rules -> Performance -> Simulate Modem Speeds (should be checked):


Please do not forget to switch off fiddler when you don't need it as you may find yourself wondering why is your connection significantly slower than usual ;).
Hope it helps someone out there.

Sep 8, 2009

Telerik after few days of work

I wasn't blogging for a while but I was concentrated at my new work ;).

Actually I had forgotten that I have blog but few collegues were joking with me that I suddenly put my blog posts (especially those focussed on radControls) on hold. They also asked me if I am going to stop writing about telerik :).
So I decided to write about telerik ;). This time from other prospect.
I was thinking a lot about this post.
If I only praise the company the readers may think I have some interest to do so.
So here is the truth.

I will first start with the interview.
It was held in telerik HQ here in Sofia (my position is also here), the people who was responsible for the interview did their job in a very professional way. The interview was very easy to handle and more like a chat with friends. No stress at all.

The technical questions were handcrafted in a way so the interviewers can get an idea of my technical skills without bothering me with a questions like : "Do you know what is the method in the System.x.y.z.Class which should be used to do access NASA space shuttle chip N1A2322AH". I mean I can remember some of them but I can't know each method in the .NET framework, all the commands in the TFS, all the things in jQuery etc.
No such questions. But real technical questions instead. I will not disclose more on that.

Some processes which I will also skip took place in a matter of week.

The first day
It was a day to get familiar with the company, the collegues etc. telerik HR manager introduced me to all the teams, I met all the people, got some other technical orientation meetings and was ready to go.

The task
I had a challenging task (challenging to me at least, it may be easy to do for other people). Anyway it kept my interest all the time until it was finished. Offcourse I will not disclose more details on this. Just to let you know that I was happy with it.

The meetings
Everything is discussed, each collegue is helpful, there are meeting rooms which are available for longer meetings and you can also go to your collegue desk for shorter discussions.

The people
As I said the people are quite friendly.
Lots of smart guys there. You can learn and teach. Also I have a lot of friends who were collegues of mine from previous companies. They really helped a lot to integrate.

So will I continue to write about radControls
Probably not. At least not that often. When I was at my previous work I had found some problems with the controls because I needed to implement some uncommon scenarios. As I stated in my posts - some of them was because of lack of knowledge in rad products. Now if I have problem I can internally ask someone from the team to help me out or if I find an issue we can discuss if we can address it or find a workaround. That wasn't quite possible before. So I may write a post on how the issue was resolved instead just pointing it out.

Disclaimer :)
The above is my personal opinion based on about a week work.
May or may not change in time. Hope it will not :).

Aug 31, 2009

First day at Telerik

Just to update you that tomorrow is my first day at Telerik.
Wish me luck!

Aug 27, 2009

A nice sentence I read recently

This one is from the asp.net forums:
"Where there is a will, there is a way. And where there is a team there is more then one way."

Aug 25, 2009

Determine if your site is running under IIS or Casini

For the people who don't know - Casini is the built in Visual Studio server which is by default running when you debug ASP.NET project.
You can use the following to check if the site is running under IIS:

bool isUnderIIS = this.Request.ServerVariables["SERVER_SOFTWARE"].IndexOf("IIS") > -1;

Not the most clever thing I've ever done but seems to be the only way at the moment.
If you know a better way - let us know...

To clarify - IIS will return something like : "Microsoft-IIS/5.1", while Casini will let you bump your head with
string.Empty.
Anyway, this covers my scenarios 100% so I can use it.

Aug 10, 2009

A nice DOM property I bet most of you have missed ...

In my previous post on this topic I mentioned the properties you can use to detect changes in HTML input controls:
http://donchevp.blogspot.com/2009/08/nice-dom-property-i-bet-most-of-you.html

Now I want to inform you that I have found an article which has all the controls included with the property you can use to track for changes:

http://www.codestore.net/store.nsf/unid/DOMM-4UTKE6

The first thing I noticed is that it is kind of inconvenient for the SELECT DOM object for example.
You should iterate through all the items and check their selected property with their defaultSelected property ...

Aug 5, 2009

A nice DOM property I bet most of you have missed ...

Have you ever heard about the defaultValue and the defaultChecked properties?
They seems to be a standard DOM properties so the major browsers seem to support them.
What they do?
The defaultValue property is about textboxes (input type="text") and it will contain the value which the textbox has at the time it was rendered on the page.
The defaultChecked property is almost the same, it is about a checkbox and it tells you whether the checkbox was rendered checked or not.

So doing something like:

function hasTextBoxChanged(textBox) {
return textBox.defaultValue == textBox.value;
}

would tell you whether the textbox passed as an argument has changed its value since it was rendered on the page.

Same function for checkbox would be something like:

function hasCheckBoxChanged(checkbox) {
return checkbox.defaultChecked == checkbox.checked;
}

I find those properties very helpful. If you play a bit with jQuery you can find a real life application of them.
I am however wondering if there are such properties for dropdowns and some other controls.
If I find - I'll definatelly post again.

Hope it helps someone outthere ...


P.S. if the control is a part of update panel and it was udpated in the code behind it will not be counted as a change as the defaultValue / defaultChecked properties will be set again (those properties are taken to be the value of the control when it was rendered).

Aug 3, 2009

Join the W3C feature suggestions group in Facebook!

You want to see a feature as a part of the W3C standard?
Join the W3C feature suggestions group in facebook:

http://www.facebook.com/srch.php#/group.php?gid=111306074563

You may find the feature already included or find a workaround ...

Aug 2, 2009

Work in a cooperation with your compiler. Always tell the truth about your datatypes!

When you have a cast you should avoid asking the compiler to figure out what kind of data should be returned. This is more about objects and the string data type.
For example I've seen (and to be honest I myself did the following mistake when getting data from DataSet. Don't laugh in .NET 1.1 and 2.0 there was no Linq :)

foreach (DataRow row in dsReportSource.Tables[0].Rows)
{
string strName = row["name"].ToString();
}

The compiler will let you think that it knows how to do the fastest transformation from object (in the dataset all the columns in a row are objects) to the destination type (in our case - string). But it will only let you think so. What will actually happen is that the compiler will slow down the data acquisition due to some internal checks and conversions ...

Instead do the following (as you are more than sure that this column is string):

foreach (DataRow row in dsReportSource.Tables[0].Rows)
{
string strName = (string)row["name"];
}

This way you tell the compiler - "Look, don't even bother to try to infer the type for me. I am telling you this is a string, so please just treat it as string). And it makes sense - after you have a column of type NVARCHAR in the database it will always come to you as a string (masked as object :).

Now there are even worse cases like:

foreach (DataRow row in dsReportSource.Tables[0].Rows)
{
int iId = int.Parse(row["id"].ToString());
}

As you can see you are parsing the id column. You know it's int. But int.Parse can only work on strings, so you are required to turn this object to string, calling its .ToString() method. This will slow down your code insignifficantly on few rows and signifficantly on more rows (few thousands for example).

The following is also wrong:

foreach (DataRow row in dsReportSource.Tables[0].Rows)
{
int iId = Convert.ToInt32(row["id"]);
}

Here you are telling your compiller that you are sure the parameter (row[
"id"]) will cast to Int32 without problems.
But here you are telling your compiller only 50% of the truth. After you KNOW it is int, just be honest and say:

foreach (DataRow row in dsReportSource.Tables[0].Rows)
{
int iId = (int)row["id"];
}

This applies not only to DataSets but everywhere you have a fixed datatype and you know what the type is.


Don't let your compiler do the work.
Just look at your project and try to find places where you are uncertain about fixed datatype.
Change it to be a direct cast and I am pretty sure you will experience speed improvements.

W3C Zoom CSS property. I really want this feature included!!!

Lot's of people are discussing this.
And the designers are often saying something like:
"I cannot imagine a scenario where you will need to use the Zoom CSS property."
To the readers that haven't yet hit this problem - the CSS Zoom property seems to be proprietary and to be working for IE (I think version 6 and above).

To all those designers - there ARE scenarios where you will want to let the user zoom everything proportionally without using the browser buttons / sliders / shortcuts, but with CSS / JS only.
I will give you few examples:

1. I needed to create an overview control of page. It should represent the page in a smaller percentage and, upon scroll, the page should scroll proportinally. I can have a div with the same DOM tree (or even an IFrame loading the same page or something). In this case I URGENTLY need the CSS Zoom property.
2. Telerik radReporting - the ReportViewer has a dropdown to let the user choose a zoom level to preview the page (web based and not after clicking print preview or something). Actually the Print Preview browser command isn't an option as the report viewer may be on the page with other controls and the user SHOULD BE ABLE to zoom in and out only the portion of the page where the report is (it is an IFrame with the data rendered as HTML, I believe). In telerik case - there seems to be some browser detection and when the browser isn't capable of zooming in / out - the dropdown with the zooming levels is simply hidden (they have no other choice unfortunatelly and I support them for this decision).

Now, as you may expect - in my scenario I cannot simply hide the overview control as the page heavilly depends on it.
Should I now have my revenge now? I've seen all those messages accross the web telling you that there are better browsers to use than IE.
Should I now display a message like:
"Sorry, your browser isn't capable of zooming in and out, only IE supports this, so please switch to IE."

I really hate those browser wars and if you really want to know my opinion - yes, IE may be harder to design. It may be messing up the containers, it may not be passing the ACID N test.
But it is the only browser that is suitable for my scenario (at least from my search in IE all the posts were following the same line - "zoom is IE proprietary, it won't work under other browsers").
Why are all other browsers sleeping then?


P.S. I have found something like -moz-zoom or something but wasn't able to make it work under FireFox (if it works under Firefox it should also probably work under Google Chrome as they are using the same engine I think).
P.P.S. - haven't tested but I think the zoom CSS property should also be available under Opera as they (as far as I know) use the IE core.

P.P.P.S - if anyone know how can we ask W3C to reconsider this for at least the next revision of CSS I would be glad to give my vote. I also advice telerik to do the same. Not only the reporting will work in all browsers but they may be able to do some other great controls using this property.

Really annoying ...