Static Typing as Documentation

I’ve started to learn Angular5. What’s interesting to me at the moment is its use of TypeScript, a superset of JavaScript that adds ES6 features, and optional static typing.

For years, especially in the web-programming world, dynamic typing was the rage (Perl, JavaScript, PHP, Python). Now types are back. Python has add-ons and JavaScript has TypeScript. Continue reading “Static Typing as Documentation”

Nocking

I’m pretty into mocking…though I went overboard years ago when I really first started implementing it in my tests. Now-a-days I keep it under control, really only mocking external services. If I must mock part of my own API (e.g. for performance reasons) I make sure I minimize the mocks per test.

In Python I’ve extensively used the mock and request-mock packages.  They’re great, but I find their APIs a bit clunky. Lately I’m doing more Node.js and needed to mock an HTTP request and response. Continue reading “Nocking”

When Stringifiying a DOM Node Gives You Too Much

I’ve been refactoring an internal application that we use extensively at my organization. It’s called Sanity.

It is a general-purpose HTML quality checker that’s ostensibly for testing accessibility, but it’s general enough that it can test all kinds of things Continue reading “When Stringifiying a DOM Node Gives You Too Much”

Web Development Topics in Interviewing

I thought I’d organize some topics that have come up during job interviews for Python/JavaScript web development positions. This post doesn’t address problem solving exercises, rather just simple questions I’ve been asked to discuss or that have come up when solving algorithmic problems. Continue reading “Web Development Topics in Interviewing”

Principles First

The aim of this post is to show that recent trends in Agile trainings, emphasizing improvisation over principles, can do a great disservice to teams and projects.

Using Agile buzzwords doesn’t mean a successful product, results do. When organizations attempting Agile don’t strike a balance between flexibility and discipline, the Agile process is often blamed, not its crappy implementation. For an Agile process to succeed it takes knowledge and discipline to stick to its guiding principles. It’s not “Agile” to fly by the seat of your pants. It’s just irresponsible. Likewise, it’s not “Agile” to be dogmatic. After all, our goal is to produce the right product at the right time, not “be Agile”. Continue reading “Principles First”

Why I’m riding fixed

Not all trendy things are worthy of scorn. Some things are hot because they’re simply good. Think microbrews, Arabica coffee and Amazon Prime.

Reading about fixies in cycling forums and contemptuous blog posts you may be tempted to disregard the phenomenon as a poser, hipster thing. You might even avoid owning one because people might think you’re trying too hard. After riding one for a few weeks, I say hogwash. Continue reading “Why I’m riding fixed”

The spoked wheel

The old saying “Familiarity breeds contempt” is often true. Once you really know the object of your desire it often loses its spell over you. I can’t say this is the case with the spoked wheel. The more I understand it, the more it amazes me with the way it ingeniously solves the difficult problem of balancing light weight, resiliency and strength.

My infatuation with the spoked wheel began early even though I only recently understood how it works. I’m an avid trick unicyclist, unicycle commuter, and mountain unicyclist. But I’m not completely abnormal. I also ride a bike, regularly commuting seven miles to and from work on my customized Surley Crosscheck and Wabi Classic fixed gear. Continue reading “The spoked wheel”

Deflaking flaky tests

Flaky automated tests are a real drag. They’re worse than no tests at all. That being said, you can take measures to eradicate them.

Where I work folks have (finally) become test-infected, which means non-dedicated testers are writing unit, and even functional tests for themselves. Because of their lack of testing experience, a lot of these testers write tests, run them once, and bask in the green. The test may happen to pass the first time it runs, then he/she commits it to master and all’s well, right? Continue reading “Deflaking flaky tests”

A different mind

J was recently diagnosed with high-functioning autism (Aspergers). We always knew he had a different kind of mind. From day one, he was a very fussy baby and always looked a bit nervous. When my wife signed up for a “mommy and me” class at age one, he already was avoiding social interaction with other kids and wouldn’t participate in the activities.

He always had trouble entertaining himself. Other parents would say things like, “I just put my baby down on the floor with his toys and he plays while I get dinner ready.” Never so with him. He’d always need us to stimulate him. Or on the contrary, he’d have trouble settling down. In short, he was always different–and often frustratingly so. Continue reading “A different mind”

Installing Jekyll with RVM

Note: I no longer use Jekyll for my blog.

A lot’s been written about Jekyll, but coming from a Python background and knowing virtually nothing about the Ruby ecosystem, I had no idea how to do Ruby virtual environments and install Ruby dependencies. I suppose I’ll learn more about that as I need to. In the meantime, I just wanted to get up-and-running with Jekyll and be able to build my environment from my website’s Github repo.

I documented how I did this in my website’s Github repository’s README, so check it out. Hopefully this will save you time getting going with Jekyll, and also allow you to easily re-create your environment on other machines.