About one of my works

Current music: Kraftwerk - Pocket Calculator

I want to tell about one of the websites I was working on lately. That was a project with a long history. The first time I was involved in autumn of 2012. I added some functionality which was absent since the developer who started the site had left. Also I had to rewrite some parts of the code because of the thing I prefer to call “unscrupulous programming”. What does that mean exactly? It’s pretty easy to explain. My precursor did intentionally write code that wasn’t supposed to work just as client wanted. Instead his programming created problems during usage that were not noticeable by brief look.  There were also mischievous tricks preventing compability with other software solutions. That way he hoped client will be forced to seek his services again and again.

Then couple of times I changed some features so website could meet the changing customer’s beliefs on how it should work, look and sound. Diplomatically speaking, not all of those decisions would have found acceptance by most professional designers and web-developers. However if the client is paying then he is right and I don’t argue with that. There were some additional difficulties mainly because of  the requirement to keep adding and editing of the content simple. Low-skilled computer user should be able to update information on the site.

After all metamorphosis the final result is quite unusual combination of very different technologies which all work together nonetheless. Site is based on the WordPress CMS using few deep buried features. It uses Flash, JavaScript of course,  but the most interesting thing is how pieces of archaic technology connect with modern progressive tools there.

During the work on bringing customer’s vision into reality the biggest difficulty was background music. It was supposed to play smoothly without interruptions while visitor is browsing pages. At first, I tried to make it by placing player in background popup. Not a very delicate decision I must confess. It wasn’t very effective one as well. Browsers are surprisingly effective in blocking popups nowadays. Furthermore the ways of controlling a window from its parent window by JavaScript aren’t cross-browser. It also was too late to rebuilt the whole site to AJAX which allows certain areas of the page to change while others (the one containing player for example) stay still. So, what did I finally choose?

I used frames. Yes, there is no mistake. I really mean those creepy old things that were last time described in HTML 4.01 in previous millennium. Frames took their place among other recognizable features of Web 1.0 era and already became obsolete when I was at school. If you ask search engine about it most likely there will be caution on the first page in the list saying you should restrain from using frames. Surprisingly frames happened to be useful in my situation.

JS works way better on controlling player in near frame than in near window. The problem with frameset structural integrity (normally you can only see correct frameset if you came from the main page of the website) was solved by JS-script which checks environment of the page, and PHP code which generates missing frame on the fly if one was missed. Another classical frames’ problem with displaying correct URL in browser’s address bar was nullified by using of History API, part of HTML5 standart. It’s relatively fresh technology. Some internet browsers just started to support it in last year but History API has already found utilization. You can see it working in russian social network VK for example.

All in all I believe I created rather elegant solution though site looks nothing like a golden medal or trophy you put on the most noticeable place in a room. I learned something new, I got more experience in web-programming. However my personal feelings don’t change the fact it’s just usual official website for small business, highly influenced by customer’s taste, decent at best.

P. S. I must apologize on behalf of all web-developers for sites with such annoying and totally wrong usage of sound. As wage-earners we have to make things we would never do by our own intention (at least I hope so)…

Читать Немного о работе по-русски.

Немного о работе

Current music: Lacrimosa - Verloren

Последнее время я работал над одним сайтом, о котором хочу немного рассказать. Проект этот оказался долгостроем. Первый раз я с ним соприкоснулся ещё осенью. Тогда пришлось добавлять некоторую нереализованную функциональность, оставшуюся недоделанной с момента ухода программиста, начинавшего работу. Кроме того пришлось переписать некоторые участки существовавшего на тот момент кода из-за того, что я предпочитаю называть недобросовестным программированием. Как это понимать? Очень просто. Мой предшественник местами умышленно писал код не так, чтобы он работал, как того хотел заказчик. Он намерено оставлял незаметные на первый взгляд шероховатости, которые бы заставляли снова и снова обращаться к его услугам и препятствовали бы совместимости с фичами от других разработчиков “из коробки”.

Потом я возвращался к сайту ещё пару раз, когда у заказчика менялся взгляд на то, каким должно быть его сетевое представительство и что именно он хочет на нём видеть (и слышать). Говоря дипломатично, далеко не все эти идеи одобрили бы опытные дизайнеры и девелоперы, но так уж складывается ситуация на рынке, что платящий деньги клиент прав. Местами ситуация осложнялась требованием сохранить простоту редактирования и добавления контента на сайт. Предполагалось, что обслуживать его будут люди не имеющие каких-либо существенных айти навыков.

В итоге многочисленных преобразований получилась очень необычная субстанция, симбиоз различных технологий. Сайт базируется на WordPress, ставшем одним из стандартов де-факто открытых движков, довольно глубоко задействуя его возможности. Есть там и Flash, и JavaScript, но самое забавное, что там причудливо сочетаются и заведомо устаревшие элементы, и довольно свежие, прогрессивные вещи, поддержка которых появилась только в последних версиях браузеров.

Самой большой головной болью стала фоновая музыка, по задумке клиента непрерывно играющая, пока посетитель перемещается по сайту. Сначала попытался реализовать её в виде всплывающего параллельного окна с плеером (вроде того, какое можно увидеть на ли.ру в постах с прикрепленными mp3). Но современные браузеры научились уже очень хорошо бороться с попапами, к тому же возможности управления дочерним окном средствами JS оказались совсем не кроссбраузерными и во многом зависели от персональных настроек пользователя. Переделывать весь сайт под AJAX было уже откровенно поздновато. Выход?

Только фреймы. Да-да, именно те самые страшные штуки, которые последний раз были описаны в спецификации HTML 4.01 в прошлом тысячелетии. Они были отличительной чертой Web 1.0 и успели выйти из моды в то время, как я ещё учился в школе. Если наобум спросить поисковик, скорее всего найдёте несколько рекомендаций обойтись без их использования. И всё же они оказались полезны.

Находящийся в невидимом фрейме простейший плеер из соседнего фрейма управляется куда лучше, чем из соседнего окна. Проблему целостности фреймовой структуры (обычно корректно сайты с фреймами выглядели только при заходе с главной страницы) помогло решить довольно изящное сочетание маленького JS-скрипта, проверящего окружение, и PHP кода, генерирующего недостающую часть на лету по результатам этой проверки. Ещё одну стандартную для фреймов проблему – корректное отображение URL в адресной строке браузера помогла решить свежая, считающаяся новым словом в вебе и таящая в себе полностью ещё не раскрытый потенциал технология HTML5 History API. Последняя, например, сейчас активно используется на сайте социальной сети вконтакте, хотя полноценная поддержка четырьмя основными браузерами появилась только около полугода тому назад.

В итоге чисто утилитарный, представительский сайт локальной фирмы заставил довольно неплохо пошевелить мозгами для создания с нуля собственного решения. Меня этот факт несколько приободряет в плане опыта и чсв, хотя к своему портфолио такую работу не пришьёшь.

З.Ы. прошу прощения у тех, кому может попасться сайт с такой настойчиво навязываемой музыкой. мопед не мой… ну, вы же понимаете, правда?

Read About one of my works in English.