Forensic Analysis of “No Silver Bullet”
home // page // Technical
Opinion Technical

Forensic Analysis of “No Silver Bullet”

(Image by Lee Ufan) I. Our task — Software engineering has a long and hallowed tradition of uncritically evaluating and citing evidence [1][2]. It is our keenest joy to snatch a quote or cite a statistic without any critical evaluation of the source. As far as one might like to dig into the past this is the way it has always been done, and maybe the way it always will be done. Perhaps in the early days the fight for…

Opinion Technical

Why Software Process Never Works

Nothing induces more ambivalent feelings in working software developers than the idea of process. On the one hand we crave the sanity, insight, and opportunity for self-improvement that processes promise. On the other, we actively fear trying to introduce them into our organizations. Stories of botched or half-assed attempts to apply some new-fangled methodology are as common as dirt. Often times the end result can be worse than if nothing had been done at all. One popular explanation for this…

Technical Tips

Monitor Celery Queue Consumption Speed

A lot of times when using the python Celery library it’s useful to be able to monitor how fast the queue is being consumed. This is useful if you need to do a back of the envelope to see how long  a queue will take to chew through, or just to see how the current status of the queue to make sure there aren’t any blockages. So I decided to whip up a simple script to do just that. While this…

genetic algorithms
Technical Tips

Implementing Genetic Algorithms In Scheme

I’ve been learning a lot of Scheme programming recently, and while learning is great, it’s nothing if you can’t cut your teeth on a project of your own every once in a while. I needed a project. It had to be something not dictated by SICP, something fairly challenging, and also something of decent size. When I first tried reading SICP in college, I’d tried implementing genetic algorithms in it and failed horribly. To see if I’d made any progress I…

Technical Tips

Python Tip: Convert XML Tree To A Dictionary

I was doing a simple XML integration with SOAP service today and it really struck me that a lot of the data manipulation would be easier if the data was a dictionary. In addition, the XML returned was guaranteed to be fairly small and have only a handful of schemas – so a full-blown SAX parser wasn’t really necessary as there was no risk of overflowing memory with the raw XML data. So I decided to write a simple recursive…

Technical Tips

Trying To Recreate An SICP Example In Python

This morning I was playing around and decided to try and recreate an example from Structure and Interpretation of Computer Programs (SICP). Along the way I discovered some unexpected gotchas with how Python scopes closures. The example I was trying to reproduce was the following one: (define (make-account balance) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) “Insufficient funds”)) (define (deposit amount) (set! balance (+ balance amount)) balance) (define (dispatch m) (cond ((eq? m ‘withdraw) withdraw)…

Technical Tips

Better Emacs Rainbow Delimiters Color Scheme

I’ve recently gotten into doing a lot of lisp programming in emacs, and rainbow-delimiters-mode is a huge help in terms of visually finding your way around. What I wasn’t  thrilled with, however, was the default color scheme which is rather bland. So I decided to spice it up. So here’s some better defaults for rainbow delimiters mode: (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;;…

Technical

The SICP Picture Language In Racket

Get to the picture language section of SICP and actually want to draw stuff? Find out how below. Some Background About a month ago I decided to start taking my programming more seriously. I realized that I had done very little recently to develop my craft, and so I set out to find some resources to whip my mind back into shape. Since it had been a while I decided it might be nice to start from the basics – even…

Technical Tips

Simple Git Alias To Push The Current Branch

Hey you! Tired of having type all this nonsense just to push up the current git branch?: $ git push origin my-super-long-branch-name 1 $ git push origin my–super–long–branch–name Well fear not, just add this simple git alias to push the current branch: pu = !git branch | grep ‘^\\*’ | cut -c3- | xargs git push origin 1 pu = !git branch | grep ‘^\\*’ | cut –c3– | xargs git push origin And then just type: $ git pu 1…

The original MTurk
Technical

MTurk Python Guide: Part 2 – Uploading HITs With Python

  Technologies: Amazon Mechanical Turk, Javascript, Python Alright, we’re back! I know, I know you missed me. Sorry I left you hanging back there with just a HIT and nothing to fill it in with. This one took a bit, but I swear I’m not slacking…I mean, I’m not always on point, but honestly I think a lot of people will benefit from this post so I wanted to make sure I got it right (read: don’t sound clueless). To…