July 2009 Newsletter
Truth is tough. It will not break, like a bubble, at a touch; nay, you may kick it about all day like a football, and it will be round and full at evening. –Oliver Wendell Holmes
We have more ability than will power, and it is often an excuse to ourselves that we imagine that things are impossible. –François de la Rochefoucauld
Life is a grindstone. Whether it grinds you down or polishes you up depends on what you're made of. –Jacob M. Braude
It is a trick among the dishonest to offer sacrifices that are not needed, or not possible, to avoid making those that are required. –Ivan Goncharov
Don't judge each day by the harvest you reap, but by the seeds that you plant. –Robert Louis Stevenson
The only correct actions are those that demand no explanation and no apology. –Red Auerbach
This excellent essay, excerpted from Robert Glass' book Software Conflict 2.0, explores the question “What is software design?” He emphasizes that design is not about external representations or methodologies, but it is a creative activity that takes place in the mind. And one of the most interesting things about this essay is that it was written almost 20 years ago. I guess it’s true what they say: The more things change, the more they stay the same.
In this classic article from Watts Humphrey, he discusses the underlying causes of delays in software development (and inaccurate estimation, as a consequence). He says that the main cause is all of the miscellaneous work that programmers do in addition to the actual development. And his remedy for the problem is profound: Developers should keep track of time in detail to see where all of their time goes.
Most of the time programming languages are “graded” on performance benchmarks, but these are often flawed and certainly don’t tell the entire story. This author took on the challenge of comparing languages based on speed, size, and dependability.
While the intended audience for this article is web designers, it contains some great general principles for estimation of most any sort of development or programming project. The article discusses developing a standard framework of tasks that always apply and then using it to make specific estimates based on the requirements of a particular project.
The architectural paradigms of web-based systems continues to evolve. (Some pundits say that we are now moving from Web 2.0 to Web 3.0.) This article argues that REST is really just a means to an end and that the real architectural pattern is WOA or “web-oriented architecture”.
In this newsletter, we often feature articles about “IT-business alignment”. This excellent article emphasizes that even naming this is part of the problem. Instead, we need to simply recognize IT as part of the overall business, just like sales, operations, etc., that has a specific role in the success of the enterprise.
Among the debates in the IT profession that never seem to be settled is how much technical skill IT managers should have. This article explores this question and it seems that the answer (as you probably expected!) is that “It depends!”
One of the popular agile practices (not to be confused with methodologies!) is test-driven development (TDD). In this article, the author tries to dispel some of the common misunderstandings, such as TDD doesn’t work in developing architecture and writing tests after coding isn’t any different from TDD.
This insightful article seeks to better define the line between the software engineering (SE) discipline, which tends to focus on process and methodology, and computer science, which covers the technical underpinnings of programming, such as algorithms and complexity. Certainly, it doesn’t resolve the matter once and for all, but it does help to bring some clarity. And, Tony Hoare gives his views on this divide as well.
The role of the CIO is changing from being the head honcho over technology to being a key player in how to leverage technology as part of business strategy. Here are the steps that the CIO, and everyone in IT, need to focus on to remain relevant.
In the noble method of anti-pattern, learn how to write code that is confusing and indecipherable! Seriously, this should give you some ideas of how code in a way that understandable and maintainable.
Never one to shy away from controversy, Joel Spolsky proposes a bachelor of fine arts track for programmers who are more interested in the craft of programming instead of the traditional computer science approach.
Ivar Jacobson promotes a new concept called “Smart is Agile++”. Basically, he says that any organization can do "agile" simply by adopting smart practices over unsmart ones.
A couple of months ago, we featured an article about 10 classic papers that all programmers should read. Now, here are 10 more papers that address software architecture.
James Bach bemoans the sad state of software quality and says that underlying cause of the problem is the tolerance of defects by customers. And he offers some suggestions for finding our way out of the mess.
I don’t think that this author is implying that computer or software problems were the primary cause of the accident, but he does make a good point about how important software testing and quality are in this age of increasing dependence on technology systems.
Most testers have an interest in the weird ways that applications can fail. (One blogger even writes about the “favorite” bugs of his coworkers in the Microsoft test group.) This article reviews some well-known and yet still extraordinary application failures.
In a recent thread on the Agile Software Testing mailing list, members made their suggestions about the advantages and value of agile testing approaches, even on traditional methodology projects. Read this summarized list of the results.
In enterprise development, coding standards are often non-existent or not followed if they are available. This article explains the value of coding standards in preventing code defects from the beginning.
Although I somewhat disagree with this author's general idea that "quality" and "testing" are synonymous, he still gives a good overview of the role of these functions within the development process.
Test Forge is a new wiki-based site where you can share test plans, designs, procedures and test cases, as well as other various software testing wisdom with others. It's quite new, so it's a bit sparse right now, but it seems like a great idea. Get out there and share some of your stuff with others!
Every Windows users' nightmare is the Blue Screen of Death (BSOD). This non-technical guide explains what the various BSOD errors are and gives you some tips for how to troubleshoot and resolve them.
Trying to write a “generalizable” equals method for your Java class that appropriately handles inheritance and subclassing is fraught with peril. This excellent tutorial takes you through some of the common pitfalls and provides guidance for how to implement your method taking them into proper account.
In the Internet age, it is rare that even the simplest of applications don’t have some sort of database, either on the backend or embedded. (Did you know that even Firefox browser has SQLite embedded for storing bookmarks, history, etc.?) Thus, SQL skills are an imperative for all developers. This reference gives some tips, as well as great links to other resources, about how to implement good database structures.
If you do any programming in Java, you’ll want to look at this! It explains best practices and patterns across a wide realm of Java programming from some of the best known the Apache projects, like Lucene and Commons. For those getting started with EJB/J2EE, it includes a fantastic section on JavaBeans.
Most designers and developers know that CSS is preferred for web page layout over tables. But sometimes CSS is just too complicated. This article gives you some tips about how to use CSS effectively and simply.
Ever wonder where the 160-character limit to SMS messages came from? Well, it’s not as random as you might think at first and it really pre-dates the portable technology boom era. The limit came about in 1985 when the chairman of the GSM committee responsible for non-voice services used a typewriter (remember those?!) to do some personal research about the maximum length of single-sentence blurbs and questions. And, thus, the SMS message length was born (and the Twitter message length of 140 characters maximum was derived.)
Want to know what the environment is really like at that potential employer? Curious about salaries at competitors? Glassdoor.com can help. This site allows you to find reviews and salary information from actual employees at companies in many industries. You can even contribute your own information, anonymously, if you prefer. And they even have a section on how employees rate their CEOs. (And also check out competitor Telonu.com. [Get it? Tell-on-you.])
With continuing job losses, the chances that you will be looking for a new job get bigger with each passing day. Here are ten questions that you are likely to face in most any interview regardless of the job type or industry, such as “Tell me about a problem you had in your life and how you solved it” and “Do you have questions for me?” These are always good to have thought about before the interview, but don’t just come up with “canned” answers to them.
As summer is upon us, vacation season is in full swing. (I just got back from a week off myself.) This article looks at an interesting approach to vacation e-mail: just delete it all and tell people to contact you again when you return. How do you handle e-mail during absences?
This summer, Unix reaches middle age! One of the most amazing things to me from this article is that Ken Thompson wrote not only the original version of Unix itself in one month, but also an editor, a shell, and an assembler, as well! Pretty amazing even today with multi-year application development projects being the norm.
Even if you’re not officially a manager, these tips will help improve your effectiveness, efficiency, and relationships with coworkers and maybe even impress the boss. Most of these items are simple common sense (which Benjamin Franklin observed isn’t all that common!), but seeing them together in one place helps you make some good connections between them.
For the second year in a row, engineer tops Manpower’s talent shortage survey. It is followed closely by IT staffer.
Many people are enticed by a career in programming because of the view that it is technically challenging and provides good, stable employment. This author points out this is true, if you are also committed to being a life-long learner and you can emotionally detach yourself from the code you write. And, certainly, you should always have a “plan B” in any career.
While epistemology might not be your idea of an interesting subject (or maybe not even something that you’ve even thought of!), this article has some interesting implications not only for natural languages, but also for our limitations of perception when it comes to programming languages.
As most people know, it's tough finding a new job right now. So, everyone should focus on what to do to keep your current gig. These tips will point you in the right direction. And, the fact is that they are good advice regardless of the job market.
This posting (from 2001!) notes that technology is driving grammar to reverse the standard of punctuation marks being put inside closing quotation marks. I feel vindicated, since this is how I have written my entire life, much to the chagrin of many English teachers!
What are some of the things that others (or—Heaven forbid—you your yourself!) do at work that annoy you? Here’s a list of some of the bad habits that everyone needs to break. And, yes, my personal worst—procrastination—is number 1! (I even have procrastination as a tag on Delicious!)
Everyone knows that communication is the linchpin of work and really of all relationships that we have with others. At the same time, technical people seem to think and communicate in different ways than “normal” people. This author explains four salient differences and gives some great advice for how to overcome some of these variations in communication style.
Advances in technology always result in social change. Just think about the automobile and the telephone. Certainly, the answer to the question posed in the title of this article is “Yes,” but the more relevant question is how is society changing because of computers. Interestingly, the computer is hastening is the demise of the metanarrative.
Telegeography says that the global economic downturn will only temporarily slow broadband growth and predicts that worldwide broadband subscriptions will top 700 million by 2013 up from 400 million today. They also indicate that this, along with wireless growth, will mostly offset losses in landlines.
Even homeless people recognize the importance and value of Internet access. Here’s a quote from one of the homeless people featured in the article: "You don't need a TV. You don't need a radio. You don't even need a newspaper. But you need the Internet."
Cisco is predicting that by 2013, video will account for 90% of IP traffic and that the amount of traffic will be the equivalent of the contents of 10 billion DVDs per month!
In a new survey, almost half of respondents said that they would drop their mobile data plan to reduce personal expenses, if necessary. By comparison, only 10% said that they would get rid of home broadband service.
Everyone knows what a router is, right? Well, modern routers are changing from one-trick-ponies into integrated devices that are often more about applications and services.
Even with the economic
difficulties in the
PicPick is a multi-function tool for application developers and web designers. It features screen capture, image editor, color picker, color palette, pixel ruler, protractor, whiteboard, and more. It runs from the system tray, so all of the functions are quickly available.
Trowser is a cross-platform (Unix, Linux, Windows, Mac OS X, etc.) text file browser that is intended to be a GUI-based alternative to less. It is a great tool for looking at log files and includes color highlighting, a persistent search history, graphical bookmarking, separate search result (i.e. filter) windows. Its key bindings are loosely based on Vim, so most users will be comfortable with keyboard navigation. (Requires Tcl/Tk version 8.4 or later. Windows users probably want Active Tcl.)
is a browser-based online IDE (integrated development environment). It can be used for developing in most any
language, but includes “channels” with code libraries/snippets for ASP.NET,
Tab grouping on the task bar is one of my favorite features introduced in Windows XP. But it isn’t always the most convenient way to switch between instances of the same application. WindowTabs is a much more natural way of grouping. It adds Google Chrome-like tabs to windows so you can easily switch using mouse or <Ctrl>+<→>/<Ctrl>+<←>. It even lets you group windows from different applications. (*Note: The free version is limited to 3 tabs per application. The $19 full version removes this restriction.)
Text editors are kind of a passion (addiction?) of mine. I frequently try out different ones to see if there is something that I like. I guess my favorite is really an amalgamation of a variety of editors. Nevertheless, TotalEdit is a really strong contender among the category of freeware editors. It has an amazing set of features that are too numerous to do justice here, but some of the key ones are excellent support for development tool integration like compilers, debuggers, etc., built-in diff/compare, search and replace with regular expressions, support for project files, column mode editing, and support for portable installation.
Most users consider an application of any complexity incomplete without good documentation. HelpNDoc is a free help documentation authoring tool that can output documentation regular HTML, Microsoft Compiled HTML Help (CHM), PDF, or Word formats. You can define your own variables to ensure nomenclature consistency, such as product name, throughout the document.
If you are working with MS Windows and you get an error or informational message box from the application, you can simply press <Ctrl>+C (standard “Copy” keystroke) to copy the title text, the message text and the text of each of the message box buttons to the clipboard. Then you can just paste this information into any text processor.
Can you believe it? Tetris has been around for a quarter-century. I don’t even want to think about how many hours (days?) I’ve wasted spinning little blocks.
Forty years after the historic moon landing (I watched it on a B/W TV in a store window with my family, since we didn’t have a TV!), the debate continues about whether or not Neil Armstrong said ‘a’ in his famous first words from the moon’s surface.
These probably aren’t that funny for the under-30 crowd, but I found them quite humorous.
If you liked The Lord of the Rings films, this site is a must-see. It has an amazing 40-minute fan film in the style of the originals made for under $5000.