Programming |
|
I've developed desktop applications, web applications, and e-learning courseware using a variety of languages and tools, including PL/1, Pascal, 6502 assembler, HyperTalk, SmallTalk, BASIC, C, C++, Director / Lingo, Authorware, Flash / ActionScript, Delphi, Visual Basic, Python, VBScript, JavaScript, HTML, and XML. Below are some examples of software that I have developed. |
|
|
|
|
ClickerWare
|
ClickerWare was a complete authoring (see "Storyboard Automation" above) and delivery system to support collaborative learning in a classroom setting. I developed ClickerWare to be used with a low-cost OEM class response system (or CRS). Such systems (commonly called "clickers") are gaining popularity in college classrooms. We applied the concept to branching exercises conducted by an organization responsible for homeland security. Although we authored the first branching exercise, the customer wanted the capability to develop their own content later on. I developed a system that produced a branching exercise in HTML and Flash. At each decision point in the exercise, several possible actions were listed, and participants used the clickers to choose what they felt was the best action. After all participants voted, a histogram (bar chart) was shown, indicating the spread of choices. After discussion, the exercise facilitator clicked on one of the choices to branch to the resulting scenario (a Flash movie) and the next decision point. Participants' responses are collected in an Excel spreadsheet for later analysis. Because their computer systems were "locked down," the customer required software that could run without installation (from a memory stick, for example). Because the customer had Microsoft Office already installed, I used Word as the basis for the authoring tool and Excel as the user interface and data collection / analysis tool. The presentation itself was launched from a button in the Excel spreadsheet and played in a web browser. The system had to communicate with infrared "clickers" through a receiver connected to the facilitator's PC. The receiver device attached through USB, but was accessed as a serial port, using device drivers included with Windows. The OEM had provided an API to communicate with the clickers, but it was implemented as a Windows DLL, and I needed to communicate with a Flash SWF running on Mac OS or Windows. As I had to develop my own API to communicate with the Flash SWF, I wrote my own decoding routine. I figured out the decoding scheme by manually comparing each bit in the signals produced by various keypress combinations of several clickers. After some analysis, I was able to figure out the pattern. Using Python, I developed a small server application that provided the interface between the SWF and the receiver device. Excel launched the server application, and the server application in turn launched the browser. With Python I was able to compile on both the Mac OS and Windows platforms with only minor changes. I designed this system and developed it in Microsoft Office (Word and Excel) / VBA, Python, Flash MX 2004 / ActionScript, and Javascript. |
|
|
|
Wiley eLearning Courseware
|
(WeL Courseware) This standards-based, peer-to-peer distance learning platform enables professors and students to work offline as necessary, with temporary connection to the Internet as needed to "synchronize" course updates, messaging, notes, homework assignments, and so forth. This system was designed to take advantage of the communication benefits of the Internet without requiring users to be constantly "tethered" to a network connection. Various features of the system include extensive interactivity, authoring capabilities, scenario-based learning modules, detailed progress tracking, self-assessment, collaborative note-taking and messaging, and content export to major formats, such as SCORM 1.2 and WebCT. I developed the software prototype,
wrote the product specification, and developed various support
tools and templates to assist in development and support of WeL.
|
|
|
|
QuickSkill III
|
This browser-based personal e-learning environment provides the ability to launch and track SCORM-conformant e-learning content. QuickSkill III has been used to deliver e-learning content to customers of Element K and re-branded Element K courseware to customers of Gateway Computer, BestBuy, and others. I designed this application and developed it in HTML/JavaScript, and interfaced to a database API that was developed by another programmer in Macromedia Director (Shockwave). |
|
|
|
BEETLE
|
(Batch Engine for Encapsulating Tutorials for Learning Environments) This database-driven Windows application automates the conversion of computer-based and Web-based training courses into formats supported by various learning management systems and content standards (such as SCORM, AICC, TopClass, WebCT, and so forth). Document templates are implemented in a proprietary scripting language ("BEETLEScript"). I designed this application and developed it in Borland C++ Builder. |
|
|
|
SADIE
|
(Skills Assessment Delivery Interactive Engine) Designed and developed a Windows application that administers performance-based computer skills assessments. Users run SADIE, which in turn launches a subject application (e.g., Microsoft Word, Excel, Lotus Notes). Each question sets up a particular context (opening a specific document, for example) and presents a text box that describes a general task that needs to be performed. By spying on Windows application events and properties of various objects exposed by the subject application, the SADIE application observes whether students perform the task correctly or incorrectly. SADIE provides feedback and recommendations at the conclusion of the assessment, and forwards assessment results to a learning management system. SADIE used embedded plug-ins (DLLs) for each subject application to translate application events into various states tracked by SADIE. I designed this application and developed it in Borland Delphi and later ported it to Borland C++ Builder. |
|
|
|
SAW
|
(Size Application Windows) Designed and developed a Windows application that lists all application windows that are present in the Windows environment. The user selects a window from the list and chooses a preset or custom size and location. The window is automatically moved and resized as requested. This program automates a portion of the screen capture process used in developing software simulations. I designed this application and developed it in Borland Delphi and later ported it to Borland C++ Builder. |
|
|
|
JavaScript Exploratorium
|
Designed and developed a set of HTML/JavaScript pages that provide a laboratory environment for learning JavaScript programming. Includes an example e-commerce site, a JavaScript object browser, and an immediate mode scripting environment that enables students to experiment with the behavior of JavaScript functions and the Document Object Model. I designed this application and developed it in HTML, JavaScript, Visual Basic (ActiveX), Director (Shockwave), and Java. |
|
|
|
WHAM
|
(Wilson's Highly Automated Munger) Designed and developed a Windows application and scripting language (WHAMscript) that automates the process of modifying and extracting data from large batches of text files (XML, INI, HTML, and so forth). WHAM is driven by user-defined scripts that define how files should be modified. I designed this application and developed it in Borland C++ Builder. |
|
|
|
Interactive Training Companion
|
This product served as an interactive media supplement to our instructor-led training materials. (Also see "Disk Builder" below, which I developed for this project.) I developed the software prototype and wireframes, wrote the product specification, and managed the software and content developers. |
|
|
|
Disk Builder
|
This Windows application generated an installer program with a very small "footprint." This was necessary to support delivery of interactive multimedia course components on a single floppy disk. (Installers generated at that time by programs such as InstallShield were too large to accomodate our needs on the ActiveLearn project.) I designed this application and developed it in Borland Delphi. |
|
|
|
Learning Object Tester
|
As I began to convert legacy content into standards-conformant learning objects (AICC, SCORM, etc.), it became necessary to have a way that I could "spy" on communication between learning objects and host systems (learning management systems) for the purpose of debugging. I developed various testing tools to do this, among them this Learning Object tester. This project evolved into a general DOM object browser. (Now object browsers are finally being included in Web browsers!) I designed this application and developed it in JavaScript. |
|
|
|
Storyboard Automation
|
I developed several automation tools based on Microsoft Word. Using these tools, authors could generate e-learning courses directly from a storyboard. The tools ran on Mac OS X and Windows. I designed these tools and developed them in Microsoft Office using Visual Basic for Applications (VBA). |
|
|
|
VB Lab |
This Windows application provided an environment in which learners could experiment with various Visual Basic programming concepts such as looping, scope and lifetime of variables, and object programming. I designed this application and developed it in Microsoft Visual Basic. |
|
|
|
ASKIP |
This CGI Web application collected information that Web users entered in a form, and forwarded it to a secure location on the Web server for later processing. I designed this application and developed it in Borland C++ Builder and Macromedia Dreamweaver. |
|
|
|
TUTINFO |
This CGI Web application enabled intranet users to browse course information that is stored within a Microsoft Access database. Information was displayed in various HTML-style tables. I designed this application and developed it in Borland C++ Builder and Macromedia Dreamweaver. |
|
|
|
Interactive MediaI've worked with a variety of authoring tools: Hypercard, Toolbook, Authorware, Director, Flash, and so forth. I have created several software simulations in Macromedia Director, and recently I have begun to use Flash extensively. Click here to view a Flash piece I created just for fun. It's an implementation of Conway's "Life" simulation. Click here to view an older version of Life that I made in Director.
|