Passive Noise Isolation vs Active Noise Canceling – What’s the Difference?


There is quite a difference between noise isolation and noise cancellation that most people are probably not aware of.

Passive noise isolation isolates all outside sound, generally 25 dB – 30 dB, so if you want to lower all outside noise and just focus on your music, this is the best option.

Active noise canceling works slightly differently, it uses a microphone to record all low frequency noise, like the humming of a plane or helicopter engine (active noise canceling was first developed for helicopter pilots) and then sends the opposite sound to your ears through headphones to “cancel” it. This is a greatly simplified explanation. In the end, it usually cancels around 15 dB of noise.


How to integrate Testshot with an application bootstrapped with create-react-app

In this tutorial we are going to integrate Testshot with create-react-app which uses Webpack.

Let's bootstrap an application

create-react-app react-app
cd react-app

This is a proposal for a lightning talk at Reactive Conf. Please 🌟 this gist to push the proposal!

Combining snapshot testing and component library

Do you test presentational logic of your components? No? Yes, but you feel like you are writing a lot of dummy tests? You even probably use snapshot tests for that, but don't feel like you make enought value from them..

If so, click 🌟 button on that Gist!

I'll talk how our team is using snapshot testing to iterate faster,

View rightCurry.js
rightCurry = function (f) {
let args =;
return function(firstArg) {
return f.apply(null, [firstArg].concat(args))
fullName = function (name, middleName, lastName) { return name + " " + middleName + " " + lastName }
// rightCurry(fullName, "David", "Doe")("John") -> "John David Doe"
View flipArgs.js
flipArgs = function (f) {
return function() {
let args =;
return f.apply(null, args.slice(1).concat(args[0]))
fullName = function(name, lastName) { return name + ' ' + lastName}
// fullName("John", "Doe") -> "John Doe"
View split_by.clj
(defn split-by
"Create from sequence (l) sequence of sequences with specified number of elemenets (c)
(split-by 2 [1 2 3 4 5 6 7])
=> '((1 2) (3 4) (5 6) (7))"
[c l]
(if (seq l)
(cons (take c l) (split-by c (drop c l)))))
(defn split-into-chunks
View vali.clj
(defn validate [data schema]
(into {} (for [[x y] schema]
[x (if (contains? data x)
(let [res (x data)]
(try (y res) (catch IllegalArgumentException e false)))
(defn valid? [data schema]
(every? true? (vals (validate data schema))))
View merge.rb
h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h3 = h1.merge(h2)
h3 #=> {"a"=>100, "b"=>254, "c"=>300}
h1 #=> { "a" => 100, "b" => 200 }
View compojure.clj
(defroutes posts-routes
(context "/posts" []
(GET "/" request ...)
(GET "/new" request ...)
(POST "/" request ...)))
View blog.clj
(use 'net.cgrand.enlive-html)
; Define our posts, it can be response from the database.
(def posts [{:title "First post"
:content "Content of my first post."
:comments [{
:user "edtsech"
:text "boom"}
{:user "anonymous"
:text "blah-blah-blah"}]}