Training by Steve Comstock

In one way or another, I have always been a trainer, a teacher.

A few years ago I retired from my most recent training job, developing and teaching courses about IBM mainframe (z/OS) application programming.

Below are details of courses and materials I have written that are currently available on my website ( I charge a nominal fee to enroll in each course. However, the videos are available for free on YouTube.

Each course from Still Plugging Away contains lessons: each lesson contains 1-4 videos;

If you enroll in a course on the web, then you will get additional content included:


Still Plugging Away courses: lessons, videos
Lesson / session Title (video duration - minutes:seconds ) / Summary of content YouTube location
Overview Introducing Still Plugging Away (2:12)

Describes the courses available and how you can take them.
Lesson / session Course 1: Practical Windows for Small Business [and Hobbies]
7 lessons, 13 videos, 2 hours 14 minutes viewing time
YouTube location
1 / 1 How Computers Work (3:44)

Description of the roles of the CPU (Central Processor Unit), RAM (Random Access Memory), and a hard drive, and how they work together.
1 / 2 Bits and Bytes (8:28)

An elementary look at how characters are stored and a brief survey of typical input / outut devices.
2 / 1 Desktop layout choices (9:45)

Tips and suggestions on how to set up your Windows desktop to be most helpful to your work: choose background, organize icons, set up task bar; how to utilize tablet mode (Windows 10);
3 / 1 Organizing Files (16:26)

Organizing principles for locating files: drive / directory / file; rules for filenames; filename extensions; reserved filenames; contents of windows; file explorer; directories and sub-directories; hints on organizing directories and files
3 / 2 Creating Directories (12:52)

How to set File Explorer options; how to map file extensions to applications; creating directories and sub-directories
3 / 3 Getting Files (7:19)

Options in File Explorer menus: cut, copy, paste; from applications: Save and Save as ...; downloading files from the web ("Save page as ...", "Save image as ...", "Save file"); review of course content so far.
4 / 1 Working with Notepad (15:50)

Practical applications of notepad; example: the Be A Rock Star story; our first web page; File menu: Save, Save as ...
4 / 2 Format and font choicess (10:36)

Format menu choices: Word wrap; Fonts; discussion of font families and characteristics; View menu: Status bar.
4 / 3 Tips and techniques (14:16)

How to select text; once selected, how to copy, cut, delete; the clipboard; paste; undo; locate a string; replace a string; add a timestamp to your text; printing text; formatting the print page.
4 / 4 Writing Poetry and Code (2:43)

Here I emphasize the value and need for forcing line breaks in your code - just like lines of poetry.
5 / 1 Working with WordPad (9:55)

The WordPad menu choices, new user interface: File contains list of recently edited files; editing lets you: mix font faces, sizes, and weights; also underline, strikethrough, highlight, subscript, superscript; left-justify, right-justify, and center blocks of text; inserting characters not found on your keyboard; inserting pictures; resizing pictures; inserting a date / time stamp; setting up for landscape format; zoom options; save as a rich text file (.rtf extension).
6 / 1 Working with Paint (14:12)

Capabilities and uses: draw with a pencil line; draw with a paintbrush; draw using shapes; picture stretch; save as format choices; capture screen images into the clipboard then paste into the Paint canvas; cut a portion of an image into the clipboard, then paste just the extracted part into the canvas; draw on pictures in the canvas; adding text to an image.
7 / 1 Multi-tasking in Windows (6:36)

Launching applications for the day; running multiple instances of an application; task switching techniques; the task view.


Note that for the next courses, the lessons build on each other. Each lesson develops one or more skills, motivated by a realistic need for a particular site, a story. The computer exercises are built around the content, but often challenge you to go a bit further than in the lecture.


Still Plugging Away programming courses: lessons, videos
Lesson / session Course 2: Creating Websites Using Notepad [or any plain text editor]
24 lessons, 41 videos, 11 hours, 45 minutes viewing time
YouTube location
Story / Skills
1 / 1 Introduction to the Web (4:15)

The one-minute web page example; How the web works: you, your computer, and your browser: the client; the hosting system: the server. Files are in HTML format when sent; your browser renders a page based on the HTML.

Story: Need to create a web page

Skills: Use text editor (notepad) to create a web page in under a minute
1 / 2 Anatomy of a name (6:27)

Protocols; host names and domain names; domain name servers; default pages; path names, file names; what happened to "www"?

Story: Naming conventions and protocols for files on the web

Skills: Decide how to structure / name directories on your server
2 / 1 Introducing HTML (16:22)

Main components: formatting, linking (hyper-text), actions; structure of an HTML document (a web page); elements: start tag, end tag, content; attributes; comments; blank lines; whitespace; indentation and nesting; global attributes: class, hidden, id, lang, style, title; the HTML element; the HEAD element; the TITLE element; the META element.

Story: The basic structure of HTML documents

Skills: Know how to start coding an HTML page beginning, including HEAD element and basic global attributes
2 / 2 More on META (9:02)

A more expansive discourse on the META element (by no means exhaustive); charset, http-equiv, name, content; application-name, author, description, generator, keywords.

Story: Describe the most important options for the META element

Skills: How to move from page to page at chosen time interval (so: slide show)
2 / 3 Writing Poetry and Code (2:43)

Here I emphasize the value and need for forcing line breaks in your code - just like lines of poetry.

Story: Many people don't realize the need for / value of line breaks

Skills: Can code poetry and code in a readable line break style
3 / 1 Marking up text (14:54)

Discussion of the docuemnt content: the elements that mark up strings of text; the BODY, P, H1, H2, H3, H4, H5, H6, BR, and PRE elments; the style attribute; style properties background-color, color; introduction to events; the onclick event.

Story: Need to structure the text in a BODY element to give the reader visual clues

Skills: Can build basic text structure with headers, paragraphs, and extra lines for readability as well some color choices and the concept of events
4 / 1 Setting up infrastructure (9:35)

Define objectives / audience; choose a company name; register your business (optional); choose a motto or slogan (optional); choose a logo (optional); choose an ISP (Internet Service Provider); decide to run with https or http; decide if site to be public or private; choose an FTP (File Transfer Protocol) client program; set up a merchant account (if needed).

Story: Need to know the steps necessary to set up a web site

Skills: Now can set up a plan with the details needed to set up a site
5 / 1 Uploading files (12:24)

Using FTP to upload files; we use FileZilla client as our sample program, but other apps can do. Demonstrate download, install, and use.

Story: Once you set up a site, you need to upload files from your computer to your server

Skills: FileZilla is a free product that can upload / download / delete / rename files on your server
6 / 1 Links and anchors (12:17)

We show how to set up anchors (places in a page that can be the target of linking) and how to use the <a> element. Also, how to use <a> elements for downloading files and to set up emails. How to preload files for better performance using <link> elements in the <head> section.

Story: Need provide a way for your users to find specific spots on a page, and to navigate to other pages on your site or other sites

Skills: the A element is how you set up links to other locations
7 / 1 Inline style (19:48)

Text markup elements <b>, <i>, <mark>, <s>, <sub>, <sup>, <u>. Style property value types (reserved word, length, string); style properties; style attributes. Color related properties, font related properties. The style attribute. The style element. Style selectors and declaration blocks. The <class> element.

Story: Emphasising text in various ways helps the user see what you consider to be most important

Skills: By boldfacing, underlining, highlighting and more, you can help you users see what you want to emphasize
7 / 2 Style markups (10:21)

Introduce the <span>, <div> and <hr> elements. Techniques for lining up text.

Story: How to assign style characteristics to subsets of text (SPAN) and groups of elements (DIV)

Skills: You can set up style characteristics to apply to substrings of text (SPAN) and / or sets of consecutive elements (DIV) and display horizontal lines to group elements (HR)
7 / 3 Using style for layout (34:24)

The box model. Boxes and blocks. Margins, borders, and padding. Positioning and floating of of boxes. Specifying location and size of boxes.

Story: How to use the box model to create a page layout

Skills: Can consider components in layout and implement using style settings
8 / 1 Stylesheets (7:03)

How to create a stylesheet. Then, how to use it in your HTML. Note that stylesheets can be shared across many HTML pages. Comment syntax for stylesheets.

Story: Want to use the same collection of style rules in many pages

Skills: Create one or more files, each a collection of style settings (so the term style sheets); then reference these files from multiple pages using <link> elements
9 / 1 Testing and debugging (20:31)

First we explore the wide range of browsers available - many more than commonly thought. Then we discuss the importance of testing your HTML pages in multiple browsers. We offer some techniques for correcting errors. Links to several online syntax checkers are provided.

Story: When things don't look right, it helps to have some tools to help you look for errors

Skills: Now you have strategies to follow and places to go for help finding and solving errors
9 / 2 Clearing the cache (20:31)

Define the role of the cache and when, how, and why to clear it

Story: Sometimes it is suggested you "clear the cache" so you can refresh its contents

Skills: Here we show how to do that
10 / 1 HTML lists (16:08)

HTML supports three kinds of lists: ordered lists, unordered lists, and dictionary lists. In this video we define the elements to support lists along with the attributes that are specifically for lists and list items.

Story: Lists can be visually displayed as items on separate lines, prefixed by number, block, or image

Skills: Can create displayable lists of items in a collection, steps in a process, and more
10 / 2 A list application (6:52)

Here is an opportunity to incorporate multiple threads: we create a list that is a collection of links to websites we follow. (So lists and links.) Then we show how to use this file on your computer to be the default page for your browser. (So a local web page.) This is actually nice because you don't have to be online to bring up your browser and then decide where to go first.

Story: How to create a page containing a list of links to favorite sites

Skills: Create your personal home page for your browser; a local page
11 / 1 Images and client-side maps (18:36)

How to embed images in an HTML page. And, in addition, you can identify areas on an image that can map to other files or some special processing.

Story: When you want to display a picture on the screen, here's how to do it

Skills: You can include pictures in your pages, and even provide the ability to have sections of an image map to more details
11 / 2 Managing HTML images (13:00)

Here we suggest some sources for images (pointing out the importance of making sure they are royalty free). Then we introduce an application, IrfanView, that can be used to edit images (resize, resample, crop, etc.).

Story: Need to be aware of legal issues (copyrights, fees, etc.)

Skills: Some suggestions of where to find images and a product that lets you edit them
12 / 1 Media - audio and video (8:55)

Here we demonstrate how to include audio and video files on an HTML page. Introduce the AUDIO, VIDEO, and SOURCE elements

Story: Want to be able to include media files on your page(s)

Skills: Can include media files and controls to run them (run / pause / resume)
13 / 1 Introduction to JavaScript (12:47)

JavaScript as the language for handling events on a page. Rules of syntax and naming. Basic statements: 'var', assignment ('='); attributes as variables and style properties as variables. The 'this' element identifier.

Story: Using JavaScript is how a web page can respond to user actions (keyboard, mouse, etc.)

Skills: Can respond to user clicks by changing text color and respond to mouseover by changing content of an IMG element
14 / 1 Introduction to the DOM (28:39)

The DOM (Document Object Model) and how it is used to identify elments and attributes, and to add, delete, change elments and attributes.

Story: To work with code to change properties and values, we need a way to define these so the code can reference them

Skills: Using JavaScript and DOM characteristics, your event handlers can create, modify, even delete elements, in response to user actions
14 / 2 JavaScript Using the DOM (16:46)

Here we demonstrate using DOM constructs in JavaScript. We also introduce the window object.

Story: We use a virtual keyboard example to demonstrate using JavaScript and DOM, then show an example of hiding and showing an element, then demonstrate dynamically addding items to a list and then introduce three methods available to work with the current window

Skills: Now we can do more powerful event handlers and use 'alert', 'confirm', and 'prompt' methods to display and access values from the user
15 / 1 JavaScript Logic and Arrays (20:22)

Introducing the 'if' and 'for' statements as well as how to define and work with arrays in JavaScript.

Story: Sometimes we need to choose a logic path based on some action or value

Skills: Now we can compare values and decide what actions to take; we can also work with arrays of values, and repeat a section of code while some condition is true (or not true)
16 / 1 JavaScript Functions and Scripts (15:40)

How to use JavaScript to expand and contract lists; uses "onclick" and DOM methods. Then how to create and use functions in JavaScript, finally how to create and use external script files.

Story: Using a function allows you to invoke the same code from multiple spots in your page

Skills: Define and invoke functions to create / delete / modify elements and attributes; we can now also put JavaScript code into external files and use these from many pages
16 / 2 Windows and Documents (13:49)

How to create windows dynamically (pop-up windows) using and document.write

Story: We need to pop up a window to display peripheral information without losing the current page

Skills: We learn how to dynamically create a new document in the current window or a new window
16 / 3 Functions with Parameters (20:28)

How to make JavaScript functions more general by planning for parameters.

Story: JavaScript functions can be made even more flexible by incorporating parameters the coder can change at invocation time

Skills: We can invoke a function that displays an array, regardless of how many items are in the list, and show it in a pop-up window
17 / 1 Forms and Input (30:09)

How to create forms, with an introduction to common types for INPUT elements along with an introduction to CGI concepts.

Story: Forms are the mechanism for getting information from the user; this information is passed to a CGI (Common Gateway Interface) program on the server

Skills: Now you can specify some basic forms, for example, for signing up for a trip
17 / 2 More Input types and the POST method (14:23)

A look at some additional types of INPUT elements along with a discussion of POST processing.

Story: Here are some additional types of data you can request, including file(s) to upload, such as a picture of someone signing up to go on a trip (this last requires using the POST method instead of the GET method)

Skills: Create more interesting, richer forms, if you need it for your application
17 / 3 Validating Form Data (30:58)

How to check input data for flaws and how to debug web pages that are not working right.

Story: It's a good idea to check incoming data as far as possible; avoids most hacks and also ensures data is of the right form / format / size

Skills: Good habits to get into when working with forms
18 / 1 Forms and Input (32:29)

Additional controls for forms, and some JavaScript + DOM programming for SELECT elements.

Story: These allow you to construct list boxes for a user to choose one or more items

Skills: You can use new controls: button, select, option, optgroup and lable to select items from a list and copy them to a different list or remove items from a list
18 / 2 TEXTAREA, FIELDSET, and LEGEND controls (14:23)

Three additional forms controls, plus a discussion of how to use controls without having forms.

Story: How to accept free form text and also how to group related items together on a form

Skills: Forms with controls grouped together logically make it easier for your user to provide the information you want / need
19 / 1 Using cookies (26:22)

A description of what cookies are, how they are used, and multiple examples of JavaScript code.

Story: Cookies are used to "remember" the values of variables across pages in your website; example is the Flying Drones Academy Book Club sign up and some calculation pages

Skills: We have provided some JavaScript functions to work with cookies: setCookie(), deleteCookie(), and getCookieValue(); also a short paper on detecting and dealing with pages if cookies are disabled
20 / 1 Introduction to HTML Tables (28:02)

Basiscs of defining tables, including the use of style properties specific to tables.

Story: We demonstrate how to create tables, and show using tables to create graphs

Skills: Now you can construct a wide variety of tables to display on your website
21 / 1 Structuring HTML Tables (19:42)

How to group rows and columns and how to create large cells.

Story: We demonstrate tables with row grouping and cell grouping, and cells that span rows and / or columns

Skills: Create tables grouping by rows or columns, and create cells that cross row and column boundaries
21 / 2 A Complex Table (11:18)

Demonstrate building a complex table. supplement

Story: We demonstrate building a table with row grouping and cell grouping, and cells that span rows and / or columns

Skills: Create complex tables using a straightforward approach
22 / 1 A Revelation(5:18)

Was not aware of the textContent property, and it can save a lot of programming

Story: This grabs all the text from an element that contains text, even if it has embedded elements

Skills: Quick way to extract text; not very good in putting text out
22 / 2 Scripting with HTML Tables(14:14)

How to use JavaScript and DOM methods to dynamically alter a table

Story: Example of changing style of some elements; and example of dynamically adding a row

Skills: Can modify tables on the fly
22 / 3 Scripting with HTML Tables(16:30)

Introducing the document.getElementsByTagName() function lets me access all items of a single type, such as 'td' cells

Story: Introducing the 'switch' statement along with 'case' and 'default'

Skills: Can sum up all the cells in a column; create the Photo album page
23 / 1 The iframe element(12:00)

How to embed an HTML page inside another HTML page!

Story: Display a page inside another page

Skills: Can create a page with multiple windows on the page
24 / 1 Loose ends(12:00)

Development strategies, validation sources, the viewable in any browser campaign, and more. Wrapping up this course.

Story: Where to find validation tools, suggested development strategies

Skills: Where to look for corrections
Lesson / session Course 3: Advanced Topics in Website coding
9 lessons, 16 videos, 5 hours, 5 minutes viewing time - and still growing
YouTube location
Story / Skills
1 / 1 Web page layout and design, part 1: basic choices (10:01)

Basic choices, wire framing

Story: You want to describe the layout of your website pages

Skills: Wire frame a design and set up a logo and page title

sketch    sk2

1 / 2 Web page layout and design, part 2: implementing (10:01)

Add content: links, activities, end of page

Story: You want to fill in the body / content of your home page

Skills: Apply standard skills, including changing font size in the middle of a line and adding end-of-page content

2 / 1 Page backgrounds, part 1: solid colors and gradients (16:03)

Style properties: background-color, linear-gradient, radial-gradient

Story: You want liven up your page with some color

Skills: How to specify solid colors and define color gradients (shading)
2 / 2 Page backgrounds, part 2: images (20:07)

Style properties: background-image, background-color, background-repeat, background-position, background-size
Finding images: sources

Story: You want liven up your page with some background images

Skills: How to specify one or more images for your page background
3 / 1 Page framing, part 1 (39:12)

Style properties: line-height
Building a frame using gif images; demo of trial-and-error coding

  Story: You want a frame around your page

  Skills: How to construct a frame around
  your page using <div>
3 / 2 Page framing, part 2 (16:53)

Style properties: box-shadow
Building a two column page based on an existing page

Story: Give shadow to an image using box-shadow

Skills: Using box-shadow and how to specify two columns


4 / 1 Server Side Includes (14:23)

Create files to be included
How to include files
How to access / display current date / time and date / time of current file

Story: Create re-usable code fragments as files


Skills: Include re-usable fragments in main program

5 / 1 Introduction to CGIs (16:14)

Review of form processing
Data validation
Set up required on server for CGIs written in php

Story: reminder of form construction and processing on the client side

Skills: build a form for signing up for a trip

6 / 1 Introduction to php (15:28)

Basic syntax: case-sensitivity, statements end with semi-colon, comments, blank lines
Basic syntax: variable names, data types, quoted strings, operators: assignment, arithmetic, string concatenation
Using $_GET to access values passed from the submitting form
'echo' command
7 / 1 php programming, 2 (17:43)

Logical / boolean 'true' and 'false'
Comparison operators: ==, ===, !=, !==, <, <=, >, >=
'if' statement
$_GET, $_PUT, and $_SERVER arrays
How to send emails using php
7 / 2 php programming, 3: Complex 'if' statements (17:23)

Logical operators (and, or, xor, !)
Nested 'if's
8 / 1 php programming, 4: String handling and date / time (22:00)

functions: strtoupper, strtolower, ucfirst, lcfirst, ucwords, str_replace, str_ireplace
date function, how to format date and time strings
9 / 1 php file work: creating log files (14:42)

Define a file, introduce php functions for working with output files:
Describe necessary steps to prepare for creating log files
fopen, flock, fwrite, fflush, fclose
9 / 2 php file work: reading server files (16:29)

Functions: fopen, fgets, feof, fclose
The 'while' logic construct
exit, goto, and labels
9 / 3 php file work: creating page from form data (34:36)

Creating a model file; replacement indicator strings
Handling uploaded files: getimagesize(), file_exists(), move_uploaded_file()
Create personal web page from the model file and data from a form
9 / 4 php file work: loose ends (22:00)

Create "Travelers.shtml"
php "switch" construct: switch, break, default
Present a reason for each piece of data you request


Back to the home page for Still Plugging Away


Email us if you would like additional information. We would love to see your comments and recommendations for our site.