Resolving a user issue through the most appropriate series of actions
The planet is burning. What we must do immediately.
How to step through the visibility code to determine why Cypress thinks an element is invisible during the test
Testimony in favor of adopting strict Net Zero building stretch code in Massachusetts
How to write effective React tests using Cypress
How to release a well-tested library that never breaks the users' projects
How to develop software without wasting time planning or ignoring important parts of the project
How to derive multiple benefits from writing software.
Looking at my personal daily task logs from the past 18 months
Run end-to-end Cypress tests against Vercel preview deploys using GitHub Actions
Moving from Jest + RTL to Cypress + @testing-library/cypress for testing React components
My notes on testifying in person or in writing during a hearing.
Do not pay people to destroy the planet.
Comparing React components pixel by pixel to catch style problems
How to refactor loading JSON fixtures for simplicity
Moving from end-to-end to component and unit tests
Use tests and automatic dependency updates to keep examples up to date with the latest versions of the relevant library. Make it visible with dependency version badges.
How I see end-to-end and component and unit tests working together
How to scrape static site from GitHub Action using Algolia.
How to test static sites three times before and after deployment to GitHub pages.
90-second pitch for CitizenClimateLobby I gave at PKG meeting at MIT.
We have plenty of natural offshore wind and solar resources to satisfy all our electricity needs many times over. To say that we can’t switch to all green, all renewable, all safe electricity 50 years after we went to the Moon is a lie, and not a very convincing lie. Ban gas infrastructure now.
An email I have sent to my friends at the end of 2019.
Cambridge, MA council candidates who put climate as the number one priority issue.
How to bypass user interface to directly dispatch actions to Angular 8 application from Cypress end-to-end tests.
How to use Percy.io visual diffing service to prevent regressions in terminal programs.
How to patch fix installed NPM module to avoid waiting for an official bug fix.
The planet is burning. What we must do immediately.
How to bypass user interface when writing end-to-end tests.
How to perform end-to-end API testing using Cypress test runner and take advantage of server logs.
How to capture console.log, console.error and even DEBUG=... logs.
A few tips on how to use Zeit Now v2 serverless with TypeScript and a little bit of testing.
Use a separate environment variable name to avoid NPM tricking you.
How to use Maybe Monad to make your server middleware a little bit easier to reason about.
How to write a web application using a state machine and Hyperapp framework.
How to print from your Node programs in formats compatible with 3rd party logging tools.
How to quickly mock process.env during unit testing.
Must have sections, badges, flow.
Quickly stringing data transformation using standrd Ramda functions.
Notes from DevOps meetup panel on testing.
Perform any action based on commits since last action.
Automatic period dependency update without much hassle.
How I publish modules for older versions of Node.
How to deploy to GitHub pages from CI using SSH to authenticate.
Sometimes code refactoring removes need for advanced mocking in tests.
Do not mock your internal modules, mock system APIs instead!
Setting up a rock solid NPM module with semantic release in 30 seconds.
Refactor code using functional approach (Maybe, immutable).
Collecting all inputs to each function to figure out missing test data.
Deriving Y Combinator that makes recursive functions without assignments possible.
Array or Observable - Ramda can do both!
How to ensure your Curl code snippets are working, plus generate documentation.
Replacement for testing pyramid.
How to patch a bug, use the fix in prod and submit the pull request in five minutes.
How to do snapshot testing if the data frequently changes?
Writing tests should not be an afterthought.
My favorite semantic release plugins.
How to update the code comments during program execution.
How exchanging a set of streams solves component communication.
4 Ops things that I am excited about today.
Links to additional information included in my CycleCond 2016 presentation.
How to use semantic versioning with external services.
What to do if you want to compose multiple functions (hint - make them unary).
How I came up with idea and how I wrote wiseli
A single data structure holding program's state has a name - database.
How to write innovative, unusual and simply cool software.
How to use ES6 and target older NodeJS platforms without mangling the code to the lowest common denominator
My build process that can precisely target any Nodejs environment using Rollup, ES6 Feature tests and Babel.
Single function modules, flat libraries and applications.
An instantly loading, self-rewriting application using ServiceWorker - it is like server rendering inside your browser.
Generate the initial HTML markup from web app at build time to avoid blank screen.
Remove the empty page flicker on web application startup.
How to pass logic instead of data in functional programming.
The most interesting presentations I have seen last month.
How to finish strong in any hackathon.
Leave hooks in the AngularJS application to allow measuring how long individual actions take.
Remove unnecessary code while preserving the same code semantics.
Change live Angular application plus unit test private code from Node.
Leave executable examples inside source files for future reference.
How to design a simple to use and powerful library API.
What is wrong with Google Play? Is there anyone who listens to any music at that company?
Simple end to end testing via iframe API.
Use script tag attributes to pass config values.
Profiling and speeding up a function using Chrome and v8-natives.
Summary of the AngularJS performance lessons learnt.
Thunkifying is currying, argument reordering and middleware stacks.
User acceptance testing with code coverage information using was-tested.
You should use iterator methods for clarity and fewer side effects.
Proposal for The O'Reilly Software Architecture Conference 2015
Measuring how close a library follows semver semantics when publishing new releases.
Eliminate variables and functions via flexible selective application.
Check if your current module breaks other modules before publishing.
Profiling and speeding up AngularJs application step by step using Chrome DevTools code snippets
A function can configure itself via options argument to keep API clean and simple.
Reflecting on the first year of blogging about software development.
If I had to design static source code analysis service
Grunt plugins for tightening a project - linting, complexity, todos, etc.
Writing a functional adaptor makes a nice interview question.
Run unit tests in production environment using lazy-test
Easily test code in private closures using test-mole.
How to open source pieces of your software
Example refactoring a block of code containing OR condition
A small team can produce high quality software without exhaustive and long testing cycles.
We use assertions in our unit tests instead of built-in matchers.
Same simple problem solved in different programming styles.
Keeping the same load order of files and tests can lead to hidden bugs.
Keep dependecies up to date to get bug and performance fixes, not features.
Use lazy and helpful assertions instead of Jasmine matchers in the unit tests.
One can easily apply too much or wrong type of curry.
Make constructor functions work without "new" keyword in callbacks.
Combining functions into custom iterator callbacks and using _ will be easier if you put callback function first and data second.
Number of input data checks depends on the distance from the caller.
Making my own clone of the popular browser game.
Examples of using lodash, angular, check-types, ramda assertions
How to prevent hard to debug AngularJS injection errors due to minified code.
Catch all possible errors using both global and angular error hooks.
How to develop AngularJS applications in offline mode.
Send basic information with markup to generate low res page preview.
Using single time estimate for a task leads to inaccurate plans.
An example of a weird browser behavior traced back to the minification step.
Checking input arguments before doing any computation helps to quickly debug problems.
Using different linting settings depending on the code age
How I categorize every piece of knowledge about software development
How to get many useful things from unit test coverage information.
How to get many useful things from unit tests
Large projects have lots of downsides, split them up.
Linting, CI, badges and pre-commit hooks for Node project.
Measuring and increasing number of jshint settings.
Keep dependencies up to date using next-update
Split large projects into small modules.
Run extensive testing from clean environment before pushing code to remote repo.
Run unit tests on every commit using git hook.
Quickly verify that necessary top level dependencies are installed.