June 2010 Newsletter
Great necessities call out great virtues. –Abigail Adams
I choose to be a student of the experience and not a victim of the circumstance. –Mark McIntosh
Software Engineering: n. The art of getting something that sort of looks like useful work out of someone who is not fundamentally a programmer. –Tommy McGuire
Forget injuries, never forget kindnesses. –Confucius
Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. –Alan Kay
The intuitive mind is a sacred gift and the rational mind is a faithful servant. We have created a society that honors the servant and has forgotten the gift. –Albert Einstein
It's not foresight or hindsight we need. We need sight, plain and simple. We need to see what is right in front of us. –Gordon Atkinson, RealLivePreacher.com
We all should know that diversity makes for a rich tapestry, and we must understand that all the threads of the tapestry are equal in value no matter what their color. –Maya Angelou
Watch what people are cynical about, and one can often discover what they lack. –George Patton
This author, who is a committed proponent of agile development, says that
there are three particular circumstances where agile methodology is not
appropriate: an organization needed
complete understanding solution before starting, business stakeholders couldn’t
or wouldn’t commit to active involvement throughout the project, and team
couldn’t deal with ambiguity or properly communicate with business or
customers.
http://www.agile-software-development.com/2009/03/3-reasons-why-i-wouldnt-do-agile.html
One of the first things that developers learn in database design classes
is normalization. However, in practice, normalization is often
treated quite differently. This article
looks at how theory and practice diverge and how the NoSQL concept is changing ideas about
normalization.
http://lambda-the-ultimate.org/node/3762
Most developers agree that test-driven development (TDD) is a valuable
practice for improving development productivity and code quality. But it’s often difficult to get a feel from
TDD is all about when getting started.
This excellent essay explains the premise behind TDD and shows you how
to create relevant tests up front before you write your code.
http://stevereads.com/weblog/2010/05/22/less-thinking-more-testing/
With the recent spate of high-profile packaged application implementation
debacles, many technology executives are showing a renewed
interest in in-house application development and agile methodologies are
helping smooth the path.
http://www.drdobbs.com/architecture-and-design/224600606
Rather than spending a lot of time and energy trying to figure out how to
align IT and the business, this author suggests these 5 ways that IT can take
the lead in helping their business customers understand the potential of some
of the new technologies that they may have heard about.
http://www.infoworld.com/d/developer-world/5-low-risk-high-reward-experiments-it-454
Josh Bloch, contributor to Java
Collection class and author of Effective
Java, gives his views on where he sees Java going under Oracle. Interestingly, he thinks that the lack of
innovation in Java recently is the fault of Sun.
http://www.infoq.com/news/2010/04/bloch_java_future
The REST principle is one of the
foundations of services-oriented architecture (SOA). However, since fundamentally all
web applications are RESTful, this author points
out that practical implementations of REST APIs actually violate the principle
that the service be “self-describing”, but that this is ultimately an
advantage. Moreover, this emphasizes
that all architectures evolve when put into practice.
http://intridea.com/2010/4/29/rest-isnt-what-you-think-it-is
Technical professionals are sometimes counterintuitive and are often
motivated more by intrinsic
rewards, such as technical challenges, than money. Here are some of the factors that savvy
managers need to take into account.
http://www.softwarebyrob.com/2006/10/31/nine-things-developers-want-more-than-money/
This author claims that the one key element for successful
implementation of agile development methodologies is that the management
ranks (most all levels) actually “get” agile and develop an agile mindset.
http://blog.criticalresults.com/2009/10/23/essential-humility/
Excerpted from Susan Cramm’s soon-to-be-released book
of the same name, this slideshow lists eight (only eight?!) places where IT and
business often disconnect. I just wish
it would give us some hints about what to do to fix these gaps!
http://www.cioinsight.com/c/a/IT-Management/8-Things-Business-Hates-About-IT-791460/
Automated GUI testing is often (always?) sold to IT management as the panacea for all of their testing problems. But as most testers know (all too well in a lot of cases!), test automation is an arduous task and test automation efforts need to be managed as a “development project within a development project”, including analyzing their value. This article gives some excellent advice on how to do test automation effectively.
http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/
In this article from a forthcoming book about the consequences of software failure, the author recommends using a balanced approach to IT governance to reduce risks associated with software problems by doing a little work now to prevent them instead of a lot of effort later dealing with the fallout.
http://www.informit.com/articles/article.aspx?p=1588848
A frequent topic of discussion among test professionals is what is the appropriate ratio of testers to developers and/or of test effort to development effort. This article emphasizes that the only accurate answer is “it depends” and goes on to provide some criteria to use in determining this for your project.
http://blog.testlab2.com/software-testing-man-hours-3/
Uncle Bob Martin eloquently explains why testers are often the people on a software development project who best understand the application, because of the need, for them to be effective, “to divine the system that the customer imagined; and then to illuminate those parts of the system that are not consistent with that imagination.”
http://blog.objectmentor.com/articles/2010/04/15/sapient-testing-the-professionalism-meme
By using spare CPU cycles on PCs inside Microsoft, developers found and fixed 1800 bugs, including some security vulnerabilities on Office 2010 before shipping. Looks like a pretty good paradigm for security testing in large organizations.
http://www.computerworld.com/s/article/9174539/Microsoft_runs_fuzzing_botnet_finds_1_800_Office_bugs
Frequently, the SQL used to read and write data to/from your database has the most profound impact on application performance of any aspect. This excellent, comprehensive tutorial gives you some hands-on concepts using diagrams to better understand and improve your queries.
http://www.simple-talk.com/sql/performance/designing-efficient-sql-a-visual-approach/
Whether you are developing desktop or web applications, most programmers
don’t have a lot of experience with user interface design. This simple, yet elegant, checklist contains
some excellent tips to keep in mind.
While they are all important and valuable, the most important to me is
#3: Optimize
the design for the most frequent or important tasks.
http://www-01.ibm.com/software/ucd/designconcepts/designbasics.html
One of my college professors said that you were a real engineer once you
understood the jargon in your area.
Here’re some humorous new terms to describe the practice of
programming. Interestingly, many of the
terms are about errors and bugs, which just shows that
we are still a long way from error-free development.
http://www.globalnerdy.com/2010/05/09/new-programming-jargon/
The Internet is full of chatter about the semantic web (sometimes called Web 3.0), but very
little of it gives you an explanation or context for what it is. This short (~15 minutes) video gives a very
good overview of the concepts and the ways that it will transform the web.
http://mashable.com/2010/05/10/semantic-web-documentary/
Test-Driven Development (TDD) is an excellent tool for improving your
code and accelerating agility in your development work. But it’s difficult to start with TDD from
scratch. This article
links to 10 excellent articles on what TDD is all about and how to actually do
it.
http://blog.martinig.ch/links/ten-articles-to-learn-more-on-test-driven-development-tdd/
A new book chronicles how so-called “Internet addiction” is really just another form of the human trait of distraction wherein people crave the next “hit”. The author suggests trying to find real-world analogues to online activities to develop focus. And here are some tips for reducing technology-induced distraction.
http://news.bbc.co.uk/1/hi/magazine/8603346.stm
Most of us have heard the research results that say that multitasking is actually counterproductive. This author tells you how to stop multitasking and shows the benefits both personal and professional.
http://blogs.hbr.org/bregman/2010/05/how-and-why-to-stop-multitaski.html
Most of us have heard about the so-called “jobless recovery”. This article explains the corporate strategy perspective that backs up this idea. Essentially, most organizations believe that the increase in productivity during the downturn is sufficient to maintain momentum.
http://blogs.hbr.org/cs/2010/05/the_strategic_imperative_not_t.html
While most IT workers were satisfied with their jobs in 2009, even though they felt underpaid, a new Towers Watson study, over half indicate that they see little chance for career growth. At the same time, most respondents said that security and stability is the most important characteristic of their job.
One of the results of the prolonged recession and improvements in technology is that almost 1/3 of workers feel obligated to stay connected to work 24/7, even during weekends, vacations, or holidays. At the same time, almost 3/4 say that technology has helped them do more with less, according to a survey from Intercall.
Simplicity has an amazing calming effect. Most of these tips won’t be new to you, but taken together (i.e., synergy) they take on a whole new meaning. My favorite tip on the list is put all of your distractions (including your structured procrastination activities) together at a single time. Although I should probably heed the suggestion to write shorter e-mails more diligently.
http://zenhabits.net/2010/03/simplify-your-workday/
Texas A&M University (my alma mater by the way!) researchers have shown empirical evidence of what most of know intuitively: meetings are not a valuable way to generate new ideas. Their results indicate that ideas offered in brainstorming sessions ultimately result in less creativity on the part of the entire group.
http://www.guardian.co.uk/money/2010/apr/23/meetings-work-boring-stressful-unproductive
Many people worry so much about making mistakes in their work that it holds them back from doing their best. Messing up is not something to be feared as long as you take responsibility for your error and use it as an opportunity to learn something.
http://blogs.techrepublic.com.com/career/?p=1899
Distraction and procrastination are the silent killers of productivity. This article will help you understand both the science and psychology behind maintaining focus and how concentration is becoming a lost art.
http://howtogetfocused.com/chapters/8-things-everybody-ought-to-know-about-concentrating/
After all of those frustrating years of having to frequently change your passwords on various systems, new research says that changing passwords does not make good economic sense.
http://www.boston.com/bostonglobe/ideas/articles/2010/04/11/please_do_not_change_your_password/
The U.S. Congress appears poised to revise the 1996 Telecommunications Act due to the recent discussions about net neutrality and the federal appeals court ruling that the FCC overstepped its bounds in its ruling against Comcast concerning traffic shaping.
http://www.nytimes.com/2010/05/25/technology/25broadband.html
AquaSnap makes arranging Windows on your desktop more efficient by turning each of the edges and corners into dockable locations. Just drag your window to the appropriate docking hotspot and it will automatically snap to that location. In addition, it allows you resize your window into half or a quarter of the screen, so that you can arrange multiple windows for simultaneous display.
http://www.nurgo-software.com/products/aquasnap
Who has time to remember to run their disk defragmenter? With Auslogics Disk Defrag Screen Saver you don’t have to! It runs defragmentation as a screen saver and even displays the fragmentation status and defragment process.
http://www.auslogics.com/en/software/disk-defrag-screen-saver
Rex is the toy dinosaur from Toy Story… Oops… Sorry! Anyway, this Rex is a regular expression development tool, with a twist. Instead of validating that a particular string matches the given regular expression, it creates a finite state machine from the given regex and then returns a specified number of strings that match. This is a great way to help understand an unknown regex.
http://research.microsoft.com/en-us/projects/rex/
Zen Coding is a small plug-in for many IDEs, including Eclipse, IntelliJ IDEA, NetBeans, and even a variety of text editors, such as Notepad++, Akelpad, and UltraEdit, that makes coding HTML and CSS easier. Essentially, Zen Coding provides a shorthand that expands the simple input into the actual HTML and CSS code. For example, div#content>p*3 expands to:
<div
id="content">
<p></p>
<p></p>
<p></p>
</div>
http://code.google.com/p/zen-coding/
ERMaster is a full-featured data modeling tool in an Eclipse plug-in. You can model tables and relationships and it will export the model to DDL for a variety of database platforms including MySQL, Oracle, and PostgreSQL. Models are stored as XML for simple management.
http://ermaster.sourceforge.net/
Think that you know a lot of programming languages? Put your skills to the test with the timed quiz of 20 “Hello, World” examples.
http://www.sporcle.com/games/psychofish25/hello_world_syntax
In this online Flash game, you must fix (actually, just find!) bugs in NVidia driver source code to save the world! If you can’t find the error fast enough, then the world ends in a mushroom cloud.
http://kloonigames.com/heroprogrammer/
Sub-titled “The Arena for Accountable Predictions”, Long Bets is a philanthropic site where people (usually well-known ones) can make predictions about finance, technology, and more and have them challenged with the proceeds from the bet going a charity selected by the winner. It also serves as a forum for discussion about predictions.
This simple Flash animation helps you comprehend the size of our universe from the Planck length up to estimated size of the universe itself. Very fascinating!
http://www.newgrounds.com/portal/view/525347
Here’s all that stuff that your professors failed to tell you in school about how we got all of these programming languages that we know a love. :)
http://www.cvaieee.org/html/humor/programming_history.html
Doubtless, this video of the first 30 seconds of the Apollo 11 launch, shot at 500 frames/second (20 times the usual speed!), is the most amazing you’ll ever see in the history of space flight. It includes full narration of the scene. I still remember standing on a street with my dad watching this on a TV screen in a department store window.