February 2013 Newsletter
You think this is just another day in your life. It’s not just another day. It’s the one day that is given to you today. It’s the only gift that you have right now. And the only appropriate response is gratefulness. –David Steindl-Rast
The only difference between those who have failed and those who have succeeded lies in the difference of their habits. –Og Mandino
Fame is a vapor, popularity an accident, and riches take wings. Only one thing endures and that is character. –Horace Greeley
Your time is a zero sum game. When you say yes to one thing, you are simultaneously saying no to something else. –Michael Hyatt, Leadership, Success, and Accessibility
There are only two kinds of programming languages: those people always bitch about and those nobody uses. –Bjarne Stroustrup
The thing that makes computers so hard to deal with is not their complexity, but their utter simplicity. … The real mystique behind computers is how anybody can manage to get such elaborate behavior out of such a limited set of basic capabilities. The art of computer programming is somewhat like the art of getting an imbecile to play bridge or to fill out his tax return by himself. It can be done, provided you know how to exploit the imbecile’s limited talents, and are willing to have enormous patience with his inability to make the the most trivial common sense deductions on his own. –William Kent, Data and Reality
No one ever won a chess game by betting on each move. Sometimes you have to move backward to get a step forward. –Amar Bose
One of the key principles of successful agile development is the concept that teams are learning organizations. Iteration retrospectives are one of the best ways to help the team learn, but often they are done in a perfunctory fashion (or not at all!). This article gives some great tips on retrospectives, including a list of 10 great questions to use to assess the sprint.
In this interview, venture capitalist Marc Andreessen talks about how the enterprise and traditional IT roles are changing with the advent of smartphones and BYOD. He emphasizes that successful organizations will take both top-down and bottom-up approaches to accommodating their business customers’ technology needs.
This article warns about one of the potential downsides to agile development: the tendency for the development team to lose sight of the big picture (the “product”) while focusing on the individual stories or features. The author suggests that having and maintaining a strong product vision and ensuring that each feature and story map to that vision is the best way to avoid this problem.
The use of functional programming continues to increase, which platforms like Clojure and Scala. This author provides an interesting perspective on how more traditional (typically OOP) languages often now have support for functional features. He calls them fimperative (functional-imperative).
When adopting agile methodologies, such as Scrum, it is often confusing about what the role differences are between the Scrum master and the PM. This article clearly explains the differences and the delineation between the complementary roles.
A common conundrum in software development is defining a rule of thumb for the maximum size of a method or class. This survey article presents the concept called the “rule of 30”, which basically size that each entity (method, class, etc.) should have no more than 30 sub-elements.
This developer says that, while he prefers strong static typing, the decision should be up to each programmer. His underlying argument is that typing, among a variety of implementation details, should be part of the design and architecture of each system.
Test-driven development (TDD) is a philosophically sound practice. However, sometimes its implementation causes problems. This programmer explains some of the common problems and how to avoid/prevent them. The basic premise that he makes is that we must have a good understanding of what we mean by the “unit” in unit testing.
Functional programming hangout Lambda the Ultimate asked users to give their input on what programming will look like 8 years from now. While certainly a bit on the esoteric and academic side, the responses are quite enlightening about what to expect.
This article, from a vendor of test automation tools (!), discusses some community response to the suggestion that manual testing is no longer relevant. Over 80% of the respondents, most of whom were test automation specialists, emphasized that both manual and automated testing are necessary and that each is effective depending on the circumstances.
While this isn’t necessarily a new story, it’s a good reminder of how schedule pressure can cause defects to slip in. And, in the case of the Mars rovers, it’s not something where you can easily deploy a patch.
In my experience, the mind-set change in adopting agile is the key factor for success. This excellent video by Janet Gregory focuses on developing the mind-set of helping deliver the application successfully by incremental testing starting early.
Google test architect Miško Hevery presents some of the philosophical and psychological underpinnings of good testers.
We frequently emphasize the importance of APIs in this newsletter. This list of best and worst practices for APIs is a helpful directory of resources for making sure your API is the best that it can be, whether it’s for internal or external use.
This is one of the most thorough, comprehensive explanations of the principles and concepts of Scrum that I’ve read. It is explained from the perspective of how one team went about adopting agile and some of the struggles that they overcame.
This online book provides some recipes for building both beginning and advanced REST web services. It includes some excellent resources that explain how REST works on top of (and along with) HTTP.
This tutorial gives a good heuristic for password encryption and password validation regime in your applications. While the tutorial is essentially language-neutral, the author does provide some specific advance for Java.
Most programmers have less than stellar skills in design. Hack Design provides weekly lessons by e-mail from design professionals to teach you design. The tutorials are interactive and many of them teach by puzzles and games.
Psychiatrist and author of the books such as American Mania Peter Whybrow says that all of electronic gadgets are like “electronic cocaine for many people”. He goes on to suggest that all of the stress and distraction from these devices is part of the reason for the epidemics of obesity, anxiety, and depression, as well.
Are you a technologist who thinks you might want to move into management? This is an excellent article about the skills and responsibilities of good managers of technical workers.
Harvard Medical School researchers have found that 30% of US workers don’t get enough sleep and this translates into over $60 billion per year in lost productivity and poor memory, in addition to other problems. Some businesses are starting to address the emphasis on good sleep through things like melatonin-regulating lights and nap pods.
Most people probably imagine that in business extroverts usually come out ahead. But some fascinating new research says that so-called “ambi-verts”, who are neither too boisterous or too passive (what we called “steady Eddies” in my day!), do better than either, often by a great deal.
This article is little more on the philosophical side of things, but still something that I believe we can all benefit from. Jesus said, “…Life does not consist in an abundance of possessions.” (Luke 12:15) This author makes the simple, yet important conclusion that the best minimalist is anyone who just reduces their accumulation of things in any part of their lifestyle.
This article emphasizes that usually what separates great developers from the good boils down to good old hard work. The author then explains some skills and traits that are consistent with programmer productivity.
Technology changes us in both obvious and subtle ways. Here are some things that technology has dispensed with over the past 20 years or so. But I still don’t know quite why we don’t (and I don’t!) hang our laundry out to dry anymore; my mom rarely used the dryer, except in winter or when it was rainy.
This well-researched and thoroughly documented article examines the incremental and aggregate costs of interruptions to technical workers. The author gives detailed explanations of the actual “failure modes” of various types and durations of interruptions.
This developer says that the concept of work-life balance no longer applies, mostly because of the ubiquitous connectivity that we all have. He says that instead we need to consider work-life integration and how we harmonize the need for work with the need to spend time with family and friends into a single whole.
This article provides an interesting perspective on how the social context often plays as much of a role as technological capability in determining uptake of new technologies. These are some lessons that each of us would be enjoined to pay attention to in the creation of our systems and applications.
A report from the UK government’s chief scientific adviser, based on review of over 20 peer-reviewed papers, says that the Internet is fundamentally changing how people view themselves and their place in the world. The report says that ‘hyper-connectivity’ is the trend which has the most influence in this regard.
Reasy is a free plugin for both Firefox and Google Chrome web browsers that helps you improve your reading speed by using the RSVP (Rapid Serial/Sequential Visual Presentation) concept. Just select 25 or more words on a page and it will display them in small chunks quickly. You can adjust the chunk size and display speed in the plugin settings.
While the site says that this new True Type font (available under liberal OFL) is intended for screenwriting, it’s also a worthy option as a programming font. It provides smoother, more elegant take on traditional Courier font and, best of all, includes a true italic glyph. Read more about the background here. (If this one doesn’t strike your fancy, you might want to check out the free Source Code Pro font.)
The free edition of the Prototyper tool is an excellent web and mobile application wireframing tool. It includes a full complement of widgets for Android and iPhone/iPad, plus basic web application widgets. You can even include live links within your prototype.
You may have heard of Ethernet over power lines, but (as far as I know) there isn’t any standard for Ethernet over barbed wire. Nevertheless, this researcher demonstrated that twisted barbed wire is a viable transmission medium for Ethernet.
Got an iPad? If so, check out these excellent ebooks that present the discoveries of the Hubble and Webb space telescopes. It explains the technologies behind each and previews the work of the Webb telescope, which is scheduled for deployment in 2018. And don’t worry if you don’t have an iPad; they have PDF versions of the books too!
Business cards were the Facebook pages of the pre-Internet era. Here are some real business cards of that time of (very) well-known people.
Warning: Adult language! This programmer says that you may be able determine the mood of your development team by looking for four-letter-words in Git commit messages. He provides a simple Git command to do this.