Observable Store 2.0 Released on npm!

I’m excited to announce the release of Observable Store 2.0 on npm! You can get started using it with the standard npm install command: The Github repository provides information about the specific steps to get started and how Observable Store can be used with various front-end projects. Why Observable Store? Before jumping in to what’s new in 2.0, let me give a quick overview of the Observable Store project in case you’re new to it. Several years ago I was working with a few large companies here in the United States who were building Angular and React apps. One in […]

RxJS Error: “Types of property ‘source’ are incompatible” and How to Fix It

I’m working on an npm package that requires RxJS as a peerDependency which means that whatever app uses the package must also install RxJS. Since my npm package project needs RxJS to build, I add it as a devDependency which of course adds it into the node_modules folder of the project. To use my npm package locally in sample apps I have I do the following which is a nice trick to avoid having to publish the package to npm (which I don’t want to do when I’m still working on it): Run npm link [package-name] where package-name is name […]

Debugging jasmine-ts Unit Tests in VS Code

I’m currently working on a project that relies on jasmine-ts to run unit tests. While it’s been working great, I encountered a bug in a unit test that required a lot more than a simple console.log() statement to figure out. I needed real debugging! Since my unit tests were running and providing output directly to the console, the question became, “How do you attach to a jasmine-ts unit test in VS Code?”. I found a few StackOverflow posts and finally went with something mentioned here (shout-out to isaacfi for providing the answer that actually worked). To debug a jasmine-ts unit […]

Data-Oriented vs. Control-Oriented Programming

I recently had someone ask me a question on Twitter about moving to Single Page Application frameworks and why they’d do that over choosing vanilla JavaScript or jQuery. It’s a great question but tough to question on Twitter with the limited amount of characters. So, I thought I’d dust off an old post I wrote many years ago to address the subject. I also wrote a post titled Choosing the “Right” JavaScript Library/Framework for Your Application that has some additional ideas to consider as well. Any type of front-end app can be built using vanilla JavaScript, jQuery, or a Single […]

Using the Iterator Pattern in JavaScript

I recently had to parse some markdown using the marked npm package and convert it into JSON objects for a project I’m working on. When I parsed the markdown I’d get back an array of tokens that would look something like the following: I started out the “normal” way by doing a for…of loop to iterate through the tokens in the array. This worked, but tracking the start and end of a token meant adding extra variables which ultimately complicated the code. For example, how do you know if you’re in a list? You track it with an inList variable […]

Simplifying Front-End State Management with Observable Store

I admit it – I think the use of some front-end JavaScript state management patterns has gotten out of control. When you’re spending a significant amount of time writing code (and often a lot of it) to handle application state or relying on a scaffolding tool that generates 100s or even 1000s of lines of code then it’s time to take a step back and ask, “Do I really need all of this?”. While you’re at it you might also ask, “What can I do to simplify my code and bring some sanity back to it?”. Rather than ranting about […]

Free Interactive Coding Course: Build Your First Angular App

About a year ago I was browsing the web and came across a site called It provided a unique way to learn about web technologies through a live code editor combined with audio that syncs with the code – something you have to actually try out to realize the full potential. Since I do a lot of training for companies the Scrimba tool really caught my eye. I was so impressed with the features Scrimba provided that I decided to contact the creators (Per Harald Borgen and Sindre Aarsaether) to let them know that I thought the tool they had […]

Real Talk JavaScript Podcast: End to End Testing with

I had the opportunity to talk with my good friends John Papa and Ward Bell about and end to end testing on the Real Talk JavaScript podcast.  We talked about why I think end to end testing should get more attention, how I’m using it in a current project, as well as the benefits it can offer developers. I wasn’t a huge fan of end to end testing in the past mainly because I hadn’t used it much on projects, had the misconception that it was for “dedicated testers”, and felt like it would require a lot of time […]

Choosing the “Right” JavaScript Library/Framework for Your Application 2

“What’s the ‘right’ JavaScript library/framework for us to use?”. That’s a question that comes up a lot nowadays given the multitude of choices available and one that doesn’t have a “right” answer of course. I’m fond of saying, “Use the right tool for the right job” when I’m onsite at a company teaching a training class or providing architecture/consulting services. While I certainly have my technology preferences, to force them on someone or on one of the companies I work with would quite honestly be naive and shortsighted. If there’s one thing I’ve learned working in technology over 20 years […]

Node.js/Express Convention-Based Routes 2

I’ve always been a fan of convention-based routing so I converted a local route generation script I’ve been using with Node.js/Express applications into an npm package called express-convention-routes. The package can be used to automate the creation of Express routes based on a directory structure. What’s a convention-based Express route? It’s a route that is dynamically generated and associated with a “controller” function without having to explicitly code the route yourself (i.e. you don’t write code such as app.use(‘/foo’, router)). express-convention-routes creates routes automatically by parsing a convention-based folder structure such as the one below when the server first starts. […]