GMail considered “unsubscribe” at the end of email as spam

I’ve created a new email account to communicate with members of Russian Bards Songs Club . When I sent the first email to 15 people, it was rejected with the message:

Delivery to the following recipient failed permanently:

Technical details of permanent failure:

Message rejected.  See for more information.

I’ve sent the same email to a single person and it was successful. I’ve wrote a small program to  vary some details and number of addressees, but the emails were continue to be blocked. I wasn’t able to send the email even to a single recipient. It means that gmail has more strict anti-spam criteria for smtp  clients then for gmail senders.

The email I was trying to send was written in Russian with some words in English and contained a few links. I didn’t know, what else make my email suspicious and submitted a question to Google. But they normally do not respond.

I’ve decided to test smaller emails to identify if particular part of content flags the email as spam. After a few attempts I found, that the trouble caused  the phrase

If you don’t want to receive more emails from us, please reply with the word ‘Unsubscribe’ in the subject.

I’ve seen multiple recommendations to include unsubscribe information in emails to bypass anti-spam filters. It seems that too many spammers started to add such sentences, that Google now consider it as a spam indication.

Maybe  they didn’t like that I have an instruction to unsubscribe via email instead of providing link to website.

For now, I removed the sentence from the email and finally was able to send it.


Couple weeks later I added a message “If you don’t want to receive emails any more, click on this link”( in Russian), but the actual URL contained the word “unsubscribe”. I’ve sent emails to 3 big groups of people(about 100 each). Two of them were sent successfully, but one was rejected(actually the first one).
I split the failed group in three smaller ones, and tried to send them. They were rejected again.

Additional annoyance was that “delivery failed” notifications were received slowly within 5 minutes, and initially I had an impression that some emails succeeded, and only some were rejected. However according to timestamp all emails were rejected at the same time.

Then I renamed the target URL to not use “unsubscribe” word, updated the link in email signature, and was able to send emails successfully.

Office customization tips

I’ve posted below a few Office customization tips, that I prefer to setup when using a new computer.
Display File Path in Excel

Steps to display the file path of the current open file (Excel 2007):

  1. Right click on the ribbon

  2. Choose “Customise quick access toolbar”

  3. Select “All commands”

  4. Then choose “Document Location”

  5. Click “Add”.. and it will appear on the right

MS Word 2007/2010 – display path and filename in menu bar

To add the Document Location command to your Quick Access Toolbar(QAT):

– Click the More (or Customize) command at the end of the QAT and then click

More Commands.

– In Choose Commands From, select Commands Not In the Ribbon.

– Locate Document Location, select it, and then click Add to add it to your


Prompt to open a Microsoft Office Word document as read-only

  1. In a Word file, click the Microsoft Office Button , and then click Save As.

  2. Click Tools, and then click General Options.

  3. Select the Read-only recommended check box.

  4. Click OK.

  5. Click Save. If prompted, click Yes to update the existing file with the new read-only setting.


Compare Pocket and Instapaper on IPad (again)

Since my last post I use both applications on iPad, trying to use Instapaper more often.  Unfortunately, I wasn’t fully satisfy with it.
I didn’t have any response to couple of emails, that I ‘ve send to, so I even don’t know, have Marco receive it or not.

The major problem is “smart” context removal, which removes comments from blogs and stackoverflow discussions, corrupts tables in pages.
 I’ve recorded a few examples, but not sure, that Marco is interesting to get them.

Now I prefer to use Pocket on iPad again and looking forward, when they will restore “rename titles” function, that was lost 4 month ago.

From Pocket to Instapaper

Some time ago I’ve described the issues that I’ve had since a new version of Read It Later, named Pocket, was introduced.
I’ve waited with hope for a new upgrade, but I had a huge disappointment with the latest version 16 June 2012. It didn’t fixed any of the two major problems, that I  experienced since new Pocket was introduced-


1. iPad app still didn’t show many of the saved links.

2. ability to rename articles on iPad still wasn’t restored.
I’ve posted the message into their forum. They did not show my comment on their forum( I would name it censorship, not moderation), but a few days ago I’ve received an email, recommending
“try logging out of the app on your iPad, and back in again.” Their suggestion helped,  but I don’t understand, why it is not posted as a recommendation on their support site.

So I decided to try InstAPaper on my iPad, Previously I’ve used it for Kindle. I never considered it before on iPad, because there were no free demo and I was very satisfied with RIL free and then RIL Pro. Currently InstAPaper cost $3, so the price is not an issue.

I’ve checked that it has most of features that I am using(e.g. renaming, folders) and I am quite happy with it now. Actually I am using Pocket (or RIL free) for old bookmarks( I have 1000+ stored on my iPad) and for new bookmarks I am using InstAPaper.

Having a solid experience with RIL/Pocket I’ve created a list of suggestions to Marco Arment to implement.
1. Some pages stored in InstAPaper have removed essential sections of the text. E.g in many blogs comments are not stored in  InstAPaper.
Some pages lost almost all of important links (e.g. -sorry, in Russian). RIL/Pocket has 2 modes to store offline- Web view and Article view. Web View includes all links/images of the original page, but it’s very reliable. Article view suppose to strip unrelated information, but often corrupts the content. I prefer to use offline Web view.
InstAPaper should also support offline Web view, in case if stripped view removes important part of content.

2.  Black full screen Saving on iPad Safari is very annoying. After user pressed a bookmark, the saving has some delay and then for a few seconds prevents from reading the text.Would be better to show as message on the top part(as in Pocket ). I am surprised, that  a full screen popup was  implemented recently as a desired feature.

3.There are no comments allowed on I would prefer to post some of these notes as comments on rather than write them in my blog and then send link to Marco.(I found recommendation how to add support of comments on tumblr at, but then realized that Marko was the lead developer ofTumblr.)

4. Also there is no support forum. I understand that maintenance of the forum ican be a hassle, but stackexchange fSome time ago I’ve described the issues that I’ve had since a new version of Read It Later, named Pocket, was introduced.
I’ve waited with hope for a new upgrade, but I had a huge disappointment with the latest version 16 June 2012. It didn’t fixed any of the two major problems, that I  experienced since new Pocket was introduced-
orums can be referred on page, i.e.  or

5. Tags are more convenient than folders. i.e. an ability for the same article to have more than one tag. Also creating of new folders is not supported offline, which is an annoying limitation.

6. I would like to have a narrow list – additionally to existing list modes have a subject only list or subject+site list to show more list items on a screen.
7. Limit of 500 offline articles sounds quite big, but my RIL list exceeded 1000, so it could be a issue in the future.
8. Search button on iPad version is visible, but doesn’t work- it forces to buy Premium subscription. I think, that it’s not correct. If the button in a paid version is visible and enabled, it should  provide  a working functionality, e.g. search in article names only. And leave full-text search for the premium support.
9..Copy URL is an important operation and deserves to be in a first level of Action menu, rather than in Share sub-menu.

I’ve also have comment re post Marco Arment  explained, why he doesn’t provide free version of Instapaper.  I believe that he is loosing essential part of his customers. When I decided which of iPad application to choose, I’ve selected RIL, because I was able to play with free version, and I liked it. I didn’t have a chance to compare RIL and InstAPaper on iPad, so I’ve bought  RIL pro. For a user there is no point to pay even $3 , if there are similar free product, that user can try and see, is it suitable for him/her.

I’ve also played with Readability. It doesn’t have folders or tags(which is very important for me), but nicely supports full text search

C# tip: do not use “is” type, if you will need cast “as” later


We have a debate with one of my collegues, is it agood style to check, if the object of particular style, and then cast  as this  type. The perfect answer of Jon Skeet   and answers in Cast then check or check then cast? confirmed my point.

    var coke = cola as CocaCola;
    if (coke != null)
        // some unique coca-cola only code
    if (cola is CocaCola)
        var coke =  cola as CocaCola;
        // some unique coca-cola only code here.

Code review recommendations and Code Smells

Some time ago Twitter told that I am similar to Boris Lipschitz . Indeed he is also .Net programmer from Russia living in Australia.
I‘ve read his list of Code Review points and found them quite comprehensive. A few points  were not clear for me, and it forced me for a further reading.

In particular the statement “Exception should not be used to return a status or an error code.” wasn’t fully clear for me, because sometimes we store an exception as an object with all error details and I believe it’s a valid approach. However I agree that throwing exceptions should be avoided, if you expect to return error as a part of a normal flow.
Related link:

Another point slightly puzzled me
If Thread.Sleep() is used, can it be replaced with something else, ei Timer, AutoResetEvent, etc” . I believe, that there are very rare cases, when anyone using Thread.Sleep in any production code. Usually it is used in mocks and prototypes.

I had to look further to clarify “Dependency injection is used instead of Service Location pattern”.
Even most of articles has some preferences to Dependency injection, there are also advantages to use Service Location. E.g see  refers to Concluding Thoughts of Martin Fowler
The choice between Service Locator and Dependency Injection is less important than the principle of separating service configuration from the use of services within an application

The post had a link to excellent article Code Smells of Jeff Atwood, but the statement, that “code should not pass a review if it violates any of the  code smells” sound too strict for my environment.

In particular, I disagree with “Dead Code” recommendation “Ruthlessly delete code that isn’t being used. That’s why we have source control systems!”. If there is a chance that not used code will be required in a future, it is convenient to keep it as commented or #if/#endif blocks with appropriate explanation, why it could be required in the future. TFS is a good source control system, but context search in source code of current solution is much easier than finding something in the previous versions of the code.

Related links:



“Read It Later Pro” has been ruined into Pocket, but RIL Free is still usable.

I loved RIL Pro for iPad and used it every day, but about a month ago I was forced to upgrade to new version, named Pocket.
The new version has so many problems, that it’s almost unusable.
The main issue is that iPad app doesn’t show many of the saved links. 
I’ve posted my opinion that it would be better to have  Pocket as a new separate application and recommend users to install it side by side with RIL Pro and try before replace at Pocket forum  APR 20, 2012 
I found that there a many other threads that report different issues with a new version and I’ve posted a few comments, supporting suggestions to fix the issues, that were broken by the Pocket.(e.g. here)
 Pocket agents answered only a  small number of questions, and many of their answers were unreasonable- like “We removed this feature because it is not convenient for our future plans”
Example of this is still stored in Google cache

24Apr I’ve posted a request to restore RIL Pro in AppStore until they will fix the problems in pocket.
From 27 April they introduced moderation on the public forum and stopped show new posts.
Actually “moderation” is not a correct work, it’s converted the forum into Q&A site, where they show only posts with answers that they like.
Furthermore they removed many discussion threads that existed on the forum before the “moderation”.
When I pointed to this in email, the answer was un-reasonable-that their forum is actually not a forum, but “a helpful support site where users can get their questions answered”
In fact users post public questions and do not see them posted for a week or forever.
For couple of my questions I received email starting with the words
    “An agent has responded to your question (Link to Question<>).”
But the link is not working, because they deleted the discussion from the forum.
At the beginning of May Pocket support answered that the  “known issue with a partial list sync” is addressed and will be in the next upgrade.
Despite the statement in upgrade notes, next upgrade didn’t help with the problem(at least for me).
Support  replied to me, that  “it seems as though a small handful of users are still experiencing this sync discrepancy.”
27Apr I’ve reported that “Sync in RIL Free stopped working” and it was on forum at least until 6 May(according Google cache)
10 May I received a reply via email(but post has been removed from the forum)
“The fix is to log out of Read It Later Free, and then log back in. Although your local cache will be cleared, the app will go through your list and re-download your items.”
 It was the first useful advice after introducing Pocket. Now I am able to use RIL Free. With all it’s limitation RIL Free is in much more workable conditions, than Pocket. It shows all articles that I’ve saved and it allowed to rename titles. The only feature from RIL Pro, that I really missing, is the ability to filter only untagged articles.
So now I can read all my saved articles in RIL Free and wait until they will fix the Pocket.
The conclusion I’ve had is that the Pocket company doesn’t respect their customers, and I should not rely on their products too much. However the application is quite convenient, and I am familiar with it, so I will continue to use it. 
The company’s  behaviour reminds me how Google changed layout of iGoogle tabs and ignored hundreds of complains. Note that recently (4 years later) Google returned to layout similar to original.

Code style Tip: Case insensitive string comparison

if (String.Compare(myString, ALL_TEXT, StringComparison.OrdinalIgnoreCase) == 0)
                                        return true;
OK(not obvious what true means)

if (String.Compare(myString, ALL_TEXT, true) == 0)
                                        return true;
BAD: (non null safe)

if (myString.ToLower()==ALL_TEXT.ToLower()
                                        return true;

Disable messages from SQL Server “Login failed for user” in Event log

I’ve noticed multiple messages from SQL Server in EventLog on my machine
Login failed for user ‘NT AUTHORITYANONYMOUS LOGON’. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT:]
I’ve found that there are machines of my co-workers, but they were not sure, which processes tried to access my SQL server.

I’ve tried a few things and finally in SQL Server Configuration Manager disabled tcp, as it was suggested in

Copy to local drive before running installations

I’ve downloaded Windows Identity Foundation from,
but when I  was trying to install, it returned
Windows Update Standalone Installer
Installer encountered an error: 0x80070003
The system cannot find the path specified.

I’ve tried a few other similar downloads, and all had the same error,
Finally I’ve realized, that they don’t want to run from shared drive.
After I’ve copied to local drive  Windows6.1-KB974405-x64.msu, I was able to install it.