Why Ctrl+F in Outlook to Forward instead of Find

Bill Gates... a powerful man. Also, WTF.

It's a widespread convention that the Ctrl+F keyboard shortcut initiates a Find operation. Word does it, Excel does it, Wordpad does it, Notepad does it, Internet Explorer does it. But Outlook doesn't. Why doesn't Outlook get with the program?

Rewind to 1995.

The mail team was hard at work on their mail client, known as Exchange code name Capone, in keeping with all the Chicago-related code names from that era. Back in those days, the Ctrl+F keyboard shortcut did indeed call up the Find dialog, in accordance with convention.

And then a bug report came in from a beta tester who wanted Ctrl+F to forward rather than find, because he had become accustomed to that keyboard shortcut from the email program he used before Exchange.

That beta tester was Bill Gates.

via MSDN Blogs.


Lovely new ringtone, with love, for Russia

Putin Khuilo

If you're into the current situation in Ukraine, maybe you will understand this obsession, but here is a wonderful ringtone for your iPhone. All thanks to the FC Metalist Kharkiv of Ukraine.

Download your ringtone here.

Once you have saved it, open in iTunes and drag it to your phone to install the ringtone.

Here is the original video:



Profile ROI

Two of my answers on Stack Overflow are surprising doing well, which puts me in top 5% for this year.

Screen Shot 2014-05-22 at 3.40.52 PM

Also, I've earned "Great Answer" badge. yay!

Screen Shot 2014-05-22 at 3.41.15 PM


Oppression of Ukrainian Language for over 400 years

XVII century
1627 – order of Tsar Mikhail, petitioned by the Moscow Patriarch Filaret to burn all copies of the “Uchitel” Bible published in Ukraine by Kirilo Stavrovetskiy.
1696 – order of the Polish Seym to implement the Polish language in courts and institutions of Right Bank Ukraine
1690 – the condemnation and anathema of the Russian Patriarchal Church of “Kievskia Novia Knigi” of Petro Mohyla, Kirilo Stavrovetskiy, S. Polotskiy, L. Baranovich, A. Radzivilovskiy and others.

XVIII century
1720 – order of Muscovite Tsar Pyotr I regarding the ban of book printing in Ukrainian and the elimination of Ukrainian texts from church scriptures
1729 – order of Pyotr II to rewrite all government orders from Ukrainian into Russian
1731 – order of Tsarina Anna Ivanovna to confiscate Ukrainian printed books, and to “teach sciences in our own Russian language.” In the secret instruction to the head of Ukraine Prince O. Shakhovskiy in 1734 she ordered to by all means to prevent Ukrainians to marry Poles and Belorussians, “and to artificially engage them with Big Russians.”
1763 – order of Catherine II regarding the ban on teaching in Ukrainian in the Kyiv-Mohyla Academy
1769 – prohibition of the Sinode of the Russian Patriarchal Church to print and use the Ukrainian bukvar
1775 – the ruin of the Zaporizhya Sich and the closure of Ukrainian schools in Cossack chancelleries.
1789 – the order of the Education Committee of the Polish Seym regarding the closure of all Ukrainian schools

XIX century
1817 – the provision of the Polish language in all national schools of Western Ukraine
1832 – the reorganisation of education in Right-Bank Ukraine on pan-imperial orders with using Russian language for teaching
1847 – the ruin of the Kirilo-Methodius association and the increase of harsh persecution of Ukrainian language and culture, the ban on the best masterpieces of Shevchenko, Kulish, Kostomarov and others
1859 – the Ministry of Religions and Sciences of Austro-Hungary in Eastern Galicia and Bukovina tried to replace the Ukrainian cyrillic alphabet with a latin one
1862 – the closure of free Sunday Ukrainian schools for adults in Russia-governed Ukraine
1863 – Valuyev order regarding the ban on censure allowance on printing Ukrainian spiritual and popular education literature: “there is and can not be any separate Maloros language”
1864 – the affirmation of the Statute regarding primary school, according to which education should only be carried out in Russian
1869 – the provision of the Polish language as the official language of education and administration of Eastern galicia
1870 – the explanation of the Russian Minister of Education D. Tolstogo that “the end goal of the education of all foreigners has to be Russification”
1876 – the Ems order of Alexander II regarding the prohibition on printing and import from outside the country of any Ukrainian language literature, as well as the prohibition of Ukrainian theatrical performances and printing of Ukrainian texts on sheet music, therefore national songs.
1881 – the ban on teaching in public schools and church services in Ukrainians
1884 – the ban of Alexander III of Ukrainian theatrical performances in all Maloros governments
1888 – the order of Alexander III regarding the ban of using Ukrainian in all official institutions and baptisms with Ukrainian names
1892 – the ban on translating books from Russian to Ukrainian
1895 – the ban of the Main Headquarters in Questions of Printing to publish children’s books in Ukrainian

XX century
1908 – four tears after the Russian Academy of Sciences acknowledge the Ukrainian language, the Senate announces the Ukrainian-speaking cultural and education activity to be harmful for the empire
1910 – the closure on order of Stolipin’s government of all Ukrainian cultural associations, publishing houses, the ban on lecturing in Ukrainian, the ban on creating any non-Russian clubs
1911 – the order of the VII Dvorian Assembly in Moscow regarding exclusively Russian-language education and the unacceptability of using any other languages in Russian schools
1914 – the ban on celebrating Taras Shevchenko’s 100th birthday; the order of Nikolai II regarding the ban of Ukrainian press
1914, 1916 – the campaigns of Russification in Western Ukraine; the prohibition of the Ukrainian language, education, church.
1922 – the proclamation of part of the leadership of the CC RCP and CPSU of the “theory” of two cultures fighting in Ukraine – the city (Russian) and the village (Ukrainian) cultures, in which the former must win
1924 – the order of the Polish Republic to limit the use of Ukrainian in administrative institutions, courts, education on lands governed by the Polish
1924 – the order of the Romanian Kingdom regarding the obligation of all “Romanians,” who have “lost their mother tongue” to educate their children in Romanian schools only.
1925 – the final closure of the Ukrainian “secret” university in Lviv
1926 – Stalin’s letter to “Comrade Kaganovich and other members of the Politbureau of the Central Committee of the Communist Party of Ukraine” with the emphasis on fighting against “national inclinations,” the beginning of persecution of “Ukrainisation” activists
1933 – Stalin’s telegram regarding the suspension of “Ukrainisation”
1933 – the abolition in Romania of the ministry order of December 31st of 1929, which allowed several hours of Ukrainian language a week in schools with a majority of Ukrainian students
1934 – the special order of the Ministry of Education of Romania regarding the firing “for animosity to the state and the Romanian people” of all Ukrainian teachers which demanded the return of the Ukrainian language to schools
1938 – the order of the Council of People’s Commissars and the CC of the SCP “Regarding the compulsory learning of the Russian language in the schools of national republics and regions,” the according order of the Council of People’s Commissars and the Communist Party of Ukraine
1947 – operation “Visla”; the dispersal of part of Ukrainians from ethnic Ukrainian lands together with Poles in Western Poland in order to speed up their “polonisation”
1958 – article 20 of the Basis of USSR Legislation and that of soviet republics regarding national education of the free choice of language of learning; the learning of all languages except for Russian by choice of the students’ parents
1960-1980 – mass closures of Ukrainian schools in Poland and Romania
1970 – the order that theses can only be written in Russian
1972 – the ban by party bodies of the celebration of Kotlyarevskiy Museum’s jubilee in Poltava
1973 – the ban on the celebration on the anniversary on Kotlyarevskiy’s masterpiece “The Eneid”
1972 – the order of the CC CPSU “Regarding the preparations for the 50th anniversary of the creation of the USSR,” in which for the first time the “creation of a new historical community – the soviet people” is proclaimed, an official de-nationalisation course
1978 – the order of the CC CPSU and the Council of Ministers of the USSR “Regarding the means of further improvement of learning and teaching the Russian language in Soviet republics” (“Brezhnev document”)
1983 – the order of the CC CPSU and the Council of Ministers of the USSR “Regarding additional measures in improving the learning of the Russian language in public schools and other learning institutions of Soviet republics” (“Andropov order”), which in particular instills a 16% increase in the salaries of the teachers of the Russian language and literature; the directive of the collegium of the Ministry of Education of the Ukrainian Socialist Republic “regarding additional measures of improving the learning or the Russian language in public schools, pedagogical learning institutions, pre-school and post-school institutions of the republic,” directed at increasing russification.
1984 – the order of the CC CPSU and the Council of Ministers of the USSR “Regarding the further improvement of public middle school education of the youth and the improvement of working conditions of public schools”
1984 – the beginning of 15% increase in salaries for Russian language teachers in comparison with Ukrainian language teachers in Ukraine
1984 – the order of the Ministry of Culture of the USSR regarding the transfer of all businesses in all museums of the USSR to the Russian language
1989 – the order of the CC CPSU “regarding the legal fixation of the Russian language as the official national language”
1990 – the approval of the law regarding the languages of the people of the USSR in which Russian is deemed the official language - volianarodu.org


Compiling non-digest assets with asset_sync gem in Rails 4.0

In Rails 4, non-digest asset compilation has been disabled. If you ask me, I think this decision make Rails too opinionated.

For some of my applications (The Feedback Button) there is a strong need to compile non-digest versions of assets, as they are referenced outside of the application. Digest version of the assets have a hash of the content in the name. There is no easy way to figure out the proper name of the compiled assets, so there is a strong need to also compile the non-digest version (without the MD5 in the name) of the asset.

There are some monkey-patches or rake tasks available, but they all fail to address the issue when having to put your assets on the Amazaon S3 with CloudFront using the asset_sync gem.

Luckily there is a gem to fix this, and the name of this hero is non-stupid-digest-assets. Simply by adding this gem, you are no longer required to monkey-patch or create a rake task. Just one line in your Gemfile. Beautiful!

There is actually one more thing you need to do, and that is to set your manifest option to false like so:

AssetSync.configure do |config|
config.manifest = false

This is to prevent the asset_sync gem from reading the manifest file, which would cause to exclude non-digest assets. This line will prevent the upload from ignoring the assets we actually want to upload.

So, the fix actually took two lines of code in the Gemfile and in config/initilizers/asset_sync.rb.

Also as an extension, I also added an option to overwrite existing files because the default setup ignores the files if they are already present in the bucket (this works on initial upload, but you want your code to stay updated!).

config.existing_remote_files = 'ignore'

The final initialiser should look like this:


Printing from iframe when CSS is limiting

Style your pages for printing using iframe when you hit a roadblock with CSS.


How is Dropbox's Mailbox app any different from LinkedIn Intro app?

I was having a drink with a friend, who saw me use the Dropbox's Mailbox App. After explaining him how this thing worked, I realized that the mechanism is not so different from LinkedIn's Intro app, which has been bashed and mashed around for it's privacy implications.

Then I asked him a question: how is Mailbox any different from Intro?

Here is an except from Mailbox's website:

In order to deliver email as quickly as possible, send push notifications, and keep an accurate badge count on your home screen, Mailbox checks your email from the cloud.

It does not seem to be too different. The biggest difference I see is in the press -- mainly company's track record. But then again, Dropbox? LinkedIn? It's a seesaw of privacy policies and practices, deteriorating little by little on each side (not to say that these are the only companies).

It is a fact that some of my close friends have begun deactivating their LinkedIn accounts. Is it a matter of time until people stop using Mailbox? stop using GMail all together?

Needless to say, Mailbox is a quality app, and I will probably not give up using it for a while. I love the app. But again, I ask the question: how is Mailbox any different from LinkedIn Intro app?


Improve your Github + Pivotal workflow with git_tracker

Pivotal Tracker has a cool feature where it adds your git commit messages related to your story as comments. If the commit message contains a corresponding story number, that commit will show up as a comment.

This is the format of the commit message. Notice that the ticket number is inside the brackets with a hashtag.

$ git commit -m "My awesome commit. [#39731421]"

Usually when you work on a story, it will be on a separate branch with a ticket number in the name of the branch. Something like:


When you are working on a feature with multiple commits, it becomes redundant to enter the same ticket number in your commit every time. This is where git_tracker can help you out.

git_tracker is a tool that will look at your branch and automatically insert the ticket number in the format specified above.

Installation is quite simple. Follow these steps.

$ cd my_project
$ brew install git-tracker
$ git tracker init

That is it! The tracker will install git commit hooks that will do the magic and add the number to your commit message.

Lastly, if you are not sure how to name your branch here is a list of supported branch formats by git_tracker listed below:

  • best_feature_ever_#8675309
  • best-feature-ever-8675309
  • 8675309_best_feature_ever
  • #8675309-best-feature-ever
  • your_name/8675309_best_feature_ever
  • your_name/#8675309_best_feature_ever


Passing multiple multi-line strings as arguments to a ruby method

Ever had a need to pass not just one, but two or even multiple multiline strings to a method in one go?


Percent Notation and Symbols in Ruby 2.0

Ruby is nice because it has the percent notation for working with different base elements such as strings, arrays, and symbols. You can create different objects by replacing the character after the ‘%’ mark.