June 2009 Newsletter
Choose your corner, pick away at it carefully, intensely, and to the best of your ability and that way you might change the world. –Charles Eames
Don't fight forces; use them. –Buckminster Fuller
A day of worry is more exhausting than a week of work. –John Lubbock
To be prepared is half the victory. –Miguel de Cervantes
Difficulties are meant to rouse, not discourage. The human spirit is to grow strong by conflict. –William Ellery Channing
All of us tend to put off living. We are all dreaming of some magical rose garden over the horizon—instead of enjoying the roses that are blooming outside our windows today. –Dale Carnegie
The 'silly question' is the first intimation of some totally new development. –Alfred North Whitehead
Life is full of obstacle illusions. –Grant Frazier
We need a renaissance of wonder. We need to renew, in our hearts and in our souls, the deathless dream, the eternal poetry, the perennial sense that life is miracle and magic. –E. Merrill Root
In most organizations, project estimation is either a black art or an afterthought. Here are some simple, practical tips for improving estimation. It focuses on the principle of developing a feedback loop cycle for estimation rather than starting from scratch on every project.
This excellent presentation shows how many organizations have co-opted the agile label, but they are simply sticking it on the traditional waterfall process. The key recommendation that the author makes is that agile should be implemented organically (bottom up), should be adapted appropriately for the specific organization, and should not be done all at once.
Despite reports of the demise of object-oriented programming (OOP), this article, by well-known and respected computer scientists, Trygve Reenskaug, creator of the MVC pattern, and James O. Coplien, explores how OOP as implemented (i.e., in practice versus in academia) missed the boat in translating mental models of business users into objects with respect to system actions and interactions. And they offer a fix called DCI: an architecture based on the object Data, the Collaborations between objects, and the way that Use Cases scenarios comprise Interactions between role. I predict that this paradigm will be revolutionary. (Guy L. Steele made similar observations back in 2002.)
The choice of a comfortable monospaced font for your text editor or IDE is really a matter of personal preference. So check out this list to see if you might find something a little better than Courier New for your needs. And don’t forget to read the comments for other great recommendations!
In this article, the author makes it clear that development estimates are not (or should not be!) "point" estimates, but that instead they should be treated as a statistical distribution. Although he doesn't specifically note this, it should be apparent that this means all estimating techniques should have a low, medium, and high component (3-point estimate) with a likelihood weighting for each.
REST is one of the popular architectures for building web services and SOA applications. (The other is SOAP.) This article discusses some of the good things about REST and the dark underbelly as well.
This brief, succinct list is a great set of principles for programmers to follow. Take this list and think about what other things you would add.
Some people call them “non-functional requirements” and other use the term “supplemental specifications”, but whatever name you use, business customers always have some expectations about any application that are implied, but still very important. This article explains ten such “fit and finish” needs that all developers should pay attention to.
Many organizations continue to fail in both their development projects and their efforts to improve the development process itself, because they have the "Chuck Norris mindset": They expect change to happen simply because they want it to. In other words, they don't invest in the work and effort to make it happen.
In an interesting twist on the usual IT-business alignment divide, business users have become advocates of model-driven development tools and methodologies because they perceive that IT organizations are too slow in developing tools to meet the business needs. By contrast, programmers have generally resisted these tools as raising the abstraction level for applications too high.
In tight economic times, everyone is trying to get by on less. This means that the focus is on efficiency. Here are some tips on boosting the efficiency of your test efforts and the test organization itself.
This article gives great introductory explanations about the various types of code coverage testing techniques, such as statement, branch, condition, etc. Likewise, it includes some practical advice about what coverage techniques to apply first and why.
Many developers are tempted to do large-scale rewrites of code when they have to do bug fixing. Of course, this is risky from the quality perspective as well as to the project schedule. Refactoring is usually an acceptable alternative. This developer suggests this principle: Make a small “quality fix” for every bug you have to address. He goes on to explain what these small fixes might be.
This article explains the motivation for independent testing from the developer's perspective and addresses the value proposition for testing.
One of the banes of a software tester's existence is generating test data, especially when you are doing automated testing and you need a large quantity of data. GenerateData.com can help. It is both an online tool and a free (GPL) script that you can run on your own server to generate data. It can create a variety of test data types including names, email addresses, address data, alphanumeric strings, and MUCH more. It can output the data set results in many formats including XML, Excel, HTML, CSV, and SQL.
This free, online textbook teaches data structures using Java. Many of the data structures presented have interfaces similar to those in Sun's JDK.
In Java programming, one of the most frustrating errors is the java.lang.OutOfMemoryError. This can be caused not only be running out of heap memory, but also by native memory. This article explores the causes of these errors and how you can avoid them in your Java (or other JVM-based) applications.
It would be rare that a person would say that Windows is fast at booting and launching applications. SuperFetch is an update to the Windows pre-fetch technology introduced in Windows Vista, which aims to predictively load libraries in parallel for enhanced performance. This article looks under the covers of SuperFetch and dispels some of the legends about it.
Does the thought of concurrent or multi-threaded programming make you nervous? This tutorial gives a gentle introduction to using the java.util.concurrent package.
Most of us probably aren’t (and won’t be!) involved in writing operating systems. Nevertheless, application developers can benefit from understanding how the operating system creates and manages processes, especially as it relates to application performance.
A new survey shows that people under 30 tend to ignore voice mail and are more likely to respond to e-mail and text messages. Understanding communication styles is very important to successfully interact, especially between generations.
Keeping your skills current is the key to long-term success in any career. Here are one pundits suggestion about what programmers will need to be able to have in their basket in the next few years. No big surprises, but a good "check list" to have for your career planning.
Most programmers (and people, in general, of course!) tend to view themselves as competent. In this humorous video, Ron Burk discusses the Dunning-Kruger effect and how it applies to programming. In particular, he emphasizes that overconfidence in our abilities is most often demonstrated in insufficient unit testing.
A new survey by Robert Half shows that IT professionals are on track for 3.7% increase in starting salaries over 2008, which in the current economy is good. This is compared to the 5.3% increase from 2007 to 2008. Likewise, IT unemployment remains comparatively low.
Most technology workers are painfully aware that (human) multitasking on complex tasks simply doesn't work. This article discusses the recent cognitive science developments about the Age of Distraction.
Despite numerous predictions of its imminent demise, IBM has been selling mainframe computers for 50 years. And they expect this to continue indefinitely. Here are some of the milestones along the way.
As much as those of us in the IT career might complain about how slowly things seem to improve, here's a reminder of 11 techniques that used to be the foundation of programming that thankfully we don't have to worry about any more.
Learning isn’t (or shouldn’t be!) something that stops when you finish school. To have a successful career (and life) you need to continue learning. Here are some tips for gathering and retaining new knowledge.
While mostly oriented toward the psychology behind marketing and sales, this article summarizes 50 ways that we are persuaded about something. Many of these are applicable to designing good software applications and user interfaces.
Those who survive a layoff (and often multiple rounds of them) are certainly happy to still have a job, but it still takes a toll on them, often in terms of health, morale, and productivity.
Most people simply accept the salary offered by a potential employer. Here are some tips, including very informative videos, about how to politely and successfully negotiate a higher salary or some additional benefits.
Love the Firefox web browser, but find it a little bit slow or hogging too much memory? Here are some hacks to improve performance and flexibility by getting into the guts of the application.
Graphic designer Milton Glaser, the creator of the "I Love New York" logo, explains the things that have made the greatest impact on his life and how to work with others. These points are very insightful and inspirational.
Since most software development work is done as part of a team, learning how to work together is a key skill for personal and organizational success. The author of the acclaimed book Teamwork Is An Individual Skill discusses the importance of personal responsibility when working on a team.
A new survey shows that as wireless LANs become more pervasive, in many organizations 50% - 90% of wired Ethernet ports are unused. Furthermore, they predict that by 2011, 70% of new Ethernet ports will be wireless.
As the telecom industry moves toward an all-IP core, there are concerns that there aren't enough engineers with IP skills and that telecom providers are not doing enough re-training of current employees.
The recent spate of divestures by large carriers of land access lines to "smaller" providers focused on rural and small market customers is actually creating a new series of big providers. What does this mean for the telecom business overall?
Risingware Exp+ is an integrated dual-pane file manager and web browser that includes a variety of utilities, as well. The file manager includes built-in compression tool that handles ZIP and RAR archives among others and a file content previewer. In addition, you can define directories as "favorites" just like in a web browser. Some of the utilities include "Fast Start Genie" for launching frequently used applications and ability to set Window transparency.
This handy tool allows you to create UML diagrams online and even to edit them from within your blog posts or other online editing tools like Google Docs. Currently, use case and class diagrams, including hierarchy, association, composition, inheritance, cardinality, etc., are supported, but other diagrams are coming soon. Furthermore, you can share your creations with others via a simple URL link.
Nimrod is a new programming language that "combines Lisp's power with Python's readability and C's performance." It is a statically typed, imperative language that supports most of the common programming styles (procedural, OOP, functional, etc.) and has compilers for Windows, Linux, and Mac OS X. Likewise, it provides bindings to a variety of toolkits, including GTK2, PRCE, MySQL, and many more.
If you use the wonderful Greasemonkey user-scripting engine (*see here for information about running Greasemonkey scripts in WebKit/Safari, Internet Explorer, and Opera) and use Google for search, this excellent style sheet will really improve your search experience. It includes display of screen shots of returned results, integration of data from your iGoogle page, support for Google Translate, ability to run your seach on other engines, and much more.
is an integrated web browser package that allows you to display pages with the
8 on both Windows XP and
Portable Python is a complete Python development environment that can be installed and run from portable devices like USB thumb drives. It has recently been updated to provide packages for versions 2.5, 2.6, and 3.0 and all of the packages can be run side-by-side on the same system, which is great for porting applications to a new version. Each of the packages includes many popular add-ons, including Django web framework, Stani's Python Editor (SPE), wxPython, and a variety of common libraries.
If you are game developer and you are leaving your job, how do you notify your coworkers? You write a game, of course! You can even play the Flash game yourself!
The UK-based National Museum of Computing recently opened a new exhibit on "vintage" PCs. Take a look at this gallery of some of the original boxes from the PC era.
Technical people seem to have a
strange different sense of humor.
Here are 25 comic strips that show the lighter side of the development
While you're wasting your time (hopefully, not!) reading this newsletter, why not spend a few minutes reading about the greatest time-waster in history: Minesweeper. It's hard to believe that Minesweeper is almost 20 years old already!
This site just cracks me up. In small micro-blog (think Twitter) posts, they author makes observations about his normal life. And if this isn't enough, you can always read the entire text of Moby Dick from a series of 12,849 (wow!) "tweets".
If you enjoy word games like Scrabble, Spellathon, or Text Twist, you'll simply love DeepLeap. Game play is simple, but addicting. The game drops letter tiles one at a time and you try to make words from the available tiles. You get bonuses for using all of the available tiles and for the length and complexity of the word formed.