Typescript team has explicitly stated that they don’t intend to extend typescript’s static type checking to the runtime.
Typescript Design Goals lists the following in the section on Non-goals:
Add or rely on run-time type information in programs, or emit different code based on the results of the type system. Instead, encourage programming patterns that do not require run-time metadata.
However, this also implies that for cases when static typing cannot help us we need to separately write validators using a validation library (eg. Joi) which has to be kept in sync with the typescript types.
This post outlines an approach to eliminate this redundancy using the io-ts library by Giulio Canti. This approach has also been adopted by some other libraries like MobX State Tree and Runtypes.
Continue reading Typescript and validations at runtime boundaries
This post outlines a container based development workflow using Vagrant and Docker.
Many common docker tutorials (eg. the official node tutorial) suggest a workflow where projects source is copied onto the image, which is then built and run through docker. This approach is not really practical for clojure development as normal clojure programming leans heavily on rapid prototyping and REPL driven development.
The setup below utilizes Vagrant and docker volumes to setup a development environment which ensures reproducibility and container isolation while retaining the short feedback cycle which clojure developers take pride in.
Continue reading A Vagrant+Docker based workflow for clojure web development
The lack of support for asynchronous operations in redux core has spawned a whole ecosystems for managing side-effects in Redux.
This post argues that the redux-loop library (1.5 k ★ as of this writing) is a much better solution for this job than other more popular alternatives like redux-sagas (11.8 k ★) and redux-thunk (7.8 k ★).
As has always been prevalent in frontend ecosystem, popularity does not necessarily translate to better suitability.
Continue reading Redux-loop: A better solution for managing asynchronous operations in redux
Tide (TypeScript Interactive Development Environment for Emacs) uses a custom hydra-derived popup menu for prompting the user to select candidates when there are many completion options available.
However, this is jarring when the rest of your emacs environment is configured to use helm as the completion engine.
Fortunately, this is easy to fix by overriding the
tide-popup-select-item implementation to use a custom helm source derived from the completion list.
Continue reading Using helm to select tide completion candidates
Continue reading How is Kotlin an improvement over Scala, Clojure, or Groovy? | Hashnode
A hack which makes the HAML parser BEM aware and helps reduce some of the repetitive boilerplate associated with specifying BEM compliant class names in templates.
Predictability and Side-effects
Redux advertises itself as a predictable state container.
This predictability comes at a cost: Your actions that are supposed to manipulate the state of your application are processed synchronously through pure functions called reducers. You should not have side-effects in your reducers.
An introductory tutorial on making event scheduling management more accessible and configurable to administrators through database driven admin interfaces in Rails.
Annotate is a very useful utility for annotating schema information in Rails models. The gem prepends (or appends, as per your configuration) a summarized information about the table schema in each model file as comments) – saving multiple roundtrips to the schema.rb file during coding.
An exploration into the delegation pattern and how it can be useful in various aspects of a Rails application