41554 blogs · [ { "id": "01a08750-129a-716f-91f0-01e10c8c7802", "title": "skillgrade", "url": "https://blog.mgechev.com/2026/03/14/skillgrade/", "published_at": "2026-03-14T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d055b01c", "title": "Unit Tests for AI Agent Skills", "url": "https://blog.mgechev.com/2026/02/26/skill-eval/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d0a8b993", "title": "You Should Care About AI", "url": "https://blog.mgechev.com/2025/11/07/you-should-care-about-ai/", "published_at": "2025-11-07T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d19ebcd0", "title": "Generative Development", "url": "https://blog.mgechev.com/2025/10/20/generative-development/", "published_at": "2025-10-20T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d1cb81b3", "title": "LLM-first Web Framework", "url": "https://blog.mgechev.com/2025/04/19/llm-first-web-framework/", "published_at": "2025-04-19T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d22ac58c", "title": "Reactive framework in ~200 lines of JavaScript", "url": "https://blog.mgechev.com/2025/01/09/minimal-reactive-framework/", "published_at": "2025-01-09T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d26de405", "title": "Managing Angular", "url": "https://blog.mgechev.com/2024/08/25/managing-angular/", "published_at": "2024-08-25T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d2e61b3c", "title": "Are LLMs going to replace us?", "url": "https://blog.mgechev.com/2024/05/28/are-llms-going-to-replace-us/", "published_at": "2024-05-28T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d34e6e35", "title": "Prefetching Heuristics", "url": "https://blog.mgechev.com/2021/02/07/prefetching-strategies-heuristics-faster-web-apps/", "published_at": "2021-02-07T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d358bb05", "title": "Design Patterns in Open Source Projects - Part II", "url": "https://blog.mgechev.com/2021/01/24/design-pattens-in-open-source-projects-part-ii/", "published_at": "2021-01-24T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d4015f94", "title": "Design Patterns in Open Source Projects - Part I", "url": "https://blog.mgechev.com/2021/01/18/design-pattens-in-open-source-projects-part-i/", "published_at": "2021-01-18T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d4c6fa8f", "title": "What I learned doing 125 public talks - Part I", "url": "https://blog.mgechev.com/2020/11/26/what-i-learned-doing-100-public-talks-part-i/", "published_at": "2020-11-26T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d556e7e2", "title": "Dynamic imports solve all the problems, right?", "url": "https://blog.mgechev.com/2019/05/11/dynamic-imports-javascript/", "published_at": "2019-05-11T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d586d483", "title": "5 Angular CLI Features You Didn't Know About", "url": "https://blog.mgechev.com/2019/02/06/5-angular-cli-features/", "published_at": "2019-02-06T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d5ec9770", "title": "Angular quicklink Preloading Strategy", "url": "https://blog.mgechev.com/2018/12/24/quicklink-angular-prefetching-preloading-strategy/", "published_at": "2018-12-24T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d6766146", "title": "Introducing Bazel Schematics for Angular CLI", "url": "https://blog.mgechev.com/2018/12/17/introduction-bazel-schematics-angular-cli/", "published_at": "2018-12-17T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d72d03ae", "title": "Building TypeScript Projects with Bazel", "url": "https://blog.mgechev.com/2018/11/19/introduction-bazel-typescript-tutorial/", "published_at": "2018-11-19T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d762dfc4", "title": "Joining Google", "url": "https://blog.mgechev.com/2018/11/02/joining-google/", "published_at": "2018-11-02T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d81be124", "title": "Playing Mortal Kombat with TensorFlow.js. Transfer learning and data augmentation", "url": "https://blog.mgechev.com/2018/10/20/transfer-learning-tensorflow-js-data-augmentation-mobile-net/", "published_at": "2018-10-20T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d8e05cb6", "title": "Fast, extensible, configurable, and beautiful linter for Go", "url": "https://blog.mgechev.com/2018/05/28/revive-golang-golint-linter/", "published_at": "2018-05-28T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955d95aacbe", "title": "Introducing Guess.js - a toolkit for enabling data-driven user-experiences on the Web", "url": "https://blog.mgechev.com/2018/05/09/introducing-guess-js-data-driven-user-experiences-web/", "published_at": "2018-05-09T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955da412b60", "title": "Machine Learning-Driven Bundling. The Future of JavaScript Tooling.", "url": "https://blog.mgechev.com/2018/03/18/machine-learning-data-driven-bundling-webpack-javascript-markov-chain-angular-react/", "published_at": "2018-03-18T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955db2cbe67", "title": "JavaScript Decorators for Declarative and Readable Code", "url": "https://blog.mgechev.com/2018/01/29/javascript-decorators-aop-autobind-memoization/", "published_at": "2018-01-29T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955dc20e3e7", "title": "3 Tricks For Using Redux and Immutable.js with TypeScript", "url": "https://blog.mgechev.com/2018/01/18/react-typescript-redux-immutable/", "published_at": "2018-01-18T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955dc7cdaa2", "title": "Follow Your Dream Career with Open Source. Personal Story.", "url": "https://blog.mgechev.com/2017/12/28/career-development-open-source-get-started/", "published_at": "2017-12-28T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955dd060a00", "title": "Redux Anti-Patterns - Part 1. State Management.", "url": "https://blog.mgechev.com/2017/12/07/redux-anti-patterns-race-conditions-state-management-duplication/", "published_at": "2017-12-07T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955dd0f817a", "title": "Faster Angular Applications - Understanding Differs. Developing a Custom IterableDiffer", "url": "https://blog.mgechev.com/2017/11/14/angular-iterablediffer-keyvaluediffer-custom-differ-track-by-fn-performance/", "published_at": "2017-11-17T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955dd7cb0a0", "title": "Faster Angular Applications - Part 2. Pure Pipes, Pure Functions and Memoization", "url": "https://blog.mgechev.com/2017/11/12/faster-angular-applications-pure-pipes-memoization-pure-functions-part-2/", "published_at": "2017-11-12T00:00:00+00:00" }, { "id": "01a08750-129b-70e2-8860-3955ddffb471", "title": "Faster Angular Applications - Part 1. On Push Change Detection and Immutability", "url": "https://blog.mgechev.com/2017/11/11/faster-angular-applications-onpush-change-detection-immutable-part-1/", "published_at": "2017-11-11T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfdd5af11b", "title": "Understanding Dynamic Scoping and TemplateRef", "url": "https://blog.mgechev.com/2017/10/01/angular-template-ref-dynamic-scoping-custom-templates/", "published_at": "2017-10-01T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfde18bb1f", "title": "Implementing a Simple Compiler on 25 Lines of JavaScript", "url": "https://blog.mgechev.com/2017/09/16/developing-simple-interpreter-transpiler-compiler-tutorial/", "published_at": "2017-09-16T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfdee5f05b", "title": "Developing Statically Typed Programming Language", "url": "https://blog.mgechev.com/2017/08/05/typed-lambda-calculus-create-type-checker-transpiler-compiler-javascript/", "published_at": "2017-08-05T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfdf43c824", "title": "WebVR for a Gamified IDE", "url": "https://blog.mgechev.com/2017/06/25/virtual-reality-for-a-gamified-ide-ngworld-angular/", "published_at": "2017-06-25T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfdfb2959b", "title": "7 Angular Tools That You Should Consider", "url": "https://blog.mgechev.com/2017/04/23/angular-tooling-codelyzer-angular-cli-ngrev/", "published_at": "2017-04-23T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe0900faf", "title": "Announcing ngrev - Reverse Engineering Tool for Angular", "url": "https://blog.mgechev.com/2017/04/09/reverse-engineering-for-angular-ngrev/", "published_at": "2017-04-09T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe1183dfe", "title": "Implementing Angular's Dependency Injection in React. Understanding Element Injectors.", "url": "https://blog.mgechev.com/2017/01/30/implementing-dependency-injection-react-angular-element-injectors/", "published_at": "2017-01-30T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe1f1bf90", "title": "Distributing an Angular Library - The Brief Guide", "url": "https://blog.mgechev.com/2017/01/21/distributing-an-angular-library-aot-ngc-types/", "published_at": "2017-01-21T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe2ecbced", "title": "Angular in Production", "url": "https://blog.mgechev.com/2017/01/17/angular-in-production/", "published_at": "2017-01-17T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe3698a68", "title": "Ahead-of-Time Compilation in Angular", "url": "https://blog.mgechev.com/2016/08/14/ahead-of-time-compilation-angular-offline-precompilation/", "published_at": "2016-08-14T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe381c3d2", "title": "2.5X Smaller Angular 2 Applications with Google Closure Compiler", "url": "https://blog.mgechev.com/2016/07/21/even-smaller-angular2-applications-closure-tree-shaking/", "published_at": "2016-07-21T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe3b780d9", "title": "Using Stripe with Angular (Deprecated)", "url": "https://blog.mgechev.com/2016/07/05/using-stripe-payment-with-angular-2/", "published_at": "2016-07-05T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe4452487", "title": "Building an Angular Application for Production", "url": "https://blog.mgechev.com/2016/06/26/tree-shaking-angular2-production-build-rollup-javascript/", "published_at": "2016-06-26T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe45af98a", "title": "Implementing the Missing \"resolve\" Feature of the Angular 2 Router", "url": "https://blog.mgechev.com/2016/05/21/angular2-router-implementing-missing-resolve-feature-deprecated-defer/", "published_at": "2016-05-21T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe553757a", "title": "Scalable Single-Page Application Architecture", "url": "https://blog.mgechev.com/2016/04/10/scalable-javascript-single-page-app-angular2-application-architecture/", "published_at": "2016-04-10T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe636180e", "title": "Managing ambient type definitions and dealing with the \"Duplicate identifier\" TypeScript error", "url": "https://blog.mgechev.com/2016/03/28/ambient-type-definitions-duplicate-identifier-typescript-fix/", "published_at": "2016-03-28T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe6f2f51a", "title": "Static Code Analysis of Angular 2 and TypeScript Projects", "url": "https://blog.mgechev.com/2016/02/29/static-code-analysis-angular-typescript/", "published_at": "2016-02-29T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe768e6a1", "title": "Enforcing Best Practices with Static Code Analysis of Angular 2 Projects", "url": "https://blog.mgechev.com/2016/02/18/angular2-style-guide-best-practices-lint-tslint/", "published_at": "2016-02-18T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe7ed9ec0", "title": "ViewChildren and ContentChildren in Angular", "url": "https://blog.mgechev.com/2016/01/23/angular2-viewchildren-contentchildren-difference-viewproviders/", "published_at": "2016-01-23T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe8ec88bb", "title": "Dynamically Configuring the Angular's Router", "url": "https://blog.mgechev.com/2015/12/30/angular2-router-dynamic-route-config-definition-creation/", "published_at": "2015-12-30T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe9567a25", "title": "Angular 2 Hot Loader", "url": "https://blog.mgechev.com/2015/10/26/angular2-hot-loader-hot-loading-tooling/", "published_at": "2015-10-26T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfe9bf2d2b", "title": "Lazy Loading of Route Components in Angular 2", "url": "https://blog.mgechev.com/2015/09/30/lazy-loading-components-routes-services-router-angular-2/", "published_at": "2015-09-30T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfea4cf360", "title": "Aspect-Oriented Programming in JavaScript", "url": "https://blog.mgechev.com/2015/07/29/aspect-oriented-programming-javascript-aop-js/", "published_at": "2015-07-29T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfeb1dad67", "title": "Flux in Depth. Store and Network Communication.", "url": "https://blog.mgechev.com/2015/07/18/flux-in-depth-store-network-communication-services/", "published_at": "2015-07-18T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfebf48255", "title": "Using JSX with TypeScript", "url": "https://blog.mgechev.com/2015/07/05/using-jsx-react-with-typescript/", "published_at": "2015-07-05T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfec69e9a4", "title": "Flux in Depth. Overview and Components.", "url": "https://blog.mgechev.com/2015/05/15/flux-in-depth-overview-components/", "published_at": "2015-05-15T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfed1405c8", "title": "Even Faster AngularJS Data Structures", "url": "https://blog.mgechev.com/2015/04/20/fast-angular-data-structures-versionable/", "published_at": "2015-04-20T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfed6f1501", "title": "Boost the Performance of an AngularJS Application Using Immutable Data - Part 2", "url": "https://blog.mgechev.com/2015/04/11/immutability-in-angularjs-immutablejs-part-2/", "published_at": "2015-04-11T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfed90e8ad", "title": "Angular2 - First Impressions", "url": "https://blog.mgechev.com/2015/04/06/angular2-first-impressions/", "published_at": "2015-04-06T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfee665dd5", "title": "Build Your own Simplified AngularJS in 200 Lines of JavaScript", "url": "https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/", "published_at": "2015-03-09T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfee800d06", "title": "Persistent State of ReactJS Component", "url": "https://blog.mgechev.com/2015/03/05/persistent-state-reactjs/", "published_at": "2015-03-05T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfef7d8965", "title": "Boost the Performance of an AngularJS Application Using Immutable Data", "url": "https://blog.mgechev.com/2015/03/02/immutability-in-angularjs-immutablejs/", "published_at": "2015-03-02T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bfefc73059", "title": "Processing Binary Protocols with Client-Side JavaScript", "url": "https://blog.mgechev.com/2015/02/06/parsing-binary-protocol-data-javascript-typedarrays-blobs/", "published_at": "2015-02-06T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bff0383399", "title": "Stream your Desktop to HTML5 Video Element", "url": "https://blog.mgechev.com/2014/12/31/stream-desktop-html5-video-vlc/", "published_at": "2014-12-31T00:00:00+00:00" }, { "id": "01a08750-129c-7058-ab1b-c3bff1317662", "title": "Multi-User Video Conference with WebRTC", "url": "https://blog.mgechev.com/2014/12/26/multi-user-video-conference-webrtc-angularjs-yeoman/", "published_at": "2014-12-26T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52aecf786d", "title": "Asynchronous calls with ES6 generators", "url": "https://blog.mgechev.com/2014/12/21/handling-asynchronous-calls-with-es6-javascript-generators/", "published_at": "2014-12-21T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52af3faadc", "title": "Binary Tree iterator with ES6 generators", "url": "https://blog.mgechev.com/2014/09/12/binary-tree-iterator-with-es6-generators/", "published_at": "2014-09-12T19:07:34+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b00bebae", "title": "WebRTC chat with React.js", "url": "https://blog.mgechev.com/2014/09/03/webrtc-peer-to-peer-chat-with-react/", "published_at": "2014-09-03T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b0d7ae83", "title": "AngularJS in Patterns (Part 3)", "url": "https://blog.mgechev.com/2014/07/05/angularjs-in-patterns-part-3/", "published_at": "2014-07-05T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b11dccae", "title": "AngularJS in Patterns (Part 2). Services.", "url": "https://blog.mgechev.com/2014/06/08/angularjs-in-patterns-part-2-services/", "published_at": "2014-06-08T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b1e2988a", "title": "Using GitHub Pages with Jekyll!", "url": "https://blog.mgechev.com/2014/05/28/welcome-to-jekyll/", "published_at": "2014-05-28T16:36:34+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b1e8cc88", "title": "AngularJS in Patterns (Part 1). Overview of AngularJS", "url": "https://blog.mgechev.com/2014/05/08/angularjs-in-patterns-part-1-overview-of-angularjs/", "published_at": "2014-05-08T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b21471c1", "title": "Singleton in JavaScript", "url": "https://blog.mgechev.com/2014/04/16/singleton-in-javascript/", "published_at": "2014-04-16T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b2d4dce5", "title": "Express over HTTPS", "url": "https://blog.mgechev.com/2014/02/19/create-https-tls-ssl-application-with-express-nodejs/", "published_at": "2014-02-19T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b3cfba45", "title": "What I get from the JavaScript MV* frameworks", "url": "https://blog.mgechev.com/2014/02/12/what-i-get-from-the-javascript-mv-mvw-frameworks/", "published_at": "2014-02-12T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b4b24624", "title": "Remote Desktop Client with AngularJS and Yeoman", "url": "https://blog.mgechev.com/2014/02/08/remote-desktop-vnc-client-with-angularjs-and-yeoman/", "published_at": "2014-02-08T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b52a6600", "title": "The magic of $resource (or simply a client-side Active Record)", "url": "https://blog.mgechev.com/2014/02/05/angularjs-resource-active-record-http/", "published_at": "2014-02-05T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b615499a", "title": "AngularJS Inheritance Patterns", "url": "https://blog.mgechev.com/2013/12/18/inheritance-services-controllers-in-angularjs/", "published_at": "2013-12-18T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b6c99dee", "title": "AngularAOP v0.1.0", "url": "https://blog.mgechev.com/2013/12/04/angularaop-v0-1-0/", "published_at": "2013-12-04T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b7baeec1", "title": "Advanced JavaScript at Sofia University", "url": "https://blog.mgechev.com/2013/10/24/advanced-javascript-in-sofia-university/", "published_at": "2013-10-24T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b8acd53c", "title": "AngularJS style guide", "url": "https://blog.mgechev.com/2013/10/06/angularjs-style-guide/", "published_at": "2013-10-06T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b926827a", "title": "Lazy prefetching of AngularJS partials", "url": "https://blog.mgechev.com/2013/10/01/angularjs-partials-lazy-prefetching-strategy-weighted-directed-graph/", "published_at": "2013-10-01T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52b9811556", "title": "VNC client on 200 lines of JavaScript", "url": "https://blog.mgechev.com/2013/08/30/vnc-javascript-nodejs/", "published_at": "2013-08-30T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52ba7ae1d9", "title": "Aspect-Oriented Programming with AngularJS", "url": "https://blog.mgechev.com/2013/08/07/aspect-oriented-programming-with-javascript-angularjs/", "published_at": "2013-08-07T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bb1c723b", "title": "CSS3 flipping effect", "url": "https://blog.mgechev.com/2013/05/04/css3-flipping-effect/", "published_at": "2013-05-04T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bbce3c10", "title": "Practical programming with JavaScript", "url": "https://blog.mgechev.com/2013/04/24/practical-programming-with-javascript/", "published_at": "2013-04-24T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bcafd9f5", "title": "Why I should use publish/subscribe in JavaScript", "url": "https://blog.mgechev.com/2013/04/24/why-to-use-publishsubscribe-in-javascript/", "published_at": "2013-04-24T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bd1a67f4", "title": "JavaScript, the weird parts", "url": "https://blog.mgechev.com/2013/02/22/javascript-the-weird-parts/", "published_at": "2013-02-22T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52be17f08a", "title": "Functional programming with JavaScript", "url": "https://blog.mgechev.com/2013/01/21/functional-programming-with-javascript/", "published_at": "2013-01-21T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bea488f5", "title": "plainvm", "url": "https://blog.mgechev.com/2013/01/11/virtualization-into-the-browser/", "published_at": "2013-01-11T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bf3c2e40", "title": "Looking for performance? Probably you should NOT use [].sort (V8)", "url": "https://blog.mgechev.com/2012/11/24/javascript-sorting-performance-quicksort-v8/", "published_at": "2012-11-24T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52bf8fed42", "title": "JavaScript image scaling", "url": "https://blog.mgechev.com/2012/11/02/javascript-html5-scale-image/", "published_at": "2012-11-02T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c08569cb", "title": "ELang", "url": "https://blog.mgechev.com/2012/09/15/creating-your-own-programming-language/", "published_at": "2012-09-15T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c0dfc566", "title": "Caching CSS with localStorage", "url": "https://blog.mgechev.com/2012/09/04/caching-css-in-the-localstorage/", "published_at": "2012-09-04T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c0e7ed77", "title": "Self-invoking functions in JavaScript (or Immediately Invoked Function Expressions)", "url": "https://blog.mgechev.com/2012/08/29/self-invoking-functions-in-javascript-or-immediately-invoked-function-expression/", "published_at": "2012-08-29T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c1594305", "title": "Asus N56VZ + Ubuntu 12.04 (en)", "url": "https://blog.mgechev.com/2012/08/19/asus-n56vz-ubuntu-12-04-en/", "published_at": "2012-08-19T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c24bf5ae", "title": "Asus N56VZ + Ubuntu 12.04", "url": "https://blog.mgechev.com/2012/07/22/asus-n56vz-ubuntu-12-04/", "published_at": "2012-07-22T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c2fcd0a6", "title": "Debian Squeeze + LXDE on Google Nexus S (or having some fun while suffering)", "url": "https://blog.mgechev.com/2012/07/08/debian-squeeze-lxde-on-google-nexus-s-or-having-some-fun-while-suffering/", "published_at": "2012-07-08T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c34724ce", "title": "HTML5 image editor", "url": "https://blog.mgechev.com/2012/04/25/html5-image-editor/", "published_at": "2012-04-25T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c353c0b9", "title": "Курсови проекти – ФМИ", "url": "https://blog.mgechev.com/2012/03/31/%d0%ba%d1%83%d1%80%d1%81%d0%be%d0%b2%d0%b8-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b8-%d1%84%d0%bc%d0%b8/", "published_at": "2012-03-31T00:00:00+00:00" }, { "id": "01a08750-129d-730e-a93d-8f52c3f15c2b", "title": "Carousel Gallery", "url": "https://blog.mgechev.com/2012/02/16/carousel-gallery/", "published_at": "2012-02-16T00:00:00+00:00" } ] posts Claim your blog
Back to blog.mgechev.com
Blog · corpus.blog/blogs/blog.mgechev.com/posts

blog.mgechev.com

blog.mgechev.com

2026

2025

2024

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

15 Sept 2012