May 2013 Newsletter
Beware of false knowledge; it is more dangerous than ignorance. –George Bernard Shaw
Anything will give up its secrets if you love it enough. –George Washington Carver
So with the power of thought; let power be dissipated by scattering the thought from one object to another, and no result is apparent; but focus this power through attention or concentration on any single purpose for any length of time and nothing becomes impossible. –Charles Haanel
You only have to forgive once. To resent, you have to do it all day, every day. –M.L. Stedman, The Light Between Oceans
The key to being a good developer is to be able to find your answer as quickly as possible without learning anything else. –Brad Milne
I said to a guy, “Tell me, what is it about cocaine that makes it so wonderful,” and he said, “Because it intensifies your personality.” I said, “Yes, but what if you’re an asshole?” –Bill Cosby, Himself
Most people who have been involved in IT for any appreciable amount of
time have been on a failed project.
However, the reasons for failure are many and varied and most
organizations never really explore the underlying causes. This CIO says that lack of accountability,
among others, is one of the main reasons.
And he follows up with suggestions
to avoid failure.
This author makes the interesting (and provocative) statement that some
of the principles of the Scrum
methodology actually contribute to an anti-agile mindset. He makes good suggestions about how more
effectively handle sprint planning in a collaborative manner that feels truly
agile and helps reduce risk.
http://johannesbrodwall.com/2013/04/24/scrum-as-an-impediment-to-agility/
This is an interesting and insightful look at the common models for
source code ownership: strong and weak
individual ownership and collective ownership.
The author makes some great observations about the importance of stewardship
regardless of the model used by an organization.
http://swreflections.blogspot.com/2013/04/code-ownership-who-should-own-code.html
The person at Mozilla Developer Network, the team
that provides documentation of all of the Mozilla projects, who introduced
Scrum in the group discusses how they moved from Scrum to Kanban for their development process. It seems like Kanban (and other lean development
techniques) is making in-roads in lots of places, often organically and
under the radar.
https://blog.mozilla.org/webdev/2013/04/22/kanban-for-mdn-development/
Believe it or not, a new survey shows that programmers spend about 20% of
their time (that’s equivalent to one day out of the week!) waiting. This includes waiting for builds/compiles to
complete or tests to run. Moreover,
according to the survey, only ~12-1/2 hours are actually spent coding, followed
closely by nearly 9 hours on administrative tasks.
http://readwrite.com/2013/04/25/how-software-developers-really-spend-their-time
From time to time, we have articles about indicators of following poor
programming practices. Since we also
like anti-patterns, it seemed appropriate to take the glass-half-full approach
and feature this one which not only lists traits of good programmers, but how
to develop those skills.
https://sites.google.com/site/yacoset/Home/signs-that-you-re-a-good-programmer
Most of us in the technology world will never be mistaken as designers,
but that doesn’t mean that we can’t learn some basic concepts of good
design. This article lists Dieter Rams’ core
principles for excellent product design with some representative examples from
his amazing career.
https://www.vitsoe.com/us/about/good-design
One of the scariest (and also controversial) aspects of agile development
is the concept of self-organized
teams. It evokes visions of anarchy
and laziness for many. This article
gives multiple perspectives on the role of management in empowering
self-organized teams.
http://www.infoq.com/news/2013/04/leadership-self-organized-teams
The readability of your
code is probably the single most important element in helping new developers
get up to speed on what your code does.
This article provides some insightful analysis into what factors make
code understandable or, just as importantly, difficult to grok.
http://java.dzone.com/articles/what-makes-code-readable-not
This article starts out with the simple fact that good software quality is not an accident and takes effort and diligence. Moreover, it explains the concepts behind developing effective testing systems and quality measures, with a focus on how to design good tests.
You may be familiar with Linus’ Law: Given enough eyeballs, all bugs are shallow. In this article, Andy Hunt, one of the original Pragmatic Programmers, explains that the fundamental purpose of TDD and testing is to reduce the opportunity for latent problems to remain in your application.
http://blog.toolshed.com/2013/04/no-place-for-bugs-to-hide.html
If you don’t think that software quality is important, perhaps this article will change your mind. While the consensus seems to want blame the application (Excel), this article really shows that understanding the requirements and doing both verification (“Did we build it right?”) and validation (“Did we build the right thing?”) are vital.
http://finance.fortune.cnn.com/2013/04/17/rogoff-reinhart-excel-errors/
Many readers have probably heard the terms imperative and declarative used to describe programming paradigms. But sometimes it’s difficult to fully appreciate what those technical papers really mean. This tutorial explains with it actually means with both lucid prose and excellent examples.
http://latentflip.com/imperative-vs-declarative/
JavaScript has become the lingua franca of client-side web development (and it’s making plenty of inroads on the server too, with frameworks like Node.js, Backbone.js, etc.). If you are coming from more traditional languages, some of JavaScript’s quirks can be frustrating. Here are some tips are understanding and writing good JavaScript code.
http://www.codeproject.com/Articles/580165/JavaScript-Best-Practices
The jQuery library is ubiquitous in web development today. Many users of jQuery don’t have a lot of experience with JavaScript, so this article provides some tips on how to most effectively use jQuery for AJAX and responsive design.
http://www.codeproject.com/Tips/573781/jQuery-Best-Practices
Most modern web browsers support the full CSS3 standard now. However, sometimes you still need to use the vendor-specific CSS prefixes. This excellent reference shows you which CSS features are ready for primetime and which you need to exercise care with.
As developers start to move away from MySQL as the de facto open-source RDBMS platform, many opt for PostgreSQL, which has many nice features, including native GIS support. However, sometimes the transition isn’t always easy. This presentation summarizes some of the specific quirks of PostgreSQL, many of which give it such great power and utility.
https://speakerdeck.com/craigkerstiens/postgres-demystified
Many time-management and productivity schemes seem to add more complexity rather than simplifying things. This to-do list is different. It is based on the premise that each day you should try to accomplish 1 big thing, 3 medium things, and 5 small things. This seems like something that worthwhile for everyone to try. And they give you a PDF to use to write them down!
http://www.thedailymuse.com/career/a-better-to-do-list-the-1-3-5-rule/
What do you think would be the worst thing that you could do as a technical worker? Among them should be that you stop learning and growing. This article provides an interesting perspective on how programmers fall into the “expert beginner” syndrome.
http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
Despite official statements to the contrary, age discrimination is a reality in technology work. Research shows that, for technical employees, after age 50 mean salaries decline by 17%. This article offers some suggestions for older workers in dealing with this reality, not to mention that organizations should recognize the value of experience and maturity that older workers bring.
Information Week’s annual salary shows that median salaries for workers are up ~1% to $90000 and manager salaries grew ~2% to $120000. Another interesting insight is that while BI/analytics jobs pay best, the gap between them and other IT jobs is shrinking.
This article discusses how mathematics is pushing the boundary of what can be proven with pencil and paper (and your brain, of course!). It reviews how computers are changing the landscape of math and how math is done.
https://simonsfoundation.org/features/science-news/in-computers-we-trust/
Yahoo got a lot of press from their recent announcement that all employees would be required to work in the office. This pundit suggests that this is the correct approach based on the idea that most innovation happens due to the unexpected results of direct day-to-day interaction among workers.
http://www.nytimes.com/2013/04/07/opinion/sunday/engineering-serendipity.html
Many people take the productivity paradigm to insane levels. They often thrive on simply being busy and don’t like not “doing” something. This article gives some great advice on being productive without falling into the “busyness” trap.
http://blog.idonethis.com/post/45912361388/busyness-not-virtue
This is an interesting item in view of how large enterprises are moving to use fiber infrastructure to build their own WANs, rather than buy that entire network infrastructure from telecom providers.
There are plenty of excellent (and free!) online task management tools and desktop client tools, as well. Nevertheless, if you already use Excel for day-to-day work, it makes sense to simply use it for your "to do" list, as well. This free spreadsheet template is both easy to use and sophisticated. You just create a list of all of your tasks and their priority and then assign due dates and recurrence (if any). The spreadsheet has a “dashboard” that shows your tasks for the week and more.
http://indzara.blogspot.ro/2013/04/taskmanager.html
Perhaps I’m simple-minded, but sometimes the simplest tools are the most useful. That is certainly the case with now.sh. It’s a small shell script that prints the current date and time for any input to stdout (i.e., the terminal). Just pipe the output of your command to now.sh and every second it will display the date/time interleaved in the output of the command. Very useful when tailing a log file in realtime.
https://github.com/apankrat/now.sh
Since there are so many free screen shot utilities available, you might wonder why we’d feature one here. HotShots is the new kid on the block, but it’s got some very nice features, including ability to capture full screen (including multiple monitors) or a specified region, excellent built-in annotation tools (such as, auto-incrementing numbered tags), and ability to save in a variety of image formats.
http://sourceforge.net/projects/hotshots/
I’m not really sure why this works, but if you take the simple extra step of right-clicking on a folder (or its contents, which includes other folders) and choose “Properties” before you delete the folder/contents (using <Shift>+<Del> to bypass Recycle Bin), it will make the delete much faster since it doesn’t have to re-calculate the size of the folder. For some reason, the “Properties” method of determining the size is significantly faster than the “delete” method.
Here are some puzzles from the recently-declassified archives of the NSA’s in-house magazine from the 1970s. The puzzles really aren’t that difficult and, accordingly, give you an idea of how far we’ve come in past few decades in terms of cryptography.
http://www.popsci.com/technology/article/2013-03/can-you-crack-nsas-top-secret-crossword-puzzles
Have you ever wondered where that enticing aroma comes from after a good rain, especially when it’s been dry for a long time? It turns out that it comes from oils excreted by plants. Interesting!
http://blogs.smithsonianmag.com/science/2013/04/what-makes-rain-smell-so-good/
Although it was over 40 years ago, I still remember watching the first moon landing with my dad on a department store TV (we didn’t have one at home yet). If you weren’t around then or just want to experience again, check out this interactive site.
http://www.firstmenonthemoon.com/
Do you enjoy XKCD, but sometimes the references are too esoteric for you? Well, this community-edited site comes to your emotional rescue! And you might just learn a few new things in the process.