Wednesday, July 16, 2008

Excel’s AVERAGE Function and AVERAGEA

When Excel’s AVERAGE function doesn’t give true results, try AVERAGEA


If your data includes text values, Excel’s AVERAGE function won’t give you an accurate picture. See how AVERAGEA can solve this problem.

Sometimes, the AVERAGE function does not give a true picture of your data. AVERAGE can only find the average of a range of numerical values; it skips any text values. For example, the results of a monthly mailer for donations to a nonprofit organization are listed below. If you want to know the amount of the average donation that came in, you would use the AVERAGE function, as shown in B20. The results would not include those who received the mailing but did not send a donation.

If you want a better picture of how your donors responded to the mailing, you would use the AVERAGEA function, as shown in B21. AVERAGEA evaluates the text value None as 0 and includes that value in its calculation.

Figure A

Thus, of those who responded to the mailing, the average donation was $145.45. However, if we are to count those who gave $0, the overall average response to the mailing was $106.67.

Figure B


Miss an Excel tip?

Check out the Microsoft Excel archive and catch up on other Excel tips.


easy ways to compromise your own security

5 Easy ways to compromise your own security


Maybe you’ve effectively secured your IT resources against malicious security crackers, as much as reasonably possible. Perhaps it’s even secured against “acts of God.” There’s always at least one more danger: the danger that you’ll accidentally compromise security yourself.

There’s no way to compile a comprehensive list of all the ways you might let a well-protected system’s security slip through your fingers, of course. The kind of mistakes you can make are innumerable. The following list offers just a few all too common examples of how security is accidentally compromised from within, by someone somewhere, every day in this world.
  1. Misplaced trust: Don’t enter your online banking password on someone else’s computer. Don’t trust a brand. Don’t trust security systems that don’t trust you. Don’t trust the government farther than you can throw it. Don’t even trust yourselves too much — because trusting in the infallibility of something you create can prove fatal to security.
  2. Security through ignorance: Most of us are probably aware that obscurity is not security. That doesn’t mean we don’t try to use obscurity for security, sometimes without even knowing we’re doing it. A great example of this is the effects of Google and Yahoo! indexing Flash content. This indexing is showing that a lot of sensitive information is naively encoded in Flash objects, and has been available to people with the know-how to harvest it all along. Many of the people who created these security sieves never realized that they were essentially relying on obscurity for their security, though. The problem in many cases is that they didn’t really understand the technology they were using, and as a result they never thought things through enough to realize that the only thing “protecting” such information was a veil of obscurity. Don’t make that same mistake; understand the security implications of the technologies you use.
  3. Unsecured e-mail: Do you send business secrets through e-mail? Does your Web site offer a way to recover passwords via e-mail? If those e-mails aren’t encrypted, you’re basically handing the keys to the kingdom to anyone who cares to get them. A particularly egregious example of this kind of blunder was the case of unencrypted embassy emails sent through the Tor network.
  4. Unsecured encryption: Just like the anonymity provided by Tor, encryption itself is not a magical cure-all. In order for OpenPGP encryption to be usable and useful for protecting communications, you have to be able to decrypt any encrypted messages you receive. In order for it to be secure, you have to keep your private key private, as well as the passphrase you use to access it. If the computer on which you maintain your private key, and where you decrypt and read messages you receive, isn’t properly secured, that means your encryption isn’t properly secured either. Some systems are more prone to problems that compromise the security of your private key than others — things like unauthorized access that might allow someone to copy your private key and launch an offline brute force attack on your passphrase, and keyloggers that can capture your passphrase as you type it in. It’s even worse when you use encryption on someone else’s computer, where you may have little idea what security measures have been taken by those who have administrative access, or even whether they themselves can be fully trusted. Ultimately, you may be better off communicating via plain text than encrypting messages, if the security of your encryption keys is too weak. At least if you communicate in plain text you know whether it’s effectively protected against eavesdropping.
  5. Unwinnable battles: Choose your fights wisely. Don’t focus a lot of energy trying to protect what can’t be protected effectively. If securing the unsecurable is necessary to your business model, you may want to rethink that business model — not only because of the inherent flaw in a business model like that, but also because all that effort put into securing the unsecurable is diverted from securing everything else. Don’t take the easy way out, blaming everything on anyone except yourself when your business model is built to fail, giving yourself excuses to squander time and energy on a quixotic quest for the unattainable. It’s not my fault your business model sucks.

Don’t make these mistakes. Think about them, though, and if any of them are problems that hadn’t occurred to you, think about what else you might be missing. Learn to think like a security professional, always looking for the way unintended consequences might arise from innocent actions.




Saturday, July 12, 2008

Configuring the Cisco 851W or 871W: Standard IOS

Configuring the Cisco 851W or 871W: Standard IOS


The Cisco 851W router is a relatively low cost multipurpose device ($292 is the lowest price), which can support virtual wireless LANs separated by firewalls. Although the Cisco 871W can do more things, it is in the $500 to $700 range, depending on the software feature set you want–and that may be a little too expensive for a home router or small business.

Even the $500 version of the 871W doesn’t offer a whole lot more than the 851W, other than its external antenna connectors that allow you to connect larger antennas. Only when you get up to the $700 871W do you get additional feature sets, like BGP routing, VLAN support, and QoS traffic prioritization.

Last time, I explained how to configure the more expensive version of the 871W. Unfortunately, many of you couldn’t use it because you didn’t have the Advanced IP IOS feature set. This tutorial is made for you and for anyone who has or is planning to buy the cheaper 851W.

Advanced SOHO dual network architecture

I’m going to show you how to set up a Cisco 851W or 871W router with the standard “advanced security” IOS in an advanced SOHO (small office/home office) configuration that offers:

  • Stateful packet inspection firewall
  • Two virtual wireless LANs (max 10)
  • One virtual LAN bridged to one wireless LAN
  • Both wireless LANs configured for WPA-PSK security
  • One wireless LAN serving as a guest network with restricted access
  • DSL PPPoE client
  • DHCP server

Figure A shows a logical diagram of the configuration. The orange represents the guest network and the green represents the internal network. The entire switch is configured for VLAN1 because the 851W and 871 Standard IOS (Standard is actually called the “advanced security” IOS) doesn’t support VLANs. Only the 871W running “Advanced IP” IOS can do VLANs. This means only the “InternalWLAN” wireless network can bridge to the switch using BVI (Bridge Virtual Interface) 1.

Port F4 is the WAN interface configured to dial PPPoE to an ADSL modem. The “GuestWLAN” wireless network colored orange will have full access to the Internet but no access to the internal network colored green. The internal network will have full access to the orange guest network and the Internet. The guest wireless LAN will have an SSID of GuestWLAN, and the internal wireless LAN will have an SSID of InternalWLAN. For now, the Cisco 851W and 871W is capable of broadcasting only one SSID, so GuestWLAN will be the only SSID being broadcast. Future firmwares will fix this shortcoming.

For anyone wondering whether SSID hiding is good for security, SSID hiding is a worthless security feature, along with MAC filtering and some of the other common myths.

Initial hardware setup

After you’ve removed the 851W or 871W from the box and plugged in the power adapter, plug the supplied console cable to a valid serial port on your computer. If you have a laptop that doesn’t have a serial port, you will need to get a USB-to-serial adapter. For ideal testing purposes, you’ll need a wireless LAN-capable laptop and a desktop computer. Plug the desktop computer in to F1 or FastEthernet port 1 (this is the second port from left in Figure B, since F0 is the first). Most desktop computers have at least a COM1 port, so you can use that as the console configuration computer. You plug the RJ45 end of the console port in to the right-most RJ45 port labeled “console.” If all you have is the laptop, you can use that to test the wired and wireless functionality.

For more details on the hardware setup procedure, see the quick start guide from Cisco on the 850 and 870 series routers. (This is actually a fairly decent hardware guide from Cisco.)

Wiping the default configuration

The first thing I do with all the newer Cisco routers is wipe the default configuration on them. Old school routers didn’t have any username or passwords assigned to them, but these new devices are different. You have to first log in with username “cisco” and password “cisco”. The “c” in “cisco” may need to be capitalized on certain access points and routers, but most of the newer Cisco devices are like this. Once you’ve logged in, you’ll need to type the following commands:

  • enable
  • write erase
  • reload (confirm reboot)

Once the router is rebooted, you’ll see a “router>” prompt and no passwords will be required. Now, you’re starting with a clean slate. Unlike last time, when we had to create some VLANs, the standard “advanced security” IOS feature set on the 871W will not support this and the 851W won’t do it at all regardless of the IOS installed. You now need to enter global configuration mode by typing the old “config t” command.

CLI configuration template for Cisco 851W or 871W

I’ve always thought that the Cisco configuration guides were too difficult to use, with their inline comments and hints, so I’ve created my own configuration template system in Microsoft Excel. Thanks to our development blogger Justin James, who wrote a quick replacement button that automatically generates a ready-to-use configuration output, we have a truly useful new tool for documenting and creating new CLI configuration files.

For this particular tutorial, I’ve created three templates for the Cisco 851W or 871W standard “advanced IP” IOS, embedded with Justin’s new rapid replace functionality. The first template is for DSL PPPoE implementations. The second template is for DHCP or cable modem Internet connections. (Note that for cable modem implementations, you should reboot the cable modem. It tends to lock itself down to a certain MAC address, which will cause problems for your router unless you reboot.) The third template is for static IP WAN implementations.

How to use CLI template

Once you’ve downloaded the template for this tutorial, it’s easy to generate your own Cisco 851W or 871W configuration. All you need to do is fill out the yellow section, shown in Figure C, on the Variables sheet.

Figure D shows the Reference sheet in the configuration template with substitute variable names in red and enclosed in [brackets]. The Replace button will copy the contents of the Reference sheet to a new sheet named 871W (user configurable in cell G5) with an auto-incrementing number behind it for each new configuration you create.

Insert configuration on 851W or 871W

Once the output is created, you can copy the Command column with your customized settings (starting below the “Command” label) and paste it into your console. Note that all the Excel formatting will be excluded from the paste command, which is exactly what we want. Also note that some commands take longer than others to insert because the router has to think. I would recommend you do a small section at a time and verify each of the commands executed properly without errors (some warnings notices are okay). The console is also known to drop certain statements at times if you paste too fast, so make sure the router takes every command. You’ll have to verify with the “show run” command. When you’re satisfied, be sure to issue the “write mem” command to commit all the changes permanently so that the settings will remain the next time you reboot the router.

Note that on the reference page, I’ve labeled all of the commands with their purpose. This is for reference, learning, and documentation. It would be wise to look through the entire reference page so you’ll understand what most of the lines are doing.

The final Excel file is perfect for initial setup and permanent documentation. Anyone with any knowledge of Cisco devices should readily understand what’s going on with this template. The table format, the highlighting, and all the text formatting help make Cisco CLI more readable and understandable.

You can also change the Reference sheet if you want to modify the template to suit your own purposes. For example, you may not want to force your guests to use WPA-PSK security instead of WEP, and you may even want to leave it wide open and offer a free hotspot.

Test your multi-VLAN multi-WLAN router

Your desktop PC connected to port F0 through F3 should all work. You should be able to acquire an address in the internal network. If you left my IP scheme default, that should be an IP address of 192.168.1.100. You should be able to ping 192.168.1.1 and 192.168.2.1, which are the IP addresses of the BVI1 interface and the dot0.20 sub-radio interface. Once the configuration is finished, you’ll need to log in with the username and password you configured. If even pinging doesn’t work, you’ll need to check the IP address configuration on your BVI or radio sub-interface.

Since you can’t use telnet yet if you can’t even ping the router, you’ll need to use the console to troubleshoot. You can troubleshoot IP configuration with the “show ip int brief” command, which will show you a listing of all the interfaces in your Cisco router (Figure E).

You should also be able to ping something like techrepublic.com.com if you’ve entered a valid DNS server. If you can’t ping any Web site you know should work, try pinging your DNS server and see if that’s available. If that doesn’t work, you’ll need to troubleshoot and verify that your configuration is correct. A good thing to check is whether your Dialer1 interface has been assigned an IP address from your DSL provider yet. If this were a cable modem, it would simply be the FastEthernet4 interface configured in DHCP mode.If you’re able to ping everything mentioned above, test your wireless laptop by connecting to both wireless LANs. The GuestWLAN will be the only SSID visible because it’s the only one broadcasting. From the guest network, you should try to ping 192.168.1.1 to make sure it fails to prove the Guest-ACL is working. Note that the Guest-ACL can be modified to have exceptions if, for example, you want your guests to be able to print. The guest network should be able to get to everything on the Internet.Getting the InternalWLAN is a little trickier because you won’t see it by browsing. You’ll need to add the SSID profile manually and move it to the top of the list. Then, you’ll have to disconnect from the GuestWLAN and try to refresh the wireless network browser in Windows XP SP2 or whatever wireless client software you’re using. After awhile, it should be able to connect to the InternalWLAN. This is why I hate SSID hiding. It’s such a pain to use, and it doesn’t provide any security benefits.

Is your network ready for the ‘net video onslaught?

Is your network ready for the ‘net video onslaught?


NBC is getting ready to test the infrastructure of your network whether you like it or not. They plan to provide 2,200 hours of streaming video of the upcoming Olympic games, enabling viewers to watch their favorite sports at their leisure. Unfortunately, much of that leisure time will be during work hours and a lot of that video will be streamed over your network. In addition, even if your company limits or eliminates streaming video, you are likely to be affected by all the other people who use your ISP.

NBC sees Olympics as research mecca (USAToday.com)

All this comes at a time when video is already consuming more bandwidth than all other types of traffic combined. Some ISPs have gone so far as to throttle P2P traffic, while Comcast and Time Warner are exploring ways to throttle down the bandwidth usage of the “hogs” on their networks. Some colleges and universities have a taste of better bandwidth through Internet 2 or National LambdaRail, two networks competing to be the next step in the evolution of our beloved Internet.

ISPs prepare for video revolution (News.com)

Colleges closer to link with network (Arkansas Democrat)

I am not concerned about the network at my place of business, partly because we have so much bandwidth, but also because we will be one of the first places on the next generation networks as a primary portal. Unfortunately, not everyone works in education, which gets early, discounted access to bandwidth. How are you planning on dealing with the video deluge?

Friday, July 4, 2008

Five tips to help you deal with people who love to hate consultants

Five tips to help you deal with people who love to hate consultants


As a consultant, you’re often looked upon as an outsider, an unwelcome intrusion to the departmental clique at the client company. Perhaps you were brought in by upper management and touted as the savior of a project that is falling behind on critical due dates — sparking anger and resentment among the in-house team that may have fathered the project. It’s an occupational hazard — IT consultants often find themselves mired in ugly office politics.

There are a variety of reasons why people love to hate consultants. Many people — especially those in leadership roles — do not look favorably upon others who exhibit more initiative and drive than they do. And in my experience, even a little initiative puts you ahead of 90 percent of the current workforce.

Often, your client’s staff is actually predisposed to finding fault with you, and personality conflicts will arise from those feelings. Some people will take an instant dislike to you, and to make matters worse, some of these people may be in a position to dislodge you from your job.

So how can you turn a no-win situation into a productive one for both you and the company? In this article, I’ll describe a few techniques you can use to protect yourself when you find you’re labeled as “the enemy” at the client site.

Tip #1: Document your work with e-mail

All correspondences should include e-mail to avoid any “he-said, she-said” arguments. Whether you have a telephone conversation, a quick hallway chat, or a meeting — all of those discussions should be followed up with an e-mail that summarizes what was discussed. For particularly heated issues, I recommend avoiding telephone conversations because e-mail provides better documentation of exactly how the other person interacted with you.

Make sure that you Cc those who may be an ally in the chain of command on all e-mail correspondence. And, of course, you should not delete anything, as you may find a need for it later.

Tip #2: Send e-mail to shed light on people who are missing deadlines

You may find that certain employees involved in the project at the client site are missing deadlines, which, in turn, affects your ability to complete the project on time. To address these issues, it’s best to confront the employee through e-mail correspondence — once again, for the benefit of keeping records. Your correspondence should be diplomatic and politically correct, but you should also use it to force your adversaries to address specific job-related issues, even though this may not cast them in a favorable light.

Keep in mind, however, that this method is not always effective. Some people will see through this tactic and will respond to your e-mails with dissemblance, giving the appearance of their desire for teamwork — while maintaining their adverse behavior toward you.

But there are situations in which this method works well. I chose this course of action recently during a stint as a program manager with a communications conglomerate. I deliberately continued to ask a difficult employee for the status on due dates that had been missed, I questioned issues that were addressed late in the project, and I asked about items that I knew were in this person’s area of responsibility. It worked like a charm. Oftentimes, if you give them enough rope, they will hang themselves.

Tip #3: Maintain your professional composure

Often, the advice that sounds the most obvious is the most difficult to follow in real life. Avoid any animosity or anger toward people who are deliberately working against you. Don’t let their errant behavior influence yours. It will only serve to be your downfall and put you at their level. A reaction from you is what they are usually after. Maintain a professional approach — especially around coworkers who may be friends of your adversaries.

Tip #4: Allow actions to speak louder than words

Perform only what is within your job responsibilities but be willing to go that extra mile. It can only help to solidify your position with the company and make it that much more difficult for the troublemakers to usurp you. Here again, in doing so, you run the risk of coming across as an overachiever. This won’t score you any points with the “in” crowd, but you weren’t hired to be popular. You were hired because your record showed a clear propensity for accomplishing goals and for getting things done.

Tip #5: If you can’t beat them, try to befriend them

If the situation doesn’t appear to be getting any better, but you feel the job is worth salvaging, try a new approach. Make an effort to ingratiate yourself with the troublesome individuals and reason with them. Ask them specifically what it is that you may have done to draw their disfavor and how you can make your relationship better for the sake of the company.

Don’t discuss their rude and unprofessional behavior, because this can be counterproductive. It may be a hard pill to swallow, but you need to ask yourself if sacrificing a little dignity might be worth what you may gain in the long run.

I don’t advise going directly to the employee’s supervisor. Remember that the people you have a complaint against are permanent employees. It’s infinitely easier for the company to select the fast-and-easy way to eliminate complaints by getting rid of you. Don’t shoot yourself in the foot.

If you must resign, leave with a good attitude

If all else fails and you still find yourself on the slippery slope out the door, be confident in the fact that you did the best job you could under difficult circumstances. Regroup and learn from the experience. Using those lessons to your advantage down the line ensures that you will always come away from every job with something useful.

Use an Excel spreadsheet to prototype your reports

Use an Excel spreadsheet to prototype your reports


Prototyping is a tried and true method for capturing the design details of user interface design. The prototyping process often reveals ideas that help users of electronic systems get work done effectively and efficiently. Such prototypes also help the project team recognize flaws in system design. While I am a big fan of paper prototyping for user interface design, I’ve found a very valuable electronic tool for prototyping reports — Microsoft Excel.

Less-experienced developers sometimes overlook the output requirements of a system when designing it. While user interfaces are sexy and cool, reports are well — two-dimensional! That said, a designer who does not evaluate system output is in for a big shock — you can’t get something out of a system if it cannot be produced from what someone put into to it. Report prototyping often reveals holes in the design for both input functions and data processing functions.

Microsoft Excel is a natural tool for prototyping reports. It helps me create, organize, and refine the layout and content of a report. Columns become report columns and rows become sections for headings and report details. By creating one report design per workbook (i.e., spreadsheet “tab”), the tabs in a spreadsheet become a repository for a system’s report prototypes.

With apologies to left-handed people, I’ll describe mouse actions in the following from the perspective of the right-handed. I use the term “click” to indicate a single click on the left-hand mouse button. Similarly, “right-click” indicates a single click on the right-hand button. This explanation assumes you have access to Excel 2002 (or later) and some familiarity with this Microsoft product.

This blog post is also available in the PDF format as a TechRepublic Download and as a TechRepublic Photo Gallery.

Column headings and detail rows

As a simple example of an Excel report prototype, I’ve included snapshots of a “Sales Commission” report. (Figure A) Let’s start by creating column headings and enter a few lines of representative data.

Figure A

An example

To clean up the format of the headings, highlight the cells containing the headings, right-click, and select Format Cells from the pop-up menu. (Figure B) Select the Alignment tab, click in the “Wrap text” check-box, and click OK.

Figure B

Format headings

With the cells containing the column headings highlighted, press [Ctrl]-[B] to make the text bold. Next, widen columns B through F to improve readability. (Figure C)

Figure C

Improve readability

Now add the remaining report details. As you do so, try to represent the exceptional data that may appear in the report. In this example, we represent returned goods to Davidson Leadership Training. Commissions are 16 percent of Month-to-Date sales, so we set up a formula in the Commission Amount column that calculates those values for us. (Figure D)

Figure D

Details

Next, we’ll clean up some formatting details. Let’s right-justify the heading for each numeric field and change the format of the money figures to give them a common look. (Figure E) We’ll use the currency format with a standard accounting style for negative numbers. (Figure F)

Figure E

Right justify

Figure F

Accounting style

Let’s sort the data by Sales Person and then Customer Name. (Figure G) Highlight cells A1 through F5 and click on the Data menu item, and then Sort. Select the sorting choices shown in Figure H.

Figure G

Sort

Figure H

Sorting choices

As a final step, (Figure I) let’s add totals to the sales and commission columns using the Excel AutoSum feature in cells C6, D6, and F6 (See the highlighted AutoSum button on the toolbar).

Figure I

Totals

Notes and explanations

While your customer will appreciate what you’ve accomplished in showing the format of a needed report, you can add tremendous value to the prototype by including useful narrative. I commonly include text below the report prototype about the report’s context, limitations, and variations.

To create this area in the spreadsheet, let’s merge a few cells in row 9. (Figure J) Highlight cells A9 through D9, then right-click, choose the Format Cells item from the pop-up menu. Click the Alignment tab, click the “Wrap text” and “Merge cells” check-boxes, and click OK. (Figure K)

Figure J

Merge

Figure K

Text area

This single cell allows us to display nicely formatted narrative text without cramming it into the visual confines of cell A9. I find it helpful to include as many of these rows of merged cells as I need to describe the report.

Let’s use the Excel Format Painter to create quickly several similarly formatted rows. (Figure L) Highlight cell A9, and then click on the Format Painter button highlighted on the toolbar.

Figure L

Format Painter

Next, highlight cells A10 through D12 and click on the Format Painter button again. Each row of highlighted cells is now formatted similar to cell A9. (Figure M)

Figure M

Text cells added

Here are some representative notes that might appear in the Notes section. (Figure N)

Figure N

Notes

Prototyping more reports

I find it helpful to right-click on the “tab” at the bottom of the workbook and give the workbook a useful name, particularly if I plan to prototype additional reports. You may also use the pop-up menu available from the tab to create a copy of the workbook. This step is useful when a report variation deserves its own workbook.

Finishing touches

We should have a title for this report at the top of the prototype. Insert a row prior to row 1. Merge cells B1 through D1 to give the heading an attractive format, and type “Sales Commissions by Sales Person” in cell B1. Make the text bold. (Figure O)

Figure O

Title

If you create a number of report prototypes, consider creating a common heading for the work books containing the customer name. You can accomplish this task conveniently by highlighting all of the “tabs”, then clicking on View on the menu bar, then selecting Header and Footer and clicking the Custom Header button. Enter a heading, select a font size, and click OK.

As a final step, use Excel’s spell check feature (press F7 to invoke it). You may have noticed the typographic error in Note 4 displayed in the next-to-last snapshot. Correcting spelling errors gives your prototype a professional look when you distribute the document to the customer and development staff.

Of course, the report prototypes you’ll develop will be more sophisticated than this simple example. For that reason, be sure to check that each prototype prints properly on paper. When you are ready to print a copy, use the Preview button on the Print dialog box to check for proper fit on the page. On the Preview page click on the Setup button. As a quick and easy formatting method, click on the Landscape radio button and the “Fit to” radio button.

Next steps

It is important to remember that a report prototype is another communication tool for working collaboratively with customers. Microsoft Excel is a useful tool for developing this communication method. When the prototype is complete, I can attach the Excel file to an e-mail, send it to a customer, and generally expect him or her to have the necessary software and knowledge necessary to review the prototype.

Using Google as an application platform

Using Google as an application platform


Collaboration is a hot term these days. Years ago, collaboration was known as groupware with products such as IBM Lotus Notes and Novell GroupWise leading the way. While these products are still around, collaboration is now ubiquitous. You see it in everything from e-mail to sites such as Facebook and Blogger to packaged products such as Microsoft SharePoint and Lotus Notes.

SharePoint is a great example of a packaged solution that promotes collaboration within the enterprise. It’s one of Microsoft’s fastest growing products, but it includes a hefty price tag. SharePoint was on my mind as I perused the Google Apps offering.

Google Apps and the Google App Engine assist IT departments by providing much needed IT infrastructure through a set of applications, as well as a development platform for building your own applications. Here’s a look at both products.

Google Apps

Google Apps provides a suite of online applications, which include the following:

  • Gmail provides address book and search features, along with integration with Google Talk and Calendar.
  • Google Talk is an instant messaging tool for real-time communication with contacts. File sharing and voice is included as well.
  • Google Calendar organizes schedules with easy-to-use calendars that may be shared among groups of people. In addition, you may integrate it with your current calendar platform.
  • Google Docs allows you to create documents, spreadsheets, and presentations. It supports familiar document formats such as the Microsoft Office Suite of products, so you can easily use it with existing systems. Google Docs also provides real-time collaboration with other users.
  • Start Page provides you with your own start page to customize to include the tools such as e-mail, calendar, or another Web site.
  • Google Sites provides a Web site on which users may work together to build and edit Web applications. It brings together all the power of Google. You may embed videos, straight HTML, Google Gadgets, a spreadsheet from Google Docs, and so forth; it is only limited by the user’s imagination. It also provides a central place to collaborate. The term wiki comes to mind when I work with Google Sites.

The Google Apps initiative is a powerful alternative to more established products such as SharePoint and Lotus Notes. A great selling point is that Google provides the entire behind-the-scenes infrastructure to run everything, and it stores the data (although you can choose to store data locally). Plus, everything runs within the browser window, so there is need to install anything additional on user computers.

Pricing is where Google hits another home run with a very low entry level; a small business can get up and running with Google Apps in no time and at no cost. The Standard Edition offers all of the previously discussed applications for all of your users. The Premier Edition comes with a $50 per user, per user fee. It provides everything in the Standard Edition, along with more tools for enterprise usage. This includes APIs for integrating with existing systems, policy management, more storage space, and customer support. In addition, an Education Edition is available for students.

My initial feeling is that Google Apps is a great offering, especially for small businesses without the capital to build such an infrastructure. Also, the push towards a mobile, disconnected workforce lends itself well to such an offering. I recommend checking out Google Apps: The Missing Manual by Nancy Conner, which offers in-depth information on every facet of the product.

At this point, Google Apps covers pretty much everything a group or company would need except for custom applications, and Google has an answer for that too.

Google App Engine

If the Google Apps paradigm is attractive, but it does not offer the applications you need, you can use the Google App Engine to build and deploy a custom application via Google-provided infrastructure. The Google App Engine gives developers access to Google’s platform. It boasts the following features:

  • The Google App Engine SDK for building applications locally and then deploying to the Google App Engine platform.
  • A scalable server infrastructure.
  • Support for multiple languages, although Python is the only language supported at this time.
  • A robust data store via Bigtable, which is a distributed storage system that Google uses for dealing with its vast amount of data. It is designed to scale to a very large size, so it can easily accommodate your data.
  • A Web command console that allows you to manage your application.

The Google App Engine includes several APIs for leveraging Google functionality. This initially includes APIs for working with user accounts; Mail API for working with mail items; and other APIs for working with the data store and so forth. The Google App Engine integrates with all versions of Google Apps, so custom applications for teams can be built and deployed via the Google platform.

Unfortunately, the only supported language is Python, which is not a surprise considering it’s no secret that Google uses Python quite a bit internally. While that is great for the Python community, it leaves many developers waiting for more and not wanting to learn another language. As a developer, it is intriguing to get a taste of how a very successful organization such as Google does things with features such as Bigtable and the Google file system.

Google’s next move: World domination?

Many Microsoft haters applaud Google Apps and the Google App Engine. While I find it hard to believe Google Docs will force Microsoft Office off of its high perch, it does make me wonder about another behemoth rising in the industry. Like Microsoft, the tenets of Google are reaching into every imaginable space. Is its next target the operating system? Do we want one company controlling everything? It is good to have companies battling against each other because the consumer winds up being the winner.

Are you currently using Google Apps or the Google App Engine? If not, do you plan to use either product in the future? Share your thoughts with the Web Developer community.

CodeGear: Working hard to rejuvenate its legacy

CodeGear: Working hard to rejuvenate its legacy


Imagine my surprise when I received an e-mail asking if I would be interested in talking to Michael Swindell, VP of Products at CodeGear (which used to be the Developer Tools Division of Borland). Would I? YES! Not only is Borland a company that I have respected and loved since I was 14 or 15-years-old (when I had my first encounter with Turbo Pascal), but I also know that many TechRepublic members feel the same way. I ended the interview feeling more excited to try new things than I have in a long time.

Borland: The good old days

I bet the name Borland conjures up fond memories for nearly every programmer who has more than 10 years of experience. I cannot recall ever hearing or reading a bad word about the company.

Borland’s inexpensive Turbo line of products was better and less expensive than the competition and introduced thousands of people to programming. Delphi 1.0, released around the same time as VB 3, was technically superior in every measurable aspect. When I was a college student, I was so impressed by Delphi that I spent $99 of my money to purchase an academic license even though I didn’t need it for any class.

For reasons that I can only guess, Borland was the development tools analogue to Novell: a great product that lost to Microsoft’s offerings despite technical superiority and a commandeering market share that eventually evaporated, followed by a period of endless searching for a new business model.

CodeGear: The development goes on

CodeGear was spun off from Borland about two years ago. Many of the original developers of Turbo C, Turbo Pascal, Turbo Assembler, and Delphi are still with the company. In June 2008, CodeGear was acquired by Embarcadero Technologies, a developer of database programming tools. Michael compared Embarcadero’s products to what would happen if Delphi was made for databases and not applications. This combination is a great fit for CodeGear’s products given that most applications have a database somewhere in them.

CodeGear is still continuing the development of its native application tools, which include Delphi and C++ Builder. The company is also working hard to improve its relationships with databases (the Embarcadero acquisition helps). Michael’s exact words were “re-energizing our focus on native tools.”

Many of CodeGear’s customers are shops that originally went to managed code environments due to the quality of the tools and frameworks but need more performance or low-level access than managed code can provide. These customers are finding that CodeGear’s offerings have the comprehensive, tested libraries combined with the speed of native apps.

CodeGear’s .NET products are expanding in new directions, which include RIA development and targeting other platforms (through systems such as Mono). One big push is to get all of its products 100% supportive of Unicode, which will give the company a huge advantage in capturing mindshare around the world and for developers writing applications for sale around the world (more than 50% of CodeGear’s business is outside of the United States).

CodeGear has released inexpensive Turbo editions of some of its products; these editions focus on the language and not the framework. CodeGear is also building a community of developers that can provide the same level of quality content that MSDN subscribers have enjoyed for years; this is an important step towards expanding the company’s market share. CodeGear’s next generation of native application development tools (Delphi and C++ Builder) are Tiburon and Commodore. Tiburon is focused on global development and adding new language features, while Commodore is aimed at fully leveraging 64-bit platforms and multicore processors (this parallels Microsoft’s .NET strategy).

Wednesday, July 2, 2008

Loading a new storage driver during the Windows Server 2008 install

Seasoned Windows server administrators know to press [F6] to load a mass storage driver during the initial boot of the installation when booting from the install media. We are also quite familiar with forgetting to press [F6] and then getting a chance to do it again because setup could not find a storage controller if the device was not on the native driver list.
Windows Server 2008 introduces a new way that drivers are passed to the installation program during the installation process. The good news is that you don’t have to press [F6]; the bad news is that it is a completely different process. The textsetup.oem files are gone (these files have historically defined the storage driver that Windows setup would use during the installation process), and you now effectively use a wizard when the time comes to determine where Windows will be installed.
I had a chance to install Windows Server 2008 on a few test servers that were quite old but met the minimum hardware requirements. In this particular instance, the Dell PERC 3 RAID controller is not on the native hardware inventory for Windows Server 2008. Fortunately, Dell provides the driver for download from its support site. Once I downloaded the driver and made it available to the installation program, the driver picked up and continued with no issue.

The new anatomy of the driver file to be processed relies on the .inf and .sys files, and any other files that are required by the driver (such as a .dll or .cat file). This simpler process saves you from having to press the silly [F6] key.
Issues may arise if you try to install Windows Server 2008 on an older server with a storage controller that is not on the native driver list and that has not had the Windows Server 2008 driver provided by the OEM. Most of the larger server brands will be current on this to a certain extent, but even for test systems, you should check driver inventories before embarking in any development effort for Windows Server 2008 migrations.

Thursday, June 26, 2008

Manage the most frequently used programs list on your XP Start Menu


One of the many features of Windows XP’s Start Menu is the most frequently used programs list. When it comes to configuring this feature, Windows XP only provides you with two controls: the ability to completely clear the list, and the ability to specify the maximum number of programs that can appear on this list at any one time. However, there is one other thing that would be nice to be able to control and that is preventing certain applications from appearing on that list.

For example, you probably don’t need to have often-used but inconsequential applications such as Calculator or Notepad showing up in that space. You probably would rather not have games that you occasionally play show up in that space, either.

Fortunately, you can prevent an application from appearing in the Start Menu’s most frequently used programs list by adding a special key to the registry. Follow these steps:

  1. Launch the Registry Editor (Regedit.exe).
  2. Go to HKEY_CLASSES_ROOT\Applications.
  3. Right-click the Applications key and select New | Key.
  4. Name the key the same as the application’s executable file.
  5. Right-click your new key and select New | String Value.
  6. Name the string value NoStartPage.
  7. Close the Registry Editor.

You’ll need to reboot, or at least log off and then back on again, in order for this change to become effective.