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:

https://www.youtube.com/watch?v=zkEhebk-LsA

Read more...

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

Read more...

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

Read more...

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
end

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:

Read more...

Printing from iframe when CSS is limiting

Traditional approach to printing HTML pages was to separate the stylesheets into print and screen like so:

Alternatively, you could have embedded all the styles in one stylesheet using the media queries like so:

Unfortunately, there are occasional needs to print a webpage that looks different from the main page in print.

The Solution

Instead of struggling with CSS and media queries, there is a third way; a better way: printing from an iframe.

By placing an iframe and giving it a hidden property, it will not be visible to the user, but accessible through javascript.

<iframe id="print_me" src="iframe_print_source.html" style="display: none;"></iframe>

With this in mind, we add a button that will trigger the printing of this iframe.

<button id="print_button" onclick="javascript:window.frames['print_me'].print();">Print Me</button>

This approach is made possible because each iframe is treated as a separate webpage. The iframe has its own DOM structure which you can access and manoeuvre around. The javascript that does heavy lifting is placed in the onclick handler and is triggered when the "Print Me" button is pressed.

This approach has three downsides:

  1. Two requests made to the server.
  2. Print must be triggered with javascript.
  3. Double loading of the same data.

This hack works and can be extended to fix the problems listed above in several ways.

The first downside can be resolved by creating the iframe dynamically and loading the content to print only when the print button is pressed. This fix becomes a strong positive when printing involves heavy styling. You don't want to waste any bandwidth on print styling -- assuming the user does not print that often.

The second point can be partially resolved by adding a listener on the keyboard and trigger the print action when 'Cmd + P' or 'Ctrl + P' is pressed on the keyboard.

The third point is actually an advantage that we are utilising in this case by changing the content. This means that you can place a completely different stylesheet (or even a different content) within the iframe without breaking the parent page.

Also, here is why you should avoid media queries:
Peter Griffin demonstrates CSS

Read more...

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?

Read more...

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:


feature/39731421_make_it_more_awesome

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

Read more...

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?

Read more...

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.

Read more...

Reset iOS Simulator With a Rake Task

A slight annoyance while developing with RubyMotion is having to reset the iOS Simulator. It is quite frustrating to use a mouse sometimes to perform a repetitive task, so I thought it would be nice to simplify that to run it in a command line.

By executing AppleScript using the osascript command, we can call the "Reset Content and Settings" menu item in the simulator and have it reset by running the following rake task:

rake simulator:reset

Read more...