"; */ ?>

software


7
May 07

The Seven Stages of Expertise in Software Engineering

software engineeringMy friend Deep, who is a J2EE architect, sent me this article to "use it as a benchmark every time I am asked to rate my skills as a software engineer". I found it very cool and right away it helped me to see people on the project I am currently on in a very efficient and "simply simple" (KISS) perspective. I will definitely revisit these stages in the future to see what stage I am on, or between which stages I am at.

Here they are – The Meilir’s Seven Stages of Expertise in Software Engineering:

Below is a part of the article written by Meilir Page-Jones for Wayland Systems Inc.
I spoke with Meilir, and with his permission I am posting his wisdom here

Stage 1: Innocent

A Stage 1 may not have heard of Software-Engineering techniques. Or — more likely nowadays — he may be vaguely aware of their existence but may not see their possible relevance to his situation. Indeed, he may be only dimly aware that there are any software-development problems in his shop. You may find it incredible that Stage 1s could exist in the 1990s, but they do. And the reason stems from the way in which software complexity evolved.

Software became insidiously more and more complex in the 1970s and 1980s as users demanded more and more sophisticated systems be installed on the more and more powerful hardware that became available. Yet there was no sharp transition. The earth was not hit by a Complexity Asteroid in 1975 that suddenly made software three orders of magnitude more complex and cast our reptilian development techniques into extinction.

I call the way in which software complexity actually increased “Frog in the Pan.” This is because although a frog will jump out of a pan of hot water, a frog that is placed in a pan of cold water and slowly heated will fail to leap forth and will actually boil to death. The temperature gradient is so gradual that there will never be a point at which the frog declares: “Boy, it’s suddenly gotten hot in here! I think I should hop out.” (Before I get into deeper trouble from animal-rights folks, I hasten to add that this analogy is apocryphal. I’ve never tried the experiment and I don’t recommend that you do so either !)

Many Stage 1s are experiencing “Frog in the Pan” and are trying to tackle problems of the 1990s with approaches of the 1960s and 1970s, without realizing that the problems they’re facing are the very ones that modern Software-Engineering techniques were created to alleviate.

Stage 2: Exposed

Stage 2s have noticed that the water is getting decidedly warm, if not downright hot. So they are actively seeking Software-Engineering techniques that will get them out of the pan or at least reduce the heat. Stage 2s may survey magazines, confer with colleagues or attend one-day overviews of the techniques. Their interest level is high but their knowledge level is low, being limited to a few terms and definitions and not based on any practical Software-Engineering experience.

Stage 3: Apprentice

Stage 3s have attended one or two 5-day workshops on Software-Engineering techniques. In these workshops they tackled small but realistic case studies that resembled their own projects in miniature. The case studies provided valuable kinesthetic reinforcement of the formal lecture material and were thus indispensable. However, the case studies’ apparent realism conveyed to the Stage 3 a confidence that is often unwarranted.

If a Stage 3 absorbs everything from a seminar, then he is minimally equipped to tackle a true, full-sized project in the corporate jungle. Usually, however, a Stage 3 does not grasp everything or has difficulty scaling the techniques up from a case study to a real project. You could say that most Stage 3s know just enough to be dangerous!

Stage 4: Practitioner

The rite of passage to Stage 4 is the use of Software-Engineering techniques on at least one significant project. Achieving “Stage 4-hood” is for many people the most difficult transition of the six transitions between stages. The fledgling Stage 4 is asked to take untried (by him) techniques and apply them to a corporate project with the usual demonic cocktail of politics, deadlines and changing requirements. At the same time, he is attempting to recall what he learned in class and scale up the examples 10- or 100-fold. He continually needs consulting advice, without which he will encounter a series of minor setbacks or major failures. Since many people throw up their hands at this point and revert to their old mediocre but familiar ways, a large proportion of Stage 3s never make it to Stage 4. If an entire project is peopled with Stage 3s, then it’s highly likely that the project itself will fail and the Software-Engineering techniques will be publicly pilloried and then abandoned. 

Stage 5: Journeyman

Stage 5s have made it. Their experience of Software-Engineering is “latched” in place and there is little risk of their reverting to the past. In the Stage 5 the Software-Engineering techniques yield for the first time the productivity the marketing folks promised; and on each successive project a Stage 5 further hones his skill and enhances his productivity. A Stage 5 is self-sufficient – more often the source of Software-Engineering advice than its recipient.

Stage 6: Master

The Stage 6 not only is an adept technician, but also possesses a profound methodological foundation. Beyond the “whats” and “hows”, the Stage 6 knows the “whys” of Software Engineering. This depth allows him sometimes to break a surface rule, while adhering to a more fundamental methodological principle. The Stage 6 is a good instructor because his theoretical and practical knowledge give him the wherewithal to tackle difficult student questions.

Stage 7: Researcher

The Stage 7 is concerned with delivering the latest developments in Software Engineering to a wider audience, via books, articles and conference appearances. The Stage 7 looks out for flaws in contemporary Software-Engineering techniques and for consequent ways to improve the techniques. He also scans the horizon for new problems towards whose solution Software Engineering can be extended and generalized. The Stage 7 is at a methodological pinnacle.

These Seven Stages of Expertise are valuable in their own right. You might think about a Software-Engineering technique that you know and consider which of the stages you are in with respect to that technique. You may also decide what (if anything) you should do to progress to the next stage.

However, there are organizational implications behind the Seven Stages. Below I discuss four of these: The Productivity Curve, Pilot Projects, The Critical Consulting Core and Ephemeral Technology.

 

Below is a "Stage-based Productivity Graph" that was compiled by Meilir based on his clients’ statistics:

Stage-based Productivity Graph

Software Engineering Stages Productivity Graph

7
May 07

jakarta.apache.org commons configuration

Apache released version 1.4 of the Jakarta Commons configuration library!

A very useful library that unifies the way all the configuration parameters are handled and lead to much more clear layout in especially big projects with a lot of packages, components and frameworks.

Commons Configuration provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Commons Configuration provides typed access to single, and multi-valued configuration parameters as demonstrated by the following code:

    Double double = config.getDouble("number");
    Integer integer = config.getInteger("number");


Configuration parameters may be loaded from the following sources:

  • Properties files
  • XML documents
  • Property list files (.plist)
  • JNDI
  • JDBC Datasource
  • System properties
  • Applet parameters
  • Servlet parameters

Different configuration sources can be mixed using a ConfigurationFactory and a CompositeConfiguration. Additional sources of configuration parameters can be created by using custom configuration objects. This customization can be achieved by extending Abstract Configuration or AbstractFileConfiguration.

The full Javadoc API documentation is available here.


1
May 07

Wifi WEP is Hacked in “less than 60 seconds”

wifi WEP hacker

In less than two minutes hackers can defeat the security measures protecting many home wireless internet connections.

Defeating these measures could let them capture passwords, steal confidential information or download illegal pornographic material using the connection.

Many home internet users rely on an encryption system called Wireless Equivalent Protection (WEP) to stop others using their wi-fi link, even though WEP has long been known to be flawed.

In early April three cryptographic researchers at the Darmstadt Technical University in Germany revealed a method of exploiting the flaws far more effectively.

Before now it took at least 20 minutes of monitoring the airwaves before it was possible to break in to a wireless network protected by WEP.

Now, armed with a program iwritten by the researchers, it is possible to break in to the same network far faster.

"Breaking in to a WEP protected network is now very easy to do," said Erik Tews, one of the researchers.

"Doing it in 60 seconds is realistic, or five minutes in the very worst case. We think now that WEP is really dead and we recommend that no-one should use it."

In its place he recommends an encryption system called Wi-fi Protected Access (WPA), introduced four years ago to replace WEP. "We have had a very close look at WPA and we can’t find anything to exploit," he said.

The only known way to defeat WPA encryption – and WPA2, a newer version – is to use what is known as a brute force dictionary attack.

This involves trying millions of different words or combinations of words from in the hope of stumbling upon the correct password.

 

by Paul Rubens right from the source


1
May 07

Dell Set to Sell Ubuntu Linux

Ubuntu on DellLinux has never been a consumer option on mainstream hardware from a name brand manufacturer. Until now.

Dell and Canonical today are announcing that Dell will ship PCs with Ubuntu Linux pre-loaded. The move follows an unprecedented outcry from Dell’s users who demanded that Dell support Linux for consumers and specifically Ubuntu Linux.

"We’re obviously very excited about this. It’s a strong endorsement of Ubuntu and is recognition for the traction and momentum that we’ve been building over the last few years," Jane Silber, director of operations at Canonical, told internetnews.com. "As well it is a true broadening off access and adoption for Linux in general and Ubuntu in particular on the desktop."

Though Linux has been available as an option for servers and business workstations from Dell and other hardware vendors before, consumer-targeted desktop PCs have never had this type of offering.

Initially the Dell Ubuntu pre-load option will be available only to U.S. consumers purchasing through Dell’s Web site. Dell engineers will be installing the recently launched Ubuntu 7.04 Feisty Fawn.

Dell will install the version of Ubuntu that is identical to that which is freely available and not some special version made just for Dell, according to Silber.

Canonical also noted that any demand that the Dell deal may drive toward Ubuntu will not be a problem. Ubuntu updates on a fairly regular basis, with users connecting to the Ubuntu update infrastructure to download patches and updates. In the case of the recent Feisty update, Ubuntu servers were overtaxed with users waiting many hours to download the full update.

"There is a big difference between providing updates, which are generally small, and having people waiting to download 700MB ISO images, which was the release-day issue," Silber explained. "We have a very healthy mirror system already; we have over 100 mirrors around the world and I don’t expect any problems."

Dell will not be offering the KDE Linux desktop variant of Ubuntu, called Kubuntu initially, and will focus only the GNOME Ubuntu version. That said Silber was quick to point out that this is just the beginning.

"We’ll see how it goes, as both companies are interested in serving a market that exists and, clearly right now, it looks like there is a pent-up demand for Ubuntu, and that’s what we’ll be delivering initially," Silber said.

Dell had been soliciting customer feedback since February through its IdeaStorm Web site about what people wanted. Pre-loading Linux became the first customer-requested option adopted by the company, with Ubuntu being the specific Linux version that users were asking for.

Though Silber declined to comment on the revenue arrangement surrounding the deal with Dell, she was quick to note that, as always, Ubuntu will remain free. She explained that Canonical’s business model is around support, certification and training. "With Ubuntu on Dell, commercial support is available for those that want it," Silber said. "For those that opt not to purchase, there is always community support."

Though the deal with Dell marks a significant milestone for Ubuntu and for Linux, Silber noted there are still some challenges.

"We will need to see the demand for the support offering; it’s unknown at this point," Silber said. "There is proven demand for pre-installed Linux this has been a well researched business decision to do this."

Silber added that she expects the Dell rollout to go smoothly but she’s been around long enough to know that there are always surprises.

Beyond Dell, Ubuntu already has a hardware certification deal with Sun. And Silber expects that with the Dell deal in check, Canonical will continue to expand its market share.

"The continued strengthening of the ecosystem both in terms of skills and education and in terms making Ubuntu available and accessible through this major distribution channel will continue the march toward much, much broader adoption of Ubuntu," Silber said.

 

right from the source


24
Apr 07

Making Sure You Are Beautiful

A lot of times web designers, or even people who paid money to get a web design, wonder: "Does my website look good? Does my website look good on Firefox, but does not on Internet Explorer? Other way around? Does my web site look good on Firefox, Internet Explorer, but not on Safari? Does my web site loo…. etc."

Here is a wonderful tool – browsershots – that checks any website against multiple (and here multiple means a lot of) browsers and their versions, and returns screenshots of this website exactly as it appears in those browsers.

Here is a choice of browsers that ‘browsershots’ uses to test a website:

Browsershots Browsers' choice

After a website is entered for testing, it takes up to 30 minutes to get all the screenshots, but this time is definitely worth it, since the creator/owner of the website is sure that "Yes – I am Definitely Beautiful!"