Nicholas Barger

Entrepreneur - CTO - Engineer

I have a software development background specializing in web technologies coupled with business and management experience. I have direct experience with e-commerce, insurance, medical device, aviation and large web-based applications.

Resetting your defaults

2014-07-10

My blog at nicholasbarger.com pretty much died. It had a decent run from 2008 - 2013, but then a sudden death. I stopped writing, forgot about controlling all of the SPAM comments, and even forgot to update my credit card which subsequently caused my custom css theme to disappear.

I’m not quite ready for a blog eulogy, so time for a reboot and let’s see if we can salvage the remains.

Looking back at why I started my blog, I remember how I wanted to share what knowledge I had and help strengthen what topics I was learning. This was much easier to do when I was focused purely on technical topics. Programming languages, frameworks, libraries, and databases are so much easier to identify learning milestones and gain that feeling of accomplishment. They are black and white, either you know it, and the application you’re writing works, or you don’t and you continue learning more (and look it up on Stack Overflow).

In 2013, I spent the vast majority of my occupation in meetings. Some of my time went to architectural design and creating technical solutions, but most of my time went to project management, scheduling, explaining issues, and rehashing the same thing over and over. Though I complained at times, it wasn’t bad. In fact, I’m pretty sure I learned just as much, if not more during that year than ever before in my career. However, the accomplishments of that kind of learning aren’t black and white, and they can be sneaky at teaching you more abstract lessons.

One of those lessons learned was about how much impact you can have on people in ways you usually don’t even know. There have been many people I worked with directly who I really focused on to try and help and others I feel like I was nothing more than a casual acquaintance. To my surprise, months or years later, it has been the casual acquaintance that I hear from out of the blue to tell me that I made a difference some small (and on rare occasion, big) in their life. It doesn’t happen often, but when it does, it’s quite an experience. First I feel flattered, then a bit confused because what may have been an important conversation or action at the right time for them might have been casual and fleeting for me, and in some cases, I may not even remember it. Sometimes that leads to guilt not intentionally creating a relationship with them as I may have had with others. However, I realize that is how things work, and the impact others have had on me happen in much the same way. Some are direct and built over hundreds or thousands of interactions, others just happen to strike the right cord at the right time.

These interactions give me an occasional reminder of how important it is to set your default to being the kind of person you want to be remembered as, because when your guard is down may be the time you’re making an important impression.

That's one MEAN stack

2014-06-29
MEAN

On Thursday (6/26/2014), we had a nice meet up for the Southwest Florida [.net] Developers Group where I was happy to see some old friends and get the opportunity to present on the MEAN stack. This is a little out of my comfort zone since I am just learning this stack and am by no means an expert on it, but it was fun nonetheless.

This blog post is a bit of a recap on what we covered with some follow up links for more information.

What is the MEAN stack?

The MEAN stack is Mongo as the database, Express as a web server framework, Node as the underlying server, and Angular as the client-side framework. Let’s take a minute and briefly discuss each of these technologies.

Mongo

Mongo DB is a NoSQL document database that uses Javascript syntax and stores data as BSON (binary json). It's not a Mickey Mouse database; it's actually quite powerful, and it's free.

Some of the highlights of Mongo are:

  • Document database (NoSQL)
  • Javascript syntax
  • Stored as BSON (binary JSON)
  • Collections instead of tables
  • Single instance or sharded cluster
  • Replicated servers with automatic master failover

You can learn more about Mongo through 10gen’s introduction.

Also, take a look at comparing SQL to Mongo which is a great article if you’re already experienced in relational databases.

Express

Express is a web-server framework that sits on top of node. It's very lightweight and just makes node a little easier to use for web-based activities.

It’s not the only web framework for node, but it certainly is the most popular. Learn more about express.

Node

Node is server-side Javascript which focuses on non-blocking IO and is uses an event driven model. At first, the notion of writing Javascript to run the server-side code seemed a bit odd to me, but once I got over my old preconceptions of the limitations, I really embraced it.

The “hello world” of node looks a bit like this:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

You can learn more about node by visiting the official website.

Angular

Angular is a front-end framework for Javascript web applications which is supported by Google. Angular has the following benefits (among others):

  • Creation of new directives which allow you to augment HTML controls.
  • Clean separation of view, controllers, and services.
  • A simple to use binding mechanism for updating the view based on changes in the controller.
  • Testable using the IoC pattern.

More information can be found on the official website.

Try it out

You can try out the MEAN stack in several ways. First, as we did during the meeting, install each component manually by first installing node, and then using npm and bower to install the other packages. You can follow the public Trello board for simple steps that we followed during the presentation.

Two additional ways, which are quite a bit quicker and include additional libraries not covered during the presentation, are to use mean.io and yeoman.io. Both of these are scaffolding tools to get you up quickly and provide a solid foundation to work from.

Paralysis Analysis and the Paradox of Choice

2013-02-09

I am at the point where I visibly cringe at the mere mention of corporate buzzwords such as “paralysis analysis”, “single source of truth”, or “low hanging fruit”. However, all of these phrases are rooted in tried and true explanations of important and complex situations. I think it may be simple for communication to summarize these situations with a succinct two or three word phrase, but I also believe it is important to first understand what you may be short handing when you employ a phrase like this.

I can think of no better example than “paralysis analysis” (or “paralysis by analysis” for the longer form). Even now, I struggled with picking up my laptop and writing a draft of this blog post because I’m thinking of the following choices:

  • It’s 3:30AM and I need to get rest to watch the kids tomorrow morning (Saturday).
  • I really should be working on my project at work to meet this crazy deadline and the project accounts for significant impact to the company and potentially my career there.
  • I could be working on my side projects to start a company.
  • I could be attempting to drum up side work or consulting time.
  • I really should watch Pluralsight or some other educational material to continue learning and stay sharp.
  • I should put together a presentation for work.
  • I should put together a presentation for the developer group.
  • Etc.

You may look at this and say, this is just a task list; but it’s a conscious decision that I have to make before I take action to write this post and for the entirety of writing the post until completion to decide whether this is the best use of my time right now (or whether I want to do it the most). I find this incredibly difficult the longer the task is, for example, reading a book is excruciating to me lately because the pace is so much slower and I wonder if I should be doing something more “productive” which in many cases leaves me with not finishing the book and not doing a good job at the next task because I am thinking about having not finished the book.

A really strong light was recently shined on this for me when I stumbled across a TED talk by Barry Schwartz titled The Paradox of Choice. It’s fairly short at only 19mins and it’s been around for a couple of years now, but I really applaud the content. In the talk, Mr. Schwartz discusses many points regarding the simple fact of having so many choices that it provides less pleasure and focus on any one decision made and produces a sense of buyer’s remorse of allocated time. Wow, talk about your first-world problems, but this hits home for me like few others I’ve read or seen in the past year!

When thinking back of examples on when I generally write (decent) blog posts, learn new topics, write my best code, or actually solve difficult problems, it’s often at times like this: late at night, everyone else is asleep, sitting in the dark – relatively single focused. It’s not that I am anti-social or a recluse. It’s not that I can’t prioritize and push through distractions. It’s because my options are limited at 3:30AM, the pressure of so many activities or demands are slightly farther away right now, and there is some higher percentage of my consciousness that is focused on less problems.

It seems obvious as well that a lack of focus directly corresponds to a lack of quality in executing any one task and I’ve noticed that as my responsibilities in life and work become more diverse and when I can only allocate small tidbits of time across a great many activities, I sometimes look back and feel unsatisfied with the job that I’ve done. What’s interesting about this to me, is that usually I’ve done a good job; I met the goal, the customer is happy, some positive outcome – but I know I could have done better.

Now, with everything there are tradeoffs, and my focus on individual tasks currently is being supplanted with an opportunity to discover a much vaster array of different experiences that one would hope would have a synergy in and of itself. Perhaps in a couple of years I will be able to write a similar post on whether at the time of this writing I actually understand “synergy” or if I am merely using another buzzword.

Past Posts