Tag: programming

  • Why Software Development Estimation is Hard: Sea Lions, and Coastal Paths

    Among the many valid responses to the Quora question of why software development task estimations are often off by a factor of 2–3, Michael Wolfe, CEO of Pipewise, describes exactly why this is without once mentioning ‘software’ or ‘project’. Instead, Wolfe eloquently provides undoubtedly the best analogy I’ve ever heard for explaining the difficulty in…

  • Art in 140 Characters

    Is it possible to encode and compress an image to such a degree that the raw data can fit in a single Twitter message (140 characters) that, when decoded again, is still recognisable? The answer to the questions is a resounding Yes, as confirmed by a coding challenge inspired by Mario Klingemann’s attempt to compress…

  • Software Project Metrics and Control: They Don’t Matter (Sometimes)

    Software project metrics are not as important as we have been led to believe, and the field of software engineering has evolved to such a state as to almost be almost… over. This is according to the eminent software engineer Tom DeMarco who, looking back at his 1986 book on the subject, Controlling Software Projects:…

  • Summarising Joel on Software

    Now that Joel Spolsky has ‘retired’ from blogging at Joel on Software (in the format the site has been known for, at least), Jan Willem Boer is reading the entire back-catalogue of entries and condensing the knowledge within each essay into a single sentence (or two). The result is a stunning list of tips on…

  • Why We Should Trust Driving Computers

    In light of recent suggestions of technical faults and the ensuing recall of a number of models from Toyota’s line, Robert Wright looks at why we should not worry about driving modern cars. The reasons: the increased risks are negligible, the systems that fail undoubtedly save more lives than not, this is the nature of…

  • Things Every Programmer Should Know (Languages)

    As part of a continuing series*, O’Reilly requested “pearls of wisdom for programmers” from leading practitioners of the craft, publishing the responses. The end result is the O’Reilly Commons wiki, 97 Things Every Programmer Should Know. The contributions that appear in the final, published book are freely available as are sixty-eight further contributions that didn’t…

  • Anti-Patterns

    I’ve written about design patterns a couple of times in the past, but today I discovered anti-patterns: design patterns that “may be commonly used but [are] ineffective and/or counterproductive in practice”. One of the “key elements present to formally distinguish an actual anti-pattern from a simple bad habit, bad practice, or bad idea”: Some repeated…

  • Laziness, Impatience, Hubris

    The three virtues of a programmer, according to Larry Wall (in Programming Perl): Laziness The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don’t have to answer so many questions about…

  • Open Source Software as Self Service

    “Open source software development is the ultimate self-service industry”, says Jeff Atwood in an article looking at possible reasons for the OpenOffice.org project’s dwindling development community. However, it’s Atwood’s thoughts on self service supermarket checkouts that I found most interesting: What fascinates me about self-service checkout devices is that the store is making you do work they…

  • Genetic Programming and the Evolution of Mona Lisa

    Roger Alsing used a genetic algorithm to create a brilliant approximation of da Vinci’s Mona Lisa using only 50 semi-transparent polygons, evolving over approximately a million generations. You can see the end result, after 904,314 generations here, but even after roughly 100,000 generations the image is impressive. I loved scrolling through the pictures, slowly seeing…