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…

I’ve been so busy writing a Node.js training series that I’ve hardly had time to blog. I have several posts in the works but they’re coming slowly as I get the draft done and off to the publisher for review. I’ve learned some amazing tricks that I need to share and I also need to update a few blog posts that are getting a little dated. Stay tuned!


Apple is replacing Lucida Grande with Helvetica Neue in Mac OS X. Some people are happy, some are sad. Those that are sad explain that Helvetica Neue doesn’t make as good of a screen font because, in part, it has tighter apertures, which means that at small font sizes some letters get hard to read. For example, lower case Cs look like Os and Ss look like 8s. This is true when you view them at lower resolutions, such as most computer monitors (which are under 150 ppi, but is fine on high resolutions such as print outs (300+ dpi) and retina displays (approximately 300 ppi).

We know Apple cares deeply about the usability of their products, and we know that they have some great designers working for them, so we have to believe that they understand this potential for a problem. But what if the designers knew something we didn’t, that soon, non-retina displays would be obsolete? Continue Reading…

Photo by coolinsights

I often get asked by teens and parents for ideas for jobs. I always answer, “you should start a business.” Usually I’ll include suggestions based on what I know about the person who is looking for work. In my opinion, there is no better time in life to start a business than as a teen.

Why? You may ask? Well, here are a few reasons:

  1. No one is as risk tolerant as a teen
  2. Few people are as undervalued
  3. Learning to fail (aka trial and error) is one of the most important lessons you can learn and it’s better to learn it when you are young and the stakes are low
  4. You can make way more than minimum wage and you’ll more likely be doing work you enjoy

I could prattle off a few more reasons, but let’s dig into these. Continue Reading…


My daughter finally got me to watch Frozen with her this weekend, and I have to admit, it is good. (we bought it on Amazon Instant Video, which is just too convenient in the post-DVD world) The voice acting and music are superb, the animation is among the best, but my favorite is the story, particularly three elements which deeply illustrate and reenforce important Biblical messages.

I want to warn you that this article does reveal part of the ending, so if you don’t want it spoiled, quick, go watch it now, then come back and read this. (I will still leave much as a mystery, so if you want to keep reading, you will still enjoy many surprises in the movie) Continue Reading…