Fork me on GitHub
Minko Gechev bio photo

Minko Gechev

1.61803399 == 42 //!!!

Twitter GitHub StackOverflow

All Posts

2017

Developing Statically Typed Programming Language

In this blog post we’ll go through a sample implementation of a type checker, interpreter and a transpiler for a basic purely functional programming language, which is based on the lambda calculus. We will do a “full-stack” programming language development ...

WebVR for a Gamified IDE

In the first part of this blog post I discuss the idea of using virtual reality for gamification of manual tasks in the software development process. I introduce a demo project which allows source code visualization and manipulation in a generated Minecraft...

7 Angular Tools That You Should Consider

In this article we’re going to quickly explore 7 Angular development tools which can make our everyday life easier. The purpose of the list is to not be opinionated architecture wise. This means that we’re not going to discuss tooling which has impact over ...

Announcing ngrev - Reverse Engineering Tool for Angular

Have you ever been hired to work on a huge legacy Angular project with thousands of NgModules, components, directives, pipes and services? Neither do I. Angular (2 and above) is still relatively new framework and there are not many enormous projects out the...

Implementing Angular's Dependency Injection in React. Understanding Element Injectors.

Recently I’ve been blogging mostly about Angular and it’s not by accident! Angular is an amazing framework, bringing a lot of innovation to the front-end technologies, with a great community behind it. In the same time, the projects that I’m working on have...

Distributing an Angular Library - The Brief Guide

In this post I’ll quickly explain the minimum you need to know in order to publish an Angular component to npm. By the end of the post you’ll know how your module can:

Angular in Production

In this informal essay I’ll go through a case study of my experience in using Angular (2 and above) in production.

2016

Ahead-of-Time Compilation in Angular

Recently I added Ahead-of-Time (AoT) compilation support to angular-seed and got a lot of questions about the new feature. In order to answer most of them, we will start from the beginning by explaining the following topics:

2.5X Smaller Angular 2 Applications with Google Closure Compiler

In the post “Building an Angular 2 Application for Production” we explored how we can decrease the bundle size of a “Hello world!” application to from about 1.6M (non-minified & uncompressed) to 49K! We did this by using the following techniques:

Using Stripe with Angular 2

Stripe offer a set of APIs which allow businesses and individuals to easily accept and manage payments online. In a typical scenario you want your users to pay for a service that you’re offering using Stripe as a mediator.

Building an Angular Application for Production

Progressive Web Applications help us build native-like web apps, thanks to amazing tools such as Service Workers, IndexDB, App Shell etc. Once the browser downloads all the static assets required by our app, the active Service Worker can cache them locally.

Implementing the Missing "resolve" Feature of the Angular 2 Router

For the last a couple of months I’m working on an Angular 2 based PWA. The more complex the application gets, the more I appreciate that our choice was Angular! For routing we’re using the initial Angular 2 router that is now deprecated. For sure we will mi...

Scalable Single-Page Application Architecture

In order to have better understanding of the following blog post you should be familiar with the fundamentals of the object-oriented and functional programming. I also strongly encourage you to explore the redux pattern.

Managing ambient type definitions and dealing with the "Duplicate identifier" TypeScript error

Maintaining the angular-seed, I found out that the most common problem for developers using the project is:

Static Code Analysis of Angular 2 and TypeScript Projects

So far, most of the blog posts I’ve written are tutorials; they explain how we can use given technologies, architectures, algorithm etc. For instance:

Enforcing Best Practices with Static Code Analysis of Angular 2 Projects

About two weeks ago I published the initial draft of a Community-driven Angular 2 Style Guide. It was based on:

ViewChildren and ContentChildren in Angular

In this article I’m going to explain the difference between the concepts of view children and content children in Angular. We will take a look at how we can pass access these two different kinds of children from their parent component. Along the content we ...

2015

Dynamically Configuring the Angular's Router

Warning: This version of the Angular 2 router is now deprecated! This means that soon the used below APIs will no longer be available.

Angular 2 Hot Loader

A couple of months ago I watched a few talks from ReactEurope. I was truly impressed by a few of them and especially by the one by Dan Abramov on redux and his hot loader. The tool he shown helps you do something similar to live-reload with one big differen...

Lazy Loading of Route Components in Angular 2

Warning: This version of the Angular 2 router is now deprecated! This means that soon the used below APIs will no longer be available.

Aspect-Oriented Programming in JavaScript

Note: The following blog post is based on the library aspect.js, which can be found here.

Flux in Depth. Store and Network Communication.

This is the second, and probably be the last, blog post of the series “Flux in Depth”. In the first post we did a quick overview of flux, took a look at the stateless, pure components, immutable data structures and component communication. This time, we’re ...

Using JSX with TypeScript

JavaScript is a weird language although, we love it the way it is. However, I’ve had quite a painful experience working on big JavaScript projects. It was painful in the same way it gets painful working on huge Ruby, Python, PHP projects.

Flux in Depth. Overview and Components.

This is the first blog post of the series “Flux in Depth”. Is this “yet the another flux tutorial”? What I have seen so far, while researching flux, were mostly “how-to” tutorials (usually with todo applications), which describe the main components of given...

Even Faster AngularJS Data Structures

This is the last post of the series “Boost the Performance of an AngularJS Application Using Immutable Data”. I strongly recommend you to take a look at the previous two parts before continue reading this content. You can find them at: Part 1 Part 2

Boost the Performance of an AngularJS Application Using Immutable Data - Part 2

A few weeks ago I posted the article “Boost the Performance of an AngularJS Application Using Immutable Data”. It shows how to speedup your AngularJS application when having a lot of bindings to big data collections. The idea behind the optimization is quit...

Angular2 - First Impressions

On 18th of September 2014 was pushed the initial commit of version 2.0 of the AngularJS framework. A few weeks ago the core team at Google, published AngularJS’ 2.0 website and gave a couple of talks on ng-conf about their new router, change detection, temp...

Build Your own Simplified AngularJS in 200 Lines of JavaScript

My practice proved that there are two good/easy ways to learn a new technology:

Persistent State of ReactJS Component

ReactJS is a framework, by facebook, which adds some well known concepts into the UI development. Each UI could be represented as a state machine but when the state of this state machine could be changed from a lot of places everything gets quite messy, com...

Boost the Performance of an AngularJS Application Using Immutable Data

I have affinity to functional programming since my first year in college. During my initial contact with a purely functional programming language (Haskell in my case) I didn’t really understand all the advantages it provides, everything was reduced to just ...

Processing Binary Protocols with Client-Side JavaScript

Last couple of weeks I’m trying to build high-performance consumption of binary protocol through the browser. The protocol is running over TCP. In the perfect world I’d be talking with the remote TCP server, through TCP sockets, connecting directly from the...

2014

Stream your Desktop to HTML5 Video Element

In this blog post I’ll share how you can stream your desktop to HTML5 video element.

Multi-User Video Conference with WebRTC

This is a tutorial for how to implement a multi-user video conference with WebRTC, AngularJS and Yeoman. It also includes a detailed explanation of how WebRTC works, how the peer to peer connections are being established and how the ICE (Interactive-Connect...

Asynchronous calls with ES6 generators

ES6 generators have landed in Chrome 39 Beta on 9th of October and are already available in the stable version. This means that brand new development practices are already applicable, although for supporting older browsers you might need to fallback to the ...

Binary Tree iterator with ES6 generators

ES6 specification is being clarified every passed day! One of the key features of the new version of the language are the generators. Generators (a.k.a. semicoroutines) will play quite important role after they are being officially released. They could be u...

WebRTC chat with React.js

In this blog post I’m going to share how could be build WebRTC chat with React.js. Before we continue lets describe briefly what React.js and WebRTC are.

AngularJS in Patterns (Part 3)

This publication aims to provide a more theoretical overview of some of the AngularJS components in order to show you how the things you are already familiar with (like different Object-Oriented Design Patterns) fit in the picture.

AngularJS in Patterns (Part 2). Services.

This publication aims to provide a more theoretical overview of some of the AngularJS components in order to show you how the things you are already familiar with (like different Object-Oriented Design Patterns) fit in the picture.

Using GitHub Pages with Jekyll!

I’m switching to GitHub pages with Jekyll. There are several reasons behind my decision:

AngularJS in Patterns (Part 1). Overview of AngularJS

In this series of blog posts I’m going to cover the paper I’m writing at GitHub.

Singleton in JavaScript

Wikipedia describes the singleton design pattern as:

Express over HTTPS

Sometimes you want to test your application in environment closer to the real world. In such cases you might need to run it over TLS.

What I get from the JavaScript MV* frameworks

Why should I use JavaScript MVC, MVVM, MVP or simply MVW(hatever works for you)?

Remote Desktop Client with AngularJS and Yeoman

In this blog post I’m going to show you how to build a VNC client using AngularJS and Yeoman. The source code used in the post is available at my GitHub. Click here to see the final result.

The magic of $resource (or simply a client-side Active Record)

At first sight AngularJS seems like a magical framework, which does some weird but awesome things like dependency injection, data binding only by setting a single property to the magical object named $scope and many other things.

2013

AngularJS Inheritance Patterns

Since AngularJS does not provide any built-in features for using inheritance, in this blog post I’ll describe how the general JavaScript inheritance patterns can be applied to AngularJS components.

AngularAOP v0.1.0

In this blog post I’ll introduce you the new way of annotating services included in AngularAOP v0.1.0.

Advanced JavaScript at Sofia University

In this blog post I’ll tell few words about the course Advanced JavaScript which Georgi Penkov, Evgeni Kunev and me are leading this semester in Sofia University.

AngularJS style guide

Today I created a GitHub repository which contains a set of good practices and style guides for AngularJS application development.

Lazy prefetching of AngularJS partials

This blog post is concentrated about web performance. I’ll skip the well known stuff about combining images into sprites, inlining images, DNS pre-fetching, combining and minifying script files, gzipping and so on. There are plenty of articles and tools whi...

VNC client on 200 lines of JavaScript

In this quick blog post I’ll show you how to create a simple VNC client in about 200 lines of JavaScript. For our goal we’re going to use only HTML5 and JavaScript (client and server side). The end result will be something like this:

Aspect-Oriented Programming with AngularJS

In the following blog post I’ll write few words about what is Aspect-Oriented Programming, why I think it will be useful in AngularJS and I’m also going to give you a short tutorial for using a simple AOP framework I’ve developed.

CSS3 flipping effect

As you know because of the SIMD nature of the GPU it’s extremely good for graphical calculations. Since HTML5 and CSS3 are here we have a couple of ways for efficient and smooth animations one of them are the CSS3 transitions.

Why I should use publish/subscribe in JavaScript

This post is inspired by my answer at StackOverflow.

Practical programming with JavaScript

Before few months I was invited by Telerik Academy to make a talk about JavaScript. Last Monday Marian Kostadinov, Radoslav Georgiev and me made a whole seminar about the topic. I’m addicted to the Object-Oriented programming so I choose to talk about that....

JavaScript, the weird parts

To say that JavaScript is becoming more and more popular is such a typical and boring way to start such an awesome post…Anyway, JavaScript is becoming more and more popular each day…There’s client-side JavaScript with awesome API, you can do whatever you wi...

Functional programming with JavaScript

This article is about the functional concepts of JavaScript. Some of them are built-in the languages, others extra implemented but all of them are very common for purely functional languages like Haskell. First I want to tell what I mean with the term purel...

plainvm

plainvm can take the virtualization into different level of usage. To prove this I’ll first ask few rhetorical questions and put their answers…Which is the programming language which everyone has interpreter for? Java? Actually no! Does iOS supports Java ap...

2012

Looking for performance? Probably you should NOT use [].sort (V8)

A few days ago, I’ve created a GitHub repository. It’s main goal was to collect different algorithms with implementations in JavaScript. I started with basic ones – sorting (insertion, selection, bubble sort..). After that I implemented few “more advance” l...

JavaScript image scaling

I haven’t wrote here for a while so I decided to write about something more practical. Actually the idea for the post come from one my response in stackoverflow. The post is connected with pure client side image scaling. While you’re reading the example I h...

ELang

And one more blog post by me! It’s going to be in brand new topic than the others. For about an year and a half I’ve got an idea which I wanted to accomplish…To create my own simple programming language. Actually it’s very useful task and quite interesting....

Caching CSS with localStorage

Since HTML5 became wide supported the most popular aspects I hear about were it’s canvas, WebSockets and localStorage. I’ve got very close experience with the first two of the mentioned but the localStorage was somehow unknown for me since a month. I’ve res...

Self-invoking functions in JavaScript (or Immediately Invoked Function Expressions)

JavaScript is a bit of a strange language, sometimes doing strange things if you don’t follow best practices and if you’re not familiar with the ECMA standard. There are numerous strange things in the JavaScript syntax, one of those being the self-executing...

Asus N56VZ + Ubuntu 12.04 (en)

It seems that it’s common a problem to setup Ubuntu on the new Asus N56VZ so I decided to create an English version of my post. I was struggling with three issues about two weeks. Here are they:

Asus N56VZ + Ubuntu 12.04

Един пост на български, защото мисля, че ще бъде по-полезен.

Debian Squeeze + LXDE on Google Nexus S (or having some fun while suffering)

I’m here again, after a long pause. For a while I’ve got problems with my health and I’m nailed at home…so I’ve go a lot of free time. Last night I’ve decided to root my Google Nexus S. I use Ubuntu

HTML5 image editor

As you see HTML5 is everywhere (of course I exclude IE…or just before version 10). Web site used for quick image composition or edition is something very useful for the “modern web person”. There are few such services. Most of them use Flash. Nothing agains...

Курсови проекти – ФМИ

Тъй като съм вече студент 3-ти курс във ФМИ и курсовите проекти се натрупаха, мисля че мога да бъда полезен на “младото поколение ФМИ-исти”, като предоставя една страница с връзки към кода, който съм разработил. Това ще можете да намерите в новата секция на...

SofiaJS…

В потребителската група SofiaJS последните няколко месеца се случиха доста интересни неща, а на мен все не ми остава време, за да блогна за тях… След хубавата лекция на Асен Божилов (за Google Chrome Extensions) и дискусията, която проведохме, Асен се включ...

Carousel Gallery

And one post in English…For few days I’m developing one jQuery UI plugin. It’s picture gallery which I’ve seen in flash but not in JavaScript, that’s why I decided to fix this. The gallery is a set of rotating pictures and difference ways of handling the pe...

Color animation plugin for jQuery

Hi! I haven’t wrote since a long time but there’s so much code and so little time…It’s bad that the biggest part of the code is not open source but what can we do…Last few hours I developed a JavaScript plugin for color animation. Of course for few hours I ...

2011

SofiaJS

Преди няколко месеца внезапно (както май често става) започнах да мисля за програмиране (как ли така…) и най-вече за JavaScript. Забелязах как все повече програмисти се насочват към този език, как все повече започва да се използва навсякъде (дори за server-...

Sound notification in web page

Few days ago I was creating a system in which it was necessary to implement a sound notification feature. Well it’s not very hard task but of course you have to be careful with the browser compatibility. At first my source was something like that:

f8…

Тази сутрин пуснах прословутата f8…Бях с големи очаквания (дори поствах за нея), може би заради слабата ми информираност очаквах нещо като Google I/O (има си Google…защо не потърсих предварително…). Streaming-a тръгна и очаквано видях Марк Зукърбърг. Вместо...

f8

Ето нещо интересно, което ще можем да следим онлайн утре сутрин:

Google+ API

Като всеки любознателен developer и аз се включих към хората, които искат да получат mail от Google при пускането на API за Google+. Вчера (15-ти септември) около 1 часа получих следния mail:

Ajax without jQuery for beginners

Before years I was writing all the code by my own, without additional libraries (including jQuery). For beginner developer it’s a good strategy. When you use $.ajax it’s all that easy:

Blogger image resize

That’s my second post here and the first one which is going to have any sense. Today a friend of mine was fighting with Google’s blog system…He was posting some data with images in it. When he was setting width and height of images in the html editor they w...

Hello world!

Hey,