March 2013 Newsletter
I am an acme of things accomplished, and I am an encloser of things to be. –Walt Whitman
People are disturbed not by a thing, but by their perception of a thing. –Epictetus
If you don’t go after what you want, you’ll never have it. If you don’t ask, the answer is always no. If you don’t step forward, you’re always in the same place. –Nora Roberts
The secret of success is constancy to purpose. –Benjamin Disraeli
The difference between a Designer and Developer, when it comes to design skills, is the difference between shooting a bullet and throwing it. –Scott Hanselman
The three great things are: GOOD HEALTH; WORK; and a PHILOSOPHY OF LIFE. I may add, nay, must add, a fourth—SINCERITY. Without this, the other three are without avail; with it you may cleave to greatness and sit among the giants. –Jack London, “Getting Into Print”
This article recommends that Java (or even
Python!) developers start to learn functional programming idioms/paradigms,
even if they don’t intend to move to a functional language like Scala or Clojure, because most
mainstream languages are adopting functional features.
http://www.ibm.com/developerworks/library/j-ft20/
This article tries to take the agile concept back to its roots by emphasizing that the team needs to concentrate on delivering functionality (and business value), instead of making sure that they are following some process or methodology. At the end of the day, it’s imperative that you remember that you can’t ship process. Likewise, productivity keeps workers happy.
http://blog.learningbyshipping.com/2013/02/07/focusing-on-the-work-not-the-methodology/
An experienced developer says that insufficient domain knowledge on the
part of programmers is one of the leading causes of bad software. Following the lead of Deming, he notes
that ensuring developers have appropriate understanding of the business domain
that they are developing for is the responsibility of both business and IT
management.
http://jacquesmattheij.com/domain-knowledge-or-a-lack-thereof
Using some relevant examples from C#, this excellent article shows some
common mistakes that prevent you from getting the desired value and outcome
from TDD. The author’s perspective is
summed up as: It's better to have no unit tests than to have unit tests done badly,
but unit tests make me more productive and my code more reliable.
http://blogs.telerik.com/justteam/Posts/13-01-24/top-5-tdd-mistakes
The elephant in the room in many IT organizations is the plethora
of legacy applications that take valuable resources away from new work due
to licensing costs, maintenance, and other often ‘hidden’ costs. This comprehensive article helps you develop
an effective strategy for retiring your legacy
applications while maintaining business continuity. And remember that incumbent
technology has a longer lifetime than most expect.
http://www.mendix.com/think-tank/killing-your-companys-legacy-applications-the-right-way/
This excellent essay demonstrates why simple architecture is more
valuable than a complex one. The author
emphasizes the importance of a thorough understanding both the problem and
solution domain and how the purpose of architecture is to bridge the gap
between the two.
http://dev.solita.fi/2013/02/13/value-of-simplicity.html
Ron Jeffries, one of the “creators” of the Scrum agile methodology,
deliberately uses a very provocative title in this discussion about the
problems with estimation. He says that
the most significant problem is that estimations beyond what work is to be done
in the current iteration is anti-agile, because it forces (intentionally or
not!) the organization back to a waterfall mentality of wanting to know
everything at the start of a project.
http://pragprog.com/magazines/2013-02/estimation-is-evil
This article title seems like a mouthful, but the gist of the concept
developed by Ebay is excellent: Use value (particularly economic) metrics to
drive architecture and design decisions during development. The Ebay
architecture team works closely with agile teams to help ensure appropriate
architecture decisions are made.
http://www.infoq.com/news/2011/07/low-ceremony-architecture
This veteran programming explains why testers simply aren’t good at testing and the value that independent test groups bring to a team. He wraps up the discussion with the warning: Go ahead and fire all those testers and see what you wind up with. I just hope you don't work at the bank I have money (not much) at!
http://thecodist.com/article/programmers_should_not_test_their_own_code
They say that “in space, no one can hear you scream”. Likewise, it’s pretty difficult to patch defects in applications that are millions of miles away.
http://www.itworld.com/slideshow/88716/8-famous-software-bugs-space-345257
While I hadn’t heard about this, apparently some agile teams have dispensed with bug tracking. This article makes an elegant argument for the value of bug tracking on projects both in the short term and over the long term.
http://swreflections.blogspot.ca/2013/02/a-bug-is-terrible-thing-to-waste.html
The Stuxnet worm was a wake-up call about the potential power of cyberwarfare, both militarily and economically. This article looks at how sophisticated malware has evolved over the past 40 years, including a new variant that has been found.
http://m.spectrum.ieee.org/telecom/security/the-real-story-of-stuxnet
After the recent spate of financial problems related to technology, this pundit expects the problems to continue this year, as well. The main reason given is regression problems due to new features and/or integration problems and lack of good regression test suites. Furthermore, age and technical debt in banking systems appear to be factors, as well.
http://www.bbc.co.uk/news/technology-21280943
While it seems rather unlikely that bad software would kill your boss, this humorous video does make a valid (and strong!) statement about value of using good practices in your development process.
http://blog.smartbear.com/software-quality/bid/256684/Reason-501-Not-to-Deploy-Buggy-Software
JavaScript is the hot language now on both the client and server side. Unless you use it every day, it can be difficult to carve out time to learn it. This site sends you simple and quick JavaScript tip once a week to help you improve your skills.
http://designpepper.com/a-drip-of-javascript
This comprehensive tutorial gets down to the nuts and bolts of TCP/IP networking from the perspective of an application developer. It includes excellent explanations of esoteric concepts and uses examples of Linux kernel TCP/IP implementation to illustrate them.
http://www.cubrid.org/blog/dev-platform/understanding-tcp-ip-network-stack/
Even after using it regularly for a while, I still don’t get the paradigm of Git. In any case, this excellent interactive tutorial will help you understand Git branching, why it’s important to use (a lot!), and how to do it effectively on projects with many users.
http://pcottle.github.com/learnGitBranching/
If you do any interactive web development (JavaScript, jQuery, etc.), this simple reference will be useful for you to understand the basics of the HTTP interaction between the browser and the server.
http://tiarnan.com/http-headers-every-web-developer-should-know/
Need to brush up on your typing… errrr, I mean keyboarding skills? Klava is a simple, free, online typing tester. It even supports practicing on programming languages and alternate keyboard types, such as Dvorak.
One of my desires (I kind of avoid “resolutions”) for 2013 was to be a more positive person. In many work environments, it is so easy to get sucked into anger, distrust, and other poisonous forms of negativity. Overall, I’m succeeding (still have relapses, of course!). This article gives some great tips for how to develop habits that help you stay on a more positive track in your life. Even one of the new “branches” of data science is happiness metrics.
http://blog.bufferapp.com/how-to-rewire-your-brains-for-positivity-and-happiness
Recently, Randall Munroe had a brilliant XKCD that our workplaces (and even the cultural, in general) tend to frequently push us toward bitterness and negativity. Here are some good tips to maintain a positive outlook in almost any work environment. And remember that giving jerks the silent treatment is the best way to deal with them.
http://www.lifehack.org/articles/productivity/how-to-stay-positive-in-the-workplace.html
This essay debunks many of the common myths that have grown up recently about finding a job you love and following your passion in your work. Essentially, the author says that work is hard (that’s why they call it “work”, right?) and enjoyment of our work comes from doing it diligently and viewing it with purpose.
http://erichstauffer.com/self-development/how-to-work-a-life-of-purpose
Trying to decide what new technical skills you want to learn to keep up with the marketplace? This pundit says that these are the most sought skills currently: big data, mobile, enterprise software, cloud computing, and Ruby on Rails. Three of these were probably obvious to most of you, but enterprise software and Ruby on Rails seemed like dark horses to me.
http://www.inc.com/keith-cline/hiring-recruiting-hardest-jobs-to-fill-2013.html
Interviews for technical jobs tend to follow a different pattern than typical job Interviews. This article provides some good advice about preparation for both the technical and soft-skill portions of programming interviews.
http://www.kchodorow.com/blog/2013/02/28/guide-to-tech-interviews/
Are you looking for a new job? If so (or even if you aren’t right now!), here is a list of the key skills that employers are looking for in candidates, based on research from Corporate Executive Board that reviewed over 20000 employees at 40 companies to compare the top performers to others.
http://mashable.com/2013/02/12/job-skills/
Everyone knows that, in general, career management and development is your own responsibility. This article gives some good advice on how to keep personal development efforts clearly delineated from your regular work.
http://blogs.hbr.org/cs/2012/07/is_it_cheating_to_have_a_side.html
All of suffer from procrastination at one time or another. This author looks at some of the frequent causes and boils it down to this equation: pressure * negative feelings towards the task = danger of procrastination
http://schneide.wordpress.com/2013/02/25/procrastination/
How would you characterize success? Listen to what this writer who lost her husband and 3 of her children to yellow fever, yet went on to become a well-known writer at age 52 says.
http://www.brainpickings.org/index.php/2013/02/05/9-rules-for-success-by-amelia-barr/
Referencing research on why people leave organizations, this author emphasizes that difficulty working with your direct supervisor is the most common reason. He goes on to use show how Maslow’s hierarchy of needs applies to how managers should support their employees.
http://www.alaisterlow.com/employees-leave-managers-not-companies/
Feeling left out by carriers, this story profiles a number of efforts by rural residents to implement their own high-speed Internet infrastructure. It also discusses many of the impediments, not the least of which is public ownership of networks.
http://motherboard.vice.com/blog/rural-broadband-community-supported-internet
The latest battleground in the telecom world is the FCC proposal for nearly ubiquitous WiFi coverage throughout the United States. Learn about what’s at stake and who the players are.
If you are familiar with Debian-based versions of Linux (e.g., Ubuntu, Knoppix, etc.), then no doubt you know about the apt-get package manager. Chocolatey aims to bring the similar idea to Windows to make installing free applications and keeping them updated simpler and more consistent. Currently, they offer over 600 packages with more being added all the time.
DtSQL is a JDBC-based database query and management tool which includes drivers for more than a dozen database types, including Oracle, MySQL, PostgreSQL, and more. It has been tested with over two-dozen database platforms. It includes many features and connection management is very simple with the multiple connection “templates” for the various database platforms.
Byobu (from the Japanese word for folding room divider) is a nice, unobtrusive add-on for GNU screen or tmux (check here for how to switch between them) that shows some common system statistics on the bottom row of your terminal window. In addition, it makes it easier to identify your background sessions and other goings on with screen and tmux, especially if you just getting started with either. Debian and RPM packages are available and, of course, you can compile from source.
Resizing VirtualBox VDI virtual disk images is typically an arduous task. Vidma (Virtual Disk Manipulator) makes it easy to resize the disk image in-place (or by making a copy) with a simple command. And Vidma supports both Linux and Windows.
http://wiki.przemoc.net/projects/start#vidma
More Clipboard is a handy, small add-on for Eclipse that keeps the last few items pasted to the clipboard and allows you select from these items from a pop-up list using a keyboard shortcut. It's not a full-featured clipboard manager, but it is small and does one thing well.
http://sourceforge.net/projects/moreclipboard/
What if some of the greatest thinkers of all time had been programmers instead? That’s the premise of this post. See if you agree with the author’s choices about their presumed favorite languages.
http://developeronline.blogspot.com/2009/04/if-philosophers-were-programmers.html
Last month, we included a story about “phone phreaks”, but these articles just keep popping up and many of them add something new to the picture. Enjoy!
http://www.theatlantic.com/technology/archive/2013/02/whatever-happened-to-the-phone-phreaks/273332/
How far is it from Geonosis to Hoth? Well, this map might not help you figure that out, but it is a truly astounding work of art to provide you with some context for the Star Wars milieu.
http://nerdapproved.com/approved-products/this-star-wars-galaxy-map-is-a-thing-of-beauty/
If you are of a certain age, you probably remember the arcade game where you are a skier who has to race down the slope without running into trees or rocks. This is faithful re-creation purely in JavaScript. You are sure to waste at least 5 minutes on this!
http://basicallydan.github.com/skifree.js/
This site is like The Onion with one very significant difference: All of the stories this site are true! Whoever said “the truth is stranger than fiction” must have had this place in mind.
If you remember the era of dial-up Internet access, you’ll appreciate this explanation of all of those tones used to negotiate your modem’s connection with the ISP.
http://windytan.blogspot.fi/2012/11/the-sound-of-dialup-pictured.html
Do you do things in your development that you aren’t proud of and hope that no one else finds out about? If so, you might want to get them off your chest anonymously at this site.
http://www.codingconfessional.com/