My talk at the Powered by JavaScript conference at Strangeloop 2014

I was in St. Louis in September speaking at the Powered by JavaScript conference. My talk was about reducing boilerplate and avoiding build tool configuration files by extracting a core set of processes into an adaptive tool that generates and maintains your configuration.

The talk touches on the basics of Grunt, Static Analysis, and techniques necessary to precompile preprocessors and auto-bundle your JavaScript applications.

Continue reading

Beauty in Code

There is beauty in the thoughts expressed in code; the search for the perfect idioms. A logical poetry.

There is beauty in the product: that which our code has created.

There is beauty in the usability of our code – its API: its language of interaction.

Think, for a moment, about your own code. We write so much of it. Where is the beauty within your career’s corpus?

Connecting the dots on Dollar Cost Averaging

Dollar-cost averaging (DCA) is a popular investing technique whereby you incrementally purchase more shares of the funds in your portfolio: in small amounts on a monthly or quarterly basis. The main idea is to not invest all of your money at once: avoiding big dips in the market right after your purchase. If you only invest a little at a time, you’ll buy more shares when the market is down and fewer shares when the market is up. Sounds like a no-brainer, right? Well, DCA really only makes sense in a few cases.

Continue reading

Navigating an AMD codebase in Sublime Text using Static Analysis and Node.js

This post was featured in Node Weekly #43.

When you have a large JS codebase that uses the AMD module pattern, like we do at Bēhance, it becomes tedious to perform certain tasks within your editor. This hurts productivity and adds up to wasted developer time in the long term. Here are some of the problems and possible/existing solutions.

Continue reading

JS: Auto-generate Grunt tasks using Static Analysis

If you’ve been around modern tooling in front-end web development, you’ve likely run into task runners like Grunt and Gulp. Grunt uses a declarative way of defining tasks via a large configuration JavaScript object that gets fed into the Grunt engine. Gulp takes the more programmatic approach, using JS stream-centric code to define tasks. The battle comes down to configuration vs code when comparing Grunt to Gulp, respectively.

Personally, I’d prefer to have no configuration and no code. Ideally, tooling should help me avoid having to write that boilerplate. In this post, I’ll talk about the feasibility of automating front-end build processes and auto-generating Grunt tasks. The ideas are used in an experimental tool called YA that explores solving this problem.

Continue reading

Technical interviews are actually good for you

Programmers, both new and experienced, have a hard time getting away from technical interviews: the “large-company” style of interview where you’re asked to work through an ambiguously-stated programming question with an interviewer who already knows a wide-range of solutions to the problem. There are pros and cons to this interview style; I personally don’t like it at all. However, preparing for technical interviews can teach you a a lot about yourself. I’d like to share my own findings, in case it helps a programmer with similar problems.
Continue reading

Javascript: An Exploration of Prototypal Inheritance

Eureka! That’s the feeling I had when I finally saw how Object.create could help me in achieving the inheritance-oriented behavior I was after. I’d been reading lots about prototypal inheritance in JS and understood bits and pieces, but it finally started to click recently. Here are some thoughts and (intentionally simplified) explanations that will hopefully help you toward that eureka moment.
Continue reading

Large-scale JavaScript: A monolithic service layer

When I started architecting the initial JS apps for YouNow, I sought to build structures that could be used both by our Backbone.js applications and one-off scripts/projects. These structures grew quite quickly over time; they became monolithic. In this article, I’ll examine the motivations, pros, and cons of a backend api service layer and suggest/brainstorm alternative implementations.

Continue reading