Better world by better software

Gleb Bahmutov PhD

Our planet 🌏 is in danger

Act today: what you can do

2015
Dec 28

Using webpack

How to build and distribute libraries via NPM using WebPack bundler.

Dec 27

The senior engineer role

Three things I try to do as a senior engineer

Dec 24

Instant Web Application

An instantly loading, self-rewriting application using ServiceWorker - it is like server rendering inside your browser.

Dec 21

Hydrate at build time

Generate the initial HTML markup from web app at build time to avoid blank screen.

Dec 16

Hydrate your apps

Remove the empty page flicker on web application startup.

Dec 13

My Node tools

My collection of personal CLI apps to speed up NodeJS development.

Dec 5

Pass the logic

How to pass logic instead of data in functional programming.

Dec 3

Use some ES6 in CLI apps

What useful ES6 features can we use right now?

Dec 2

1, 2, 3, linted

Preventing easy to catch JavaScript bugs using linters.

Nov 26

How to setup semantic release on Circle CI

How to use CircleCI to publish new versions of your NPM modules.

Nov 25

The great conference tour of October 2015

The most interesting presentations I have seen last month.

Nov 22

JavaScript to JavaScript template language

Generating JavaScript configurtion snippets from templates to be used with the Content-Security-Policy and disabled inline scripts.

Nov 21

Disable inline JavaScript for security

Use JS to JS template engine in Express to ban all inlined JavaScript.

Nov 20

Patching global Node tools

How to monkey patch a broken global Node package, if you have to.

Nov 19

Smaller published NPM modules

How to measure size and publish smaller modules to NPM.

Nov 13

Stand your own crash server

How to deploy your own server to receive real time crash data.

Nov 11

Winning hackathons

How to finish strong in any hackathon.

Oct 28

Changing the function arguments trick

Modify the function's variables after the function executed.

Oct 15

Angular performance testing via ports

Leave hooks in the AngularJS application to allow measuring how long individual actions take.

Oct 14

Async Angular filter

How to compute the filter's result asynchronously.

Oct 3

Remove the boilerplate

Remove unnecessary code while preserving the same code semantics.

Sep 18

Dependency injection vs IO Monad example

How to wrap functions that depend on the environment for clean unit testing.

Sep 16

Variable assignment shortcut

Eval is limited in its power plus the only time I found `this` variable useful.

Sep 12

Avoid this common Angular refactoring mistake

How to preserve reference to data when factoring out model data to services.

Sep 10

Bending JavaScript rules

Change live Angular application plus unit test private code from Node.

Aug 30

Unit testing Angular from Node like a boss

Building Angular application from CommonJS modules and powerful unit testing.

Aug 26

Imperative to compose example

Changing a piece of imperative code to be purely functional

Aug 24

Angular Model intro

Introduction to Angular data model vs view update.

Aug 23

Return a promise for cleaner API

Instead of returning an error code or value, return a Promise.

Aug 17

Express sessions

Using and observing ExpressJS sessions from the client code.

Aug 15

1, 2, 3, tested

Unit testing AngularJS code in record time using ng-describe.

Aug 14

Perfect code, zero effort

Autofix JavaScript style issues using jscs.

Aug 11

Controller prototype

Scope-based vs object-oriented controllers in Angular

Aug 7

ES2015 in Dev Tools console without extensions

How to load and use ES2015 in the Chrome DevTools console without any 3rd party extensions.

Aug 5

You don't need global grunt

Building projects without having Grunt installed globally.

Aug 3

I want library X in my Dev Tools console

How to always load a 3rd party library in DevTools console

Jul 31

Unit test Node code in 10 seconds

Use Mocha and the package script commands to quickly start unit testing CommonJS code.

Jul 14

Promisify Seneca microservice

Convert an asynchronous operation to promise-returning one.

Jul 4

Leaving examples in code

Leave executable examples inside source files for future reference.

Jul 3

Passing more than single value through promise chain

How to store multiple values in a promise chain using an object.

Jun 24

Self-improving software

Companion notes to the "Self-improving software" presentation

Jun 24

User friendly API

How to design a simple to use and powerful library API.

Jun 17

Solid ExpressJS server

Steps to develop good ExpressJS based application server.

Jun 11

Starting to React

Links and resources for learning ReactJS.

Jun 10

Automatically publish to NPM

Publish tagged versions to NPM after successful CI build.

Jun 9

Rating recruiter pitches

Scoring the cold recruiter pitches I received. Plus a few examples.

Jun 3

Put mock data into Node require cache

Avoid loading source files - put the code directly into the require cache.

Jun 2

Angular module info

How to embed and fetch version information for a specific Angular module.

Jun 1

Embed version info

How to include version and useful meta information in the JavaScript libraries.

May 28

Treasure your product managers

What is wrong with Google Play? Is there anyone who listens to any music at that company?

May 27

Unapply attack

Compromise functions private to closures via partially applied references.

May 25

Partial application for options object

Bind some properties in the options object.

May 14

Deep picking

Grab a subset of a complex object using functional-extract utility.

May 13

Fast legoization

Optimizing "legoizer" web worker application to run 10 times faster.

May 7

Heavy lifting

Adding new features to an existing function via lifting.

May 3

Unit testing CLI programs

Writing mock stdin text in your Nodejs unit tests.

May 2

Great League of Engineers

Notes from a unique team productivity event.

Apr 28

Use JavaScript functor today

Replace if conditions with functors and applicatives.

Apr 27

How to correctly unit test Express server

Create and destroy an Express.js server in each unit test.

Apr 26

Faster Node app require

Speed up Node.js application startup by caching require path resolutions.

Apr 26

Pyramid of lexical scope Doom

How to avoid creeping lexical scope in asynchronous code.

Apr 23

RethinkDB and BDD on CI

How to unit test Node applications that use RethinkDB.

Apr 20

Nice touch, RethinkDB

Small feature in RethinkDB data explorer that shows they get it.

Apr 15

Less boilerplate in express app

Simplify middleware using higher-order functions.

Apr 6

Deployed commit

How to embed the commit id in the Express application using Codeship and Heroku.

Apr 2

Angular vs Backbone vs Ember

Infographic with the main stats on these three frameworks.

Apr 2

Conference talk proposals

My presentation ideas, abstracts and cfps.

Mar 30

Run Angular in Web Worker

Load and run full AngularJS 1.x in browser's separate thread.

Mar 29

Web working like a boss

Run any function in a separate web worker thread using ng-webworker.

Mar 25

Angular plus React equals Speed revisited

Speeding up Angular 1.x demo to be on par with React

Mar 24

Remove boilerplate from promise chains

How to remove boilerplate from intermediate steps using partial application or currying.

Mar 23

Playing with PouchDB

Trying a tiny Node / browser NoSQL database with a clean API.

Mar 19

Getting up to JavaScript speed

How we develop our JavaScript and what you should know to participate.

Mar 18

Using grunt tasks from gulp

How to reuse grunt tasks from gulp

Mar 17

Separate model from view in Angular

Share data model via scopes and limit the view access via controllerAs syntax.

Mar 17

After upgrading to Angular 1.3

New features to use right after upgrading to Angular 1.3 from 1.2

Mar 15

Setup hosted RethinkDB

Use RethinkDB hosted on Compose.io as a REST api data end point.

Mar 14

Try RethinkDB

Initial local experiments with a modern NoSQL database.

Mar 12

What is the difference between streams and functional reactive programming?

Count a specific word in a text file using streams and reactive programming.

Mar 12

Passing multiple arguments in promises

How to pass multiple values from one promise step to the next one without lexical scope or global variables.

Mar 11

Upgrade Angular from 1.2 to 1.3

Things we had to change in order to upgrade from Angular 1.2.26 to 1.3.14

Mar 5

Binding vs partial application

The difference between JavaScript context binding and partial argument application.

Feb 28

Overcoming functional programming objections

Solving objections to switching to functional javascript.

Feb 26

Reduce reigns supreme

Implementing every other array method using reduce.

Feb 19

Review of "Principles of Object-Oriented JavaScript" by Nicholas Zakas

Excellent book from a master who explains one area of JavaScript in detail.

Feb 15

Configuring AngularJS 3rd party module

How to use provider to allow user modules to configure 3rd party features.

Feb 13

Performance of v8 generators vs promises

Measuring generator vs promise performance.

Feb 12

Factorial using promises

Iterative, recursive, promise-returning factorial interview question.

Feb 12

AngularJS 2 intro

Resources and links for learning about upcoming v2 AngularJS.

Feb 10

Playing with ES6 code

How to run ES6 (EcmaScript2015) code using 6to5 transpiler.

Feb 9

The awful inconsistency of Firebase API

Please pick on API pattern and stick to it.

Feb 8

Starting promises

Good way to call the first promise-returning function.

Feb 7

Too much point-free

A use case where point-free event callback does not work well.

Feb 4

Testing AngularJS application at the model level using iframe API

Simple end to end testing via iframe API.

Feb 2

Better short JavaScript demos

You can quickly show JavaScript code and its output in the example pages.

Jan 31

Search across my blog posts and github projects

How I made a custom Google search across my github projects and blog posts.

Jan 29

Abandoning return values

Modern promise-based or event-driven JavaScript no longer uses returned values.

Jan 28

Promisify event emitter

Convert NodeJS EventEmitter emit to a promise-returning method.

Jan 27

Was NodeJS module used

How to determine if a dependency module was actually used?

Jan 22

Run N promises in parallel

Finish M tasks while running N asynchronous tasks at once using Q or ES6 Promises.

 

Categories

  • book review15
  • climate10
  • people26
  • process176
  • products599

Tags

  • 11ty2
  • QUnit5
  • a11y3
  • advice127
  • ai1
  • algolia3
  • angular3
  • angularjs58
  • angularjs21
  • assertions9
  • ast8
  • boilerplate14
  • browser22
  • ci35
  • circle14
  • climate16
  • code coverage17
  • concurrency1
  • cyclejs7
  • cypress352
  • cypress dashboard13
  • d33
  • db13
  • docker12
  • documentation6
  • email3
  • es613
  • es71
  • functional70
  • generators5
  • git15
  • github42
  • graphql5
  • grunt7
  • gulp3
  • hiring5
  • hyperapp7
  • immutable5
  • interview3
  • jade4
  • javascript166
  • jshint3
  • markdown11
  • model-based testing1
  • modular development28
  • netlify4
  • nodejs85
  • performance25
  • presentation7
  • promises31
  • proposal2
  • ramda28
  • react7
  • react native6
  • reactive12
  • reactjs5
  • renovate5
  • screencast1
  • security11
  • sentry11
  • service workers6
  • state machine1
  • testing210
  • tutorial29
  • typescript11
  • ui2
  • vercel10
  • visual testing5
  • vuejs5
  • web workers6
  • webpack3

Tag Cloud

11ty QUnit a11y advice ai algolia angular angularjs angularjs2 assertions ast boilerplate browser ci circle climate code coverage concurrency cyclejs cypress cypress dashboard d3 db docker documentation email es6 es7 functional generators git github graphql grunt gulp hiring hyperapp immutable interview jade javascript jshint markdown model-based testing modular development netlify nodejs performance presentation promises proposal ramda react react native reactive reactjs renovate screencast security sentry service workers state machine testing tutorial typescript ui vercel visual testing vuejs web workers webpack

Archives

  • May 20253
  • April 20252
  • March 20255
  • February 20253
  • January 20255
  • December 20243
  • November 20242
  • October 20245
  • September 20244
  • August 20242
  • July 20244
  • June 20242
  • April 20242
  • March 20245
  • February 20245
  • January 20243
  • December 20232
  • November 20233
  • October 20233
  • September 20234
  • August 20233
  • July 20233
  • June 20235
  • May 20235
  • April 202310
  • March 20236
  • February 20239
  • January 202310
  • December 20228
  • November 20224
  • October 20226
  • September 20225
  • August 20224
  • July 20227
  • June 20225
  • May 20228
  • April 20226
  • March 202210
  • February 20227
  • January 202211
  • December 202111
  • November 20217
  • October 20218
  • September 20214
  • August 20219
  • July 202110
  • June 202111
  • May 20215
  • April 20219
  • March 20219
  • February 20219
  • January 20217
  • December 20206
  • November 20208
  • October 202010
  • September 20205
  • August 20203
  • July 20203
  • June 20204
  • May 20203
  • April 20202
  • March 20207
  • February 20201
  • January 20201
  • December 20193
  • November 20193
  • October 20192
  • September 20196
  • August 20195
  • July 20192
  • June 20191
  • May 20195
  • April 20194
  • March 20193
  • February 20191
  • January 20194
  • December 20183
  • November 20182
  • October 20183
  • September 20184
  • August 20184
  • June 20185
  • April 20183
  • March 20184
  • February 20181
  • January 20185
  • December 20173
  • November 20174
  • September 20172
  • August 20179
  • July 20174
  • June 20174
  • May 20172
  • April 20179
  • March 201710
  • February 20175
  • January 20174
  • December 20165
  • November 20161
  • October 20162
  • September 20161
  • August 20165
  • July 20162
  • June 20167
  • May 20165
  • April 20168
  • March 201610
  • February 20165
  • January 20168
  • December 20159
  • November 20158
  • October 20154
  • September 20154
  • August 201511
  • July 20154
  • June 20159
  • May 20158
  • April 201510
  • March 201515
  • February 201513
  • January 201510
  • December 20148
  • November 201419
  • October 20148
  • September 201413
  • August 201412
  • July 201413
  • June 20149
  • May 201411
  • April 201413
  • March 201411
  • February 201412
  • January 201411
  • December 201311
  • November 201314
  • October 201311
  • September 201310

Recents

  • Pick E2E Tests To Run Using AI Summaries
  • Mock The Location Href Property
  • How I Stay Productive
  • Pick Tests By Network Calls
  • Cypress Is Joining John Deere
© 2025 Gleb Bahmutov
Powered by Hexo