Author: Petro

Unit Testing Strategies in Node.js

In the world of JavaScript development, it’s easy to get lost and do things wrong, especially when it comes to unit testing. JavaScript is a powerful language, but it is also one where it is incredibly easy to do things the wrong way, and the utmost care must be taken to ensure you don’t end up with a situation where you have no hope to correct yourself. In this article, I’ll explain my experiences with unit testing in Node.js, specifically for a web application using express and MongoDB via mongoose, what I’ve learned and what I believe is the “right” philosophy of how to organize your code to make it testable.


65535 files is one too many

Back in March I was working with Visual Studio, developing an ASP.NET MVC project, and everything was going fine until one day I tried to load the solution I was working on, and when loading one specific project I started seeing an error.

Microsoft Visual Studio
Failed to create extension manager for the target platform 'Microsoft.Data.Tools.Schema.Sql.SqlAzureDatabaseSchemaProvider'.

Just given the error, it leads one to believe that the problem has to do with SQL or Azure or Databases, or anything similar. I googled around, and couldn’t find any kind of resolution. Most advice said to re-install various components of Visual Studio like the Azure SDK which I tried multiple times to no avail. Another bit of advice was to delete the *.suo files, and try re-cloning the repository. Deleting the *.suo files didn’t help but when re-cloning the repository I started having even more problems because suddenly SourceTree was bugging out and crashing for me too (remember this fact, it becomes relevant later in the article)! At this point I knew something had to be up, something really bizarre – I dug deeper.


Azure Storage Emulator

If you’ve done some work with Azure then you may have wondered if it is possible to run a local version of Azure for development and testing instead of having to go to the cloud for those needs. The answer is that it’s not only possible, but (surprisingly?) easy and painless.

Azure Storage Explorer (Screenshot) (more…)

Git introduction for CVS/SVN/TFS users

Today we’re going to cover version control with Git from the perspective of someone coming from a second-gen source control tool like CVS, SVN, or TFS. If you’re depending on how familiar you are with source control you may want to skip around through this article. We’re going to cover the following:

  • What is a VCS?
  • Version Control history
  • What makes Git different
  • Git Flow
  • Clients
  • Basics of Git
  • Useful Links

So without further ado, let’s begin as I take a biiiig step back and start with…


Making Node.JS Work With Apache

While I’m on a roll with node-related posts, I would like to take a moment to discuss how to run Node with Apache. Now, this might seem counter-intuitive at first glance; I am sure you are asking yourself “why the heck would I need to run apache with node if a node web app itself runs its own HTTP server?” but that’s the wrong question to be asking. The right question is “What kind of advantages do I gain by using the two together?” and the answer may surprise you. (more…)

Basic Scaffolding for a Node.JS Powered Website Project

As a node.js enthusiast, I have made multiple small to medium size web apps using node and its many various useful libraries like Express.JS. Previously I made a blog post about how to get started with making a node.js powered website and it has become one of the post popular entries on my blog however the feedback I got was that I need to include an example. I originally didn’t include one because I felt like there wasn’t really enough code to actually make it worthwhile, especially since some excerpts were already in the post. However, I have since realized that even if not used as an example, a basic scaffolding would help me (and thus probably others) with getting started on making their node website. Consequently, I introduce to you my “Node Website Scaffolding” project! Getting started is as easy as going into your terminal and typing

git clone

This will download everything you need except the dependencies. It comes with the latest (at the time of me writing this) bootstrap which is version 3.1.1. Let me run you through the ropes of this project… (more…)

Automated Testing of iOS Apps

Today I’d like to talk about automated testing with iOS, and do some reviews as well as share my thoughts on various technologies used to do that. Firstly, I want to mention that in this post I will be talking specifically about regression and functional testing (i.e. going through the various screens of the app, clicking on things, making sure everything is working) of the UI and not performance testing (i.e. not trying to see how many users or actions the application can withstand even though testing that may require automating the UI). The difference is important because in performance testing we do not really care if things show up properly, just as long as they show up within a certain amount of time or show up at all. (more…)

Init.d startup/shutdown script for Node.JS applications via forever

If you are like me and have multiple Node.JS applications running on a *NIX box, each managed by the ‘forever‘ which is described as “A simple CLI tool for ensuring that a given node script runs continuously (i.e. forever)” then chances are you’ve also wanted to add your applications to auto-start via init.d. Additionally, by having an init.d script for each application you’d be able to stop, restart, and check the status of each of your applications without having to get into pathing and changing users. (more…)