Better world by better software

Gleb Bahmutov PhD

Our planet 🌏 is in danger

Act today: what you can do

Apr 15 2015
products

Less boilerplate in express app

Simplify middleware using higher-order functions.

Read More

Share Comments
  • boilerplate
  • functional
  • javascript
  • ramda
Apr 6 2015
products

Deployed commit

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

Read More

Share Comments
  • advice
  • git
  • gulp
  • nodejs
  • sentry
Apr 2 2015
products

Angular vs Backbone vs Ember

Infographic with the main stats on these three frameworks.

Read More

Share Comments
  • angularjs
Apr 2 2015
products

Conference talk proposals

My presentation ideas, abstracts and cfps.

Read More

Share Comments
  • proposal
Mar 30 2015
products

Run Angular in Web Worker

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

Read More

Share Comments
  • angularjs
  • web workers
Mar 29 2015
products

Web working like a boss

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

Read More

Share Comments
  • angularjs
  • web workers
Mar 25 2015
products

Angular plus React equals Speed revisited

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

Read More

Share Comments
  • angularjs
  • performance
  • reactjs
Mar 24 2015
products

Remove boilerplate from promise chains

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

Read More

Share Comments
  • boilerplate
  • functional
  • promises
  • ramda
Mar 23 2015
products

Playing with PouchDB

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

Read More

Share Comments
  • browser
  • db
  • es6
  • es7
  • generators
  • javascript
  • nodejs
Mar 19 2015
people

Getting up to JavaScript speed

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

Read More

Share Comments
  • advice
  • browser
  • javascript
Mar 18 2015
products

Using grunt tasks from gulp

How to reuse grunt tasks from gulp

Read More

Share Comments
  • grunt
  • gulp
  • nodejs
Mar 17 2015
products

Separate model from view in Angular

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

Read More

Share Comments
  • advice
  • angularjs
Mar 17 2015
products

After upgrading to Angular 1.3

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

Read More

Share Comments
  • advice
  • angularjs
Mar 15 2015
products

Setup hosted RethinkDB

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

Read More

Share Comments
  • db
Mar 14 2015
products

Try RethinkDB

Initial local experiments with a modern NoSQL database.

Read More

Share Comments
  • boilerplate
  • db
Mar 12 2015
products

What is the difference between streams and functional reactive programming?

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

Read More

Share Comments
  • functional
  • javascript
  • reactive
Mar 12 2015
products

Passing multiple arguments in promises

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

Read More

Share Comments
  • promises
Mar 11 2015
products

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

Read More

Share Comments
  • angularjs
Mar 5 2015
products

Binding vs partial application

The difference between JavaScript context binding and partial argument application.

Read More

Share Comments
  • functional
  • javascript
Feb 28 2015
people

Overcoming functional programming objections

Solving objections to switching to functional javascript.

Read More

Share Comments
  • advice
Feb 26 2015
products

Reduce reigns supreme

Implementing every other array method using reduce.

Read More

Share Comments
  • functional
  • javascript
Feb 19 2015
book review

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

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

Read More

Share Comments
Feb 15 2015
products

Configuring AngularJS 3rd party module

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

Read More

Share Comments
  • angularjs
Feb 13 2015
products

Performance of v8 generators vs promises

Measuring generator vs promise performance.

Read More

Share Comments
  • es6
  • generators
  • performance
  • promises
Feb 12 2015
products

Factorial using promises

Iterative, recursive, promise-returning factorial interview question.

Read More

Share Comments
  • es6
  • interview
  • promises
Feb 12 2015
products

AngularJS 2 intro

Resources and links for learning about upcoming v2 AngularJS.

Read More

Share Comments
  • angularjs
  • angularjs2
Feb 10 2015
products

Playing with ES6 code

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

Read More

Share Comments
  • es6
  • javascript
  • nodejs
Feb 9 2015
products

The awful inconsistency of Firebase API

Please pick on API pattern and stick to it.

Read More

Share Comments
  • advice
  • db
Feb 8 2015
products

Starting promises

Good way to call the first promise-returning function.

Read More

Share Comments
  • angularjs
  • promises
Feb 7 2015
products

Too much point-free

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

Read More

Share Comments
  • functional
  • javascript
Feb 4 2015
process

Testing AngularJS application at the model level using iframe API

Simple end to end testing via iframe API.

Read More

Share Comments
  • advice
  • angularjs
  • testing
Feb 2 2015
products

Better short JavaScript demos

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

Read More

Share Comments
  • advice
  • browser
  • javascript
Jan 31 2015
products

Search across my blog posts and github projects

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

Read More

Share Comments
  • advice
Jan 29 2015
process

Abandoning return values

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

Read More

Share Comments
  • functional
  • javascript
Jan 28 2015
products

Promisify event emitter

Convert NodeJS EventEmitter emit to a promise-returning method.

Read More

Share Comments
  • javascript
  • nodejs
  • promises
Jan 27 2015
products

Was NodeJS module used

How to determine if a dependency module was actually used?

Read More

Share Comments
  • nodejs
Jan 22 2015
products

Run N promises in parallel

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

Read More

Share Comments
  • promises
Jan 20 2015
process

Passing options through script tags

Use script tag attributes to pass config values.

Read More

Share Comments
  • advice
  • javascript
Jan 14 2015
products

Counting predicates

How to find the first item after the second number in an array.

Read More

Share Comments
  • functional
  • javascript
Jan 13 2015
process

Optimizing nth

Profiling and speeding up a function using Chrome and v8-natives.

Read More

Share Comments
  • javascript
  • performance
Jan 11 2015
products

Adapted point-free callbacks

Ignoring some arguments and partial binding for methods calls.

Read More

Share Comments
  • functional
  • javascript
  • ramda
Jan 4 2015
products

Hacking Node require

Replace NodeJS require to add cache busting, pre- and post-processing, mocking, arguments.

Read More

Share Comments
  • ast
  • nodejs
Dec 28 2014
process

Essence of functional programming

FP in plain JavaScript using partial application, composition, closures and higher-order functions.

Read More

Share Comments
  • functional
  • javascript
  • ramda
Dec 23 2014
products

Robustness testing using proxies

Mocking responses using turtle-run, service-turtle and ng-wedge.

Read More

Share Comments
  • advice
  • browser
  • service workers
  • testing
  • web workers
Dec 16 2014
process

AngularJS performance lessons

Summary of the AngularJS performance lessons learnt.

Read More

Share Comments
  • advice
  • angularjs
  • performance
Dec 14 2014
products

OO vs FP console log example

A common feature implemented in object-oriented and functional styles.

Read More

Share Comments
  • functional
  • javascript
Dec 14 2014
products

Performance profiling using DevTools code snippets.

Find bottlenecks in live web application using Chrome DevTools code snippets.

Read More

Share Comments
  • advice
  • javascript
  • performance
Dec 12 2014
process

Separate work from control flow using functional programming

Thunkifying is currying, argument reordering and middleware stacks.

Read More

Share Comments
  • advice
  • functional
  • javascript
Dec 10 2014
process

Code coverage proxy

User acceptance testing with code coverage information using was-tested.

Read More

Share Comments
  • code coverage
  • javascript
  • testing
Dec 10 2014
process

Code coverage by commit

Separate and update JavaScript code coverage information using tested-commits.

Read More

Share Comments
  • code coverage
  • javascript
  • testing
Nov 29 2014
process

Programming without For loops

You should use iterator methods for clarity and fewer side effects.

Read More

Share Comments
  • advice
  • functional
  • javascript
Nov 28 2014
process

Painless modular development proposal

Proposal for The O'Reilly Software Architecture Conference 2015

Read More

Share Comments
  • advice
  • modular development
  • proposal
Nov 28 2014
products

Drive wedge into your Angular application

Test live application by mocking responses without modifying code or installing plugins.

Read More

Share Comments
  • advice
  • angularjs
  • javascript
  • testing
Nov 26 2014
products

Measure space allocation

Which keys are expensive in a collection of objects?

Read More

Share Comments
  • javascript
Nov 25 2014
products

Faking lexical scope

Feeding fake variables to a function taken out of its lexical scope.

Read More

Share Comments
  • functional
  • javascript
Nov 25 2014
products

Tap into promise chains for debugging

Plus easy promise chaining using Ramda.

Read More

Share Comments
  • functional
  • javascript
  • promises
  • ramda
Nov 24 2014
people

My story presentations

Make a presentation about your life a couple of weeks after joining the company.

Read More

Share Comments
  • advice
  • interview
Nov 22 2014
process

Measuring semver adherence

Measuring how close a library follows semver semantics when publishing new releases.

Read More

Share Comments
  • advice
  • modular development
  • nodejs
Nov 22 2014
products

Immutable JavaScript example

Implementing Todo list with Undo using immutable data structure.

Read More

Share Comments
  • immutable
  • javascript
Nov 19 2014
process

Point-free programming is not pointless.

Eliminate variables and functions via flexible selective application.

Read More

Share Comments
  • functional
  • javascript
  • ramda
Nov 18 2014
products

Appliers

Functor + Applicative = Applier

Read More

Share Comments
  • functional
  • javascript
Nov 16 2014
products

Introducing d3-panel

Plot data right inside Chrome DevTools while debugging.

Read More

Share Comments
  • browser
  • d3
Nov 15 2014
products

Sharing data between controller and link functions in Angular directive

Semi-private data common to link and controller without adding to the scope.

Read More

Share Comments
  • angularjs
Nov 14 2014
products

Combine promises with Maybe functors

Functor Promise together with Maybe applicative.

Read More

Share Comments
  • functional
  • javascript
  • promises
Nov 12 2014
products

Test if a function is pure

Test function for purity using lexical scope and runtime context.

Read More

Share Comments
  • functional
  • javascript
Nov 12 2014
products

Avoid side effects with immutable data structures

Guarantee fewer side effects by using immutable objects instead of JavaScript arrays.

Read More

Share Comments
  • advice
  • javascript
Nov 10 2014
products

When in doubt, return a promise. Plus promises are functors.

Prepare for future async data flow by wrapping primitives in promises.

Read More

Share Comments
  • advice
  • functional
  • javascript
  • promises
Nov 5 2014
products

Local Angular scopes

Limit dirty checking to the given scope when reacting to user events.

Read More

Share Comments
  • angularjs
Nov 1 2014
process

Do not break dependant modules.

Check if your current module breaks other modules before publishing.

Read More

Share Comments
  • advice
  • javascript
  • modular development
  • nodejs
  • testing
Oct 29 2014
products

Run Angular digest cycle in web worker

An experiment in offloading AngularJs dirty checking and model updates to a separate browser thread.

Read More

Share Comments
  • angularjs
  • javascript
  • performance
  • web workers
Oct 22 2014
process

Improving Angular web app performance example.

Profiling and speeding up AngularJs application step by step using Chrome DevTools code snippets

Read More

Share Comments
  • advice
  • angularjs
  • performance
Oct 21 2014
products

Chrome DevTools Code Snippets

Run useful code fragments on-demand to analyze website performance.

Read More

Share Comments
  • advice
  • javascript
Oct 9 2014
products

Object of promises in Angular

$q.all(Array) and $q.all(Object) example

Read More

Share Comments
  • angularjs
  • nodejs
  • promises
Oct 9 2014
products

Delayed AngularJs filter initialization.

Changing filter function after async initialization.

Read More

Share Comments
  • angularjs
Oct 8 2014
products

Building runtime tree of Angular modules

See what each loaded Angular module provides and how it links to its dependencies.

Read More

Share Comments
  • angularjs
Oct 4 2014
products

Testing AngularJS under Node

Examples of unit testing Angular code from Node.

Read More

Share Comments
  • angularjs
  • nodejs
  • testing
Oct 3 2014
products

Avoiding silent Angular failures

Prevent silent module overrides, misspelled directives, undefined expressions.

Read More

Share Comments
  • angularjs
Sep 30 2014
products

Server side vanilla Angular rendering under Node

Loading and running simple Angular app under Node.

Read More

Share Comments
  • angularjs
  • nodejs
Sep 28 2014
process

Configurable function pattern

A function can configure itself via options argument to keep API clean and simple.

Read More

Share Comments
  • advice
  • javascript
Sep 26 2014
products

Selective partial application

Selective argument binding using lodash, ramda and heroin

Read More

Share Comments
  • boilerplate
  • functional
  • javascript
Sep 25 2014
products

Testing Angular async stuff

Methods one needs to call to make the unit tests work.

Read More

Share Comments
  • angularjs
  • testing
Sep 24 2014
process

1 year of blogging

Reflecting on the first year of blogging about software development.

Read More

Share Comments
  • advice
Sep 23 2014
process

Debugging minified JavaScript code without source maps

Locating the exception in minified JavaScript code.

Read More

Share Comments
  • javascript
  • sentry
Sep 16 2014
products

Useful module pattern

Avoid using `this` keyword in the API object revealed from a module.

Read More

Share Comments
  • javascript
Sep 16 2014
products

Debugging Karma Unit Tests

Debugging unit tests run by Karma using Chrome DevTools.

Read More

Share Comments
  • advice
  • javascript
  • testing
Sep 13 2014
products

Testing async lazy assertion

Testing lazy async assertion by spying on objects.

Read More

Share Comments
  • angularjs
  • testing
Sep 12 2014
people

Good examples

Tag places in your private source code as good examples for others

Read More

Share Comments
  • advice
  • documentation
Sep 8 2014
process

Code quality as a service

If I had to design static source code analysis service

Read More

Share Comments
  • advice
  • code coverage
Sep 6 2014
products

Detecting function optimizations in V8

How to observe JavaScript v8 JIT events

Read More

Share Comments
  • javascript
  • nodejs
  • performance
Sep 5 2014
products

Object iterators

Iterating over objects using lodash functions.

Read More

Share Comments
  • boilerplate
  • functional
  • javascript
Aug 28 2014
products

Readable conditions using check-types.js

Clear and easy to read defensive programming with check-types.js and check-more-types.js

Read More

Share Comments
  • assertions
  • javascript
Aug 26 2014
process

Tightening project with grunt build

Grunt plugins for tightening a project - linting, complexity, todos, etc.

Read More

Share Comments
  • advice
  • grunt
  • javascript
Aug 25 2014
process

Functional JavaScript interview question

Writing a functional adaptor makes a nice interview question.

Read More

Share Comments
  • advice
  • functional
  • interview
  • javascript
Aug 21 2014
book review

Review of "Everyday Calculus" by Oscar Fernandez

Everyday Calculus, Discovering the hidden math all around us by Oscar E. Fernandez.

Read More

Share Comments
Aug 17 2014
process

Test in production

Run unit tests in production environment using lazy-test

Read More

Share Comments
  • advice
  • javascript
  • testing
Aug 15 2014
products

Lodash to Ramda example

An argument for trying Ramda if you love _

Read More

Share Comments
  • functional
  • javascript
  • ramda
Aug 12 2014
book review

Review of "Stuff matters" by Mark Miodownik

Exploring the marvelous materials that shape our man-made world

Read More

Share Comments
Aug 11 2014
process

Test mole

Easily test code in private closures using test-mole.

Read More

Share Comments
  • javascript
  • testing
Aug 8 2014
process

Open source software

How to open source pieces of your software

Read More

Share Comments
  • advice
Aug 3 2014
book review

Review of "The Grapes of Math" by Alex Bellos

A delicious feast of mathematical, geometrical and historical dishes.

Read More

Share Comments
⬅ Prev1…56789Next ➡
 

Categories

  • book review15
  • climate10
  • people26
  • process176
  • products597

Tags

  • 11ty2
  • QUnit5
  • a11y3
  • advice126
  • algolia3
  • angular3
  • angularjs58
  • angularjs21
  • assertions9
  • ast8
  • boilerplate14
  • browser22
  • ci35
  • circle14
  • climate16
  • code coverage17
  • concurrency1
  • cyclejs7
  • cypress350
  • 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
  • testing208
  • tutorial29
  • typescript11
  • ui2
  • vercel10
  • visual testing5
  • vuejs5
  • web workers6
  • webpack3

Tag Cloud

11ty QUnit a11y advice 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 20251
  • 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

  • How I Stay Productive
  • Pick Tests By Network Calls
  • Cypress Is Joining John Deere
  • Rest Easy Example
  • Rest Easy
© 2025 Gleb Bahmutov
Powered by Hexo