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.
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.
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.
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.
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.
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.
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.
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.)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
Interesting perspective on
programmer wages which takes into account cost of living.
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.
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.
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.
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.
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.
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!
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. :)
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?
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.
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!