December 2012 Newsletter
It always seems impossible until it's done. –Nelson Mandela
Success depends upon previous preparation, and without such preparation there is sure to be failure. –Confucius
Every model is the expression of one thing we hope to understand in terms of another thing we think we do understand. –Gerald Weinberg
Plato is my friend, Aristotle is my friend, but my greatest friend is truth. –Isaac Newton
A little learning is a dangerous thing; drink deep, or taste not the Pierian spring. –Alexander Pope, An Essay on Criticism
The sense of wishing to be known only for what one really is is like putting on an old, easy, comfortable garment. You are no longer afraid of anybody or anything. You say to yourself, 'Here I am—just so ugly, dull, poor, beautiful, rich, interesting, amusing, ridiculous—take me or leave me.' And how absolutely beautiful it is to be doing only what lies within your own capabilities and is part of your own nature. It is like a great burden rolled off a man's back when he comes to want to appear nothing that he is not, to take out of life only what is truly his own. –David Grayson
While no
analogy is perfect when it comes to software development (or anything else
for that matter), this article gives a good explanation
that may be helpful when discussing the vagaries of programming with business
customers or other non-technical stakeholders.
http://blog.jelastic.com/2012/10/04/how-to-win-or-fail-when-writing-software-a-car-analogy/
The main point (to me, anyway!) of this article is not that
"message-oriented programming" is necessarily a better way to
develop, but rather that looking at development from a variety of angles (i.e.,
not just doing something a certain way because we’ve always done it that way!)
can help make the solution to a problem more clear.
http://spin.atomicobject.com/2012/11/15/message-oriented-programming/
The inimitable development management expert, Michael Lopp,
posits that development
teams are typically made up of two types of people that he calls
"stables" and "volatiles".
While managers may prefer one kind over the other, he says that healthy
teams need both and that managers should encourage some conflict between the
two camps.
http://www.randsinrepose.com/archives/2012/11/14/stables_and_volatiles.html
While most of us probably aren’t ready (or able) to dive into functional
programming completely, that doesn’t mean that we can’t apply (and benefit from!)
many of the FP principles. This article
gives advice on how to think functionally while programming in OOP environment.
http://www.harukizaemon.com/blog/2010/03/01/functional-programming-in-object-oriented-languages/
Software measurement expert Capers Jones (no relation
that I know of) reviews that software requirements continue to be the weak link
in most development projects. In
particular, he sheds light on how requirements frequently grow during the
implementation phase.
http://www.drdobbs.com/architecture-and-design/chronic-requirements-problems/240012797
While you may not agree with the author's conclusions, this developer
gives a very good explanation about the impact of programming language choice
on a project. He uses the
these three factors: user,
machine, and problem.
http://jonasschneider.com/2012/11/the-love-triangle-of-programming-languages.html
This article recommends applying the Unix
philosophy to OOP development to help ensure that your designs are SOLID. In particular, the author emphasizes the
concept of chaining various single-responsibility methods or objects together
to accomplish complex tasks.
http://blog.codeclimate.com/blog/2012/11/28/your-objects-the-unix-way/
While perhaps not quite as fascinating as What Einstein Told His Barber,
this article points out that the principle of locality,
which is the key to Einstein's general theory of relativity, is also very
relevant for software architecture. Even
though we often try to keep things sufficient decoupled, we often violate
locality with code that relies heavily on external components.
http://blog.quixey.com/2012/11/29/what-einstein-figured-out-about-software-architecture/
This provocative article says that as we move into the web-based
application area, the MVC
architectural pattern has become passé.
The author suggests a new paradigm centered around
events, which he calls MOVE: Models,
Operations, Views, and Events. However,
this perspective is certainly not without some significant
detractors, many of
which claim that MOVE is simply a recasting of MVC.
http://cirw.in/blog/time-to-move-on
This article reminds us that one of the fundamental principles of
application architecture should be simplicity.
One of the key items noted is that we need to carefully consider the
assumptions that we make when building a system, because these often prevent
certain solutions which might be simpler.
http://blog.cloudmagic.com/2012/11/20/kiss/
In agile development, the quality of user stories tends to be the pivot
point between success and failure. This
article gives some great advice about stories, including the importance of
intent and context and how examples of behavior help clarify both.
http://www.harukizaemon.com/blog/2010/08/05/how-i-tell-a-story/
This interesting perspective considers whether or not and, if so, how the
quality of the software that is a part of almost every product today (or, at
least, the delivery channel) affects innovation and expectations of the
consumers of our products.
Most people involved with software development understand the importance of testing. However, frequently, we get into some habits that cause us to make avoidable mistakes in the approach or implementation of testing. This article notes some common errors and includes suggestions for fixing and preventing them.
http://glenndejaeger.wordpress.com/2012/01/12/7-mistakes-in-software-testing/
While “definitive” might be a stretch in describing this article, it is a very good discussion about not only how to prepare a test strategy document, but how to think about the “big picture” of testing.
http://www.softwaretestinghelp.com/writing-test-strategy-document-template/
Just in time for the end of the world on 12/21/2012 ;), testing expert James Whittaker roles out his list of four devastations in software testing that put applications at risk at a time when software is an integral part of almost everything that we use.
http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=COL&ObjectId=17794
By now, most of us in the USA have had our fill of politics for a while. Nevertheless, politics aside, the 2012 presidential campaign offers some lessons for technology workers everywhere, not the least of which is the spectacular "big data" failure of Romney's Orca platform (wonder if they ever considered the obvious #FailWhale implications?). This statements essentially sums up the story with the warning about insufficient testing: Develop in haste, repent at leisure.
http://arstechnica.com/information-technology/2012/11/inside-team-romneys-whale-of-an-it-meltdown/
Of course, there's no guarantee that understanding how computers work will make you a better programmer, but it certainly doesn't hurt. This series of blog posts describes how computers work from the ground up.
http://www.gibiansky.com/2012/10/computing-with-transistors.html
http://www.gibiansky.com/2012/11/the-digital-state.html
http://www.gibiansky.com/2012/11/digital-design-tools-verilog-and-hdls.html
The map/reduce algorithm is basis for many search applications and NoSQL databases. So it’s useful to have a basic understanding, even if it’s not something that you’ll use on a day-to-day basis. But understanding map/reduce is also notoriously difficult at first. This tutorial explains it using simple examples and shows how it looks in Java.
http://jsoftbiz.wordpress.com/2012/11/21/confused-about-mapreduce/
Application architecture has been quite well defined for traditional development (client-server, native client, etc.) for some time. However, best practices for web development are still evolving. This comprehensive article provides some good guidelines for how to build a good CSS foundation for web applications.
http://engineering.appfolio.com/2012/11/16/css-architecture/
The “5 Whys” method of determining the underlying cause (and fix) for a problem is a powerful problem-solving technique. But understanding how to get started can be difficult at times. This presentation shows the importance of treating this exercise as looking for a broken machine instead of looking for who to blame.
http://www.slideshare.net/danmil30/how-to-run-a-5-whys-with-humans-not-robots
As JavaScript becomes a more prevalent language, on both the client and server side, efficiency in write code becomes more important. This tutorial explains how JavaScript can leak memory and how to detect and fix these problems.
http://www.ibm.com/developerworks/library/wa-jsmemory/
Chances are that you’ve heard the term “sharding” with respect to databases. However, unless you work in the “big data” arena, you may not know what it is or how to do it. This author says that sharding is rarely necessary, but he gives a practical step-by-step process for doing it.
http://craigkerstiens.com/2012/11/30/sharding-your-database/
Zed Shaw, well-known for his "Learn Python The Hard Way" programming tutorial, discusses what makes teaching certain languages harder than others. His main conclusion is that the difficulty in teaching (or learning!) a language is proportional to the quality of the design of the language.
http://oredev.org/2012/sessions/its-not-you-its-them-why-programming-languages-are-hard-to-teach
This essay makes a very good case that, to improve the standing of software development in both the view of the public and the corporate milieu, we must establish it as a formal and recognizable profession with a set of ethical standards, demonstration of skill and practice, and the like.
http://michaelochurch.wordpress.com/2012/11/18/programmers-dont-need-a-union-we-need-a-profession/
Even though technology unemployment is well below the national average, IT salaries haven’t even kept up with inflation between 2000 and 2010, according to a report from the liberal Economic Policy Institute think tank. Perhaps we need to do a better job of selling the value of our work.
http://www.computerworld.com/s/article/9234328/If_tech_is_so_important_why_are_IT_wages_flat_
After years of outsourcing technology and manufacturing jobs, US companies are starting to bring a significant number back to the US. To wit, Apple CEO Tim Cook even announced that Mac manufacturing is returning in-house.
http://www.theatlantic.com/magazine/print/2012/12/the-insourcing-boom/309166/
This developer makes some excellent points about the value in taking time to improve communication skills, both verbal and written. He suggest three specific actions to improve: make more presentations, interdisciplinary work, and taking advantage of opportunities to write, such as blogging. And don't forget that writing code is writing too.
http://www.jmduke.net/blog/writing
Most programmers prefer to work in quiet environments. Nevertheless, according to a recent study, moderate ambient noise (70dB) actually improves creativity compared to quiet (50dB). The reason is that the moderate noise creates enough distraction to increase concentration.
Harvard economist Ken Rogoff argues, using evidence from Peter Thiel and Garry Kasparov, that the “first world” economic slowdown is caused as much by stagnation in innovation and technology as by financial problems.
Even though social media has supposedly made e-mail obsolete, a new international survey by Mimecast says that e-mail still dominates. The report indicates that users spend 888 hours per year on average dealing with e-mail.
This former Navy SEAL says that the key trait of great leaders is loyalty. Specifically, he says that it is loyalty to the team that matters most.
http://www.inc.com/brent-gleeson/what-great-leaders-have-that-good-leaders-don%2527t.html
Wish is a Windows command prompt (shell) replacement that describes itself as the "command prompt reimagined." While it is still early in development, it has some great features borrowed from a variety of shells, including command history searching, recent directory searching, tabs/panes and more.
http://tltjr.github.com/2012/11/08/reimagining-the-windows-command-line/
Wireframe.cc is a free online web site wireframing tool. You can create basic web designs, save them, and share them with others via a unique URL, all without logging in. In addition, it's great for simple online diagramming when more complex tools are overkill.
Transformy is a free online tool that allows you to open, edit, and save a variety of spreadsheet-style documents, including CSV, tab-delimited, Excel, and more. For a detailed review/tutorial of Transformy, check here.
https://apps.synesty.com/transformy
If you use Remote Desktop in Windows frequently or have many RDP connections, RDPMan is an excellent tool for managing your connections. One of the best features is that you can have hierarchies of connections, so you only have to set common parameters, such as login credentials once, and all of the subordinate connections inherit those. Check here for a step-by-step tutorial on setting up and using RDPMan.
http://www.microsoft.com/en-us/download/details.aspx?id=21101
While there are plenty of worthy notepad and clipboard applications available, NoteClip is handy because it combines both into one simple tool with a consistent interface. Capture as many clipboard items as you like and paste them easily and you can even move your notes onto the clipboard. It even lets you edit your clipboard items for even more efficiency.
One aspect of Windows that hasn't changed much since Windows 95 (wow!) is the file copy/move functionality. SchizoCopy brings many great features to this important, but little-seen function, including improved speed, ability to pause/resume copies, low-priority background copying (called "silent") to reduce system impact, and more. It integrates directly with Windows, so you don't have to go outside of your normal workflow to use it.
http://sourceforge.net/projects/schizocopy/
This excellent emulation is a replica of the original IBM PC in JavaScript. It even allows you to "boot" into VisiCalc.
The Museum of Modern Art in New York City has decided to include video games in their collection starting in 2013. They view video games as a new type of visual art that represents the late 20th century.
http://www.moma.org/explore/inside_out/2012/11/29/video-games-14-in-the-collection-for-starters
Check out this fascinating story about how linguists (partially) cracked an 18th century code using a variety of techniques.
http://www.wired.com/dangerroom/2012/11/ff-the-manuscript/all/
The folks that publish the venerable arbiter of all things lexicographical (love that word!), the Oxford English Dictionary, have chosen GIF (which they say is a verb, though I don't recall ever using it that way!) as their word of the year. Interestingly, it seems that use of the GIF for graphics on the WWW is on the decline. Personally, I prefer their choice for UK word of the year: omnishambles – n. a situation that has been comprehensively mismanaged, characterized by a string of blunders and miscalculations. And, at least, we can say that 'geek' and 'nerd' are now seen in a more positive light.
http://blog.oxforddictionaries.com/press-releases/us-word-of-the-year-2012/
Not sure if this garners much interest beyond the Oklahoma local area, but Gmail now supports Cherokee language. The folks at Google worked closely with linguists in the Cherokee nation to implement the functionality.
http://gmailblog.blogspot.com/2012/11/gmail-get-started-with-gmail-in-cherokee.html
NASA’s Earth Observatory project has just released a new collection of awesome night photos of our home planet. Some look familiar, but others are new and stunning.
http://earthobservatory.nasa.gov/Features/NightLights/
While all that this site does is increment the natural numbers and show their factorizations, it does so in a remarkably beautiful and minimalistic way. You could easily waste a lot of time on this site. Or learn more about it here.
http://www.datapointed.net/visualizations/math/factorization/animated-diagrams/
This amazing visualization shows nearly 120,000 "nearby" stars in the Milky Way galaxy. You can pan and zoom and then click on an individual star to learn more about it. But make sure you heed this warning from the site: Scientific accuracy is not guaranteed. Please do not use this visualization for interstellar navigation.
http://workshop.chromeexperiments.com/stars/