I’ve been blogging for 10 years. 10. Freaking. Years. To celebrate, I’m moving my blog to medium.com. Follow me over there: https://medium.com/@djsmith42 Happy blogging!
Note: This article is a work in progress. Parts are unclear and not representative. A revised version is coming soon. Recently, the whiteboard interview has gotten some bad press, but I don’t think it’s the whiteboard’s fault. As a long-time friend of the whiteboard interview, I feel compelled to defend it. And while I can’t […]
Recently a friend asked me what I look for when considering a new job. When I interview for a new software engineering job, I’m usually participating in two interviews at once. The company is interviewing me, and I am interviewing the company. Both interviews are equally important to me. Sometimes I am nervous about appearing […]
Warning: This article is long and thorough. If you’re in a hurry, you can skip straight to the final product here: http://plnkr.co/edit/6KxHY8ZpE83Z2PeNWlYi?p=preview Prerequisites to this article Before reading this, get to know these AngularJS terms. You don’t need too much depth, but you need to know what they are: Directive Scope Controller Injecting services into […]
For years, web application developers have used DOM manipulation tools like jQuery to control their user interface. Astute developers have taken it to the next level with client-side templating tools like Mustache and Handlebars.js to build sophisticated user interfaces on the client side. And then AngularJS came along. And we all realized we’ve been doing […]
Have you ever wanted to temporarily suppress console output in Python? But you really want it to be temporary, even if an exception happens. Maybe you are calling into some idiot’s library who spams your console. Yeah, that’s happened to me before (maybe I was the idiot–I’m not tellin’). Here’s a handy way to suppress […]
What’s the difference between writing a compiler and writing an interpreter? Easy: Writing an interpreter is like reading an instruction manual and performing the steps. Writing a compiler is like reading an English instruction manual, translating it into German, and handing it to a German person to execute the steps.
Sometimes you just need to sloooooow doooooooown to test how your software behaves when your internet connection is crappy. Linux has tc to do this, but what about Mac OS X? That’s where ipfw comes in. It does a lot of stuff. I mean a lot, but we’re just going to use it to slow […]
Dangerous? Really? Well, not if you understand how it works. Note: I’m not the first to write about this subject. When writing a function in Python, it’s handy to use default argument values like this: And you think this will provide an easy way to let lazy callers pass no arguments to your function, and […]
What does it take to write high quality code? Here’s a little table that I use to judge my own code quality: Future axes to add: Ratio of the initial development cost to the long term maintenance cost Code testability: Code can be manually tested, code can be tested with automation, code can be tested […]