A Few Takeaways from Kyle Simpson's Talk at MallorcaJS Meetup

Kyle Simpson (@getify) gave a talk on the “economy of keystrokes” at the last MallorcaJS meetup on October 15th, 2019. Kyle's talk was sometimes eye-opening, sometimes encouraging and sometimes controversial but indeed worth listening to.

For those of you who don't know Kyle Simpson, It's an author of the “You don't know JS” book series, speaker, teacher and more. Kyle was invited to Mallorca by Trivago guys and kindly agreed to share his wisdom with MallorcaJS community.

I'd like to share a few takeaways from Kyle's talk with you because I believe it's something that every developer should contemplate.

XConf Europe 2019

XConf logo

XConf Europe 2019 took place in Barcelona on July 5th and it collected about 100-150 software-related professionals and I had the chance to attend it too. I'll share my impressions on the conference and its content in this brief post.

Is Drupal 8 really faster than its predecessor?

I have been told recently that the times when Drupal 8 was slow passed long ago, that increased number of abstractions in Drupal 8 doesn’t affect its performance, and that Drupal 7 hook system worse than Drupal 8 events in terms of speed. When I don’t believe, I measure and encourage others to do so.

From Let's Encrypt on one server to Certbot on another

Recently I had a task to transfer a few sites secured by Let's Encrypt certificates from one Ubuntu server to another. In this post, I'll share my experience in transferring SSL certificates - or better to say - reobtaining them.

PWA Recipe: Custom Offline Page for Drupal 8 Without a Single Line of Code

Who said that Progressive Web App (PWA) concepts are hard to implement or Drupal 8 is not ready for PWA? Here is a simple recipe to prove them wrong. Install SSL certificate (or use localhost). Install Service Worker Registration module. Copy service-worker.js, offline.html and manifest.json from Go...

Configuring Webpack LiveReload with Laravel.mix

You probably know that Laravel.elixir was replaced with Laravel.mix in Laravel 5.4. If Laravel.elixir was based on Gulp, then Laravel.mix is built on top of Webpack. Therefore, Gulp plugins are not suitable anymore and we have to replace them with Webpack plugins. Luckily, there is a webpack plugin for those who prefer LiveReload to BrowserSync.

Webpack LiveReload plugin will automatically monitor your files for changes and refresh the page when the changes are detected. In this short post I will show you how to make it work.

Realtime Apps With Laravel Echo: Tips and Tricks

Some time ago, I had the pleasure of developing a realtime app for my client. The app was based on Laravel, Node.js, Redis and Laravel Echo. During the process of development, I found a few things that can be not so obvious to developers who just started to tackle the problem of creating a realtime app with Laravel. In this post I’ll share my insights.

Laravel-localization middlewares now support route exceptions

We usually apply laravel-localization middlewares to the entire web route group. It means that laravel-localization package redirects broadcasting/auth route to en/broadcasting/auth, which crashes Event Broadcasting.

The problem is related to the fact that Laravel Echo Server does not support redirects (HTTP statuses other than 200) of the Laravel authorization service broadcasting/auth.

It is probably possible to improve Laravel Echo Server in order to support redirects, but from my point of view it is easier to solve the problem from the Laravel side.

Code Less in Drupal 8 with Drupal Console

Drupal Console brings a whole new developer experience (DX) to Drupal 8. This console tool is similar to Drush but has some mind-blowing features, which I cannot wait to show you in action. Although, Drupal Console is in RC stage at the moment, it performs its functions well enough.

In this tutorial, we will generate boilerplate code for Drupal 8 via command line. In some frameworks this approach can be also called scaffolding. With about five lines of custom code and a few console commands we will create a fully-functional Drupal 8 module with a field formatter that will display QR codes in fields of Link type. The module will be using a third-party service to generate QR codes of entered URLs.

Convert Laravel Tables from MyISAM into InnoDB

Some developers don't even know what MySQL storage engine is, and they don't need to know that today because the decision on what to use is made for them by framework developers. For example, Drupal uses InnoDB for its tables. It was not always that way though. I remember the time when we had to convert Drupal 5 tables into InnoDB on a site with intense load. It was so long ago, maybe in my previous life.

Until today, I thought (or I wanted to think) that all modern PHP frameworks use at least InnoDB by default (there are newer storage engines). It turned out that I was wrong. Today I noticed that tables of the Laravel 5.2 application I worked on were in MyISAM. You can’t even imagine my confusion.

A Quick Practical Intro to Vue.js

Vue.js Logo

You may have heard of or used such JavaScript frameworks as React, Angular and Ember. They are quite popular and have their pros and cons. I personally worked with Angular 1 and learned basic principles of others. You know there is no ideal framework, but there is one framework that I like more than others. It’s Vue.js

Vue.js (pronounced /vjuː/, like view) is a library for building interactive web interfaces. The goal of Vue.js is to provide the benefits of reactive data binding and composable view components with an API that is as simple as possible. (from docs).

Vue.js is used by many companies and people across the globe. The thing that attracts me more is that a few open source products believed in Vue and included it in their code base. The products are Laravel, PageKit and some others.

In this quick tutorial we’ll create a simple Vue.js component that will calculate the length of a word and display it on the fly. Let’s get started...

Three Simple Servers for Your Front-end Projects

We can't open index.html file of some front-end projects in a browser because it requires a web server with a virtual host configured. On the other hand, configuring a separate virtual host for every front-end experiment is a waste of time. Of course, you can automate it but today you don't have to.

I'll show you how to run a simple web server using PHP, Python or Node.js with one command. Here we go.

How to Fix the Error: This Page Is Not Secure Because of Mixed Content

Insecure resources warning in Chrome

You have just switched your site from HTTP to HTTPS but your browser is displaying mixed content warnings.

Mixed Content: The page at 'https://yoursite.com/article1' was loaded over HTTPS, but requested an insecure image 'http://example.com/insecure.png'. This content should also be served over HTTPS.

I’ll tell you how to handle this situation.

Typical Mistakes of Tech Conference Organizers

Empty Conference Room Photo

Some of you may know me as a local Drupal community coordinator and organizer of community events in Saint Petersburg. Even though I am not much involved in the Drupal community today, I still advise other conference organizers on their small-to-medium events.

In this post I am going to share mistakes, which organizers often make despite the fact that most of them are warned about potential pitfalls.

Drupal Is a Developer's Toy

Children Playing with Toys Photo

When I was younger, I was fond of experimenting with different kinds of operating systems and applications. The internet connection was, politely speaking, not so good. So my parents regularly bought me a Russian magazine, called Hacker, which contained a DVD disk with a number of shareware and freeware utilities for everyday use. Oh, I remember how eagerly I waited every new release of the magazine and then spent days carefully learning the content.

Susyboot - Bootstrap Grid Replacement Powered by Susy

Grid Series no. 1 Image(Philip Kirk, CC BY-NC-SA 2.0, модифицированное, https://www.flickr.com/photos/bigheadedrobot/3923311830/)

I like Bootstrap because, with this framework, I do not need to think about how to name grid classes. This decision has already been made for me. From project to project, my content manager and I know exactly which classes we should use for building a table of three columns. Those classes are even supported by WYSIWYG editors. Also, there are many good CMS plugins, which depend on the Bootstrap grid classes, for example Panels Bootstrap Layouts for Drupal.

Susy is light and flexible and I love it for that. With Susy, I build the grid the way I prefer by naming grid classes as it is required by the application context. And that’s awesome. However, my content manager is not very fond of Susy because she has to put some effort into splitting the article content into three columns and make it look nice on mobiles in case of using Susy.

Group Chats Negatively Affect Productivity

Group chats are helpful if used wisely. However, If you cannot concentrate on your work throughout the day because of your team chat, you are not alone.

I have just released my article "Do You Use Your Group Chat or the Group Chat Consumes You?" on Medium, where I discussed a group chat addiction and its consequences. In addition, I gave some tips on how to use group chats without the loss of productivity.

Why Else You Need HTTPS

komelin.com https lock in address bar

Everybody knows what the green lock in the browser address bar means. Briefly, it means security. But what if you have nothing to secure? What if you do not sell anything through your site and do not store any private data of your users. Well, it is in your interests to enable HTTPS, anyway. In this post, I will give you four reasons why.

HTTPS with Varnish

As you probably know, Varnish does not support SSL/TLS. This fact could mean for many people that their sites, which use Varnish as a proxy cache, would remain without HTTPS forever. It is not as bad as it sounds because you are now going to learn how to work out a solution.

Nginx is a really useful software because it can play multiple roles at once. You know that it is a quite efficient web server but it can work as a proxy server as well. In our case, it will become our SSL Termination Proxy.

Manipulating Views Programmatically

To create a custom presentation management dashboard for Showerma v2 I have learned how to clone, edit and delete views in Drupal 7 programmatically. Now I am going to share the results of my research.

REST in Peace - API Development in Drupal

Kate (@kalabro) and I (@kkomelin) were pleased to give a presentation at DrupalCamp Baltics 2015 in Tallinn, Estonia on August 28th.

The Journey to Drupal World

This presentation and speech were given at the closing session of DrupalCamp Helsinki 2014. ...

One Year of Drupal Community in Saint Petersburg, Russia

Hi there,

We've just celebrated our first Birthday. Hooray! And now I'm glad to share our story of success, give some advice to community leaders who are at the beginning of their way and ask feedback from others.

Drupal Meetup #5. Group Photo

Make a Decision on Using One Drupal Module or Another With Future Perspective in Mind

It's actually content of one of the emails that I send to my current team on regular basis, it's called "Tip of the Week". By sending such emails I share great ideas about the project, experience and best practices and sometimes news from the development world.

When we need to make strategic decision related to using this or that module I suggest learning other people experience.

Benefits of Contributing to Open Source for Companies

I’d like to briefly consider the benefits for companies which spend money and time to contribute to Open Source. I’m a contributor to Drupal extensions, so I will speak in the context of Drupal extensions, but the ideas mentioned should also be applicable for other Open Source systems and products.

Right Nginx Configuration for Drupal on Ubuntu

First of all I should mention that I have been working with Drupal for several years. I used to work with Apache, and I thank this great server for our long and productive relationship.

But one day I tried lighttpd and it changed my views a lot. It is easier to configure than Apache, it’s faster and lighter. By trying something new I understood that there are other ways which can fit my needs better. I’m still using lighttpd for some of my projects but my new passion is nginx.


Nginx is lightweight server with extensible features. It serves perfectly static files and it can be used as proxy cache server. So I decided to find the best configuration of this server for Drupal and I’ve done it.

3 Simple Ways to Declare Media Query

Declare media query through @media...

Own Responsive Grid for Drupal 7 Views Using SCSS and CSS3 Media Queries

Developing responsive websites I created simple 3 columns grid for Views. It is based on CSS3 media queries, selectors and SCSS. I’d like to share it with you.

5 Most Popular HTML5 Responsive Frameworks

HTML5 Boilerplate

Boilerplate is not a framework, nor does it prescribe any philosophy of development, it's just got some tricks to get your project off the ground quickly and right-footed.


Another Approach to Optimize Performance

You know, one of the most important tasks of performance optimization is to serve authenticated traffic. Opcode caches and NoSQL solutions can improve performance. But there is an absolutely different idea…

I met this idea in one of the videos from DrupalCon Denver 2012. Lead Developer of Al Jazeera high traffic blog Dick Olsson (aka. dixon_) talked about the project architecture.

5 Drush Commands Save Up to 30% of Drupal Administering Time

Clear cachedrush cc Run crondrush cron Download a projectdrush dl project_short_name Enable a projectdrush en project_short_name Install updatesdrush up project_short_name ...