March 24, 2017
by Alexey Kasaev

Quick fix for WordPress permalinks in Nginx

Most of the times I use pretty permalinks rather than default. By pretty I mean ‘Post Name’ or ‘Date and Name’.

These permalinks usually don’t work in Nginx unless you insert following line in your ‘location /’ block in nginx configuration file:

try_files $uri $uri/ /index.php?$args;

Final result should look like this:

location / {
try_files $uri $uri/ /index.php?$args;

This is very quick little fix. And maybe some of WordPress functionality still won’t work, but I will investigate that further.

March 24, 2017
by Alexey Kasaev

Resetting User Password in WordPress Through Database

WordPress usually stores user information in wp_users table. But usually doesn’t mean always. To be able to reset admin password, we need to find out table name.

SELECT table_name FROM information_schema.columns WHERE column_name = 'user_login';

| table_name    |
| blog_wp_users |
1 row in set (0,05 sec)

In this case, user information is stored in blog_wp_users table.

To select user information from the table (id, login and password):

SELECT id, user_login, user_pass FROM blog_wp_users;

| id | user_login      | user_pass                          |
|  1 | admin           | Ap$byabtnlgblmm$u7dcv5sm20rufe6jj/ |
|  7 | kasaev          | Gp$b0r/i5/$wcusj6lofhs7u.tpg0iecaf |
|  9 | merkushin       | $p$bg/mc52ua/.2cujsy1nz2lhzy.89zmh |
3 rows in set (0,00 sec)

To set a new password for user kasaev (that’s me):

UPDATE blog_wp_users SET user_pass = MD5('kasaev_password') WHERE id = 2;

That’s it.

May 2, 2015
by Alexey Kasaev

Removing Results Count on Product List Page in WooCommerce

When we were developing a new ecomm site with WooCommerce, we needed to adjust Product List Page slightly. We didn’t need a standard ‘Showing … results’ text.

We created a separate file in our ‘functions’ folder (and called it woocommerce.php). This file has all amendments that we apply to default woocommerce behaviour.

Add a reference to this file from your theme’s default function.php:

require_once ( get_stylesheet_directory() . '/functions/woocommerce.php' );

In this file write a following line:

remove_action('woocommerce_before_shop_loop', 'woocommerce_result_count', 20);

As from the code, this removes woocommerce_result_count action from woocommerce_before_shop_loop action which is called before showing your list of products.

Job done.

March 17, 2014
by Dmitry Merkushin

PHP Autotest for Test-driven Development

Test Driven Development (TDD) is a software development process based on writing a test before writing any line of code. This methodology is very useful, because it allows you to plan your application’s API while writing tests, and at the end you have two benefits: 1) ready specification for your app, 2) some assurance that your code is well-written.  This methodology requires you to follow these 3 steps repeatedly:

  1. Write a failing test
  2. Write code to pass this test
  3. Refactor your code (while making sure you pass this test)

These three steps are often called “Red, Green, Refactor” because of the test util output.

Every time you make any change to your code you run the tests. That’s why tests run very often.

Developers in Ruby have a tool to automate launch of the tests on each code change. It’s called “autotest”.  You run it before starting new development session and it repeatedly checks state of your files. I tried to find similar tool for PHP and found several tools written in Ruby, JavaScript, Shell, but PHP. So I decided to write my own solution. You can find it on github along with the instructions on how to install and use Autotest for PHP.

May 15, 2013
by Alexey Kasaev

Windows of New York

Collections of almost anything are very inspirational for me as well as people that share their collections with the rest of the world. A website that caught my eye recently is a collection of skeches of windows by José Guízar.

Photographs alone would be quite interesting but drawings are really impressive. Please welcome to

Windows of New York

April 8, 2013
by Alexey Kasaev

Расстояние до Марса

Расстояние до Марса (

Расстояние до Марса

Меня всегда поражали проекты, которые вроде бы не представляют чего-то особо ценного, но которые безумно интересно посмотреть один, или даже несколько раз.

Вот как раз один такой. Continue Reading →

December 17, 2012
by Alexey Kasaev

Немного разбираемся в MySQL

Несмотря на то, что я — дизайнер и верстальщик, мне довольно часто приходится настраивать очередной проект на собственном веб-сервере. Я использую Mac OS X Mountain Lion и Zend Server в качестве веб-сервера. Большое спасибо Дмитрию за то, что он написал подробное руководство по установке Zend Server — веб-сервер, который мы используем в Лаборатории. Как и написано в руководстве, я использую приложение Sequel Pro для управления базами данных.

Однако, недавно мне потребовалось выгрузить базу данных (одного из наших проектов) на свой локальный сервер. База с данными весила порядка 5 ГБ и, если саму выгрузку я сделал через Sequel Pro, то вот импорт Sequel Pro уже не потянуло — приложение подвисало и база импортировалась лишь частично. Continue Reading →

November 28, 2012
by Alexey Kasaev

Мой любимый проект вернулся

Вчера Дмитрий порадовал меня тем, что снова запустил мой любимый проект — Проект долгое время не работал после очередного переезда на новый сервер.

Идея проекта очень проста — при опечатке пользователь переходит на сайт, который является точной копией сайта Студии Артемия Лебедева, но все буквы внутри слов — перемешаны. Все абсолютно безобидно, все ссылки ведут на официальный сайт.

Долго пытался вспомнить, как и когда родилась идея, но так и не вспомнил. Зато, наткнулся на историческую запись в блоге. Оказывается, домен Дмитрий купил с аукциона на Вебнеймсе, тем самым спас его от того, чтобы стать еще одним доменом с «какой-то рекламной мутотенью про знакомства». Проект сделал за один день.

Точно помню, что изначально перемешивались все буквы в словах, из-за чего слова были не читаемыми. Впоследствии же стали перемешивать только буквы внутри слова, оставляя первую и последнюю буквы нетронутыми, что позволило с легкостью (почти всегда) читать слова. Подробнее этот эффект описан на Хабре. Оттуда же, скорее всего, был первый (и, надеюсь, не последний) приток траффика.

Надеюсь, что у этого проекта будет какое-то логичное продолжение, и что его ждет светлое будущее:-)


November 26, 2012
by Alexey Kasaev

History of FullCart

We call ourselves “Creogen! Media Laboratory”. This was the name for our company we came up with in 2000 or 2001.

We started to develop web-based projects since 1998 when we were 14 years old each or 28 years old in total. Now, 14 years later, when we are 28 years old each or 56 years old in total, we are still doing the same thing. We are still passionate about the web and we are still passionate about great products, great projects and great websites. These are not often to see on the Internet because of all the SPAM and rubbish and copycats, but these still make the Internet unique place that we all know, love and enjoy.

One of the projects we are working on at the moment is called FullCart. And it’s an eComm solution, which doesn’t sound like fun. But we enjoy working on it very much and we are excited about the final product.

When we first started to work on FullCart in 2011 we didn’t plan to release a (what you’d call) solution. We were mostly interested in releasing something that we could use internally to build websites for our customers easier and faster. Although we don’t think of ourselves as a web agency, sometimes we build websites (mostly small eComms) for the customers. A majority of the projects we do are for ourselves, so we are not looking to make any money of them (both me and Dmitry have daytime jobs). But building websites for the customers on occasion sounds like a good way of funding these projects.

Soon after we started FullCart we realized that what we do could possibly be to a good use by many people. So we focused on building an open source eComm solution.

In fact, we always knew we wanted to make an eComm. Dmitry came up with FullCart in 2009, this is when we first registered We just didn’t realize that what we started here, was what we always planned to do.

Since the very first moment we were inspired by the project. We wanted to develop a product with a very user-friendly interface, product that anyone could use without reading any documentation.

At that time I was inspired by the interface of WordPress (not anymore, though it is still very user-friendly). My closest friend Dmitry (developer behind the project) was also inspired by something. Don’t know exactly what it was, but what I know for sure is that he is passionate about writing clean and maintainable code. That is also the reason he doesn’t like most eComms or CMSes, most of them are very hard to maintain, they often use older technologies that currently exist.

That’s why we promised ourselves to use the latest technologies possible, to write the cleanest code possible that we could easily maintain and to make user interface (for both, store owner and user) as simple as possible.

Functionality of the FullCart needs to to be simple as well, but at the same time powerful enough to suite most of the businesses. We wanted to focus on the product catalogue and on the way products can be arranged into categories, but we also wanted a CMS to be powerful enough to handle many pages, their appearance and sidebar content. We also wanted to built in enough SEO features, that can be set and managed for both pages and products. We wanted an easy checkout process and ability to manage orders (both, for store administrator and for customer). And though we’ve been working on the project for almost a year now, we are still in the process of building and perfecting all these features.

This is why we decided to put our project on kickstarter. Kickstarter is a great place and great community that supports innovative projects in different fields from art to technology. We believe that FullCart fits perfectly into kickstarter. It is mainly because FullCart is made for those who are as passionate about innovations as we are. But it is also because we are open to share our ideas, to share our code and our product with everyone.

With this post I tried to tell you something about ourselves and about FullCart. In the following posts we will try to share some ideas behind the project and hopefully we will make it a success story.

November 8, 2012
by Dmitry Merkushin

Стиль кодирования

Кодирование часто считается черной работой в среде разрабочиков, тем не менее, это и есть наша основная деятельность. Можно сколько угодно заниматься проектированием архитектуры, интерфейсов и прочими важными делами, но в итоге мы придем к необходимости закодировать все то, что ранее столь тщательно проектировалось. И тут, казалось бы, за дело мог бы взяться малоквалифицированный специалист, ведь думать будто и не надо уже. На деле же, как многие знают, это один из крайне важных и ответственных моментов. От того, как проект будет закодирован, зависит в немалой степени и его будущее. Не только проектирование с использованием определенных шаблонов помогает сделать проект гибким и простым для дальнейшего развития, но нельзя пренебрегать и качеством кода. Continue Reading →