Programming

Home Next

Up Programs Active X Wizards International Project Management Your Bid Request eBay Specific

Bonus Section: Food For Thought

Primary Languages and Technologies

Visual Studio 6 Enterprise Edition
Visual Studio 5 Professional Edition
Database: ADO, DAO 3.51, DAO 3.6, ADO (MS JET)
Microsoft Office Suite 97 and 2000
Microsoft Front Page 2000 (Web Site Development)
Adobe Products
Photoshop, Acrobat Writer,  GoLive, Illustrator, Pagemaker plus various other Adobe programs
Scripting Languages: JavaScript, VBScript
Protocols: HTTP, FTP, SMTP, ESMTP
Proficient with advanced Windows API's
Active X - OCX, DLL and EXE

I do have a MAC and REAL BASIC. Something to think about down the road for MAC conversions.

Platforms

Windows 95, 98, 98SE, ME, Win2k, XP
Learning MAC, RealBasic and converting Visual Basic programs to RealBasic.

Software Development Lifecycle

Your project may or may not require all that is described below. My phase cycle can be modified to fit yours.

Client provides us with an outlined problem description, including samples of desired data entry and/or output documents, anything that will help determine initial scope of the project.
(Optional) Non Disclosure Agreements (NDA)
I evaluate the project and provide a written bid/proposal offering estimates, copyright terms and production options - Generally these are categorized, fixed bid with hour estimates and deliverable date.
Client accepts bid.
Milestone 1: 25% of total price is paid by client.
Phase I: Project requirements are discussed
Bid addendums if required are added
Phase II: General Design, Prototype delivery, client Feedback
Phase III: Detailed Design, Alpha delivery, client feedback
Phase IV: Detailed Design, Beta delivery, client feedback
Phase V: Testing and Rework
Milestone 2: 25% of total price is paid by client
Phase VI: Release Candidate
Phase VII: Deployment
Milestone 3: 50% is paid by client
Post release maintenance and optional after 90 days, on-going technical support

Project begins with the acceptance of proposal, and receipt of deposit check, credit card, C2IT or PayPal payment and/or signed purchase order.

Payment to me occurs at specific milestones as identified in the project bid or proposal.

Any detailed, including operational, high level functionality, or design specification discovered during requirements phase required to complete the project are billable and treated as addendums to the bid. Example: You were convinced by somebody to add FLASH technology to your support page on the website I am to build you after you accepted my bid. I do not know FLASH.. now I have to buy it, quickly learn it or at the very least outsource it.

Program Creep, excessive changes to the original scope at any time during production are billable and treated as addendums to the bid.

Ok.. you have the next greatest program idea and you want a programmer to write this program for you and you want it done cheap.. Lets define Cheap! Do you have a clear idea about what goes into a top rated commercial application? Answer: A lot of top talent. For companies like Microsoft, Adobe et al,  highly educated degreed and paid individuals in GUI design, relational database theory, graphic design artists, technical writers work on teams. 

Ok.. so you have cool program idea and limited budget.  Take a look below because if you are on a limited budget at least you will understand a bit more about what it takes to make a simple, easy to use powerful program compared to some of those bad examples you have downloaded and quickly removed from your computer. Cheap in price means less time spent in any one of the categories below.

Project Categories (If applicable)

GUI Design (Graphical User Interface)
Database Design
Programming
Additional programming requirements including custom Active X development
Application Registration Component and/or licensing requirements
Help File - Technical writing
Wizards
Tip Of The Day
Internationalization
Graphic Design including Logos and custom icons
Web Site Design and implementation
Ongoing Tech Support

Venue

Venue unless otherwise agreed is State of Idaho, Boundary County, USA

Copyright

Please see my page on this. Use your browser back button to come back.

Source Code Delivery

I've re-written programs coded by others. In most cases I would have been better off just starting from scratch. When I deliver source I will deliver it as I would wish others to deliver it to me. I have no time to spend trying to decipher a language I know very well or rewriting routines to make it readable. I follow all standard conventions. In the majority of cases one routine does one job. My naming conventions are designed to be clear. Most non-programmers should be able to figure out what this routine below does.

'---------------------------------------------------------------------------------------
' Procedure : SendPost
' DateTime : 8/7/98 11:21
' Author : Dave Eccles
' Purpose : Sends HTTP Post Request
' Params : Four parts to the POST method, UserID and cookies if applicable
' Returns :
' Modified :
' Dependent :
' Comments : Toss errors to calling program and raise Fail event.
' :
'---------------------------------------------------------------------------------------
'

Public Sub SendPost(Host As String, URL As String, Command As String, StringData As String, UserID As String, Optional CookieCol As Collection)

    Dim sCookie As String
    Dim I As Integer
    Dim sProblem As String
    Dim sHeaders As String
    Dim strFormData As String

On Error Resume Next
    For I = 1 To CookieCol.Count
        If Err.Number <> 0 Then
            Err.Clear
            Exit For
        End If
        MyCookieCol.Add CookieCol.Item(I)
    Next l
On Error GoTo EH


    If Not GoodPost(sProblem, Host, URL, Command, StringData) Then
        Err.Raise vbObjectError + INVALID_POST, App.FileDescription, sProblem
   ElseIf  NetPOST.StillExecuting Then
        Err.Raise vbObjectError + INET_ERROR, App.FileDescription, "INET Still Executing"
    End If

    HTMLDOC = ""
    HTTPStatError = False

    'Make Headers
    sHeaders = StandardHeaders(Host, UserID, "application/x-www-form-urlencoded", , False,         False, False)
    RaiseEvent RequestHeaders(sHeaders)

    'Make Cookie Header
    sCookie = RetrieveCookies(MyCookieCol)

    If sCookie <> "" Then
        sHeaders = sHeaders & "Cookie: " & sCookie & vbCrLf & vbCrLf
    Else
        sHeaders = sHeaders & vbCrLf
    End If

    strFormData = Command & StringData

    NetPOST.Execute "http://" & Host & URL, "POST", strFormData, vbCrLf & vbCrLf & sHeaders

On Error GoTo 0
Exit Sub
EH:
    Dim s As String
    s = Err.Description

    RaiseEvent PostFailed(s, True, False)
    Call LogErrors(Err.Number, s, "clsPost", "SendGET")

End Sub

Program Creep aka Scope Creep

Program creep is defined as coming up with ideas and/or features to the program that were not discussed in the requirements phase thus not in the original project scope. One example of program creep would be for example, your program pulls down email from a server later you decide you want to send email too. An example that I would not consider program creep would be you have a list of items and later you decide you want to use a drop down combo box or perhaps when mousing over the list you want to display the list contents as a tool tip. I think it is natural for the original design to do bit of morphing but not so much morphing as to have departed from the original scope.

You avoid program creep by defining your program's objectives, business rules, interface and database needs if applicable and sticking to your design. Some creep is inevitable and I am not a stickler on inevitable and I think I would draw the line with the word excessive changes. Lets not contract to write Notepad and you end up wanting MS Word. Or another way to look at the issue is, lets not build version II of your program before introducing version I.

GUI Design

My own early programs are not good examples of great GUI design! I've learned that GUI design is a science. I suggest a little time invested learning the basics of GUI design. Glitz and glitter and wild colors is not the order of the day for most users. Don't forget those end users that are color blind. My program's end users have told me more then once that the general accepted Windows GUI format is really what they want. I know it is hard but we should keep our creative talent in the GUI department under control. Understand also that the fancier it gets, the more expensive it is going to get. KISS is the order of the day for most applications.

Here

Here

Here

Database Design

This is the time spent designing a normalized database. Often times this design will morph a bit during the detailed design stage. The GUI may morph a little based on the final design of the database. Most importantly though, if your program is big in the database department, your database design is more important initially then the capabilities of your program. Definitely design a database with the future in mind. Program re-writes will prove costly because you change your database design! Your coder must understand not only how to program with a database but normalize what you or the coder has designed. In most cases you yourself will have little clue as to what is really needed to design an effective database. 

Database security must be well thought out. Multi-User needs if applicable or possibly in the future. Location of the database for example if on an Intranet.

Programming

General coding of the program.  A lot of code is written custom to an application and a lot of code comes from code libraries. In some case active x controls (OCX and DLL's) will be or should be used.  We call this black box programming and a good example of this is when your programmer has little or no knowledge about a certain technology or industry. A black box is purchased to do the parts where the knowledge is weak or does not exist. For example, with TCP protocol how many programmers have studied this? Very few... so we purchase a black box that handles TCP protocol, we don't know how or why it works but only care that it does work. Your coder will want to use active x technology to save time and money.

Perhaps budget constraints could be be handled by using an active x control to which you will receive as part of the package or be required to license. I can write X program for you and charge $500 or I can charge you $100, use an active x control and you license the control for further use.

See Copyright restrictions for more information about code libraries and the use of active x in my programs.

Additional programming requirements and custom Active X development

You decide you want to use the latest fancy dancy button rings a bell technology. This type of feature is best left to active x development. I would present this to you so that you understood what was involved with making this new button.

Application Registration Component and/or licensing requirements

Is there a need to secure your application? Will it be a generic registration code schema or something like a system dependent scheme? At what level are you willing to go with cost to have this scheme purchased from a third party company or designed from scratch?

Help File - Technical writing

Are you answering the same support calls over and over again?
Are customers having trouble using your software to its fullest?

If your user is looking for help then they are in trouble. Most of us will agree that the typical help file in a program is not adequate, too techy, is not written in clear and understandable layman English.

How many times have one of my program end user's asked me what an ISP is? What's DUN? I don't have one of those. What is a Windows Clip Board? Yes my first help files although they looked good were awful. One big file with few topics and well.. just bad bad bad.

Help file structure is as important as the words. Quickly finding help leads to less frustration and possibly the NOT sending of a tech support email.

The quality of your help file will affect the final price of your program. 

Here

Wizards

Wizards are used to make complex tasks easier. They are considered separate programs and are designed as such. 

Tip Of The Day

They bug me personally but please understand they take a bit of time to make and require a nice big list of tips to keep the end user from disabling it in two days.

Internationalization

Does your program have international possibilities? It is less expensive to at least prepare a program for internationalization now then to re-write it for later. Your coder should know the do's and don'ts if an international audience is going to apply to your program.

Graphic Design including Logos and custom icons

I am not an artist. I am not a graphic design expert.. but.. sometimes I surprise myself with what I can do with graphics and a couple of good graphic programs. I can handle most if not all of your graphic needs and I know some artists if needed.

A standard price guide line is $50 for program logo and $10 for each custom icon you want written. Anything else is priced on a per need basis. When designing custom icons, international issues must be considered. A mailbox can stand for an email in the US but will it mean the same thing in another country?

I advise that you use standard Windows icons where applicable as they are internationally accepted. If I do create a custom icon I try to make something that is internationally recognizable. Putting text on an icon is generally not a good idea again for international reasons. What does the word Sign In mean to somebody in Germany?

Web Site Design and implementation

Keep it simple. There are a lot of technologies out there and I am not an expert in most of them. I can advise about the majority however and assist with pros and cons. Consider maintenance needs of the site. I personally use Microsoft Front Page. It is easy to design a simple but effective web site and provides for adequate power for most needs. Front Page does require what are known as Front Page extensions on a server to do more then a simple few pages and most quality servers have this capability these days. These pages are made with Front Page and I am not using Front Page extensions...

It is advisable to design a site with your end user in mind remembering that many still use 28k modems and Windows 95 or older MACs.

Ongoing Tech Support

My program's come with 90 days free technical support. After that you are on your own but I do provide an ongoing tech support option.