U.S. faces competitive disadvantage from lack of women in IT
Posted by Ahmad Sheikh at Friday, September 28, 2007Labels: tech talk
But with so many sites out there and new ones cropping up almost daily, who's got time to try them all? Playing with dozens of Web apps to find ones you like can sort of defeat the purpose of many of these services: to boost your productivity.
Fortunately for you, we've already done a lot of this work. In the collaborative Web 2.0 spirit, we're sharing some of the favorite tools we use here at Computerworld. Even with their occasional flaws, we just can't stop using them.
From a simple to-do list to a robust drag-and-drop database builder, here are the ones we've found to be borderline addictive. (But we know we might have missed some, and hope you'll post your favorites -- with URLs -- in the comments area below.)
Web apps we can't live without: | |||
The A-list | Honorable mention |
The A-list
You'd be hard pressed to find a more streamlined, simple service than Ta-da List, which bills itself as "the Web's easiest to-do list tool." After opening an account, click "create a new list," name it, type in a task and click "add this item." Add more items by typing them in. Order the items by clicking on "reorder" and dragging items up or down.
Done rearranging? Click "I'm done reordering." When a task is completed, click the box next to it to move it down to the bottom. Edit or delete items (or the list itself) by selecting the edit link.
That's pretty much it. There are no categories, no tags, no priority numbers. I typically use it when I've got a couple of different things in the works that I want to make sure I remember. It's simple, elegant and very quick -- easy enough to replace jotting down a list on a piece of paper, but with a cool AJAX interface.
And unlike a paper list, my Ta-da list is available anywhere I can get online; I can't misplace it. I can also share it with others, either for viewing only or as a group collaborative list. While there are Google ads on the site, they're fairly innocuous and don't feel intrusive while I'm using my list.
Ta-da List was created by 37signals, the company best known for the Basecamp project management service that spawned David Heinemeier Hansson's open-source Ruby on Rails project. Hansson is a damant about keeping all his software lean, and nowhere is that more true than Ta-da List. project. Hansson is
If you must have more functionality in a to-do list, our sister site PCWorld.com recommends RememberTheMilk as a reinvented to-do list "in a snazzy interface that lets you make lists in configurable categories, all laid out on the front page as tabs." I agree that "adding to-dos is easy, though adding deadlines, notes and time estimates is unintuitive." Overall, RememberTheMilk seems like a bit too much work for what I'd get out of it, but for those who place a higher value on functionality than on elegance and simplicity, it's worth a look.
PBwikiInitially recommended to our editorial team by one of our Web developers, PBwiki has turned out to be a useful tool to share information and advice about stories in the works and future story ideas. The site claims you can "use PBwiki to make a free wiki as easily as a peanut butter sandwich," and that's pretty much accurate. And once the wiki is set up, adding pages or text to it is quicker and easier than logging into a more structured format.
PBwiki offers ad-supported free wikis as well as paid, ad-free accounts. Wikis can be public or private/shared. You can add widgets (such as basic spreadsheets, chat, Google maps or videos), with additional functionality for paid accounts. All accounts can see revision updates and changes on the site and track changes via e-mail notification. Business accounts also offer different levels of access per user, the ability to make certain pages read-only and page-level RSS feeds.
Of course, there are drawbacks to free-form data as opposed to more structured formats; you can't really query or sort a text blob. There is a basic search box in a PBwiki, but searching for "Machlis" across many wiki pages can't give you the same targeted results as, say, querying a database for "all stories by author Machlis in the last three months."
Still, if you don't expect a wiki to do the job of a spreadsheet or a database, PBwiki can be a useful addition to your information management arsenal.
Our recent review of four online office suites found that Google's offering lacked some important features such as spreadsheet charts. Unlike some, though, I'm not seeking to replace my desktop word processor or Microsoft Excel (by far my favorite spreadsheet). Instead, I see a good online suite as adding features such as file-sharing or online backup to my existing text editors and spreadsheet app.
Google Docs offers an easy way to work on documents at home, at the office and elsewhere, without having to e-mail files around. I keep some simple documents in Google Docs and download backups to my own PC. When I want the power-user functions of Word or Excel, I can work in those packages, upload the file to Google Docs and then download again to my next system before starting to work again. It's a version control system for documents and spreadsheets.
In fact, I'm writing this story now in a Google Doc document. I don't need slick formatting, headers and scripts; basic writing, HTML coding and spell-check works just fine. However, when it comes time to turn it in, I'll be downloading it to my own system, saving it as a Word doc and e-mailing the file to my editor, since she's partial to Word's "track changes" function, which I must admit is more elegant than Google Doc's "compare revisions."
Still, comparing revisions is a nice function to have, along with some formatting, quick-link additions and sharing. And I've got a backup copy somewhere I can easily access if I want to make changes at home and then e-mail a new file.
Google's spreadsheet definitely isn't powerful enough for some of my projects. (A personal task analyzing local pedestrian accidents had too much data, for example.) However, it's fine for moderate strength tracking needs and superior when I want multiple users adding fairly simple data to a sheet. It's baffling that Microsoft hasn't jumped into the business of offering a Web platform for easily sharing Excel documents, although others such as eXpresso Corp. are trying to get into that business.
Meanwhile, I'm finding Google Docs a nice backup and version-control server for important and useful but not terribly private or sensitive documents.
But over the years, I kept returning to Bloglines, despite its aging Web 1.0 interface, because it did what I wanted done with a minimum of fuss. Finally, though, the new Bloglines v3 beta offers an updated UI with a start page and some drag-and-drop ordering that brings the RSS service into the modern era.
My goal in reading RSS feeds isn't to recreate a full, rich-media Web experience. If I wanted that, I'd be surfing directly to source sites. Instead, I want to scan headlines and summaries. I don't want to play around with a lot of buttons, links and options; I'm looking for information.
I want simple ways to subscribe to feeds and see what's new, with some basic feed organization tools. I want to be able to import and export OPML (a way to save a collection of feed subscriptions). And being able to "clip" and save individual stories is nice.
The beta was pretty limited when I started testing, without even a way to mark posts as still unread (that's since been addressed with a "pin" function). I'm still awaiting the "clippings" (keep and save some items) and "publish" (mark items to put in a new RSS feed you can make public) options, but the Bloglines beta help pages assure such functions are on the way.
The start page shows you summaries of headlines when you hover over the item, an AJAX standard that's just coming to Bloglines, and lets you easily add, delete and rearrange components.
The only major annoyance so far is that when I click on links from my start page, I just get a Bloglines summary pop-up instead of going to the source site; for that, I've got to move my mouse over to the pop-up window and click a second time. I'd prefer a summary when hovering but a link when I click.
Overall, though, it's looking like the Bloglines update will refresh but not mess with the basic functionalities that have won the service a place near the top of my browser bookmarks.
Zoho Creator
Unlike word processors or wikis, I haven't seen a flood of free Web sites for building database-driven applications. The few other database entries I'd tried were generally either limited, expensive or cumbersome. But not Zoho Creator.
Zoho Creator sports a surprisingly easy interface for creating your own apps -- even those that include some table joins (that is, looking up information in one table for use in another, which puts the "relational" in relational databases). With a few drag-and-drops, I quickly created data entry forms with text fields, drop-down lists, text boxes and so on.
My test applications ranged from simple (tracking charitable contributions) to complex (story tracking by writer, editor and status), and all ended up doing pretty much what I wanted.
One database collects all Computerworld product reviews published this year. You can see the live interactive database below. Sort by any of the available columns by clicking on the column header (clicking the same header toggles between ascending and descending sort). Click on the search box, and you'll see options to search by product name as well as headline and date.
There's a drag-and-drop option for adding a "lookup" field that pulls selections from another table. It's likewise fairly easy to set up different views of your data, and user-by-user access to each view and form. Creator also offers drag-and-drop scripting, allowing such things as setting defaults or variables based on certain conditions, sending out autogenerated e-mails when a field is changed in a specific way, or validating user input.
For more sophisticated scripting, it's easy to click back and forth between drag-and-drop scripting and the actual code. And I quickly downloaded data from Zoho Creator onto my own system for backup in varying formats, such as comma-separated or XLS spreadsheet format (although, alas, not in SQL) -- a must for any Web-based application where I'm storing important data.
I showed some of my colleagues the sample story-tracking app I put together on Creator, and response was highly favorable. I can think of many real-world uses for Creator, from detailed story tracking in our newsroom to keeping the list of who's slated to buy Friday morning donuts (making it simple to see who hasn't bought their share and even set up automated e-mail notifications when the list is changed). If you're a fan of structured data on the Web, both available to the public at large and shared with a select list of friends or colleagues, Zoho Creator is definitely worth a look.
Be aware that if you're a true database geek, Zoho Creator isn't a replacement for coding your own database app with something like PHP, Python or Ruby, and MySQL or PostgreSQL. Page layouts are limited (there are two, with no style customizations), and you can't do everything with variables, conditional scripting or sophisticated table joins that you can when coding from scratch. (I was told, for example, that I couldn't use a variable value as part of the name of my view.)
You can embed Zoho Creator applications in your own Web pages, although if you decide to use the apps at Zoho.com, you can't do things such as redirect users to a specific view after they've filled out a form. (They just get a message saying data was successfully submitted, followed by a new blank form.)
And while most of the application is intuitive, some things are not, such as how to store a "collection" of records and even how to edit existing records (a puzzle shared by several of my colleagues, although easy to use once we found it -- a barely noticeable pencil icon next to records in a view).
Fortunately, though, the Zoho staff is quite responsive about answering questions, even from customers with free accounts. Some of the written responses can be a bit difficult to understand, but they're generally useful. In one case, someone even built me a sample application to demonstrate how to conditionally pull data from one table into another.
Zoho.com has a slew of other offerings, including word processing, spreadsheets, wikis, project management, "notebooks" and Web conferencing, although so far I've stuck with Creator. Many of the other apps, including the Google Docs competitors Zoho Writer and Zoho Sheet, are quite feature-packed, but too much at the expense of elegant UI for my tastes.
Earlier this month, Zoho announced a private beta of Zoho Business, a pay service that will include a companywide administrative console, telephone support and "co-branding." For now, most of the services are free, and the plan is to keep them so for individual use. I expect I'll be building some real apps on the site soon.
Labels: tech talk
Which versions of Visual Studio are you using?
Posted by Ahmad Sheikh at Wednesday, September 26, 2007Option | Votes | % |
Visual Studio 2008 | 328 | 11.8 |
Visual Studio 2005 | 2119 | 76.0 |
Visual Studio .NET 2003 | 767 | 27.5 |
Visual Studio .NET (2002) | 87 | 3.1 |
Visual Studio 6 | 643 | 23.1 |
Visual Studio 97 | 33 | 1.2 |
I don't use Visual Studio | 72 | 2.6 |
Responses | 2787 |
Labels: tech talk
Would you encourage a friend or relative to become a software developer?
Posted by Ahmad Sheikh at Wednesday, September 26, 2007Option | Votes | % |
Yes | 265 | 14.8 |
Yes, unless they really had no chance of succeeding | 364 | 20.3 |
Maybe - it's too hard to generalise | 379 | 21.2 |
No, unless they were really keen or talented | 595 | 33.2 |
No | 187 | 10.4 |
Responses | 1790 |
Labels: tech talk
Programming Grads Meet a Skills Gap in the Real World
Posted by Ahmad Sheikh at Monday, September 17, 2007What programmers learn in college and what they need in the work force are out of sync.
Despite the best laid plans of colleges and universities, there remains a skills gap between what computer science graduates learn in their undergraduate years and what they need to become proficient in a typical at-work environment.
In short, many people on both sides of the equation—teachers as well as potential employers—say the educational system is not doing enough to keep pace with the ever-changing needs of IT, and that entering the work force often is as much of an educational experience as is college, particularly for programmers.
"I found that UC Berkeley had an excellent curriculum but not only was my schooling lagging behind work, it became very hard to even go to school because work had me learning the concepts and their applicability and nuances that teachers didn't even seem to know."
Zilka noted that many of the new hires he's seen during his career continue to echo the same sentiments as he did.
Some of the things the school didn't teach Zilka and many who are now entering the work force include issues around communication, development skills, and business and product design.
On the communication front, Zilka said, "Presentation skills are critical, and selling and influencing peers is critical."
Some of the development skills that schools might emphasize more include design patterns, coding style and practices, scalability and performance tuning, and a focus on the entire software development lifecycle, Zilka said. He noted that things like quality assurance, unit testing, and stage and release are not usually taught.
Moreover, Zilka said he and his friends used to joke that they would walk out of school knowing mathematical theory, but nothing they would actually use in work.
"In reality, I find that if your school was strong and you learned compilers, OSes [operating systems], hardware design, database design, advanced math and statistics, and the like, you find ways to apply all that theory but you don't learn how to be a developer or a sys admin or any of that," Zilka said.
Bjarne Stroustrup, the creator of the C++ language and a computer science professor at Texas A&M University, said, "There is a gap. It is hard to precisely characterize because there are so many different kinds of jobs," he said. However, "It is important to remember that universities should educate—for a life time of further learning—not train for specific tasks."
Yet, "That said, many students have no clue about software development and couldn't program their way out of a paper bag—that's unnecessary and puts them into a bad situation even if their primary job function is not programming."
For example, said Stroustrup, "inter-face design, testing, use of scripting is often not taught, at best, students are assumed to absorb it by osmosis. Most don't and equate programming with fiddling with tiny programs. At TAMU [Texas A&M University], we are trying to address that. I think a bachelor's is too short time; for most jobs you really need a masters—there is too much to learn for just four years."
Rawn Shah, IBM developerWorks Community Programs Manager, agreed with Stroustrup. Shah works for IBM in Tucson, Ariz.
"Today, some of the most sought after developers are those who work with environments and ideas that are complex," Shah said. "The opportunities to do those are harder to find at the basic university level, but are much more obvious at the masters or Ph.D level."
Bill Scherlis, director of the Institute for Software Research at Carnegie Mellon University, which is home of one of the premier computer science programs in the U.S., acknowledges the skills gap and said CMU is working to help address the gap.
"We hear it all the time from our colleagues in industry that university graduates have programming skills and technical knowledge, but they are somehow not equipped to take on software engineering" roles in the corporate environment, Scherlis said.
"When graduates join organizations [after college] they are often shocked to realize they are dealing with limited resources, deadlines, fuzz requirements, requirements that change weekly, applications that scale, the use of frameworks and libraries, existing code—that may be bad code with bad design decisions, issues of interaction within and among teams, and having to develop code that is secure," Scherlis said.
Those are some of the challenges students are faced with that they may not have faced in school, he said. "And we are crafting responses into the curriculum," Scherlis said. "We have to introduce our students to the mission of real engineering and collaboration."
One way to do that is to foster more team development, Scherlis said. "They get experience and deal with the realities of interacting with other individuals." Indeed, Scherlis said, the school encourages computer science students to take a course in social psychology to better understand how teams work because team development is such a key part of the corporate development environment today.
In fact, the school sponsors collaborative projects between an external organization looking for real solutions to IT problems and student teams at CMU. "And education is secondary to the external organization; they are truly looking to our teams to help them with a problem first and foremost," Scherlis said. So both parties benefit.
IBM's Shah said "software development is now more into how people can work together to solve many seemingly common issues."
In other words, "software development is becoming much more of a group activity, and there is a lot of sophistication to that in the industry that isn't being replicated in a smaller closed environment like a college," Shah said. "Very often, they simply can't because of the time limitations of the semester-based programs."
Moreover, Scherlis said the onslaught of open source technology has been a big benefit to students, as they are able to bet access to source code more easily and get students up and familiar with technology they are bound to see after graduation.
Byron Sebastian, CEO of SourceLabs, in Seattle, said many less experienced developers can learn necessary workplace skills by actively working on open-source projects in their free time.
"A developer with a Computer Science degree as well as hands-on experience in shipping software through an open source project has a running start in being successful in the workplace," Sebastian said. "They get experience working with complex and distributed teams, real 'ship cycles,' real customers, and real usage of their code. My advice to a student in a university studying software engineering would be to also actively work on open source projects to acquire more 'real world' skills they can apply when they enter the job market."
John McMullen, professor of Information Systems at Monroe College, in Bronx, New York, said, "A gap exists for a few reasons. One is that colleges are mandated by accrediting agencies to teach theory and to not be 'training schools.' Most teach courses like 'Programming Logic Using Java (or C++, etc.)' to try to sneak in some practical work but students do not get intensive programming experience."
In addition, "The rapidly changing landscape of development languages and tools—Python, PHP, LSL [Linden Scripting Language, the language used in Second Life], etc.—make it really impossible for curricula to keep up with," McMullen said. "Colleges must teach would-be programmers to 'learn-how-to-learn' new languages and skills."
Eric Newcomer, CTO at Iona Technologies, in Waltham, Mass., said, "You would think that researchers in the universities would be on the forefront of technology, and while that is the case at some universities and with some professors, the universities are generally behind software companies."
Newcomer who has taught database design at the graduate level, said if you look at a typical computer science curriculum you see plenty of fundamentals—programming languages, algorithms, operating systems, database management, etc.
"But you do not usually see things like XML, Web Services, Ajax [Asynchronous JavaScript and XML, Ruby, OSGi [Open Services Gateway Initiative], Eclipse, open source, WCF [Microsoft's Windows Communication Foundation], BizTalk, SOA [Service Oriented Architecture], ESBs [Enterprise Service Bus], orchestration engines, integration strategies, etc.," Newcomer said. "And these are the topics IT departments are most concerned with, not the fundamentals. They want to know what new technologies to adopt and what they're good for."
Newcomer said he travels to universities to deliver guest lectures and has witnessed students complain about the skills gap. "I guess the summary is that the schools cover more theory than practice, and focus on teaching well established technologies rather than new ones," he said.
John Montgomery, group program manager for Microsoft's Popfly mashup tool, who has looked closely at the phenomenon of beginning developers as well as grooming developers out of college to work in his teams at Microsoft, said, by and large, the computer science curricula at the top-tier schools do a good job of graduating students with a basic understanding of things like data structures and computational algorithms.
"But it's rare that anyone gets hired to go and write a better bubble sort algorithm or that graduates are called upon to perform array arithmetic," Montgomery said.
For the most part, these are "solved problems"—the frameworks and tools that anyone would give a developer will have already implemented what's necessary to solve those problems, he added.
Yet, "Mostly, developers seem to be presented with ambiguous technical problems, complex development processes, and unfamiliar code bases to work with," Montgomery said. "They'll be likely to be handed some chunk of existing code and expected to add a new feature or resolve a bug. Some schools try to train in the abstract for this kind of problem set, presenting students with classes in development processes."
To Todd Williams, vice president of technology at Genuitec, a Plano, Texas, software tools maker, the best employment candidate fresh out of school is the one who realizes the code they do not have to write may be the best code there is.
Williams said he thinks some schools focus too much on writing software as an art form for the developers to express themselves. But finding a way to accomplish a task without writing a bunch of new code pleases Williams, he said.
"New code equals new bugs equals maintenance burden, equals higher life-cycle costs," he said.
"In fact, if you have to hand-write code you've already admitted that you're going to take the slowest most expensive route available to implement a solution," Williams said. "Most software isn't unique and the issues it addresses can easily be solved by either finding, reusing and integrating existing software or through the use of productivity-enhancing tools that generate most of the code for you. Then, the clever developer only has to string the solution together with the minimal 'code wiring' that makes the pieces function well together."
Williams' employer, Genuitec, sells the MyEclipse IDE (integrated development environment). MyEclipse 6.0, the latest version of the technology, supports both code generation as well as old-fashioned hand coding.
Joe Ponczak, CEO of Codign Software, in Baltimore, said of the programming skills issue: "That's a pretty wide gap there. I think the developers that excel after college are the ones who continuously challenge themselves to learn new patterns, languages and methodologies while in college."
Moreover, although colleges do a good job at teaching the basics, "I think the basics are now 'too' basic and need to be improved," Ponczak said.
For instance, a look at the curricula at several local universities showed a listing of courses that have been taught the same way for years, Ponczak said.
But, "There were few, if any, courses on development methodologies, TDD [test-driven development], emerging technologies and languages, multi-layer development, security, scripting, refactoring, metrics or open source."
Meanwhile, SourceLabs' Sebastian said shipping software from a commercial vendor requires "ruthless pragmatism and customer focus" to be able to quickly deliver features customers require in a high-quality but timely fashion. And being able to make rapid design, feature, and bug triage decisions based on these factors is a skill that is usually acquired though hands-on experience and work alongside professional engineers with years of experience doing so, rather than in the classroom, he said.
While some developers have a natural "knack" for this, it's not a skill that is easily acquired in school.
In addition, large complex systems in the real world have multiple integration points, dependencies, and are often built by multiple teams, Sebastian said. "Learning to work in this environment, and having the skills to design and execute on the integration, assembly, and testing of components is another skill that tends to be acquired in the work-place rather than in school," he said.
Chris Stephenson, executive director of the Computer Science Teachers Association, in New York, said she too sees the skills gap between what students learn in school and what they need in the work force, "but what is really exciting is that I have seen more and more educators (both at the K-12 level and the university level) willing to make these skills part of their curriculum."
Like others, Stephenson said computer science should no longer be taught as a solitary and isolated discipline.
"There is little effort made to address issues such as effective team work, project planning and time management, and conflict resolution let alone helping students gain the cultural competencies and effective communication skills that are the key to success in a global economy," Stephenson said.
"Also, not enough effort has been made to show students how computing connects to problem solving in the real world," Stephenson said. "The good news, however, is that an increasing number of educators are building these skills into the classroom experience. Teachers now have students work in teams on real world projects where the failure to plan together, work together, and communicate effectively are a big part of the evaluation that the students receive."
Microsoft's Montgomery listed a series of things he would like to see in higher education computer science programs.
One is technology education programs that integrate communication skills. "The best developers are often the ones who can explain problems and solutions the most clearly to others," he said
The second is technology education programs that emphasize teams. "Very few developers really work alone," Montgomery said.
The third is graduates with analytical skills, particularly around ambiguous problems.
"It's important that developers understand the intention of what they're being asked to do as well as the implications of a solution they're thinking of and can weight and communicate these," Montgomery said.
The fourth is graduates with an understanding of development processes. "Not a theoretical one—they need to work on teams that use formal, top-down development process, agile development, teams with other developers, teams with test processes, and so on," he said.
The fifth is graduates with an ability to learn on the fly.
And the sixth is graduates with competence in several programming languages. "C++ is typically a must; C# or some other managed-code language is also mandatory," Montgomery said. However, competence in one dynamic language, such as JavaScript, should also be present, he said. And the graduate should have the ability to know which to use when.
In addition, Montgomery said he believes that for the U.S. to compete on global level people in various domains will have to attain some level of technical expertise.
"The diffusion of technical skills into many domains means that finance majors, doctors, and so on also need to have strong technical skills—what may have been considered development skills a few years ago—to compete on a global stage," Montgomery said. "This new demand is causing leading schools to nurture the growth of MIS/CIS/IT minors as rich programs unto their own."
Labels: tech talk
Computer Closest to the North Pole:
Webcam #1
Who's in charge: The National Oceanic and Atmospheric Administration's Pacific Marine Environmental Laboratory takes care of this floating eye at the top of the world.
Make and model: NetCam XL, made by StarDot Technologies.
Proximity to the pole: Varies. "Since the North Pole is in the middle of the Arctic Ocean, we deploy our instrumentation on an ice floe as close to the pole as we can," says Nancy Soreide, associate director for IT at NOAA's Pacific Marine Environmental Laboratory. "However, the ice floe does not stay at or near the pole. It drifts."
How it works: The webcam's container stands on a metal apparatus, on top of a piece of plywood and the ice. A battery floats beneath the ice surface, powering the webcam, which sends back pictures via satellite.
Prime time: Runs only during the balmier months, between April and October.
Life span: Think Titanic—at the end of each year's season, the webcam sinks, and is replaced by a newer model.
Operating temperature: From a chilly minus 40 degrees F to a balmy 120 degrees F.
Resolution: 2048 by 1536 (3.1 megapixels).
Weight: 19.5 ounces.
Dimensions: 3.25 inches wide (82.5 millimeters) by 2.20 inches high (56 millimeters) by 6.6 inches deep (167 millimeters).
On the scene: Lots of ice but no Santa sightings or flying reindeer, to date.
Computer farthest from Earth:
NASA's Voyager 1 satellite
Distance from Earth: Voyager is three times farther away than Pluto. That's to say at least 4 billion kilometers, times three.
Distance from the sun: 15.44 terameters.
Distance logged per day: 1 million miles.
Years old: Almost 30, having launched on Sept. 5, 1977.
Places it's dropped by: Jupiter and Saturn, on the way to the edge of space as we know it.
How it communicates with Earth: Uses NASA's Deep Space Network, a system of antennas around the Earth. There's no IM out here: Signals traveling at light speed take 14 hours one-way to reach Voyager.
Daily to-do list: Collects data on solar wind, energetic particles, magnetic fields and radio waves.
Powered by: Radioisotope thermoelectric generators.
Power needed: About 300 watts, the amount of power needed for a bright lightbulb.
World's most intriguing data center:Location: The Dalles, Oregon, on the banks of the Columbia River, 80 miles east of Portland.
Main attractions: Hydroelectric dam for power, two four-story cooling towers.
B.G. (Before Google): Pioneers knew The Dalles as the end of the Oregon trail.
Jobs inside the data center to date: Between 100 and 200. Google won't specify.
Code name: Called Project 02 by the locals.
Wired by: A fiber optic artery looped through the surrounding wilderness.
Secrecy level: High. Two reporters from the local newspaper are the only media who've been inside the compound and written about it (See "Inside the World of Google"): Google treats any and all details as though they belong to the National Security Agency.
Size: 30-acre site.
Number of servers: Google's mum. It has an estimated 500,000 around the world, spread across 25 locations.
Storage: Across all its data centers, Google stores an estimated 200 petabytes.
Top searches inside the compound: We'd bet it's a tie between "Britney Spears" and "Web 2.0."
World's largest scientific grid computing project:The E-sciencE II (EGEE-II) project
Launched: September 2006, for use by scientists around the world.
Helps power: Large-scale scientific research projects in fields from geology to chemistry—for example, will analyze data from CERN's Large Hadron Collider, a particle accelerator being built to help investigate details around the Big Bang and related physics questions.
Amount of work it does: 98,000 jobs a day, more than 1 million per month.
Juggling ability: Runs about 30,000 jobs concurrently, on average.
Number of sites connected to the EGEE infrastructure: About 240.
Number of countries connected to the EGEE infrastructure: 45.
Number of CPUs available to users, 24/7: More than 36,000.
Storage capacity available: About 5 PB disk space (5 million GB).
World's fastest supercomputer:IBM BlueGene/L (BGL)
Powered by: 65,536 dual-processor computer nodes.
Home base: This 2,500-square-foot marvel lives at the Lawrence Livermore National Laboratory in Livermore, Calif.
Claim to fame: Helps researchers answer physics questions about stockpiled nuclear weapons and materials like Plutonium.
Power requirements: 1.5 megawatts (equivalent to a 2,000-horsepower diesel engine).
Clocked speed: Rated fastest in the world after clocking sustained performance of 280.6 trillion operations per second, or teraflops.
Approximate cost: As part of a larger contract including other supercomputers, just under $100 million.
Measure of compute capability: To match the power of this behemoth, every man, woman and child on Earth would need to perform 60,000 calculations per second (without transposing digits or forgetting to "carry the one").
Brawny bandwidth: Its internal communication network would support 150 simultaneous phone conversations for every person in the United States.
Waiting in the wings: IBM has announced a successor, Blue Gene/P, designed to deliver three times the processing power of the Blue Gene/L.
Smallest PC to run Windows Vista:OQO, Model o2
The package: OQO's Handheld PC checks in at 5.6 (wide) by 3.3 (high) by 1 (deep) inches.
The skinny: Weighs just under 1 pound (weight varies with configuration).
Vitals: 1.5GHz processor, Windows XP or Vista, 30 or 60GB hard drive, 512MB or 1GBDDR DRAM, Wi-Fi, Bluetooth.
Most likely to twist your fingers into yoga positions: Thumb keypad with 57 keys total, mouse buttons, digital pen, programmable thumbwheel.
Stayin' alive: Lithium-ion polymer battery keeps it cooking for up to three hours.
Price of entry: Starts at $1,499.
James Bond-worthiness: Sleek, but we'd bet 007 would insist on something even smaller.
Biggest Paradigm Change in Enterprise Software:Linux kernel
Created by: Linus Torvalds, in 1991, helping open-source developers collectively craft a viable alternative to Microsoft operating systems.
Number of developers: Total since 1991 is unknown; 3,200 developers for the kernel as of release 2.6.22.
New releases: Every 2.6 months.*
Quick change artists: 2.89 changes made to the kernel every hour.
Lines of code: 8.2 million and growing (about 10 percent per year).
Amount of code added every hour: 85.63 lines.
Revenue diverted from Microsoft: Perhaps only Mr. Gates knows.
*Unless otherwise marked, statistics reflect Linux kernel releases of the past 2.5 years (version 2.6.11 through 2.6.21).
Labels: tech talk
IT workers continue to ride a strong wave of increasing experience to a third straight year of high earnings, according to Redmond magazine's 12th annual Salary Survey.
The survey, published in the September issue of Redmond magazine and available online, found that the average base salary for an IT pro was $71,988. Story author Michael Domingo summed up the survey results: "Whether on their own or punching the corporate clock, the IT forces are problem solvers, work long hours and are well compensated for their efforts."
(Editor's Note: Redmond magazine is owned by the Redmond Media Group, which publishes this and other IT-related Web sites).
The three critical salary-related categories -- salaries, raises and bonuses -- all saw at least modest gains over the previous year. "Respondents said they made significant gains from [surveys in previous years] of $3,223, with an average bonus of $5,985. That represents a bonus payout that's bigger by almost 86 percent," Domingo reported. Salaries in general have maintained pace with inflation.
One reason for the rosy figures is that the IT workforce is maturing. While the average age of an IT pro has remained fairly constant over previous studies, at about 41 years, the average years of work experience jumped a substantial amount, from 12.1 to 12.8 years.
As is normally the case, leaders make the most money. IT managers had the highest average salary, at $87,103. Next came programming and networking project leads, at $84,004 and $82,725 respectively. Database admins, webmasters, programmers and network engineers averaged salaries in the low to mid-$70,000s, while help desk/user support personnel brought up the rear, with an average salary of $52,824. That makes sense, as those are usually entry-level jobs.
The value of certification, at least as it relates to salary, is murky. While certain specialized certifications, like MCDBA (Microsoft Certified Database Administrator) on SQL Server 7 ($86,225), or MCSD (Microsoft Certified Solutions Developer) on Visual Studio .NET ($91,124) can lead to high salaries, the overall salaries don't reflect the same value. The base salary for those with no Microsoft certifications was $78,158, significantly above the average base salary of $71,988.
As for what the future holds, the outlook remains good for staying in, or entering, the IT field. The U.S. Department of Labor forecasts growth in IT jobs of between 18 - 26 percent between now and 2014. Those numbers are reflected in Redmond's salary survey as well. Notes Domingo, "IT professionals continue to draw exceptional pay ... With a strong U.S. economy to boot, they can't help but feel upbeat about their job prospects and the money they'll be making in the coming year."
Labels: tech talk
Careers,Get Ready for the Fall Job Hunting Season
Posted by Ahmad Sheikh at Tuesday, September 04, 2007The Tuesday after Labor Day is the second busiest day each year for job hunters.
In the job hunting world, there are two peak seasons yearly in which most disenchanted workers set their marks and get set to go. The first is in early January, on the heels of New Year's resolutions by bored workers across the land promising themselves they'll find more inspiring work that year.
The second is the day after Labor Day, when the sight of kids going off to college and school starting anew reminds workers in a state of job ennui of when they, too, used to be enthused about learning new things.
But recruiters urge that if you think you could be in the former camp by the year's end, you might want to think about jumping in now, and ERE, a community of recruiters around the world, is offering job seekers tips to land their next job.
1. Don't Quit Your Day Job
No matter how loathsome your job is, and how frustrated you are with the amount of time you've been on the job hunt, recruiters discourage job seekers from quitting their current jobs before having found a new one.
Though many will tell you that it's because you really don't know how long it will take until you find your next job, and if it is a long time it will do your resume a disservice, the real truth is that an unemployed job hunter reeks of more desperation than one who knows where their next paycheck is coming from.
"You don't want to seem like a job-hopper," said Elaine Rigoli, business writer for ERE. "From a recruiter's perspective, if you're unemployed and hanging out on job boards all day, you might seem desperate. They want the people who are hard workers and may not even know that they are looking. They're called the passive candidates, or passive majority."
2. See and Be Seen
Increasing one's visibility is key when looking for a new job, and the good news is that the Internet has made it even easier to network without leaving your desk. Posting on blogs, starting your own and keeping your social networking profiles up-to-date are widely used ways to increase one's professional network. Speaking at conferences, writing for magazines and Web sites, and networking with professional organizations ensure that when it's time to move the job hunt forward, you've got lots of resources to tap into.
"Don't just sit there. Get out there and meet people. This goes along with not just quitting your job and expecting the next one to come along. If you're involved in IT organizations and active on technology boards, recruiters may already know who you are," said Rigoli.
3. Reinvent Yourself
More than any other line of work, technology requires that its professionals stay on the ball, working constantly to keep their skills sharp and relevant. Recruiters suggest that job seekers go one step further and learn complementary skills to the IT skills they may already have, and find new uses for your talent.
"Keep your skills sharp. Stay aware of the ways you can take advantage of your knowledge by networking. Find new places that people are looking for your skills," said Rigoli.
4. Don't Discount Smaller Job Boards
It would be naïve to ignore the market share of Monster, CareerBuilder and HotJobs when launching your IT job hunt, but it would be risky to limit your job seeking to only the big sharks. Within the IT profession, there are dozens of job boards for technology professionals alone, all of which boast a lower signal-to-noise ratio for workers who don't want to wade through irrelevant job ads.
In the IT profession, the more options can be the merrier. IT pros know that IT jobs aren't just in computer and technology professions, but any company in the world with computers at their employees' desks.
"There are so many niche job boards from itjobs.com to jobs.slashdot.org and computerwork.com, not to mention dice.com, which according to one poll was where a full 17 percent of computer professionals went to find jobs," said Rigoli.
"But if you're willing to look into the health care industry, or higher education IT, there are boards for all of these employers as well. Whatever you do, don't limit your search unnecessarily."
5. Consider Smaller Companies
If Microsoft wants to hire two, or 2,000, new IT professionals, it barely has to market itself before it is flooded with so many applications that it would impossible to read every one. But the technology profession is flooded with small IT shops and partner companies who need people with hands-on IT knowledge. They just may not have the overhead or able bodies to go out and find them, and even if they can find them, they cannot afford to train them.
"They can't take raw talent out of the university and train them for a year," Celia Harper-Guerra, director of talent at Cisco Systems, in San Jose, Calif., told eWEEK in June. "A Microsoft can have a one-year training program to become a systems administrator or an engineer. But a small company cannot afford to have a person out of work for a year,"
Labels: tech talk
20 Tips to Improve ASP.net Application Performance
Posted by Ahmad Sheikh at Tuesday, September 04, 2007
Not a .net Developer?
Are you an asp.net developer? If you aren't don't worry, If you are an ASP.net developer, listen up!
Get Ready for Massive Gains
There are certain things you should take into account when you are developing your applications. Over the last 12 years or so of working with asp and asp.net, I have learned to avoid and do certain things that increase your application performance by a massive amount! Below are my top 20 tips to improving ASP.net application Performance.
1. Disable Session State
Disable Session State if you're not going to use it. By default it's on. You can actually turn this off for specific pages, instead of for every page:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" EnableSessionState="false" %>
You can also disable it across the application in the web.config by setting the
2. Output Buffering
Take advantage of this great feature. Basically batch all of your work on the server, and then run a Response.Flush method to output the data. This avoids chatty back and forth with the server.
<%response.buffer=true%>
Then use:
<%response.flush=true%>
3. Avoid Server-Side Validation
Try to avoid server-side validation, use client-side instead. Server-Side will just consume valuable resources on your servers, and cause more chat back and forth.
4. Repeater Control Good, DataList, DataGrid, and DataView controls Bad
Asp.net is a great platform, unfortunately a lot of the controls that were developed are heavy in html, and create not the greatest scaleable html from a performance standpoint. ASP.net repeater control is awesome! Use it! You might write more code, but you will thank me in the long run!
5. Take advantage of HttpResponse.IsClientConnected before performing a large operation:
if (Response.IsClientConnected)
{
// If still connected, redirect
// to another page.
Response.Redirect("Page2CS.aspx", false);
}
What is wrong with Response.Redirect? Read on...
6. Use HTTPServerUtility.Transfer instead of Response.Redirect
Redirect's are also very chatty. They should only be used when you are transferring people to another physical web server. For any transfers within your server, use .transfer! You will save a lot of needless HTTP requests.
7. Always check Page.IsValid when using Validator Controls
So you've dropped on some validator controls, and you think your good to go because ASP.net does everything for you! Right? Wrong! All that happens if bad data is received is the IsValid flag is set to false. So make sure you check Page.IsValid before processing your forms!
8. Deploy with Release Build
Make sure you use Release Build mode and not Debug Build when you deploy your site to production. If you think this doesn't matter, think again. By running in debug mode, you are creating PDB's and cranking up the timeout. Deploy Release mode and you will see the speed improvements.
9. Turn off Tracing
Tracing is awesome, however have you remembered to turn it off? If not, make sure you edit your web.config and turn it off! It will add a lot of overhead to your application that is not needed in a production environment.
10. Page.IsPostBack is your friend
Make sure you don't execute code needlessly. I don't know how many web developers forget about checking IsPostBack! It seems like such a basic thing to me! Needless processing!
11. Avoid Exceptions
Avoid throwing exceptions, and handling useless exceptions. Exceptions are probably one of the heaviest resource hogs and causes of slowdowns you will ever see in web applications, as well as windows applications. Write your code so they don't happen! Don't code by exception!
12. Caching is Possibly the number one tip!
Use Quick Page Caching and the ASP.net Cache API! Lots to learn, its not as simple as you might think. There is a lot of strategy involved here. When do you cache? what do you cache?
13. Create Per-Request Cache
Use HTTPContect.Items to add single page load to create a per-request cache.
14. StringBuilder
StringBuilder.Append is faster than String + String. However in order to use StringBuilder, you must
new StringBuilder()
Therefore it is not something you want to use if you don't have large strings. If you are
concatenating less than 3 times, then stick with String + String. You can also try String.Concat
15. Turn Off ViewState
If you are not using form postback, turn off viewsate, by default, controls will turn on viewsate and slow your site.
public ShowOrdersTablePage()
{
this.Init += new EventHandler(Page_Init);
}
private void Page_Init(object sender, System.EventArgs e)
{
this.EnableViewState = false;
}
16. Use Paging
Take advantage of paging's simplicity in .net. Only show small subsets of data at a time, allowing the page to load faster. Just be careful when you mix in caching. How many times do you hit the page 2, or page 3 button? Hardly ever right! So don't cache all the data in the grid! Think of it this way: How big would the first search result page be for "music" on Google if they cached all the pages from 1 to goggle ;)
17. Use the AppOffline.htm when updating binaries
I hate the generic asp.net error messages! If I never had to see them again I would be so happy. Make sure your users never see them! Use the AppOffline.htm file!
18. Use ControlState and not ViewState for Controls
If you followed the last tip, you are probably freaking out at the though of your controls not working. Simply use Control State. Microsoft has an excellent example of using ControlState here, as I will not be able to get into all the detail in this short article.
19. Use the Finally Method
If you have opened any connections to the database, or files, etc, make sure that you close them at the end! The Finally block is really the best place to do so, as it is the only block of code that will surely execute.
20. Option Strict and Option Explicit
This is an oldy, and not so much a strictly ASP.net tip, but a .net tip in general. Make sure you turn BOTH on. you should never trust .net or any compiler to perform conversions for you. That's just shady programming, and low quality code anyway. If you have never turned both on, go turn them on right now and try and compile. Fix all your errors.
There are hundreds more where these came from, however I really feel that these are the most critical of the speed improvements you can make in ASP.net that will have a dramatic impact on the user experience of your application. As always if you have any suggestions or tips to add, please let us know! We would love to hear them!
Have web development!
Labels: asp.net
Labels: tech talk