Up to Newsletter Index

April 2013 Newsletter


Quotable Quotes

Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function.  John Carmack


Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.  Samuel Beckett


Success is doing ordinary things extraordinarily well.  Jim Rohn


We say we waste time, but that is impossible. We waste ourselves.  –Alice Bloch


Return to top


Software Development Process and Methodology

Article:  How to Interview Users to Find Out What They Really Want

While developers may talk about the importance of tools or methodology (or any number of other things) as being vitally important, the most important factor in project success is building what the customer wants.  This article discusses effective techniques for eliciting good information from users.  And remember that it’s important to listen carefully to the users.



Article:  The Deep Insights of Alan Kay

Alan Kay is one of the true visionaries of the technology revolution of the second half of the 20th century, with broad influence including programming, networking, and more.  This article gathers some of his collected wisdom about system design.  This is a must-read for anyone in involved in programming.



Article:  Zipf your variable names

Variable and function naming is one of the most important aspects of writing understandable code.  While most developers understand the value of descriptive variable names, this article explains the linguistic concept of Zipf’s law and how to apply it to creating good variable and function names.



Article:  Where TDD Fails

This article gives some important examples of where TDD breaks down and domain knowledge and good analytical skills are important to evaluate your application.  It’s not anti-TDD, but rather just pointing out that using TDD is not sufficient to prove correctness.



Article:  Writing Great Unit Tests: Best and Worst Practices

Even though TDD is not a foolproof technique, there is little doubt that it improves quality and speeds development, when practiced effectively.  Here are some excellent tips to help you write effective, robust, and maintainable unit tests.



Article:  The pursuit of excellence in programming

While this essay doesn't purport to provide the silver bullet for fixing the problems with software development, it does offer some great fodder for thought and discussion about what separates great programming practice from the mediocre.  What does excellence mean to you?



Article:  Agile is Fragile

Most organizations that try to adopt agile development methodologies run into some problems.  One of the most common is trying to do agile in the context of a traditional methodology.  This is where management must really support and enforce the agile principles.



Return to top


Software Testing & Quality

Article:  Top Five Pain Points: Dealing With Time Constraints

Everyone on development projects seems to be pressed for time to complete work, but testers often get squeezed more than others.  This article offers some tips for making the best use of time, your most precious resource, especially around test automation.



Article:  Harden your testing pyramid

This article discusses potential gaps in the middle layer of the testing pyramid where some functionality may not be tested and provides some suggestions for how to shore up that testing.



Article:  Are bugs part of technical debt?

This article addresses an interesting question about whether or not you should include deferred defects as part of technical debt.  In short, the author’s answer is “no”, but, more importantly, he provides an interesting classification of what he believes should be considered technical debt.



Return to top



Reference:  A Scalable Definition of Done

One of the key success factors for agile implementations is a good, agreed-upon “definition of done”.  This article provides a good example (each team needs to develop their own!) and emphasizes that it needs to be established not only for user stories but also features and sets of features.



Reference:  Programming Best Practices Tidbits

Of course, no single reference can cover all of the “best practices” that you’ll want to apply in your development work.  Nevertheless, this list pulls in a wide variety of excellent, tried-and-true resources into one place.  It’s a great reference to review once in a while to remind yourself about how to do things.



Tutorial:  Explore and Master Chrome DevTools

While I personally prefer Firefox, the Chrome Developer Tools are a powerful and useful set of tools for web development.   This comprehensive set of tutorials teaches you the ins and outs of the tools, including how work with the DOM, the console, JavaScript debugging, and more.  And don’t forget the variety of useful Dev Tools extensions.



Reference:  TDD Terminology Simplified

One of my professors in college said that the main qualifications for an engineer was to know the slang in their niche.  The same thing is true in most any technology domain.  Here’s a comprehensive glossary of test-driven development (TDD) terminology.



Tutorial:  API Design: Third Edition

This is the third (annual?) presentation of some lessons about designing good REST web services based on discussions with hundreds of developers who use these services.  Learn how to implement an API that your users (other developers!) will enjoy working with.



Return to top


Career Development/Miscellaneous

Article:  Tips for work-life balance

Most articles on work-life balance approach it from a rather generic point of view.  This one is different in that the author is a programmer and academic in computer science, so his tips may be more applicable for the situations of our newsletter readers.  And even if you go to outer space, you still have work-life balance issues.



Article:  26 Time Management Hacks I Wish I'd Known at 20

The great equalizer among all people is that we each have the same amount of time every day.  How we spend our time is what separates the great from the also-rans.  This is a great list of tips about how to get the most out of your time.  And many of these simply remind us not to stress out about things beyond our control.



Article:  What Do Programmers Want?

This developer blogs his response to some programming students doing a project about what companies can do to attract good programmers (and avoid some of the annoyances).  This list is thoughtful and relevant.  How does it line up with your personal desires and expectations?



Article:  The Positive Programmer

This developer opines about the increase of negativity among the technorati.  But instead of just making this a rant, he explains what each of us as individuals can do to reverse the tide and how being positive is really a choice that we have to make each day.



Article:  Boost your productivity: kill some variables in your life

Many of you have probably heard of the paradox of choice, which essentially says that more choices about something drive us to be less decisive.  This author gives an excellent extension of this into the realm of personal productivity improvement by looking at how to reduce all of the “moving parts”.



Article:  Good sleep, good learning, good life

Most of us are aware that getting plenty of sleep is one of the key factors in health and productivity.  This comprehensive article explains the importance of sleep and how you can improve the quality of your sleep.



Article:  Up All Night:  The science of sleeplessness

In this newsletter, we frequently refer to the importance of a good night’s sleep in productivity, happiness, and mental and physical health.  Here is an overview of some of the current research on insomnia and how to cure it.



Article:  Technology and intimacy

At the risk of branding myself as a Luddite, I highly recommend this essay.  Using the subtitle “Gadgets are the first thing we touch in the morning and the last thing we stroke at night. Are we their slaves?”, the author explores, from a variety of angles, how technology is changing our society, especially in our interpersonal (intermachine?) relationships.



Return to top


Useful Utilities

Debuggex (Free – Online tool – N/A)

While there are many regular expression (regex) testing tools online, Debuggex is one of the best that I’ve found.  One of the neatest features is the ability to “slide” through your regex to see how it matches the target string.  To learn more, check out this article.



Coffitivity (Free – Online tool – N/A)

Recently, we featured a report that says you should work in a coffee shop (sometimes), even if you have an office.  One of the premises is that the background noise actually helps creativity.  Coffitivity might be the next best thing!  Just put on your headphones and listen to the audio loop of coffee house chatter to block out other noises.



Everything (Free – Windows XP/2003/Vista/2008/7 – 334kB)

Everything is what Windows Search should have been.  Everything will index documents and other files on your hard drive (and even external drives, if you want) and provides lightning fast search results.  The best part is that Everything’s indexing engine doesn’t drag down the performance of your system.



IE6Test.IT (Free – Online tool – N/A)

Most developers no longer have IE6 installed, but many users still have it, often due to IT department requirements.  This online tool will render your site in IE6, so that you can see how it will look, with all of the IE6 quirks.



WindowSlider (Free – Windows XP/2003/Vista/2008/7 – 396kB)

WindowSlider takes a unique approach to the virtual desktop concept in Windows.  Essentially, it "extends" your Windows desktop to make it "infinitely" wide, so that you can place each window (or groups of windows) on any of the available desktops.  One of the nice features is that you can simply switch to any application using the standard <Alt>+<Tab> shortcut or use the built-in shortcuts for "sliding" the desktop left or right.



Return to top


Just For Fun

KittyDar - Face-detection for Cats

OK…  This seems to take the whole face-detection concept a bit too far.  Why in the world would you need to detect cat faces in photographs?  Anyway, check it out just for the laughs!




This is quite humorous... And geeky.  In response to a recent XKCD comic, this guy actually implemented a sort that randomly looks for Javascript sort methods on Stack Overflow and applies them until it gets the correct answer.  Quite creative!




This is a very interesting game.  Developed by an accountant and MBA student, it’s an Excel-based game similar to Rogue.  It works in Excel 2007, 2010, and 2013. 



Interactive Fountain

This is what happens when you get geeks involved with trying to automate the watering of your garden.  Just add Arduino and voila!



Return to top