Upgrade or not to upgrade dependencies? The eternal dilemma

Cross-posted from TeliaSonera Tech blog. Handling dependencies is one of important challenges in any software project – and especially in the fast-moving JavaScript world. Our Nettbutikk team just had a heated discussion about handling upgrades of our dependencies that continuous our learning journey lined with failures (or rather “experiments that generated new knowledge” :-)). FailedContinue reading “Upgrade or not to upgrade dependencies? The eternal dilemma”

Storytelling as a Vehicle of Change: Introducing ClojureScript for the Heart and Mind

People don’t really like changes yet change we must in this fast-developing world. How to introduce a change, or rather how to inspire people to embrace a change? That is one of the main questions of my professional life. I have recently talked about Functional programming (FP) in JavaScript and compared it to ClojureScript, whichContinue reading “Storytelling as a Vehicle of Change: Introducing ClojureScript for the Heart and Mind”

An answer to CircleCI’s “Why we’re no longer using Core.typed”

CircleCI has recently published a very useful post “Why we’re no longer using Core.typed” that raises some important concerns w.r.t. Typed Clojure that in their particular case led to the cost overweighting the benefits. CircleCI has a long and positive relation to Ambrose Bonnaire-Sergeant, the main author of core.typed, that has addressed their concerns in hisContinue reading “An answer to CircleCI’s “Why we’re no longer using Core.typed””

Refactoring & Type Errors in Clojure: Experience and Prevention

While refactoring a relatively simple Clojure code to use a map instead of a vector, I have wasted perhaps a few hours due to essentially type errors. I want to share the experience and my thoughts about possible solutions since I encounter this problem quite often. I should mention that it is quite likely thatContinue reading “Refactoring & Type Errors in Clojure: Experience and Prevention”

Nginx: Protecting upstream from overload on cache miss

These 2 magical lines will protect your upstream server from possible overload of many users try to access the same in cached or expired content:  proxy_cache_use_stale updating timeout; # Serve the cached version even when outdated while refreshing it proxy_cache_lock on; # Only one req is allowed to load/refresh the item, others wait / getContinue reading “Nginx: Protecting upstream from overload on cache miss”