Up to Newsletter Index

April 2012 Newsletter


Quotable Quotes


When a brave man takes a stand, the spines of others are stiffened.  –Billy Graham


The more informed we are, the less happy we become because of our tendency to get caught up in constant comparisons.  Martin Lindstrom, How To Be Happy Anywhere


Experience does not err. Only your judgments err by expecting from her what is not in her power.  –Leonardo Da Vinci


There's a world of difference between truth and facts. Facts can obscure the truth.  –Maya Angelou


We would worry less if we praised more. Thanksgiving is the enemy of discontent and dissatisfaction.  –Harry Ironside


So much complexity in software comes from trying to make one thing do two things.  Ryan Singer


If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all.  –Michelangelo


Return to top


Software Development Process and Methodology

Article:  Why Your Daily Standup Sucks (and how to fix it)

If you're like me, on each project team that you are a member of, the value of the daily standup meeting seems to diminish over time.  This article looks at some of the common causes for this problem along with some tips for how to put the meeting back on track to its purpose.



Article:  It Should Only Take You a Few Hours...

This thoughtful and well-reasoned article will help you explain to a business customer why their "simple" request really requires more time than they expect or desire.  The author uses the analogy between a simple table that you might build and one built by a craftsman.



Article:  Why Software Development Estimations Are Regularly Off

This author notes that the reason that normal estimation techniques, such as used in construction, don't work in software development is because each development project is inventing (creating from scratch) and, accordingly, we don't have a good basis of comparison to prior work.  This results in projects almost always being late.  What ideas do you have for improving development estimations?



Article:  Building vs. Learning on Agile Teams

This post notes that agile development is oriented toward building things (think "Working software over comprehensive documentation").  However, it notes that in projects where discovery and finding new and better ways to do things, it may be useful to include the validated learning concept from the lean startup movement to shift the mindset from delivery to discovery.



Article:  Poor Man’s Agile Adoption: How low can you go?

While the basic premise of this article is around getting started with agile in small organizations and/or with limited budget, the concepts are just as valid for any size implementation.  The author says that successful agile adoption is built around three main concepts:  creating awareness, creating desire (to change/improve), and transferring applied knowledge.  One of the most important ideas behind low-budget implementation is that the tool is not the process and that you need to determine how to do things before investing in a tool.



Article:  9 things I learned from reading The Clean Coder by Robert C. Martin, on how professional developers conduct themselves

"Uncle Bob" Martin's latest book, The Clean Coder, is one of the best, most-practical books about programming that I've read in quite some time.  This blogger discusses some of the key points about what professional (mature?) programmers do from the book.



Article: iPad, Kindle Fire are not post-PC, says IDC analyst

There is much chatter on the Internet these days that we are in the so-called "post-PC era".  An IDC analyst claims that this is really the "PC-plus era", where the regular computer is still relevant, but needs to be considered in the context of interoperability with smartphones, tablets, and the like.



Article:  Maslow's Hierarchy of Needs of Software Development

Scott Hanselman, who is well-known for his comprehensive annually-revised developer tools list, emphasizes that developers and managers need to focus on the basics of good practice, before trying to move on to the nice-to-have things.



Article:  9 best practices for successful IT projects

From reviewing some recent government IT projects, the Government Accountability Office (GAO) found some common traits among the projects that were hallmarks of success, including senior management support and good engagement with stakeholders.  There really isn't much surprising in this list, but it never hurts to have a little more information to back up case for improving processes in your organization.



Return to top


Software Testing & Quality

Article:  The Challenges Associated with SaaS Testing

As SasS (software-as-a-service) becomes more commonplace (does anyone remember the application service provider wave of the 1990s?), this technology presents some unique challenges for testing, especially around configuration, security, and the frequent "uncontrolled" roll-out of new platform features.



Article:  How to test a random number generator

In this free excerpt from Beautiful Testing, John Cook explains how to go about testing a random number generator.  It gives you some good ideas for how to test randomness in an application and to think outside the box for other types of test planning.



Article:  Bon Jovi Teams Up With NY Tech to Create Summer Jobs

A new program aims to provide 1000 internships for non-technical workers by training them in software testing/QA.  The idea originated with a dinner conversation between Jon Bon Jovi and GroupMe co-founder Steve Martocci.



Article:  20 Famous Software Disasters

All new technologies spawn their share of unexpected side effects and software is no exception.  This list of well-known software failures can be used as inspiration for how to be a more effective tester and more cautious developer.



Poll: Do you test your code?

Hacker News readers respond to this question and offer some insightful feedback/comments about the practices of testing, including TDD, unit testing, functional testing, and system testing.



Article:  How Google Tests Software

In this excerpt from his new book, James Whittaker presents the core principles followed by Google in testing.  He does a great job of articulating some key aspects, such as, how testers and developers work closely together and the fact that quality and testing are not the same thing.



Return to top



Reference:  General CSS notes, advice and guidelines

Coding standards are popular for most programming languages.  But did you ever think about applying those concepts to your other development assets, such as CSS?  This author provides some good suggestions for making your CSS both readable and functional.



Tutorial:  Caching Tutorial for Web Authors and Webmasters

Once you understand how web browsers work, one of the best ways to improve application performance is with caching.  This comprehensive tutorial explains the various options, both client and server side, and the pro and cons of each.



Tutorial:  Introduction to text manipulation on UNIX-based systems

One of the key elements of the UNIX philosophy is "Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface."  Thus, text-wrangling is one of the things that UNIX/Linux does very well and we should avoid re-inventing the wheel, when possible.  This comprehensive tutorial introduces to you the standard UNIX text processing tools, such as sed, awk, grep, and many others.



Tutorial:  Online Python Tutor

Python is a great programming language with expressive syntax and great built-in capabilities.  However, if you are coming from another language, it can sometimes be difficult to grasp some of the Python idioms.  This excellent web-based tool allows you to show the code execution step-by-step with annotation of what Python is actually doing.



Tutorial/Reference:  Buffett FAQ

This site probably won't make you a better developer or tester, but, hopefully, it will make you a better investor.  It documents the principles that Warren Buffett uses based on Q&A sessions with the "Wizard of Omaha".



Reference:  My Git Workflow

When getting started with Git (or really any distributed version control system), one of the more difficult concepts is that data "resides" in more than just your local work area and the central repository.  This article includes two excellent diagrams that make this concept much easier to understand.



Return to top


Career Development/Miscellaneous

Article:  'Onshoring' IT services and bringing jobs back home

While the news about the decline in off-shoring hasn't quite reached the fever pitch of off-shoring trends of the past 10-15 years, this article gives a good overview and explanation of the factors that are causing companies to look at their options more closely.



Article:  8 Qualities of Remarkable Employees

Everyone wants to be great employee, but what sets apart the cream of the crop from the rest of the pack?  In this article, the author indicates that high performers show characteristics that boil down to being passionate and idiosyncratic.



Article:  Why Top Talent Leaves: Top 10 Reasons Boiled Down to 1

This pundit says that top (meaning executive in this context) employees leave companies for the same fundamental reason that workers at all levels do:  Top talent leave an organization when they’re badly managed and the organization is confusing and uninspiring.



Article:  The Magic of Doing One Thing at a Time

By now, most people know that multitasking is stressful and ultimately leads to lower productivity overall.  This article identifies three organizational/cultural changes and three personal behaviors that can reduce this problem.



Article:  When nobody (and everybody) is the boss

One of the core principles of Scrum methodology is self-organizing teams.  This article explores whether or not organizations take the "no managers" notion too far.



Article: Rabbit holes: Why being smart hurts your productivity

Are you a smart person?  Most of us like to think of ourselves as above average.  In any case, technical people tend to pursue perfection and, according to this author, this has the negative side effect of hurting productivity, because we can become easily distracted by other "interesting" things.



Article:  Why we forget

As I get older ("over the hill", if you like!), I'm starting to experience some memory loss.  So this article was quite interesting in learning about how our brain creates memory and how those memory then get "lost".  And maybe I need to get a little more vitamin B12, since it is apparently a vital nutrient for memory, or perhaps chewing gum makes more sense.



Article:  Coding for success

You may be tempted to skip this article, because it's quite long ("TL;DR").  However, I strongly encourage you to read it.  It is an amazing manifesto for why we need to include teaching basic programming skills to all kids, just like we do with the 3 Rs.  The author emphasizes how programming helps develop skills like logical thinking and reasoning/critical thinking, as well as, learning how to automate boring, repetitive work.  And, if you are interested in this, check out CoderDojo, which is an organization of local programming clubs for kids.



Article:  How Running A Business Changes The Way You Think

Most of you who read this newsletter are probably not self-employed or entrepreneurs.  However, this article provides some very important concepts about motivation in your work and your personal work style, whether you are working for the man or are the man yourself.



Article:  Algorithm Measures Human Pecking Order

Researchers have devised an algorithm that predicts where a person fits within the organizational hierarchy based on linguistic patterns.  The algorithm is based on the same principles that search engines use for measuring relevance of results.



Article:  Praise on the job is necessary for a functioning workplace, though type of praise just as important

Last month, we had an article about how simply saying "thank you" is a good motivator.  On the heals of that, this article emphasizes that managers need to be very specific when giving praise.  In particular, they need to tie their praise to specific actions by the employee and explain the value of the action.



Article:  How An Introverted Engineer Came Out Of His Shell To Lead Mozilla

In this interview, former Mozilla CEO John Lilly talks about how he made the transition from technical contributor to manager.  As with most good leaders, he gives a lot of credit to how others helped him grow.  His story goes a long way in dispelling some of the common myths about introverts.



Article:  The Real Secret to Personal Productivity

I'm a big fan of productivity tips and use a couple of the popular ones myself (Pomodoro technique

 and using "to do" lists, for example), but this article points out what is hopefully obvious, but probably overlooked:  There is no silver bullet for productivity improvement, because it's personal and depends on your own style, organizational environment, etc.  So, look for advice and adapt it (think agile!) to your particular situation.



Return to top


Telecommunications/Networking Industry

Reference:  What happens in a single day on the Internet

We all know the old adage that a picture speaks a thousand words.  So here are some pictures that show how much traffic and activity goes over the Internet in a single 24-hour period.



Article:  ZTE demonstrates next-generation optical network at 1.7Tbps

Just days after Deutsche Telekom demonstrated 512Gbps transfer on a single fiber, Chinese carrier ZTE showed an 8 x 216.4Gbps system that provides speeds up to 1.7Tbps over 1000 miles.  Not to be outdone, Huawei has prototype platform that has total capacity up to 20Tbps.



Return to top


Useful Utilities

JustDecompile (Free – Windows XP/2003/Vista/2008/7 and .NET – 3.4MB)

Even if you're not a malicious hacker, a decompiler is a useful tool for understanding how your application works, to look at the internals of a third-party library, or just to look at the dependencies of an assembly.  JustDecompile is a brand new and completely free .NET decompiler.  It supports version 1.1, 2.0, 3.x, and 4.0 of the .NET platform, as well as Silverlight and the .NET Compact edition.



QuickRDP (Free – Windows XP/2003/Vista/2008/7 and Linux – 1.1MB)

QuickRDP is a simple manager for RDP (Windows Terminal Server), Telnet, and SSH connections.  It uses native Windows functions for RDP connections and allows you to specify an external application, such as PuTTY (or one of its many variants), to use for Telnet and SSH.  You can store user IDs and passwords and it will attempt to automatically log you on to the host upon connection.  It can even be extended via Perl scripts.



REST Console (Free – Cross-platform/Google Chrome – N/A)

REST Console is an add-on for Google Chrome web browser that will allow you to construct HTTP headers (per RFC2616) in the browser to send to REST APIs for API testing and validation.  It includes syntax highlighting, support for both PUT and POST, and auto-complete among many other features.



Z-WAMP (Free – Windows XP/2003/Vista/2008/7 and Linux – 62.0MB)

Z-WAMP is a comprehensive WAMP (Windows/Apache/MySQL/PHP) package that does not require installation.  In addition to Apache/MySQL

/PHP, it includes MongoDB, XDebug, MemCached and more.  Just unzip the package and run ZWAMP.EXE to have a full-fledged web development environment running on your system.



SFTP Net Drive (Free – Windows XP/2003/Vista/2008/7 – 5.4MB)

Connecting to remote servers via SFTP is often difficult and inconvenient.  (Linux makes it much easier with curlftpfs!)  WinSCP is a good option, but if you prefer to have a persistent connection to the remote server, SFTP Net Drive can help.  It allows you to map any SFTP host as a regular drive in Windows, so you can have an always-available connection and just drag and drop files your local system and the SFTP host.  (Presumably, you could even use your SFTP host as a Git repository similar to this.)



Return to top


Just For Fun


In this amazing HTML5 application, the UC Berkeley scientists take you through 14 billion years of time and space.  Instead of looking at the history of the universe in dry text, it lets you interactively browse what was happening during certain periods.  Read more about the background of the tool here.



The QWERTY Effect: How typing shapes the meanings of words.

Well, maybe this doesn't actually fit into the "fun" category, but it's kind of weird and interesting at the same time.  These guys researched whether or not the distribution of letters in a word between the left and right side of the keyboard had any impact on language usage.




BrowserQuest is an MMO game created entirely in HTML5 (WebSockets

 and Canvas) and Javascript.  It's described as "a tribute to classic video-games" with "a dangerous world filled with treasures to discover".  Check it out and consider contributing to the code if you're interested.



Here is why vim uses the hjkl keys as arrow keys

Most younger folks probably find it odd that the hjkl keys are used as the "arrow" keys in vi and vim.  But the reason for this is actually quite straightforward:  One of the first widely used terminals, which Bill Joy used to create vi, actually had arrows on the keys.  I remember fondly when my dad brought home an ADM-3A terminal and we hooked it up to his work mainframe using a screaming 300-baud acoustic coupler modem.



JS GameBoy Color Game Center

I'm not really sure why, but I have a fascination with emulators.  This is a very cool one of the GBC written entirely in Javascript and HTML5.  The site has a variety of included games (Tetris, Legend of Zelda, Donkey Kong, and Pokemon among others) or you can drop your .gb or .gbc ROM file into the emulator.



Return to top