Rails Router: How it Do

Anything becomes interesting if you look at it long enough

-Gustave Flaubert

I recently decided that I would spend some time investigating how the Rails Router works. I figured I’d read some source code, scan some documentation, and then move on with my life, having gained a slightly better understanding of this chunk of Rails I take for granted.

WRONG.

Turns out, the deeper you go with this, the more interesting it gets.  Fast forward a week, and I’m reading books about tokenization, spending my spare time pondering parsing, and watching YouTube videos about constructing Deterministic Finite Automata.  Much more challenging and enthralling than I originally anticipated.

If you don’t have a CS background, those terms may seem completely foreign.  Don’t worry, they were gibberish to me as well.  I’m going to do my best to explain the basic concepts and hopefully we can all learn something together.

Keep reading

permalink

Debugging Karma + PhantomJS

tl;dr: Add the lines highlighted below to karma.conf.js and open http://localhost:9876/debug.html in Chrome (with dev tools open) while your tests are running:


module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine', 'angular-cli'],
        plugins: [
            require('karma-jasmine'),
            require('karma-phantomjs-launcher'),
            require('angular-cli/plugins/karma')
        ],
        port: 9876,
        browsers: ['PhantomJS'],
        singleRun: false,
        // Allow remote debugging when using PhantomJS
        customLaunchers: {
            'PhantomJS_custom': {
                base: 'PhantomJS',
                debug: true,
            },
        },
    });
};

Keep reading »

permalink

Management Isn’t a Bad Word

I have worked as a software developer for different people, with different styles, and different goals. I’ve loved managers, hated managers, and everything in between. I grew to be cynical about managers and the word “management”. The idea of a person who was a “manager” of programmers-as-people became somehow a role fraught with danger, both for the people who would report to the manager, and to the person in the role – who surely was a respectable person before taking the mantle. The concept of a manager seemed one to distrust. I’d say that this feeling is prevalent among software developers.

In November and December of 2016, I had the pleasure and honor of stepping in as the Interim Director of Engineering for Springbuk. I was sending myself into danger, knowingly! I thought that my experience co-directing Fretless, and leading community groups like Indy Hackers and Indy.rb, would provide the knowledge I’d need to step up and perform the role well. After all, I had been working with the Springbuk team for 10 months in a senior developer type role. No sweat, right?

Wrong. Surprisingly wrong! Up until then, I did not appreciate the pressure of being a manager. Being the boss of a team of 10 or so at a startup that is trying to move quickly, satisfy customers, please investors, etc. involved doing much I had never done previously. In fact, they were probably two of the most stressful months of my life. I learned a ton, as well as put myself on a path to learn more. I want to share my experience, what I have learned so far, and the resources that have put me on the path to learning much more.

Keep reading »

permalink