Friday, March 30, 2007

22 Tips For More Productive MS Outlook 2003 Client

Some tips to help you get beyond basic MS Outlook 2003 usage. Most depend on a MS Exchange 2003 back end, and some require that you be connected to the network locally. I have tons of such tips, but these 22 are my most commonly used.

#1: Increase size of reading area:

Did you have to sacrifice your screen size for the sake of mobility? Quickly toggle the Outlook Navigation Pane on/off to increase the area of your Outlook Reading Pane by using the ALT+F1 (while holding the ALT key, press F1) key combination.

#2: Arrange Mail By Conversation:
Have you ever responded to an email only to discover later that someone else had already replied to it? Did you know Outlook 2003 has the ability to 'arrange by conversation' so emails of the same thread are outlined by who replied to whom?
a. Select View->Arrange By Conversation.

If you have your Inbox in multi-line layout with a preview pane, it is more practical to select one email that you are interested in:
Right-click the Arrange By Column heading and select Conversation. You will see the conversation view with the thread of interest.

When your view is arranged by conversation, please note the following:
1. The conversation remains collapsed until you click the arrow next to the conversation heading.
2. Messages without arrows are single item emails.
3. Messages are indented to show you who replied to whom and when they replied; this helps you keep track of the conversation or e-mail message thread.

#3: Automatic Lookup of Word Definitions:
Have you ever received an email and wished you had better English vocabulary? Outlook offers automatic definition lookup while you are reading an email.
a. When you encounter a difficult word while reading your email, hold down the ALT key and click on the word. This ALT & Click combination automatically invokes a research pane with the definition of the word if you have an internet connection.
b. You should see a Research pane opened to the right of your Outlook window. Once the Research Pane is opened, you can continue clicking on other words in the email without using the ALT key. Caveat: This additional feature, Auto Lookup (not holding down the ALT key), will only work when reading emails.

#4: Remove Attachments from Emails:
There are many ways to send an attachment in Outlook, but did you know that you can remove attachment from emails to save space? If you have saved an attachment, you can "remove" it from the email message. This will help preserve your email quota.
a. Open the message. Note: This does not work when viewing messages in the Reading Pane. You must open messages completely to remove their attachments.
b. Right click the attachment icon and select Remove.
c. When you close the email, in the Save Changes confirmation dialog box that appears, click Yes.

#5: Create Team Calendars:
Did you know that you can create a calendar for your team to keep track of events, vacation schedule, or project deadlines? Learn how create a calendar for your team using public folders.
a. From Outlook, select Go -> Folder List
b. In the folder list pane, expand Public Folders then All Public Folders by selecting the '+' symbol next to the folder. If your window view is small, you may need to scroll to the bottom.
c. Right Click on the Shared Calendar Folder and Select New Folder. To keep the folder structure neat, create a subfolder by giving it your team name. Under Folder Contains: Choose Mail and Post Items. Click OK. This will create a subfolder.
d. Right Click on the New Folder and select New Folder again. This time, type in the name of your calendar and under Folder Contains, Choose Calendar Items. Click OK.
e. You should now see your newly created calendar under Shared Calendar | [your folder name] | [Your Calendar Name].
f. Right Click on your Calendar and Click Add to Favorites. Click ADD from dialog box. This will add to your Calendar View in your Other Calendar Section. Check the box in the Calendar Pane to view it.
g. Right Click on your Calendar and Click Send Link to This Folder. An email with an attached link to this calendar will open for you to address to you team members. You can also tell your team to open the folder list view and browse to the folder and have them also Add to Favorites.
h. Caveat: By default, any user can add items to a calendar, and edit and delete their own entries on a calendar. The owner of the calendar can change the permissions to set up a desired combination of viewing and editing. To do so, Right Click on you Calendar and select Sharing.

#6: Email Recipient Availability:
When you compose or read an email, did you know that you can quickly retrieve the recipient's availability and phone number by right clicking on their name? This can be useful if you need to get a hold of a person after you read/send them email.
a. From any emails that you have, simply right click on any employee name in the From:, To:, or CC: fields.
b. You will see their immediate availability based upon calendar entry in the second line such as "Free until 2:30 PM". If you double click on this line, it will bring up a meeting scheduling window so you can see that person free/busy information for future dates. You can easily schedule a meeting with the person by going to appointment tab.
c. If you need to call them, the recipient's phone number is the fourth entry. You can also find additional phone number if it is listed by selecting the arrow to the right.

#7: Creating a Signature:
Signatures are automatically appended to your emails, including your contact information and other business communication.
a. From the main Microsoft Outlook window, on the Tools -> Options -> Mail Format tab.
b. Under Signature, click Signatures, and then click New.
c. In the Enter a name for your new signature box, enter a name. You need to enter a name because you can create multiple signatures.
d. Under Choose how to create your signature, leave it to the default of "start with a blank signature".
e. Click Next.
f. In the Signature text box, type the text you want to include in the signature. You can also paste text to this box from another document.
g. To change the paragraph or font format, select the text, click Font or Paragraph, and then select the options you want. These options are not available if you use plain text as your message format.
h. Click Finished when you are done editing the new signature. Click OK again at the preview screen.
i. You will now need to make sure that you select when your signature will appear. Make sure that you select your signature name for "Signature for new messages" and/or "Signatures for replies and forwards".

#8: Change Color of Emails Addressed Only To You:
Most of the time, emails that you receive are informational as you are addressed in the Cc: or Bcc: field. However, the ones that usually require you to take action are addressed only to you. Did you know you can have Outlook show these emails in a different color?
a. From Outlook, select Tools -> Organize.
b. From the Ways to Organize Your Inbox window select the second option "Using Colors".
c. Select the color that you want from the drop down box of the "Show messages sent only to me in". Click the Turn On button. You can close this window by clicking the 'X' next to Automatic Formatting... in the upper right.
Note: This will only affect emails in your inbox and you are the “only” person in the To: field.

#9: Sending Updates, Tables, Graphs as Emails from Excel:
Do you know that you can send your Excel status update, data table, or graph directly from Excel? With Excel’s Send To option, you can send a worksheet or a selection that is automatically converted to an email format for you to send.
a. Open the Excel workbook you want to send.
b. Click on the File -> Send To -> Mail Recipient.
c. If prompted whether to send the entire workbook or just the current sheet, click Send the current sheet as the message body.
d. In the To and Cc boxes, enter recipient names, separated by semicolons. Type a subject in the Subject box.
e. If you are sending Microsoft Excel data as a message, you can include explanatory text. Type your text in the Introduction box.
f. If you don’t select a region in your spreadsheet, you will have a Send this Sheet. It will send you entire worksheet as a message of your email. If you do select an area, this button will change to Send this Selection. Clicking this will only send your desired selection.
g. Your recipient will receive an email formatted version of your selection!

#10: Using "Resend This Message" For Email Templates:
Did you know that there is an alternative to creating an email template in Outlook? Use the "Resend This Message" in lieu of an Outlook email template.
a. Simply create an email you need to send with the desired subject and message (you can address it to yourself as a test).
b. If you need to send it again, select the email from your Sent Item folder. You must double-click the email to open it. (The following will not work if you are simply selecting the email and seeing it in the preview pane)
c. Select Actions -> Resend This Email. It will open the email as if you never sent it, preserving all of the information including who it was originally sent to so you don’t have to readdress the email.
d. Make the changes you need to the email, i.e. subject, message, To, Cc, Bcc. Click send.
Note: You can do this with any message that you have already sent or received so your email template may already be done. If you use an email that you have received, you must remove original sender name from the From: field.

#11: Use Organizational Tab to send Email to Manager's Group:
Did you know that you can use the Organization Tab to send email or calendar invitation to a group of people under a manager? This time saving tip has advantages over using personal distribution lists that can become outdated.
a. When you compose an email or invite users to a meeting, click on the To: icon.
b. You will see a Select Names (for email) or Select Attendees and Resources (for Calendar) window. Search for the name of the manager of the team that you want to send email to. Right Click on the name of the manager and select Properties (see figure 2).
c. You will see the properties of the manager that you have selected. Select the Organization Tab. Select the direct report names you want by using either Shift-Click (all) or Ctrl-Click (selected). Select one of the button options of To:, Cc:, Bcc: (see figure 3) if this is an email or Required, Optional, Resources if this is a calendar invitation.
d. You will be prompted "Do you want to add the selected users?". Click the Yes button. This auto-fill the selected names in the Select Names/Attendees and Resources window. You can repeat the steps above again if you want to add other departments. When you are ready to proceed, click OK in this window to go back and finish your email or calendar invitation.

#12: Copy Calendar Entry to Another Date:
Did you know you can copy a calendar entry to another date? Instead of creating a recurring meeting which needs a definite pattern, use the copy/paste calendar function to set up multiple calendar entries with more flexibility.
a. There are two ways to do this. The first way is while holding down the “CTRL” key, drag the calendar entry to another date. You can drag it onto any day of the calendar navigational pane (see Figure 1). It will copy the entry to the same time slot of that day. The second way is to right click on the entry and drag it to another day. When you release, you will be given the option of move, copy or cancel. Select copy.
Note: You must open the copied entry and click Send to notify the participants about the meeting.
b. If you need to copy a calendar entry to multiple dates. Select the entry and hit the ‘ESC’ key to get out of the editing mode. You can either press “CTRL-C” combination or select EditàCopy. Now you can simply paste this entry as many times as you need to other dates (note ways to paste: CTRL-V or select Edità Paste). If you use this method, you must select the time slot of the day to paste to. Remember, you will have to open the entry and click the Send so that your invitee will receive the invitation.

#13: Create a Distribution List:
If you regularly send e-mail messages to a group of people, you can create a distribution list to simplify addressing messages and meeting requests. After a distribution list is created, you can send a message or meeting request to multiple recipients at the same time.
a. On the main Outlook toolbar, click Fileà Newà Distribution List. You can also use the CTRL-SHIFT-L key combination to bring up the distribution list window.
b. From the new distribution list window (see figure 1), in the Name box, type the name of your new distribution list (make sure it is a unique name)
c. Click the Select Members button to add members from any of your Address Book entries or Contacts
d. Click “Save And Close” button to save the new distribution list.
e. You can now use your distribution list by typing in the name you gave it in an email or calendar invitation.

How to share your distribution list with people in your team
a. Within Outlook Contacts, select the distribution list (or contact card) you want to send
b. Go to the Actions menu (fully expand it) and select “Forward” (see figure 1)
c. Enter the email address information for the person or group you are sending the list to
d. click send

How to save an attached distribution list to your contacts
a. If you receive an attached Distribution List in an email, double click on the attachment to open up the distribution list.
b. From the Distribution List window, Select File -> Copy to Folder
c. Select Contacts and hit OK (see figure 2).

#14: Delete Fragmented Calendar Entries:
If you need to delete many calendar entries that are not tied together in a series, try using the Calendar view by Category to make deleting similar entries easier.
a. While you are in Outlook Calendar select View -> Arrange By -> Current View -> By Category.
b. You will have you calendar entries listed in rows with different columns you can sort by: Subject, Location, Start, End..
c. You can highlight a series of calendar entries and delete them. For instance, if you accidentally installed company holidays twice, you can remove them by selecting them (Selecting continuous rows: select the first entry and while holding down the Shift Key, select the last entry) and hitting delete.
d. Return to the default Calendar view by selecting View -> Arrange By -> Current View -> Day/week/Month View with AutoPreview
Important Caveat: If the calendar entries are a series of recurring meeting, you can open the series by clicking on an entry and select Open the Series without going to Category view. Click on the ‘X’ to delete the series. Be careful when you delete calendar entries that you have created. You must make sure that you send a cancellation or every invitee will have to delete the recurring entries manually themselves.

#15: Recover Deleted Items:
Did you know that after you emptied the Deleted Items folder, you may be able to get your emails back by using Outlook’s Recover Deleted Items tool? Do you ever open Junk E-mail folder to see what is in there? You’d be surprised to find that there may be some emails that you wanted to receive.
a. You have approximately 2 weeks to retrieve emails that have been emptied out of the Deleted Item folders. After you select your Deleted Items folder go to Tools -> Recover Deleted Items.
b. From the Recover Deleted Items window, select the emails that you need select the recover selected item icon. *Note – emails are not recoverable if they were deleted from a local email file (located in PST) or if they have been hard deleted (Shift-Delete).
c. There are rules set up to determine if emails are considered Junk e-mail. However, there are times when you will find emails from senders that you wanted to read. Therefore, make a practice of going through your Junk E-mail folder.

#16: Add Company Holidays To Your Calendar:
There is a simple way to add all the company holidays onto your calendar.
a. Double Click "*.HOL" file available from HR or schedule master.
b. Click Open to launch the file
c. In the Add Holidays to Calendar window, use the scroll bar to find and select country of your residence, and then click OK.
Important: If you have already installed a specific holiday location, you will be prompted with a warning screen that your selection has been installed already. Make sure you select “NO” so that you don’t have double holiday entries.

#17: Delete Email Entries from AutoComplete Cache:
If you deal with people who have had their email addresses changed, an example would be the separation of the Gresham site, your AutoComplete cache will show their old email address as you start to type their email ID in Outlook Mail. Did you know that you can simply delete these entries or you can delete your entire AutoComplete cache and start over?
a. When you begin to enter an email address, the AutoComplete list will show you a match of what is in its cache from your historical usage. When this list shows up, select the unwanted name by using the UP ARROW or DOWN ARROW key and then press DELETE. The entry will be deleted from the list.
b. If you have too many stale entries, you may want to delete all of your AutoComplete cache to have a fresh start. To clear your AutoComplete cache, open the C:\Documents and Settings\ user name \Application Data\Microsoft\Outlook folder, and then delete the profile_name.nk2 file. However, your folders may be hidden so it may be easier to do a search by going to Start Menu -> Search -> type *.NK2 in the “Search for files or folders named” field -> Click Search Now. Select the file with the NK2 extension in the results and delete it (If you have more than one from old Outlook profiles, you can delete all of them). Outlook recreates this file as you type new addresses.

#18: Use the Mailbox Cleanup Tool:
Do you know how much storage space you are using on the Exchange server given company email warning limits? Use Outlook Mailbox Cleanup tool to understand your server usage and archive mail to your local desktop.
a. From Outlook 2003, select Tools -> Mailbox Cleanup
b. Click on View Mailbox Size to see your server usage. You will see two tabs, the “Local Data” tab contains size information about the local cache copy of what is on the server (for when you work offline), and second, the “Server Data” tab contains size information of what is actually stored on the server (available only if you are connected online). The “Total size (including subfolders)” is your total storage usage. The storage usage on the 2 tabs should be similar if you are working mainly online because you should have a current sync to the server. You are limited in most cases to 512MB of server storage before you receive email warnings.
c. If you are getting close to the storage limit on the server, you can reduce the online storage by selecting AutoArchive to create a local PST (an outlook file that is not synced with the Exchange Server and displayed in the folder list) that will usually reside on your local desktop. When you select Auto Archive, Outlook will immediately move emails from your online mailbox to the local PST based on the following default aging criteria:
- Inbox, Calendar, Tasks, Notes, Journal, Drafts: 6 months
- Sent Items, Deleted Items: 2 months
- Outbox: 3 months
d. To change the aging criteria for item #1, from Outlook 2003, select Tools -> Options -> Others -> AutoArchive.

#19: Disable Request Responses:
If you’re sending a meeting request to a large group and don’t need or want to get user’s responses, disable request responses.
a. When you are setting up a new meeting and after you select “Invite Attendees”, click on Actions
b. Uncheck Request Responses (see figure 1) – Note: You will not see this option until after you select “Invite Attendees” in the step above.
c. Specify your meeting information, and then click Send the meeting request.

#20: Set Your Vacation Message:
With summer time approaching, it is easy to set your Out of Office message in Outlook before you leave for vacation. If you forget, it is not too late because you can set your vacation message using Online Web Access (OWA) from any computer with an internet connection.
a. To set your vacation message from Outlook 2003, select Tools | Out of Office Assistance. Check “I am currently Out of the Office” and type the message that you would like to send if you receive email while you are out. Click OK. You don’t need to have Outlook 2003 running for this to work and you will be prompted to turn the message off when you access Outlook again.

#21: Clear Desktop and Stop Outlook Desktop Alerts:
When you need to share your desktop (i.e. Netmeeting, Webex), do you worry about other people seeing documents on your desktop or Outlook new email desktop alerts during your presentations. You can temporarily clear your desktop and stop Outlook new email desktop alerts.
a. Start Netmeeting (or Webex) and the applications you plan to share.
b. Right Click an empty area on the desktop, Select Arrange Icons By -> Uncheck Show Desktop Icons. This will remove all the icons off of your desktop.
c. Right click on this Outlook Icon in the notification area -> Uncheck Show New Mail Desktop Alert

#22: Use Your Scroll Mouse to Zoom Text:
Do you have a hard time reading text on your computer because the font is either too small or big? If you have a scroll wheel mouse, you can instantly zoom in and out of your document.
a. If you hold down the Ctrl Key and move your scroll wheel on your mouse, the fonts will instantly and quickly resize to get bigger or smaller.
Caveat - This zooming tip will work in Word, Excel, and PowerPoint. However, in IE and Outlook Email, your ability to dynamically change font size will depend on how the web page or email has been formatted or sent by the sender. (I.e. HTML, Rich Text, Plain Text). It should work on this email because it is sent Rich Text Formatted.

Wednesday, March 28, 2007

Rough Waters With NetBeans/C++ IDE

Not a good rapport when your new favorite IDE begins to misbehave! I'm enchanted about NetBeans 5.5 and its C/C++ Development Pack that I'm willing to stick it out until I'm sure there's no solution for this problem. And the problem is this error you get when you try to build your Windows programs:

undefined reference to `_GetStockObject@4'
undefined reference to `_PlaySoundA@12'

Actually, the errors are not the IDE or development pack's problems, per se. The combo depends on Cygwin utilities - gcc, g++, make, and gdb - to compile, debug, and build programs. The code compiles just fine; it's the linker that doesn't seem to find header or implementation files required for the methods. For example, the GetStockObject() function is defined in wingdi.h, which is in the same location as other header files the program requires - but for some reason it's not seen. I don't know where the linker is looking for the files/libraries it needs.
Enter the world of DLLs - isn't there a GDI32.dll already on the system that has the same functions defined? I'd think linking would find this library and use it. Apparently it doesn't.
On a flip side, I took the exact code and threw it in Dev-C++, and it did a little better: it didn't produce the first error but it too couldn't find the PlaySoundA() function. Commenting that line out allows the program to run. Is it's library and includes more put together?
But this highlights a problem programmers have to deal with everyday - if you want to program for Windows, you better use Microsoft's tools. Sure enough, when I slap the code into MS Visual C++ 6.0, it builds without complaint. Sinister ... but I won't blame them for the issue at large.
I'm sure there's a solution out there. Google isn't helping much - lots of such problems reported but no solution at all. There's still hope though - I have another [unpolluted] installation of this development environment that I'll try. Hopefully this sheds a little light on this common issue.
I'm really hoping the NetBeans team would just 'nativize' all tools required to run the C/C++ development pack in the NetBeans IDE. At this point, I don't know exactly who to blame. Perhaps there's forums or FAQs I just haven't come across, or documentation I should have read ...

Tuesday, March 27, 2007

Why Guys Don't Make A Move

Every guy that has girl friends has probably heard them qualm about why some guy isn't making a move on them - to make things 'official' and move the relationship beyond mere friendship. As the nice friend you are, you try to explain their situation without hurting them even further.
I've been that guy that never did anything, and here are some reasons you might have heard (written to the girls) - in no particular order of importance:
  1. When things are going well (as friends), why change anything? Some guys are afraid they'll lose what they have now in case girls don't embrace their move.
  2. When a guy is getting all the benefits, there's no hurry to make it official. Remember the adage "why buy the cow when you get free milk"? Exactly ... Guys will seek out ways to get what they want for the least amount of work. Serious things like commitment can wait if there's nothing else to work for about girls.
  3. Some guys just don't know girls are interested in moving things along. That'd be the naive category - guys that perhaps just live for the moment and are unassuming. This kind of relationship is probably the happiest for the guy - like having a spotless mind - no expectations.
  4. Sadly, some guys are just not attracted to their girls or even interested in developing a real relationship. For some reason, they continue to lead the girls on. Whoever said looks don't matter lied. It's the first thing we get before we get to know everything else.
  5. Some guys have an inferiority complex - they classify girls on various standards and say things like "oh, i can't get with that ... she's beyond me". Maybe she has great looks or does something better than you, but guys bulk at things like this. Indeed sad.
  6. My friend Nneka suggested "defeatism" - when you give up before you even try. Now that I think of it, I know guys that haven't even said "hi" to the girls they are interested in - and gave up trying long ago.
  7. Some guys know they are not for you - for various reasons, the guy already knows you are not what he's looking for. You are otherwise great in everything else ....
  8. Maybe that relationship should have ended long, long ago?
  9. Some guys will use girl friends to get to someone or something else. Maybe they are really interested in your friend or how you make them look? I hate when politics meets love ... things get dirty.
  10. The baggage you carry can be cause for haste. Sure, everyone has some baggage, but when it preoccupies your life that it suffocates everything else that could be, I don't know many guys that'll be all for that. Humanly speaking, we'll want to run for safe harbors.
  11. Commitment phobia: I know I ended an engagement because of this. I don't even remember all the reasons I had, but I found myself running fast ... and it happens a lot more than most people will admit. It's a real issue - maybe bigger than all the others above.
I'm sure there's a million more reasons, but these simple ones offer a little [shallow] insight into this subject. I find that being straight-up on what your intent is works most of time. There's no guessing and speculation. So what are girls to do? No idea - but avoid trying too hard or looking all desperate for things to happen. I can only gamble on the observations above:
#1 [spoilers]: Should be known that friendships can survive even when actual dating doesn't work. For most girls, friendship -> dating? and once you've crossed that line, it's dating or nothing. I think that philosophy is lame.
#2 [benefits]: Cut back on all the benefits. If you give all of you up on the first date, what else is there to pursue? Believe me, pursuing is more fun than actually having ...
#3 [naivety]: Let it be known what you want. Granted there's few guys that'd totally have no clue, but whatever happened to girls making the move? Fight for your rights. I think that's hot.
#4 [attraction]: I don't know about this - touchy issues of beauty guys should never discuss. But in the words of Greg Lowry, "if a house needs painting, paint it! That's why home improvement is big business ...".
#5 [inferiority complex]: Nothing a girl can do about a guy's inferiority complex. You ought to save this guy's time and move on, no matter what else they do well. This feeds into his ego and his very identity at some levels.
#6 [defeatism]: Nothing a girl can do about this either - because they don't know. Whatever happened to guys that take risks? Guys gotta fess up.
#7 [unequally matched]: Girls will usually get hints of this soon enough. But some ignore such flags and wait for something better. Guys aren't that good at hiding important facts like this.
#8 [non-existent]: Girls can't be clueless about this - mostly they know it should have ended, but I've seen some stick around for whatever reason. Most abusive relationships have this quality.
#9 [users] : You'll know when we're not into you. Just pay attention - these things are not hard to notice - even your friends will inform you to that effect.
#10 [baggage]: No guy wants to date you, your ex, deal with your persistent habits from years ago, or deal with threads (ropes) from ages ago that you don't want to cut loose. Nor does anyone want to date a girl that lives in the sweet old times of yester-year. Every guy deserves a clean slate ...
#11 [phobia]: This is probably the only thing you can help you guy about, if you notice it before he runs. It's a psychological problem that can be 'cured', if you ask me.

I subscribe to the Christian train of thought on matters like this: be open about your intentions, guard your heart, take a risk, have healthy boundaries, and wait for God to do His work. It makes life a lot easier and straight-forward. Who doesn't want that? All the hullabaloo above demonstrates how a simple idea can quickly get messy. But where does your strength lie?

Monday, March 26, 2007

NetBeans All-In-One IDE has been steadily improving their IDE - originally focused on Java, but now with the ability to create C/C++ programs. As most programmers know, whenever you can find single tool to do all your work in, you sell into it. With the C/C++ Development Pack installed, you can develop both Java and C/C++ application from the same IDE. I imagine it's even simpler now to create JNI-based applications in this IDE, in addition to offering full compatibility with JDK 6.0 and the Java EE 5 platform. Even better, it comes bundled with a Java application server (Sun Java System Application Server 9u1), making the effort to find the tools you need to develop solutions less. I've actually started developing my web and enterprise solutions in this IDE because it's easier and can talk EJB 3.0 and JavaEE5 all at once. Now if the IDE could speak AJAX ...

Setting up NetBeans 5.5 to start developing C/C++ projects is a simple process:
(1) Download the C/C++ Development Pack and install it.
(2) Install GNU compilers, debuggers, and make utilities. All these are conveniently accessible through a Cygwin setup process. The only other task is to set your environment variables after installing the utilities. At a minimum, select gcc, g++, gdb, and make - dependencies will automatically be selected by the installer.

If you have Borland C++ Builder installed, you might want to ensure that Cygwin directory paths come before those of Borland tools in environment variables. Otherwise when you attempt to build C/C++ applications in NetBeans, you will get make errors like:
Error Makefile nn: Colon expected".
Simply, Borland's implementation of MAKE is not compatible with the GNU version.

When you create a new C/C++ project in NetBeans5.5, it may complain that it couldn't find the compilers. The IDE makers could do a better job of reading environment variables without having to shut down the IDE. Meanwhile, simply close and check that the tools are globally visible from the command prompt (DOS):
cygcheck -c cygwin
> gcc --version
> g++ --version
> make -h
> gdb --version
If each of these command return a good version, restart NetBeans again at it shouldn't have trouble finding your tools. The only pain so far in using the IDE for C/C++ development has been the need to always set the includes directory every time (with every new project) - and having to restart the IDE for changes to take effect. I think the IDE could improve in this area as well.

Perhaps some day the C/C++ development pack will already include the minimal Cygwin utilities required and offer an option to install them when the pack is installed. I mean, they are required for the pack to work, so why not! Otherwise, it's an exciting tool and would recommend Java and C/C++ developers to consider it - yes, even Eclipse diehards (which I also still use). We love options.

Monday, March 19, 2007

Volleyball Sundays

Sunday evenings at 6:30pm, some of us are meeting to play volleyball. We meet at Woodmen Valley Chapel's Rockrimmon Community Center gym, and the games are free with a goal to form league-quality teams. You can sign up anytime to join any of the league teams forming for the Spring-Summer season.
For now (and the next three weeks), teams are formed on the spot, depending on who's available. Games are rally, and no matter who wins, each teams plays two consecutive games. This way, everyone has an opportunity to play.
I've attended only twice, and all skill levels are represented here - though most are competitively good players. If you are looking for a good game Sunday evening, this is a place for you. Everyone is friendly and not judgemental.
The games run from 6:30pm - 9:30pm. Invite friends - everyone is welcome. Unlike when I used to host volleyball, there's no music or slurpees - bring your own if you need that inspiration.
[Image courtesy of stock.xchng].

Thursday, March 15, 2007

Soccer Wednesdays

There's soccer every Wednesday night at 8:30pm for those that like kicking things around. It's indoor soccer (until May 16 when it'll be moved outside) and is being held at First Presbyterian Church's gym (3rd floor main building) downtown Colorado Springs.
The cost is $2/person whenever you show up to play, and teams are made based on whoever is available. Each team plays two consecutive matches, each match lasting 8 minutes. That way, with 4-6 teams usually available, everyone gets to play sooner.
Some teams have been playing together for a while, so don't get offended if you can't join their team. Most skill levels are welcome - though there are good ball handlers amongst people that show up. The players are a pretty diverse group - among them Europeans, Asians, Latin Americans, and Africans - plus Americans of course. Bottomline is that everyone seems to have a passion for the game.
Last night was my first night back to soccer after a long while. I got my ass whooped - so tired after the first 8-minute match I felt like my chest was burning and I couldn't breathe. You quickly adjust though. I played 5 matches and was too tired to continue, evidence that I'm too out out shape both physically and skillwise. The games here can be competitive, but no one keeps score. When your 8 minutes are over, you get out and another team hits the floor.
In the fall, there are plans to play in local leagues and this is a good place to brush up on those skills. There are several places around town offering indoor soccer and some leagues already setting up for outdoor soccer (at the USAFA for example). I'm avoiding those because you have to pay some membership fee and stick with your team only. For a start on the game, First-Pres is the place to go.

Tuesday, March 13, 2007

Losing Sleep Over A Compiler

If you are an overachiever like I think I am, you probably lose sleep over petty things; except that this isn't that simple. I am charged with maintaining and improving an application at work that was developed using Borland's C++Builder 6 a few years ago. I've sought to move the code to more modern compilers such as Microsoft Visual C++ 6.0 or Bloodshed DevC++ without success because Borland's compiler institutes a lot of dependencies on proprietary libraries. That particular IDE is no longer supported by Borland Corporation as of Dec 2006. Even DLLs developed in C++Builder are incompatible with Microsoft's or Bloodshed's IDE, defeating the whole idea of dynamic libraries in development. You can deploy DLLs built in either to an OS and they'll work fine - just if you wish to debug the DLLs, you better find the original compiler/debugger for that job.
Further demonstrating why the compiler you choose matters to the bit, there's something curious happening when I build versions of the application. At some point, the application is supposed to attempt to corrupt data on a hard drive (we test some features by creating error conditions and ensuring our chips handle them correctly - exception testing). The older version performs the task as expected, but the newer one doesn't. The problem is that the same exact command that accomplishes the task in the old version is used in the new one, but the OS responds differently. Not only that, it doesn't report any errors - the response message is the same whether it did the task or not! I spent a whole day analyzing memory dumps and data structures and I find no differences between these two applications (code changes are in an unrelated module). Walk the code in a debugger all you want, there's no difference as far as I can see.
This leaves one arena to blame - the compiler. Could there be build options that are causing this difference in behavior? I don't see any! Compiler options? Data alignment issues? If I had Windows source code, I could figure it out. My application calls the same win32 API function DeviceIoControl() - which is a pain to work with in its own right - and get the same status and error messages whether it did the task or not! There is some sense data I haven't looked at, but it shouldn't matter because it is the same in both cases. I don't know what the hell is going on, short of analyzing the assembly produced at compile time. Who knew that my assembly language class at school would come in handy like this (well, except this is an Intel assembly as opposed to what we use at school - MIPS). But it's made it vivid in my mind that in the end, the compiler choice does matter.
My tool set includes Microsoft Visual C++ 6.0, Microsoft Visual Studio C++ 2005 Express, Borland C++Builder 6, and Bloodshed DevC++ for C/C++ development. Choose your compilers wisely - it could make or break you. I find Microsoft's Visual C++ 6.0 IDE most flexible for big projects, unpolluted by the .Net stuff they've bundled in succeeding IDEs in Visual Studio.