\doc\web\index\progtip.htm Arthur's Programming Tips


The NATO phonetic alphabet:
Alpha Bravo Charlie Delta Echo Foxtrot Golf Hotel India
Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo
Sierra Tango Uniform Victor Whiskey Xray Yankee Zulu

Phonetics for digits (from an amateur radio FAQ):
  zero one two tree fower fife six seven eight niner

Pre-1954 U.S. Navy Radio Alphabet:
(Communications Handbook, 1945)
Able Baker Charlie Dog Easy Fox George How Item Jig King
Love Mike Nan Oboe Peter Queen Roger Sugar Tare Uncle Victor
William X-ray Yoke Zebra

With pronunciations
Phonetic Alphabet
Recommended by the International Telecommunication Union (ITU).
Emphasis is on the indicated syllables:
A   ALFA     (AL FAH)             N   NOVEMBER  (NO VEM BER)
B   BRAVO    (BRAH VOH)           O   OSCAR     (OSS CAH)
C   CHARLIE  (CHAR LEE)           P   PAPA      (PAH PAH)
D   DELTA    (DELL TAH)           Q   QUEBEC    (KEH BECK)
E   ECHO     (ECK OH)             R   ROMEO     (ROW ME OH)
G   GOLF     (GOLF)               T   TANGO     (TANG GO)
H   HOTEL    (HOH TELL)           U   UNIFORM   (YOU NEE FORM)
I   INDIA    (IN DEE AH)          V   VICTOR    (VIK TAH)
K   KILO     (KEY LOH)            X   X-RAY     (ECKS RAY)
L   LIMA     (LEE MAH)            Y   YANKEE    (YANG KEY)
M   MIKE     (MIKE)               Z   ZULU      (ZOO LOO)

Prepared by Jerry Palsson AA6KI
E-Mail: webmaster@bookworm.sdsu.edu

NATO Alphabet Clears up Confusion
by Cameron Campbell

see http://www.netmeg.net/jargon/terms/a/ASCII.html
for complete list of punctuation names

/ slash whack
! bang exclamation point
' apostrophe single quote 
` back apostrophe
" double quote
# hash (pound in US)
@ at
$ dollar
? question mark hook
_ underbar
[ square open 
] square close
{ open brace "squiggly / curly brace"
} close brace 
: colon
; semi-colon


Bizarre array programming language that uses 
incomprehensible symbols, used in ibm 5100 1st
true pc

see actual code near bottom of page


msdn magazine april 2003
Nine Options for Managing Persistent User State in Your ASP.NET Application 
Steven A. Smith 


_ATL_MIN_CRT? What causes the linker error that _main is unresolved
during Release builds? 
A. This usually happens when the C Run-Time (CRT) startup code is
required for some CRT functions. You can either remove all references
to the CRT functions that require the startup code or remove the
_ATL_MIN_CRT preprocessor definition from your compiler settings. 
Project Option: /D "_ATL_MIN_CRT" 


Converts LP side WAV to series of MP3 files automatically


@@ASP.NET @@Basic 1985 introduction as to why you should learn basic http://www.erasmatazz.com/library/You_Should_Learn_to_Program/Chapter_1.html Jargon - why BASIC is evil http://www.netmeg.net/jargon/terms/b/BASIC.html @@BSTR OLE string data type VarBstrCat Concatenates two variants of type BSTR and returns the resulting BSTR. HRESULT VarBstrCat( BSTR bstrLeft, BSTR bstrRight, LPBSTR pbstrResult ); Header: Declared in Oleauto.h. In 32-bit OLE, BSTRs use Unicode like all other strings in 32-bit OLE. In 16-bit OLE, BSTRs use ANSI. Win32 provides MultiByteToWideChar and WideCharToMultiByte to convert ANSI strings to Unicode, and Unicode strings to ANSI. @@Com %%Links http://www.sellsbrothers.com/tools/ Good developer links %%Data Types Dr. GUI and COM Automation Part 2 "Variants are stored in 16 bytes. The first 2 bytes are a tag that contains a number representing the type of the variant, the next 6 bytes are padding, and the final 8 bytes are the value of the variant. The format of the value depends on the value of the tag. In C/C++, we represent the value of the variant with a union. Variants can hold most of the C++ data types plus pointers, arrays, strings, dates, and currency objects. several data types rely on dynamic memory allocation. For those, you'll have to be sure to call CoInitialize or CoInitializeEx at the beginning of your program // must call CoInitialize or CoInitializeEx HRESULT bOK = CoInitialize(NULL); printf("CoInitialize returned %x\n\n", bOK); // variant demo using ATL's CComVariant class (#include ) CComVariant result; @@Data General pics of eclipse front panel. @@Digital Equipment Corporation %%PDP-8 12 bit minicomputer from 1965. Directly address 4096 words of memory. Used in word processor computer as part of failed trio of DEC 80's pc's. How you write a fortran compiler in 4K is beyond me, but they did it. Accumulator Memory address instruction pointer front panel register i/o built into instruction set to read from tty http://cs.heritage.edu/cpsc/260/ Class on PDP8 with simulator http://www.cs.uiowa.edu/~jones/pdp8/ Great PDP-8 index page Great german PDP 8 page. 312,000 additions per second Directly address 4096 words of core memory. Fortran compiler Front panel java simulation pics The system has 4K of core memory in the main unit, and an additional 8K of core in an expansion unit. @@DLL The Common Controls Replacement Project http://www.mvps.org/ccrp/ The OCX/DLL RegSvr Context Menu is a registration file which, when merged into your registry by double clicking or installing, adds 'Register' and 'Unregister' commands to the context menu displayed when right-clicking a ocx or dll file @@Forms %%Palm z42\clip\2000\06\palmform.txt Pendragon places forms in your Palm May 30, 2000 Jason Brooks Pendragon Software Corp., Libertyville, Ill.; (847) 816-9660; www.pendragon-software.com Pendragon Forms performed well in eWeek Labs' tests, making it relatively easy to produce data-gathering and reference applications appropriate for enterprise settings. http://www.computerworld.com/home/print.nsf/all/000221EDAE Less flexible than comparable tools from Pumatech and Metrowerks **Pumatech http://www.pumatech.com/Satellite_Forms_Enterprise.html Satellite Forms™ Enterprise Edition software is the premier visual rapid application development tool for devices based on the Palm Computing® platform. This Enterprise Edition is designed for developers seeking the ease of use of the Standard Edition but also requiring their Palm OS applications to link with Lotus Notes or Oracle Lite on the desktop or directly to servers. The Enterprise Edition is also the product of choice for large scale, Fortune 1000 type projects. Both the Standard and Enterprise Edition have the same core components: 1. Application Designer, the integrated development environment used to design the forms and tables of an application. App Designer allows you to quickly create applications with multiple forms and tables using easy drag-and-drop techniques. 2. The Satellite Forms Conduit, which manages the transfer of data to and from handhelds and desktop databases. 3. The Satellite Forms HotSync Extension ActiveX Control, which works in conjunction with HotSync technology to simplify integration with database applications. http://www.palmos.com/dev/tech/tools/cw/ CodeWarrior for Palm Computing® Platform - Looks like Visual Studio for Palm, but no special provision for linking fields to database, no special provision for designing forms beyond Dialog Box Editor. %%CE Pocketpc From http://allnetdevices.com/wireless/news/2000/06/05/casio_to.html: Casio To Provide Enterprise Apps Via Devices June 05, 2000 Casio will use technology from Sybase subsidiary iAnywhere Solutions to transfer and synchronize enterprise data, the companies said. The technology will be built into Casio’s Cassiopeia EG-80 and EG-800 industrial-grade Pocket PC devices. May 17, 2000 http://search.sybase.com/s97is.vts?action=View&VdkVgwKey=http%3A%2F%2Fdynamic%2Esybase%2Ecom%2Fpress%5Freleases%2Fpress%5Freleases%2FExternalItem%2F0%2C1099%2C34300%2C00%2Ehtml&DocOffset=1&DocsFound=202&QueryZip=ianywhere&SourceQueryZip=+NOT+%28URL+%3CSUBSTRING%3E+%27international%2F%27%29&Collection=Sybase&SearchUrl=http%3A%2F%2Fsearch%2Esybase%2Ecom%2Fs97is%2Evts%3FQueryZip%3Dianywhere%26SourceQueryZip%3D%2BNOT%2B%2528URL%2B%253CSUBSTRING%253E%2B%2527international%252F%2527%2529%26ResultTemplate%3Dsybasestd%252Ehts%26SourceQueryText%3D%2BNOT%2B%2528URL%2B%253CSUBSTRING%253E%2B%2527international%252F%2527%2529%26QueryText%3Dianywhere%26Collection%3DSybase%26ResultStart%3D1%26ResultCount%3D10& iAnywhere Wireless Server: Technology to Drive Wireless e-Business Solutions The iAnywhere Wireless Server extends the capabilities of Sybase® market-leading technologies, including enterprise synchronization, data management and a scalable application server, to address the unique requirements of conducting wireless e-Business applications. Currently, wireless applications require users to stay connected to the wireless network to access data. The iAnywhere Wireless Server technology gives mobile workers the ability to work either on or offline so they have "always available" access to their data and corporate applications. www.sybase.com/ianywheresolutions @@Hello World Basic BASICA 10 PRINT "HELLO WORLD" 20 END RUN Visual Basic Start->Programs->Microsoft Visual Basic->Visual Basic New Project: Click: Standard Exe Click: Open Menu Run: Start Click x in upper right hand corner Place Text object "Hello World" on standard form Menu: Run Fortran >edit hello.for WRITE (6, *) "HELLO WORLD" END #menu file save as hello.for >fortran hello.for >link hello.for >hello.exe C >edit hello.c main () { printf ("hello world\n"); return; } >c hello.c >link hello.c >hello.exe Java >edit hello.java class helloworld { public static void main(String args[]) { System.out.println("Hello World!"); } } #menu file save as hello.java javac hello.java java hello Html edit hello.html (html> (body> Hello World!

(/body> (/html> #file save as hello.html run web browser type hello.html in address Windows 32 Platform SDK: Win32 API This comes from MSDN by Microsoft Now you know why VB is so much easier than direct programming with C / Windows! GENERIC.C GENERIC.C contains code for the GENERIC application. It includes GENERIC.H. /********************************************************************\ * generic.c: Source code for generic * * * * Comments: Generic Win32-based Application * * * * Functions: * * WinMain - Application entry point * * MainWndProc - main window procedure * * AboutDlgProc - dialog procedure for About dialog * * * * * \********************************************************************/ /********************* Header Files *********************/ #include #include "generic.h" /********************* Prototypes ***********************/ LRESULT WINAPI MainWndProc( HWND, UINT, WPARAM, LPARAM ); LRESULT WINAPI AboutDlgProc( HWND, UINT, WPARAM, LPARAM ); /******************* Global Variables ********************/ HANDLE ghInstance; /********************************************************************\ * Function: int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int) * * * * Purpose: Initializes Application * * * * Comments: Register window class, create and display the main * * window, and enter message loop. * * * * * \********************************************************************/ int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow ) { WNDCLASS wc; MSG msg; HWND hWnd; if( !hPrevInstance ) { wc.lpszClassName = "GenericAppClass"; wc.lpfnWndProc = MainWndProc; wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 ); wc.lpszMenuName = "GenericAppMenu"; wc.cbClsExtra = 0; wc.cbWndExtra = 0; RegisterClass( &wc ); } ghInstance = hInstance; hWnd = CreateWindow( "GenericAppClass", "Generic Application", WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow( hWnd, nCmdShow ); while( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } return msg.wParam; } /********************************************************************\ * Function: LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) * * * * Purpose: Processes Application Messages * * * * Comments: The following messages are processed * * * * WM_PAINT * * WM_COMMAND * * WM_DESTROY * * * * * \********************************************************************/ LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { PAINTSTRUCT ps; HDC hDC; switch( msg ) { /**************************************************************\ * WM_PAINT: * \**************************************************************/ case WM_PAINT: hDC = BeginPaint( hWnd, &ps ); TextOut( hDC, 10, 10, "Hello, World!", 13 ); EndPaint( hWnd, &ps ); break; /**************************************************************\ * WM_COMMAND: * \**************************************************************/ case WM_COMMAND: switch( wParam ) { case IDM_ABOUT: DialogBox( ghInstance, "AboutDlg", hWnd, (DLGPROC) AboutDlgProc ); break; } break; /**************************************************************\ * WM_DESTROY: PostQuitMessage() is called * \**************************************************************/ case WM_DESTROY: PostQuitMessage( 0 ); break; /**************************************************************\ * Let the default window proc handle all other messages * \**************************************************************/ default: return( DefWindowProc( hWnd, msg, wParam, lParam )); } return 0; } /********************************************************************\ * Function: LRESULT CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM)* * * * Purpose: Processes "About" Dialog Box Messages * * * * Comments: The About dialog box is displayed when the user clicks * * About from the Help menu. * * * \********************************************************************/ LRESULT CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch( wParam ) { case IDOK: EndDialog( hDlg, TRUE ); return TRUE; } break; } return FALSE; } @@Hewlett Packard %%HP150 Dos not-quite IBM-PC compatible computers http://www.oksoftware.com/Computers/hp150.faq %%HP2100 16 bit minicomputer pic picture of unit %%HP3000 series First 16-bit "supercomputer" commercial series still alive since 1969 inception. http://www.3k.com/ Good HP3000 site HP's EARLY COMPUTERS, Part Three: THE STRONGEST CASTLE: The Rise, Fall and Rise of the HP 3000 http://www.3k.com/papers/hp3000_history.html z39\clip\2000\01\hp3000.htm %%HP9800 series High end programmable calculators that turned into their unix workstation divisions. A very nice package that was not matched in power until IBM PC, and then it wasn't as nice. Recall key, arrow keys allowed you to scroll through memory, edit and zap individual characters like modern screen editor, very nice for 1972. http://www.hpmuseum.org/ The Museum of HP Calculators 1972 HP9830: BASIC, plotter, automatic cassette, 2.4M disk drive (IBM PC was 8 bit 5Mhz 8088 processor) The HP 9800 series machines used an 8MHz 16 bit processor. The CPU was microcoded and could execute 75 different instructions. The instruction set was designed to resemble the HP 2100 series computers. The processor had 4 main registers (A, B, E, and P). A B Accumulator E extension P program counter http://www.hpmuseum.org/hp9830.htm z39\clip\2000\01\hp9830\hp9830.htm $5975 @@IBM 5100 is worth $2550 on ebay in 2000! no wang 2200 or hp9830 @@Install Installshield - dominant windows install program Installanywhere by zerog Multiplatform install tailored for Java http://www.zerog.com/ @@Intel 8086 assembly language http://www.escape.ca/~rrrobins/Assembly/ More links here http://www.ee.ust.hk/eee/lab/microp/3115/80x86/ z39\clip\2000\01\8088\8088.htm http://www.cas.american.edu/~studdard/classes/fall1995/4028201/notes/12sep95/I.html Nice diagram of 8086 register model Each of the Intel x86 series of processors is merely a glorified calculator chip http://www.cas.american.edu/~studdard/classes/fall1995/4028201/notes/12sep95/index.html http://www.daap.uc.edu/said/faculty/alfredo/cg1/10-7b.html The first microprocessor‹the Intel 4004‹was a 4 bit processor (introduced in 1971). That meant that the chip operated at 4 bits of data at a time. In 1972 Intel produced 8008 chip an 8 bits processor. This two microprocessor were almost demonstration tools. However, in 1973 Intel produced the 8080 chip which was 10 times faster than the 8008 chip. The 8080 revolutionized the computer industry a gave birth to the PC. Nice Z80 page with diagram http://www.geocities.com/SiliconValley/Peaks/3938/z80arki.htm z39\clip\99\20\z80\z80.htm @@Jargon http://www.netmeg.net/jargon/terms/partsindex.html Good hacker dictionary @@Java dialog corejava\v1ch9\dataexchangetest\dataexchangetest.java links > Hi all, > I finally got around to putting this e-mail together. Here are all the > links that I've received regarding Java certification exams, etc. I > verified them all and removed some that are no longer valid, so the ones > listed here should work. > > Java website- http://java.sun.com/ > Exam details- http://www.jcert.org/ > A few Practice Exam Question sites- > http://www.lanw.com/java/javacert/default.htm > http://home-1.worldonline.nl/~bmc88/java/javacert/newcert1-10.html > (looks strange in IE, might be better in Netscape) > > http://home-1.worldonline.nl/~bmc88/java/javacert/ (looks strange in IE, > might be better in Netscape) > > http://eddiemcnally.hypermart.net/ > > http://www.geocities.com/SiliconValley/Screen/5046/ > > http://www.jaworski.com/java/certification/ > > http://www.jchq.net/mockexams/exam2.htm > > http://members.theglobe.com/apoddar/questions.html > > http://www.geocities.com/SiliconValley/Cable/1025/exam1.html > > http://apollo.netservers.com/%7Efemibyte/javaquestions.html > > http://www.sarga.com/java/jac.htm > > > If you're using "The Complete Java 2 Certification Study Guide" book by > Roberts, Heller, & Ernest, this link will provide corrections to the > errors in the book: > http://www.sybex.com/cgi-bin/rd_err_temp.pl?2700err.html @@Leap Year http://www.asiaonline.net.hk/~tfwong/leapyear.htm lp = ((y % 4 = 0) AND (y % 100 <> 0)) OR (y % 400 = 0) lp means leap year. y is the year you want to calculate. % means take the remainder of. The formula above means a year is a leap year in EITHER one of the following 2 cases: 1. y is divisible by 4 but is NOT divisible by 100, OR 2. y is divisible by 400 ONLY. @@Time MFC: CTime objects can be used to represent dates between January 1, 1970, and January 18, 2038. CTime objects have a resolution of 1 second. CTime is based on the time_t data type, defined in the Run-Time Library Reference." I guess they'll be looking for MFC programmers in 2037. http://year2000.dci.com/Articles/990317isps.htm "Our company uses Unix, the most widely-used operating system in the industry. And Unix won't encounter date problems until 2037," said Hanson. Linux itself will be free of date problems until 2038. http://www.netstore.de/Supply/http-analyze/year2000.html in Unix systems the date is represented as seconds since the birth of the OS at January, 1st 1970. This value is stored in a signed long (4-byte) data object, so it can represent as much as 2147483648 seconds, which equals 35791394 minutes = 596523 hours = 24855 days = 68 years. Therefore, most clocks in traditional Unix systems will overflow at January, 1st 2038 if the OS is not updated before this date.


@@messaging z38\clip\99\20\message.htm http://www.seattletimes.com/news/technology/html98/faxx_19990926.html All in one messaging fax-voice etc. @@Speech Microsoft Speech API 4.0 http://www.microsoft.com/IIT/OnlineDocs/intro2SAPI.html http://research.microsoft.com/srg/docs/maininfo-vb.html The six controls include two voice recognition objects (Microsoft Direct Speech Recognition and Microsoft Voice Commands), one dictation object (Microsoft Dictation), two speech synthesis objects (Microsoft Direct Speech Synthesis and Microsoft Voice Text), and one telephony object (Microsoft Speech Telephony). @@User Interface Evolution Teletype (TTY) - Type on paper, carriage return, line feed, backspace 1 byte printing codes "ASCII" or EBCIDIC Glass Teletype - no waste of paper Character Mode Screen (VT100) - cursor addressable in any order to make appearance of screen - cursor keys up, down, home, end - Escape code sequences to command terminal Graphical User Interface / Mouse - dot addressable graphics not limited to 24x80 or characters - computer directly controls display screen memory for speed ---------------------------------- Block Mode Terminal (IBM3270) - The terminal puts up a form with "unprotected" fields for data, send to a time-shared mainframe Windows Form (C SDK, C MFC, Windows, X-windows) - Draw a graphical form on the PC which may send data back to a database server Web Browser - Client fills in form, sends it back to a server, back to time sharing days. Home | arthurhu @ hufamily.com (no space) @@Visual Basic VB portal #const abc = True #if #else #endif @@Wang Laboratories http://www.phoenix.net/~tjunker/wangwho.html /wang.html wang info center 1965 Wang 300 Wang calculators 1960s Wang 2200 Volkswagon of computers Wang WP Wang VS supermini wang 2200 c2 http://user.cs.tu-berlin.de/~siebertr/compi/compi_d.html @@Windows %%API http://k551-01f4.business.ube-k.ac.jp/API_DOC/api/ Excellent guide to Win32 API for Visual Basic %%System Tray http://www.teamcti.com/TrayIt/ Moves minimized box to system tray icon @@Wireless %%Internet http://www.xmlmag.com/upload/free/features/xml/2000/03sum00/en0300/en0300.asp Catch a way - avantgo converts webpages http://avantgo.com/corp/news/press_archive/2000/release05_08_00.html enterprise version %%Forms Database z42\clip\2000\06\point.rtf Tuesday May 30, 2:23 pm Eastern Time Company Press Release SOURCE: Pointbase, Inc. PointBase Teams With Microware to Capture Explosive Growth in Java-Based Mobile Wireless Microware has joined PointBase's QuickPoint Program and the companies are working together to provide data management, data synchronization, and operating system support for the full spectrum of mobile wireless applications currently entering the market. Data Applications http://www.pointbase.com