Node.js is for Everyone

When asked about Node.js, most developers would say that they have heard of it and may have even used it in some aspect of a project. When asked what Node.js is, the conversation tends to take a different turn into different technology “buzzwords” such as Meteor, MongoDB, and sometimes even Express will come up. The point is that while a lot of developers have heard of Node.js that is about as far as it goes. Node.js is a newer technology that is rapidly climbing to the top in the technology stacks of a multitude of large companies. Wal-Mart, PayPal, Netflix, LinkedIn, and many others are using the technology on a daily basis. So what exactly does Node.js do? Simply put, Node.js is a server side JavaScript runtime. It is single threaded, asynchronous, and event driven. Node.js is built with Google’s Chrome V8 JavaScript engine, it compiles the JavaScript source code to native machine code instead of interpreting it in real time, which in turn allows JavaScript on the server side to run almost as fast as compiled code. Node.js uses an event loop to process incoming requests. This means that as requests come in, Node.js will process them one at a time and send callbacks out as a response. Node.js is capable of running on a majority of different types of servers. Windows, Linux, Mac OS, UNIX, and ARM are just some of the servers that Node.js can be and has been deployed on. Not only will it run on just about anything, it is open source as well. Pre-built binaries and the source code is available on the Node.js site. Node.js is a server side JavaScript interpreter, so how do things get done with Node.js? This is done through modules, third party libraries, and other frameworks to expand Node. These packages are managed with the Node.js package manager called npm (node package manager). There are frameworks for MVC (Model-View-Controller), desktop applications, web servers, and just about anything else you would want. Node.js is definitely worth looking into as a developer, even if it is just to become more familiar with the terminology and different technologies associated with it because it is not going away and will only get bigger. More and more companies are finding internal uses for Node.js and a lot are using it to build web apps, mobile sites, desktop apps, or just using it to host their web API. It is lightweight, versatile, and doesn’t require much to run efficiently. It is definitely a technology to keep track of.

The Pros & Cons of CMS APP Builders

So you’ve decided you want to build your mobile application with a cross-platform solution. Now what? There is yet another decision to be made: Should you build your app with a CMS? Let’s first go over a quick definition of CMS, or content management system. What makes a CMS a CMS? First, there is usually more of a drag-and-drop feel than actual coding. An example may be dragging and dropping a text box component rather than coding ‘<input type="text"></input>’. Next, there will be some type of dashboard. And usually you will be able to create different permissions for various users of the dashboard. For example, you may want to allow someone to be able to sign on and change some text, but you may not want them to be able to edit the styling of the application so you would edit their permissions accordingly. Now, let’s take a look at the pros and cons of CMS app builders to help us answer the question we originally asked: Should you build your app with a CMS? Pros Code faster - CMS app builders allow you to build apps at lightning speed. I can build a complete app (ready to be submitted to the app stores) with a CMS builder within hours. The ease of drag-and-drop can save huge amounts of time and effort. Client customization - This pro comes along with the dashboard aspect of CMS builders. This comes in handy when you are offering customizable apps for clients. With a dashboard, you can create a login for the client and let them sign on to their application’s backend for simple text updates or adding a blog to a blog section, for example. Automatic updates - Getting an app through the App Store can be a frustrating process because of the length of time it takes to be approved. That’s not so bad for the initial submission, but waiting days for each update can be an issue if you have a client that is constantly wanting changes. Usually with CMS builders, you can automatically push 99% of updates (excluding splash screen or icon changes). Cons Costs money - One major con to using a CMS builder is that it is not free. Usually for a single app, it will cost about $50/month and will only stay live while you are paying the subscription. For reference, check out the pricing sheet for one of the top CMS builders here. You can easily see how this could get very expensive very fast with multiple apps. One thing to keep in mind is that if you know you will be creating multiple apps, most CMS solutions offer some type of affiliate program. This means you will be able to pay a higher monthly fee, but you will be able to create as many apps as you like. Less control - Sometimes with CMS builders, you lose 100% control of what you can do with your app. For example, they may only offer a set amount of templates you can use for a page. Most will offer a blank HTML template you can code yourself to help with this, but if you are trying to avoid hours spent coding then that doesn’t really solve your problem. So, what’s the answer? Of course, it depends. If money isn’t an issue and you want to be able to quickly create customizable apps, a CMS builder is most likely the way to go.

Coding Mobile Applications: To Go Native or Not

Before you begin coding a mobile application, there are several questions you need to answer. ● How many platforms am I going to support? ● Do I want to support a web app? ● Which platform should I start with? And the question we are going to look at in this blog post... ● Should I code natively or use a cross-platform method? First, let me give a quick definition of the two options. Native: This means you code for each platform. Meaning, you use XCode for iOS development, Android Studio for Android development, and so on. Cross-Platform: “Code once, run everywhere.” Write your code once, usually with HTML5/JavaScript, and run the application on multiple platforms. Now, let’s look at the question again: Should I code natively or use a cross-platform method? After reading the definitions, it may seem obvious that you would want to choose cross-platform because it only requires you to code your application once. But there’s another piece of information missing that you will need to make your decision. When you code cross-platform, there’s a chance you will miss some native functionality. For example, the overall look and feel of your application may not match the platform it is running on. Or, you may not be able to access all the features on say an iPhone camera or any other feature that is platform specific. With all of this in mind, the real answer to the question is: It depends. I know, that’s not the straightforward answer you were hoping for. But it is the correct answer. The way you code your mobile application depends on the way you want your application to be used. If you want to be able to access all of the platform specific features (or even just a few key ones), it is probably worth it to code natively. Or, if you want your application to have the look and feel of the platform it is running on, it is probably worth it to code natively. If the overall look and feel and platform specific features aren’t as important to you, you may want to look into some cross-platform solutions such as Appcelerator, but there are many solutions and it’s important that you find the right one for you. If you decide to go with cross-platform development, check out my next blog on cross-platform CMS builders.

Scaffolding – The Future of Software Development

As science and technology evolve, new features are compounded upon old features like building blocks. Most people agree that in this linear fashion you can’t get to point ‘C’ without starting at point ‘A’. But should you really have to start from point ‘A’ every single time? Let’s talk math for a bit. Don’t worry, you don’t actually have to solve anything. Take this equation: ∫6x = 3×2 + c. Since we’re taking the integral of 6x, this is labelled as Integral Calculus. According to Kahn Academy, one of the leading sites for learning mathematics, before learning Integral Calculus, you should know Algebra, Geometry, Trigonometry, Probability and Statistics, Pre-calculus and Differential Calculus (in roughly that order). It would be insane to do an exercise in all of those every single time you had to do an integration problem. But in software development, that’s exactly what we do. If you’re a software developer, you’re probably thinking I’m crazy, but hear me out. One more hypothetical scenario: let’s look at what it would take to make an Android app. First, we need to design the login page. Well, that’s got to be easy, since all login pages look pretty much the same, except some mild theme rolling. So we put up fields for username and password, then buttons for submission, registration, and password retrieval. We’ll take care of login itself first, so we write a method to encrypt the password to SHA-256 before submitting it to our server. That’s when you find out that newer versions of Android can’t do network calls on the UI thread, and you scream out in frustration, “Why am I making something as mundane as a login screen? People have done this a thousand times, this is ridiculous!” Think about how many applications haven’t been made because the tasks leading up to it were too complicated, took too long, or were just too boring. As software grows and requires more boilerplate code, the effort of a developer grows greatly – and this is just to ensure a sturdy foundation. Thankfully, there’s an answer – scaffolding. Scaffolding, in the software development sense, is the technique of generating a generic application with features common to most modern applications already built-in. A decent scaffold would include, for instance: login and registration pages, server connections, routing, model templates, controllers, security mechanisms. By using a scaffold, you can cut days, if not weeks, off of your development time – and we’re just getting started. So, how can you start scaffolding your next application? Well, luckily, Yeoman makes that part super easy. The downside – Yeoman is geared primarily toward web development with NodeJS. Why aren’t there really scaffolds for mobile or desktop applications? The only real answer is because nobody’s created it yet. Keep an eye out, though; the market is prime for a major scaffolding company any day now. - Christopher Johnson