June 2012 Newsletter
To go faster, slow down. Everybody who knows about orbital mechanics understands that. –Scott Cherf
Kindness is, or ought to be like background radiation, ever-present in our lives. The main and most effective way we learn about kindness is to experience the kindness of others. It seems obvious, after all children who are treated with affection are more likely to grow up to be kind than those whose parents are emotionally neglectful or abusive. It is not enough for kindness to be taught as a clinical skill, to be used in the taking of a medical history, the personal care of an elderly patient or in counselling. We need institutions and cultures where people are kind to each other, where kindness is valued and nurtured in everything we do. Unless we are routinely subject to the kindness of others we will have little kindness to share ourselves. The kindness of others sustains our own. –Jonathon Tomlinson
Do not look for rest in any pleasure, because you were not created for pleasure: you were created for joy. And if you do not know the difference between pleasure and joy you have not yet begun to live. –Thomas Merton
There's ways to amuse yourself while doing things and that's how I look at efficiency. –Donald Knuth
If you want happiness for an hour—take a nap. If you want happiness for a day—go fishing. If you want happiness for a month—get married. If you want happiness for a year—inherit a fortune. If you want happiness for a lifetime—help others. –Chinese proverb
It is not enough to do your best: you must know what to do, and then do your best. –W. Edwards Deming
These authors make a strong case for a "back-to-basics"
approach to agile tools focused on simple, non-technical tools, such as whiteboards,
markers, index cards and the like. Or
maybe a simple
spreadsheet would be useful, as well.
http://pragprog.com/magazines/2011-09/the-only-agile-tools-youll-ever-need
You've probably noticed it, too:
Most recent discussions about web services do not use the term
"services-oriented architecture" (SOA), but rather simply say APIs or
web services. This article looks at why
SOA as a name is on the outs, even if the concept is still highly
relevant. For some interesting
discussion on this topic, see here.
While this article is a bit more philosophical than practical, it does
make a good point that agile is really set of principles and best practices,
rather than a monolithic methodology.
The key difference between the two is agile emphasizes doing the things
that work in your particular environment and situation.
http://www.solutionsiq.com/the-agile-ceo/bid/82957/Why-Agile-is-Not-a-Methodology
With a hat tip to the law of unintended consequences, this brief article
provides some salient and sage advice about how we as programmers are often our
own worst enemies when it comes to overcomplicating the design and
implementation of systems.
http://prog21.dadgum.com/139.html
One area of key importance to development management is the use of
metrics to evaluate the development process.
This article discusses some good ideas about how to do this effectively
and fairly.
http://swreflections.blogspot.com/2012/05/software-development-metrics-that.html
In this overview of a recent blog series by Forbes' Steve Denning, the
idea that business management and executives don't see the value of agile
methodologies is explored. In many
cases, the lack of endorsement outside of IT comes from IT's
reputation for not delivering or the belief that agile isn't really anything
new or different.
http://www.infoq.com/news/2012/05/agile-mgmt-unaware-unwilling
Many of us have fallen into the trap of treating of the daily stand-up
meeting as simply a forum
to report status to the Scrum master.
Mike Cohn says that need to think of it as an opportunity to communicate
progress to all team members and as a synchronization meeting for the team.
http://www.mountaingoatsoftware.com/blog/daily-scrum-not-just-for-scrummasters
Notwithstanding the fact that this list was published on April Fool's Day, it provides a good summary of the top voices in
the agile development arena, based on book sales, blogging, Twitter activity and
more. Many of them are very well known,
but there are also probably a few that you haven't heard of.
http://www.valueflowquality.com/the-top-20-most-influential-agile-people/
REST has become the de facto standard for most new web service
development. Here are some simple tips
on developing a flexible, yet consistent REST API for your application.
At one time or another, most of us have probably been confronted with how
application development can (or should) be analogous to other work
(or perhaps to knitting). In response to a recent article
about why software is so hard to build, the author of this article explains
that the abstract nature of software (he compares it to writing poetry!) is the
key differentiating factor. (Warning: Rated "R" for strong language! And I have to say that using such expletives
certainly takes away from the potential value in helping developers explain
their situation.)
http://www.enrico-franchi.org/2012/05/software-developers-are-not-carpenters.html
Doubtless that this idea will be controversial,
but it is an interesting concept. Borrowing from the "Maybe"
type in Haskell,
this developer presents an idea for preventing nulls (and the dreaded
"Null Pointer Exception") in Java.
http://blog.leneghan.com/2012/05/maybe-answer-to-null-in-java.html
Many of probably consider Apple the pinnacle when it comes to design
simplicity. As Steve Jobs himself said,
"Design is not just what it looks like and feels like. Design is how it
works." This excellent article
breaks down the underpinning concepts of design effectively for application
developers.
http://www.getfinch.com/2012/04/simplicity-isnt-simple/
This excellent article shows that people don't immediately make a shift
from the waterfall way of thinking to a solid agile mindset and that it takes
iteration (Hmmm… Sounds
kind of agile…) for people to change their thinking. The comments on the article are very
enlightening, as well.
http://www.netobjectives.com/blogs/mindsets-waterfall-1st-2nd-generation-agile
While more of a philosophical missive, this article raises some good points about balance in testing and avoiding missing the forest for the trees when planning your testing.
http://kresimirbojcic.com/2012/04/04/what-to-test.html
This article discusses how castles had multiple levels of security and how the same principle applies to securing (and testing the security of!) web applications. The author notes that the aspects about security related to people are just as important as the technological ones.
Test automation is one of the more difficult domains in all of software testing. How do you design automated tests that don't require a lot of rework? In this excerpt from a new book, test automation experts share some of their experiences.
http://www.informit.com/articles/article.aspx?p=1826411
Most attention in software quality goes into what this author calls functional quality (conformance to specification, good performance, and freedom from defects). However, he notes that there are two other variety important aspects: structural quality (code testability, maintainability, security, etc.) and process quality (repeatable process, timely delivery, and budget).
When hosting the most anticipated IPO in quite some time, you probably don't want these kinds of things to happen. This is a good example of the cost, both financially and in terms of trust/credibility, that poor software quality can have on your organization.
http://www.computerworld.com/s/article/9227350/Nasdaq_s_Facebook_glitch_came_from_race_conditions_
To use JavaScript (or any of the various JavaScript libraries, such as jQuery or Mootools) effectively
for doing DOM
manipulation,
the key skill is dealing with CSS selectors. This free site teaches you the most common selectors
via interactive demonstrations.
http://twostepmedia.co.uk/cssselectors/
Since I struggle to even draw stick figures, graphic design concepts are
usually lost on me. Nevertheless, most
everyone has an intuitive sense of good
versus bad UI design, but it's often difficult
to quantify those things. This
article gives some great pointers on how even the most left-brained
developers can implement good user experience.
http://richoakley.com/2011/11/a-crash-course-in-ux/
Whether you are designing an API for external or internal use, it helps
to have some good guidelines for developing a robust, but easy-to-use API. This comprehensive list of API design
concepts will help you think through the approach in a rigorous manner.
http://mattgemmell.com/2012/05/24/api-design/
It's not necessary to have a deep understanding of the JVM to be a good Java
developer. At the same time, knowing at
least some about how it works will give you a better understanding of Java in
general.
http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/
ShortcutFoo is an online tool to help you learn keyboard shortcuts for a variety of
editors, such as Vim, Emacs, Sublime Text, Visual Studio, and
others (but notably not
Eclipse!). It allows customization, so you
can emphasize the shortcuts that provide the most benefit to you.
This article gives a very comprehensive, but not too technical,
explanation of public-key
cryptography. It uses a relevant
example showing how it is used in an ecommerce transaction on the Web.
According to some educational research, taking notes is the best way to transition your mind from "just looking" to actively observing what's going on around you.
http://ideas.time.com/2012/05/02/how-to-incease-your-powers-of-observation/
The byword of the second decade of the 21st century seems to be innovation. However, as this article points out, innovation is not sufficient with disruptive technologies when organizations cannot adapt to new mindsets (not mention that half of Americans think Facebook is a passing fad or maybe it's really a Ponzi scheme).
InformationWeek's annual salary survey included over 13800 responses and shows median staff salaries at $90000 in the US and raises are back, but only slightly. Business analytics (a.k.a., data science) is the hot skill this. And managers need to consider that nearly 40% of IT workers are looking for a new job.
http://www.informationweek.com/news/global-cio/interviews/232900174
As cubicles are the norm in most offices, workers are increasing looking for quiet spaces where they can go to think and have meaningful conversation. This article explores some of the new approaches to solving the office "noise pollution" problem, including white background noise and better overall acoustics, which dovetail with this list of suggested changes for future workplaces.
Most of us probably consider ourselves honest people. But, according to this researcher, everyone cheats–right up to the point where we reach our sense of the level of integrity.
http://online.wsj.com/article/SB10001424052702304840904577422090013997320.html
Most people recognize intuitively that meetings are frequently very unproductive. This article gives some of the facts around how much they cost, such as most professionals losing 31 hours per month (almost 4 full work days!) and more than 50% of meeting time is wasted.
http://www.wolfmotivation.com/articles/the-expense-of-ineffective-meetings
For a long time (or, at least, it seems like it!), we've been hearing that the next revolution on the Web will be the Semantic Web (sometimes referred to as Web 3.0). With the introduction of a new platform called Silk maybe the Semantic Web isn't too far off any longer.
http://gigaom.com/europe/meet-silk-the-semantic-web-for-the-rest-of-us/
Sometimes it's very easy to get caught up in all of the many tasks that we have to do. This brief desideratum might help you to put all those things in better perspective. And remember that you need to go offline and enjoy the rest of life so that you can recharge your internal batteries too!
http://kent.io/post/22761891376/the-mindful-programmer
In case you haven't noticed, people are often different in terms of their needs and ways of being motivated. This list gives some tips about the types of motivation that fit various personality types.
http://www.inc.com/geil-browning/ten-ways-to-motivate-anyone.html
In a follow-up to his talk about "simple versus easy", Rich Hickey talks more about why simplicity in program design and implementation is so important. He emphasizes that designing a good architecture is vitally important to sustaining development pace.
http://www.confreaks.com/videos/860-railsconf2012-keynote-simplicity-matters
Are you a happy person? What factors contribute to your own happiness? Beyond some simple factors, such as having a job, measuring happiness is quite a complex endeavor according to the World Happiness Report.
http://www.fastcoexist.com/1679633/the-world-happiness-report-explains-what-makes-people-happy
Interesting perspective on
programmer wages which takes into account cost of living.
http://www.delatores.com/blog/default.aspx?id=14
While the U.S. still tends to lag other developed nations in broadband Internet speed and penetration, this interesting chart shows how speeds and number of users have grown over the past 15 years.
http://highspeedinternet.com/resources/blog/a-graphic-timeline-of-high-speed-internet-in-the-u-s
Do you ever wonder why the standard landline telephone (POTS) is still around now that we are nearly a dozen years into the 21st century? This article gives an interesting historical look at the phone and how resistance by people is the greatest catalyst for the pace of technological change.
http://www.theatlantic.com/technology/archive/2012/05/remember-the-telephone/256616/
MetalScroll is a free plug-in for Visual Studio 2005 and 2008 that replaces the editor scrollbar with a small graphic representation of the entire file being edited. The graphical view includes syntax highlighting, selected/highlighted code, and more. In addition, you can press <Alt> and double-click on a text string to have it highlight all instances of that string in the file.
http://code.google.com/p/metalscroll/
PNG files are a great option for web site graphics, but sometimes the size of these files can cause performance issues. PNGGauntlet combines a variety of tools into one GUI (similar to Trimage for Linux) to help you compress your PNG files. It can even convert other popular graphic formats (BMP, GIF, TIFF, and JPG) to PNG.
PT Mono is a new monospaced TrueType font (downloadable or available on Google Web Fonts) suitable for programming or similar activities. It is highly readable, even at small sizes.
http://www.google.com/webfonts/specimen/PT+Mono
CRaSH (short for "Common Reusable SHell") is Java add-on which allows dynamic interaction with a running instance of the JVM. You can inject data into the instance or trace execution in the running JVM, among other things. Commands are written in Groovy and CRaSH functionality can be extended.
Most cell phone plans now how limits on data usage. The TextOnly Browser reduces bandwidth by up to 90% (purportedly) by removing ads, graphics, and the like, but preserving a readable page layout. Or visit http://textonly.in/ to apply the concept in any browser.
https://play.google.com/store/apps/details?id=com.spacenext.textonly
gExploreFTP is a simply proxy/filesystem converter that allows you to access your Google Docs via your preferred FTP client. Rather than having to download individual Google Docs files, you can download (and upload!) multiple files at one time.
http://www.mtnfog.com/gexploreftp/index.aspx
This multi-player online game will give your logical-thinking skills a very good work out. Your job is to use Turing test concepts to figure out who's lying.
Who would of thunk it? Looks like prank calls grew up within 10 years of the introduction of the phone. I guess those guys were just getting a head start on the gay '90s!
http://www.networkworld.com/community/blog/historys-first-prank-phone-call-was-way-back-1884
I probably should have saved this for next April's issue, but it was just too good to resist. I'm guessing that it's a purely functional language. :)
http://fdiv.net/2012/04/01/objectivist-c
When insulting someone, it really helps to show originality and creativity. That's where Intellisult comes in. Just put in your adversary's name and get your personalized slur! (I hope that everyone understands that this is completely tongue-in-cheek!)
In Python 2.7 (not sure about 3.x), enter this command at the interactive prompt: import antigravity. Enjoy!
I'm a sucker for little language tidbits like this. Since a lot of English includes borrowed words anyway, why not season your speech with a few of these?
http://sobadsogood.com/2012/04/29/25-words-that-simply-dont-exist-in-english/
I just finished reading Simon Singh's excellent book about cryptography, The Code Book, and found the portions about the Enigma machine fascinating. There are plenty of online Enigma simulators (for example, here, here, and here), but this decidedly low-tech example is just plain fun—both to build and to use.
http://wiki.franklinheath.co.uk/index.php/Enigma/Paper_Enigma
OK… So I grant that North Korea probably isn't on most people's list of "fun" things. But their new web site sure fits into the categories of wacky and off-beat!
http://kotaku.com/5911044/lets-check-out-north-koreas-brand-new-website