Wednesday, April 30, 2008

Free Trading: Zecco vs. Bank Of America vs. Wells Fargo - A Comparison

I am trying to streamline my investments and one of the items on my agenda is to consolidate my banking accounts. Here's what I want from my new institute ...

  1. Free/cheap basket or bucket trading
  2. Umbrella institute for checking/saving/trading accounts
  3. Support stocks/options/mutual funds/IRAs

I currently have account with Fidelity that comes close to what I need, but not close enough. So, here is an up-to-date (as of 4/30/2008) comparative chart on the institutes that meet one or more of these criteria...

  Zecco Trading Bank of America Wells Fargo
Free Trades Limit # 10/day, 40/month 30/month 100/year
Free Trades Minimum to Qualify $ 2500 25000 (uninvested) 25000 (combined)
Stocks Penny Stocks $ 0 0 Greater of $24.95 or 2.5% of principal
Stocks Max Margin Rate (on 4/30/2008) % 7.2 7.5 7.75
Stocks Broker Assisted $ 19.99 42.5 25
Options Trade $ (contract $) 4.50 (0.50) 19.95 (1.50) 9.95 (1.00)
Options Broker Assisted $ (contract $) 19.99 (0.75) 39.95 (1.75) 34.95 (1.00)
Mutual Fund NTF #     800
Mutual Fund No Load Internet $ 10 45 (minimum) 0
Mutual Fund No Load Broker Assisted $ 19.99 45 (minimum) 25
IRA Annual Fees $ 30 0 0
IRA Termination Fee $ 30 75 50
Outgoing Account Transfer (ACAT) Fees $ 50 75 50
Fees Web Site Fee Schedule Fee Schedule Fee Schedule

Hope that helps.

Tuesday, April 29, 2008

Supporting admin and non-admin users in Windows XP/Vista applications

Recently at work, in one of our windows based desktop application, we needed to support both admin and non-admin users in Windows Vista and Windows XP/2000

Here are some of my takeaways:

  1. [For admin/XP] When an admin user executes an application, XP gives full admin rights to this application. With these privileges, there should be no problem reading / writing to any folder/registry.
  2. [For admin/Vista] Unlike Windows XP, Windows Vista's UAC feature executes applications with standard privileges. So even if the user is logged in as an admin, the application has read-only access to the following common locations:
    • C:\
    • C:\Program Files
    • C:\Windows
    • HKLM
    • 'All Users' profile or Application.CommonAppDataPath
  3. [For non-admin/XP/Vista] Typically application data, which is common to all users (in a multi-user Windows desktop application), should be stored under 'All Users' profile or Application.CommonAppDataPath. This works great, except that a non-admin user has read-only permissions to this folder.

Point #1 is not really an issue. This is the easiest scenario to support.

For issues #2, a number of relevant solutions have been discussed in Dave's post "UnauthorizedAccessException writing to HKLM". But in case an application must store information in say HKLM or CommonAppDataPath, you can request UAC for elevated privileges. In order to do this, create a file called <projectname>.exe.manifest under the project root folder.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="" processorArchitecture="X86" name="Clean" type="win32"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
                <requestedExecutionLevel level="requireAdministrator"/>
The following step is optional, but recommended since it adds the manifest file as an embedded resource in the final exe. Under "<project> > Properties > Build Events > Post Build Events", add the following line:

"$(DevEnvDir)..\..\SDK\v2.0\bin\mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" –outputresource:"$(TargetDir)$(TargetFileName)";#1

For issue #3, we could not find a clean solution. We needed a way to provide write permissions to a folder for both the admin and the non-admin users. In our case, the application was to be installed in a lab environment by an admin and then used by non-admin users. In this type of setup, during installation, we moved the application data folder to say C:\ or D:\ and enabled write permissions for all users. This is not the most elegant solution, but I don't know of a better one. If there is a better solution, I am very interested to learn more, please add a comment below.

Thursday, April 3, 2008

Microsoft MCTS .Net 3.5 Certification & Free Training Courses

70-562 - Microsoft .NET Framework 3.5, ASP.NET Application Development (June 2008) Training:

  1. Microsoft E-Learning - Collection 6463AE (June 2008)
  2. Book - Programming Microsoft® ASP.NET 3.5 (February 2008)
  3. Beta Exam 70-562 - See Gerry O'Brien's post on ASP.NET and ADO.NET Beta Exams (expires May 2008)
70-561 - Microsoft .NET Framework 3.5, ADO.NET Application Development Training:
  1. Microsoft E-Learning - Collection 6464AE (April 2008)
  2. Book - Microsoft .NET Framework 3.5 - ADO.NET (June 2008)
  3. Book - Programming the Microsoft ADO.NET Entity Framework (December 2008)
  4. Beta Exam 70-562 - See Gerry O'Brien's post on " (expires May 2008)
Please note that in order to get MCTS certification, you must first pass Microsoft .NET Framework 2.0—Application Development Foundation exam. If you are looking for additional .Net Framework 3.5 training, get some for free from Microsoft:
  1. Collection 6261: Developing Rich Experiences using Microsoft .NET Framework 3.5 & Visual Studio 2008
  2. Clinic 6262: Introducing Windows Workflow Foundation using .Net Framework 3.5 & Visual Studio 2008
  3. Clinic 6263: Introducing Windows Presentation Foundation using .Net Framework 3.5 & Visual Studio 2008
  4. Clinic 6264: Introducing Windows Communication Foundation using .Net Framework 3.5 & Visual Studio 2008
BTW, if you have doubts about the beta exams, here's a very informative quote from Gerry O'Brien's blog:
Passing the beta exam is equivalent to passing the live exam. Do you get certified? Only when all prerequisites are met. In other words, you must pass 70-536 and this exam to get an actual certification. This exam by itself does not award you the MCTS certification. For beta exams, you will not know if you pass or fail. The score report will indicate that you have failed but don't worry, the passing score has not been set so you haven't failed it, yet. Beta exam results are not made available until the exam is published live. We don't know the passing score until we finalize the questions after the beta. The difference between a beta and a live exam is that in the beta, you will typically take 100 or more questions whereas on the live, it can be 40 to 60 questions. Plan on a maximum of 4 hours for the beta exam.
Good Luck!