There’s nothing worse than publishing your shiny new feature and finding out that it broke some older code. It’s incredibly easy to forget how some parts of your depends on other parts. It may be that the dependent code is not an often used feature, but when it does get used, it’s important.

One great way to prevent this from happening is to create an automated test suite. Whenever you make changes to your code or get ready to publish it, you can fire off the automation and it will check your entire app to ensure nothing broke. There are several ways to do this, and I suggest incorporating multiple techniques. Continue Reading…


It’s an annual tradition: Spending time with family, enjoying a nice meal, maybe watching a football game. Increasingly the tradition includes looking through the ads to see what the best deals will be on Friday. This year, there’s a competition to see which store can open the earliest on Thursday to attract shoppers. Some stores are opening at 5:00 on Thursday.

Thanksgiving is a US holiday that remembers early American settlers who survived against the odds. They worked with the native Americans, and to celebrate, had a feast. This was a feast where they expressed thankfulness, and that is the origin of the name. Continue Reading…


Have you ever been doing a little web development and needed a web server for local testing? This usually happens to me when I’m doing Javascript and want to use a little Ajax. Much of what you do will work fine with the classic file:/// protocol, but sometimes that just won’t cut it.

Yeah, we can always use MAMP or XAMP or maybe you have a web server (IIS, Apache or Nginx) installed locally. Then you have to either move your files to the web root or configure it to point to your project folder, then remember how to start it (edit that config file). I just found a simpler way… Continue Reading…


Google’s Material Design is a well-thought out, well executed design language for making mobile apps that chooses not be flat (for the sake of flatness). Instead, it uses depth to help raise the priority and to emphasize touchability. It features bold, bright colors and subtle animation to help provide feedback to gestures and finger interaction.

For native Android app developers, Google has produced documentation on how to apply the Material Design theme to your apps and update them for Android 5.0.

As a web app developer, I’ve been looking for ways to explore how to use the Material Design language in my own project. Here are three tools you can use today to help you create web apps and prototype apps using pre-built components. These are ordered from most-maturity and usefulness to least. Continue Reading…

Admin LTE Browser Window

Sometimes I have an idea I want to start coding on, and ultimately what I want to focus on are the features, not the design. But as we all know, if our design is ugly and hard to use then nobody will take the features of the app seriously. Appearance and ease of use are important!

It’s times like this when it makes sense to stand on the shoulders of giants, so to speak. This is why Bootstrap is so popular – it gives you all the pieces you need to make your app. But sometimes Bootstrap is too low level. If your idea needs to provide an admin dashboard as a main part of the user interface then here are some themes you can use to get started quickly. Most of them are free, the rest are very low-cost, and some are built on the Bootstrap framework, allowing you to utilize your existing Bootstrap knowledge.

Continue Reading…


I frequently get asked the question, “How do I get started doing web design?” I’ve answered it so many times that I decided I’d post the answer that I’ve given.

Let’s first make a few things clear: many people in the industry consider web design to be a generic term when used by someone outside of the industry. It is a bit ambiguous – do you mean you want to do design work, or do you want to focus more on coding? It is quite common for someone to be strong in design skills but not so strong at coding, and similarly for someone to be a great coder but not so great at design.

In this case I’m referring specifically to someone who wants to do design. We’d call someone who prefers code a web developer. The answer has a lot in common if they said they liked to code, but I would give a different answer. I’ll share it as a separate blog post. Continue Reading…

T-mobile’s pre-paid plans are changing

If you read my article about how I pay $8 per month for cell-phone service and want to do this, you better move quick. T-mobile is changing their plan this Sunday (Aug 17th). Overall, the pricing is simpler and cheaper, except that the “Gold Rewards” feature seems to be going away. If that is the case, then that means you’ll have to top up your phone more often. Also, there is a $3/month minimum, which isn’t that big of a deal. If you rarely used your phone with the old style I described where you start with a $100 balance and add $10 per year after your first year, you’d go 4½ years before you depleted your balance. This will only work if the updated plan supports minutes that don’t expire for a year. (currently refilling $10 only extends your balance by 90 days w/out Gold Rewards) When I get more details I’ll update my blog post.

Photo Credit: qnr

When you’re developing web apps they tend to start out simple and then grow more and more complicated. On your servers you have services for your dependencies, but when you’re in development mode, it can be tricky to get everything running at the right time. The tool I’ll show you here works for Node.js, PHP, Java, Ruby, Python and more.

I use a laptop as my main computer and in order to save battery life, I limit the number of services I have running. A common app may be built with Node.js and rely on MongoDB and Redis. Therefore I launch MongoDB, launch Redis, then when all are running, launch my Node app. Then when I’m done I have to remember to shut each down. It’s a chore – exactly the kind of chore computers are great at, so let’s have the computer do it for us. Continue Reading…

Photo Credit: Cayusa

It’s quite common to create an app where you want to protect numerous pages. It’s not difficult to check for req.user and force the user to a login page, but code duplication is not a good idea. Fortunately, it’s quite easy to write a middleware that will require authentication for a whole set or URLs.

First, we’ll set some assumptions: You’re using Express 4.x, you’re using router (is there any other way?) and you’re probably using Passport. I don’t think Passport is required for this solution, but it’s the only option I’ve tested with. Let’s assume that you’ve got a homepage that does not require authentication but the rest of your site, other than the login/logout/register pages, require authentication. Continue Reading…

Photo Credit: dzarro72

Recently I built a demo application using Sails 10.x (currently in beta) and needed to add authentication support to it. One of the challenges with this is that the documentation for the beta Sails is not complete yet, and much has changed. The documentation is still great, so I definitely recommend making it your first stop.

While browsing through NPM modules I found sails-generate-auth which looked like an excellent solution for authentication. Yes, it works, but unfortunately the documentation is not written very well. The Github page makes it look like all you need is a configuration file and you’re set. In reality, there is a bit more work to do. Here are the steps I took. Continue Reading…