Problem Solving at 200 Feet

About a year ago I started rock climbing, and before I knew it, my approach to software development had changed. You see, rock climbing is predominantly made up of engineers, which I believe has to do with the problem-solving nature of both activities. But it’s more than just that. As I learned how to rock climb, the way I approached problems quickly changed. Read more on Problem Solving at 200 Feet…

What Owning a Coffee Shop Taught Me about Software Development

Four years ago, I embarked on an unknown adventure. I invested in and shared ownership of a coffee shop, without having either much business experience or any knowledge of coffee. I dove, head first, into a crazy adventure which changed me in ways I never would have guessed.

The Opportunity

The opportunity came up while a friend pitched me on her vision for the next phase of an established coffee shop. Her partner recently pulled out of the business and there was room for an investor/partner. After hearing the pitch, I was in. Read more on What Owning a Coffee Shop Taught Me about Software Development…

Finding Reliable Information with Quora, AMA, & Verified Accounts

The Internet has forever changed the way we learn, share, and gather information. From Wikipedia to Google, our ability to consume a topic of knowledge is easier now than it ever has been. However, some topics have few reliable sources, while others lead you down worm holes of opinion blogs with little to no consensus.

Quora, Reddit’s Ask Me Anything, and Twitter’s Verified Accounts try to address the problem of finding reliable information and answers to difficult questions. By connecting you directly with the content authorities, these new services take the guessing out of credibility. Questions like, “What is it like to work at X?” or “How does this very specific model of physics work?” now have places which house the answers. Read more on Finding Reliable Information with Quora, AMA, & Verified Accounts…

Package Management Options in JavaScript

As browsers and HTML have matured, our ability to create wonderful experiences has become easier and better, but our code has become more complex. To aid this complex development, we rely on packages such as JQuery, Bootstrap, etc.

But with the use of packages comes the need for package and dependency management. Ruby has RubyGems and Node.js has NPM, but we also need something for the browser. Here are a few of the more popular choices and how they approach dependency/package management. Read more on Package Management Options in JavaScript…

Product Review: Nest Protect

In 2011, Nest Labs released their first product called Nest, a learning thermostat. The reviews were good, and Nest Labs was congratulated as being the first company to innovate on a product were little to no innovation has recently existed. In 2013 they did it again, releasing the Nest Protect, a smart, wireless-connected smoke and carbon dioxide detector.

Upon hearing of the Nest Protect, I ordered for my house immediately. My house, built in 1900, is not wired for inter-connected smoke detectors. Nor did it have working smoke detectors on every floor and in the bedrooms, which is the recommended home configuration. Nest Protects are not cheap, they’ll run you around $130 a piece. However when pricing out the labor costs of wiring my old house for smoke detectors, the $130 price tag started looking better and better.

Once installed, the Protects have a few new features beyond what a normal smoke detector provides.

Read more on Product Review: Nest Protect…

The Less’er of 2 Evils – Fixing Bootstrap’s Clutter with Mixins

Bootstrap has become a great tool for quickly bringing a web-based product to reality — even more so with the need for websites to be responsive. I’ve enjoyed using Bootstrap, and I feel version 3.0 has been another big step in the correct direction.

However I still cringe every time I have to add the class col-md-12 col-sm-6 etc etc etc into my dom. If we look at a simple layout and its markup, we can start to see the DOM clutter:

Layout

Markup

<div class='container'>
  <header class='col-md-12'>...</header>
  <nav class='col-md-3 col-sm-12'>...</nav>
  <main class='col-md-9 col-sm-12'>...</main>
  <footer class='col-md-12'>...</footer>
</div>

This example illustrates a common pain point of Bootstrap. The col-md-X classes mixing into the DOM goes against the teachings of Semantic Markup. Col-md- clutter the DOM and are, overall, an eyesore.

Read more on The Less’er of 2 Evils – Fixing Bootstrap’s Clutter with Mixins…

Debugging with Ember Inspector – Ember’s Chrome Plugin

When creating a single-page site using a technology like Ember or AngularJS, debugging code can become an issue. Firebug and the Chrome debugger quickly lose their power as you have to dig through Ember models and other representations of your application.

Thankfully, from the creators of Ember comes a plugin for Chrome debugging — Ember Inspector — which gives you quick access to Ember objects and data.

Tree View

The tree view visually allows you to walk through the different parts of your Ember application. This is useful for debugging but also helps to gain an understanding of how an Ember application is built up.

Read more on Debugging with Ember Inspector – Ember’s Chrome Plugin…

A CSS Naming Convention for JavaScript

A simple, but effective, convention in web development is to have different names for css classes based on their use — one for when the class is going to define style and another for when the class is going to be used as a hook for javascript and testing.

There are plenty of articles that talk about how you should name your css, what the files should be called, etc. (Here are some at Snook.ca, Smashing Magazine, and phpied, for example.) The topic has been covered and for the most part is agreed upon.

JavaScript is the same. It’s easy to find articles that talk about what classes should be called, code styles, how to indent. etc. There are not, however, a lot of people who discuss connecting JS to the dom.

Read more on A CSS Naming Convention for JavaScript…

Dynamic Rails Routes with Warden Devise and Constraints

My rails application has a variety of users, and I want to make the root of my app load something different based on the needs of each user after log in. For example, if a student logs in, I want to load the students/dashboard page. If a Teacher logs in, I want to load the teachers/dashboard etc.

Read more on Dynamic Rails Routes with Warden Devise and Constraints…