Front-End System Design: 12 Fundamentals You Need to Know
To commemorate the 20th Anniversary of this Blog, I wanted to publish an Article which would stand the test of time; providing value to developers of all levels; both now, and for many years to come....
View ArticleCode Review Essentials
Code Reviews are an essential part of Software Engineering, providing numerous benefits for teams and the products they deliver. Having spent a significant amount of time conducting them for many years...
View ArticleFacilitating Reuse with TypeScript Generics
As is so often emphasized in my articles, facilitating reuse is perhaps one of the most import aspects of system design. For over a decade, languages such as Java, and C# have used generics as one of...
View ArticleSynchronizing package.json with yarn.lock
After having used Yarn almost exclusively for the past couple of years, there has been one nagging issue which seemed to continually crop up. Specifically, the inability to have a project’s...
View ArticleSeparation of Concerns: propTypes and Immutable.js
When considering the separation of concerns between Container and Presentational Components (stateful / stateless components), I find it useful to leverage the core concepts of these patterns in order...
View ArticleReact PropTypes and ES6 Destructuring
At times one may be justified in the argument that cognitive (over)load is just an expected part of the overall developer experience. Fortunately, there are numerous steps we can take to minimize the...
View ArticleSimplified Partial Application with ES6
When implementing Partial Application in ES6, implementations naturally become quite easier to reason about as default parameters, rest parameters and arrow functions can be leveraged to provide a much...
View ArticleIIFE in ES6
Unlike ES5, which is syntactically less opinionated, in ES6, when using an IIFE, parenthetical order matters. For instance, in ES5 an IIFE could be written either as: // parentheses wrap expression and...
View ArticleQuick Tip: Backbone Collection Validation
Often times I find the native Backbone Collection implementation to be lacking when compared to it’s Backbone.Model counterpart. In particular, Collections generally lack in terms of direct integration...
View ArticleBDD/TDD Mental Models
Recently, I shared a simple 8-step procedure with my team which outlines some of the general questions I tend to ask myself when writing tests, even if, perhaps, only subconsciously so. While quite...
View ArticleFluent APIs and Method Chaining
Of the vast catalog of Design Patterns available at our disposal, often times I find it is the simpler, less prominent patterns which are used quite frequently, yet recieve much less recognition; a...
View ArticlePseudo-abstraction in Backbone
As has been mostly disseminated, JavaScript, being a dynamic, prototypal language, affords developers the ability to design outside the rigid confines inherent to statically typed languages....
View ArticleSimplifying Designs with Parameter Objects
Recently, while reading the HTML5 Doctor interview with Ian Hickson, when asked what some of his regrets have been over the years, the one he mentions, rather comically so as being his “favorite...
View ArticleDetermining if an object is empty with Underscore / Lo-dash
When leveraging the utilities provided by Underscore or Lo-dash, determining if an Array, String or Object is empty is quite simple via the isEmpty() method. The isEmpty() method and Objects In the...
View ArticleManaging Client-side Templates with RequireJS
When developing single page web applications, patterns of structure, organization and reuse become ever more important. This especially holds true when there is a need to maintain mulitiple web...
View ArticleJavaScript Comma Delimiter Pattern
Perhaps the most common syntactic error I find myself correcting in JavaScript is that of a simple missing comma separator on new lines. Such marginal oversights can become quite a nuisance to correct...
View ArticleOrganizing Require JS Dependencies
When developing large scale web applications leveraging RequireJS, at times, even the most highly cohesive of modules will require quite a few other modules as dependencies. As such, maintaining the...
View ArticleDecoupling Backbone Modules
One of the principle design philosophies I have advocated over the years, especially through various articles on this site, has been the importance of decoupling. And while I could go into significant...
View ArticleCircumventing Conditional Comparisons
Often during the course of my day I come across code which evaluates the same conditional comparisons in multiple contexts. Understandably, this is rather typical of most software systems, and while it...
View ArticleMultiple Form Factor Software Design
I have been giving a lot of thought lately about designing software in a Multi-Form Factor paradigm and felt I would share some initial thoughts on the subject. Keep in mind much of this is still quite...
View Article