Devils in Disguise

Devils in Disguise, in no particular order, and in the context of Modern non-trivial Software Craft:

  • Data Binding of UI Controls and Model
  • Statics, which is another name for Globals
  • Dependency Injection until you use a 3rd-party library you can trust to take care of it (just because that allows you to throw your hands in the air, point to their QA process and say you trust it until proven too faulty for your usage)
  • Thread-Safe Singletons
  • Extension Methods in .NET, as they MUST be static
  • Inheritance, at least in single-inheritance languages (and no: .NET Interfaces don’t count as multiple inheritance, sorry)
  • Web Browser Sessions
  • Equality of Generic Data Types (in Strongly-typed languages, but not much better in weakly-typed languages)
  • Public data members
  • Drag-n-Drop Designers</emstrong
  • Generic ‘Bags’ of data
  • “One-liners”

I’m sure I’m forgetting some…
Regardless, if you encounter 3+ during a single working session, you should definitely Stop and Reconsider.

Innovate 101

“If I had asked people what they wanted, they would have said faster horses.” — H. Ford

Yes, there are question as to whether Henry Ford actually ever uttered those words or not. That’s not my area of expertise, so I won’t argue either side. I’m more interested in the idea of not listening to the (actual or potential) customers. Also, it’s worth reading this post by P. Vlaskovits on the topic, to see how you should understand your customers.

WebDev Tools


The most interesting tools for web-related projects, from WebDesignerDepot massive list:

Daily Scrums In The Wild

Well, one could argue that the two companies were these were recorded are not the best representation of “The Wild”. But nonetheless, it’s interesting to see SCRUM in practice. So, without further ado, here’s the videos for you:

Read More…

10 Things About Development For ‘The Others’

TL;DR (Shame on you! the full article has more than the list below!)

A list of 10 things that developers wish were better understood by entrepreneurs, by David Pierce for Startup Weekend:

  1. Know how developers work
  2. We like specifics
  3. Good code takes time
  4. “Just code it right the first time” rarely exists
  5. Lines of code per hour is not a real metric of success
  6. Productivity doesn’t always happen between 9 and 5
  7. Have some basic technical literacy
  8. Understand technical debt
  9. Understand the business value of refactoring and documentation
  10. Trust Your Developers

hmmmmmm….
While I clearly am impressed by this list, I think there’s a few things to be said about it.
Read More…

That Email from David Marcus? It’s Brilliant and Inspiring

Right. This made the rounds some time ago, so forgive me if you already heard about it, but it’s been sitting in my TODO list for a while and has now bubbled to the top, so…

First, The Screenshot (because in the Internet Age if you don’t have one of these, it didn’t happen).

Read More…

Found: One Positive Aspect of Video Tutorials

So, this may not be strictly speaking a SoftwareCraft topic, but I suspect there’s some correlation: people in our industry are possibly more likely to have encountered Video Tutorials than others – so I hope it’s ok for me to sharing a couple of thoughts on this topic in this venue.

Read More…

Fighting The Hydra: Precognitive Build Servers

Quick Link to Precognitive Build Servers, by Michael Feathers. If you’re a Software Developer (whether that’s your job title or not ;), it’s worth reading – and grokking for a while.

There’s an implicit problem in automated test execution in a build pipeline: the number of tests keeps increasing. […] the duration of a build is going to keep increasing. […] Build performance tuning has become a part of daily life on many development teams, and there are many options. […] We can use prior experience to maximize the speed of feedback that we get from a build. Kent Beck experimented in this area years ago with his JUnitMax project. […] I’ve been experimenting with a variation of that: build a map of test failures to files which were modified in the commit where the failures occurred. Then, on every new commit, take the set-union of the set of tests that have ever failed when the files in the commit have been touched along with the set of all tests recently introduced, and run them as the build. My theory (which I have not been able to verify yet) is that for many projects this process may converge in such a way that nearly all of the failures that occur for a full build will occur for this abbreviated build. […] If it works, you essentially have a build which foretells failures in the future based on failures in the past: a precognitive build.

Cool, isn’t it?

MS ups the ante on Security Certificates in October

About a week ago (yes, I’m catching up on slightly older news), Microsoft published a Support article aimed at IT professionals (and Sys Admins in particular) about an upcoming update.

If you’re managing a secure site (or any resource protected with RSA Certificates), you may want to read through it, since it announces that an update available for all supported versions of Windows (KB 2661254) blocks RSA certificates with keys shorter than 1,024 bits. The same minimum-length constraints is already in place in Windows 8 (and Windows 2012).

Read More…