S R T B H P N
github Repositories

Home Page

Access to, and documentation for, code repositories and stories

Quick Status Recent site additions Tracks top menu entry links to tracks for Basics, C++, Rust, and C# Basic Bites repo links to Basic Bites pages and code samples Interesting items Added section on writing and presentations RustPlaygroundExamples github page with code examples and RustBite refs Glossary Glossary with text and code references FlashCards Quick views of some important Rust types
Jim Fawcett
"Good judgement comes from experience, and experience comes from bad judgement."
- Jim Horning

Hi, I'm Jim Fawcett. I enjoy talking about and developing software. This is my site and I'm glad you stopped by.

Intended Audience:

This site is intended for anyone interested in C++, Rust, or C#, and all are welcome. If you are relatively experienced with one programming language and want to learn about C++ or Rust, welcome aboard! Coverage of C# is shallow - more will come later. There are lots of details here. "Stories" and "Bites", accessed from the top menu, are designed to guide you through the learning process. Spending some part-time effort, looking at stories and code, and writing code, should help you to become reasonably fluent in about six months to a year, but you can start writing useful code much sooner than that. More experienced software developers will find relatively deep coverage of language features in the Bites, Stories, and their details dropdowns, and in code repositories. Both C++ and Rust are important system programming languages that compile to native code. They give you tools to build quick and reliable systems and user applications. Rust provides reliability with compiler enforcements. C++ does that with conventions and helper types. C# is a managed language, deeply integrated with the dotnet framework, able to run on Windows, Linux, and MacOS. At this time, C# coverage in this site is shallow, consisting of several code repositories. Eventually that will be augmented by a C# Story and Bites.

Site Contents:

This site contains code repositories with documentation, stories about programming languages, and lots of resources. You will find the top menu helps you figure out what is here and find things by viewing dropdowns. Many site pages reside in linked lists of pages, so if you see Prev and Next buttons on the top menu you can follow those threads easily (this page is not in a list).
SiteMap
Another way of navigating is to use the SiteMap, clicking on that button on the top menu or using the badge, on the left. Most useful site materials are organized and linked there. Also, you can get to SiteMap from anywhere in the site by pressing the h key (for help). A table of keyboard commands is the first thing you see. Check out SiteMap to get a good idea of the content in this site. The SiteMap is large - hundreds of links. Before learning to use that you may find the smaller selected set of links in Table 1., below, will help you to get started quickly.

Stories, Bites, and Repositories:

Much of this site's contents are "Stories", "Bites", and "Repositories". Stories are narratives about a programming language or other technical topic. Think of them as ebooks that give a reasonably thorough presentation of topic details in a series of linked pages, one for each chapter. A Bite is a single web page focused on one feature of a language or platform. Bites are linked into a thread using Prev and Next links, so the thread covers important parts of its parent story and is easily navigated. For example, the Rust story consists of seven chapters, with each chapter presented on one page. The Rust Bites divide each story chapter into a few Bites, each focused on an important topic in the chapter, and linked together. Each Bite provides more details than its part of the story chapter, so that makes an expanded narrative from easy to digest pieces. Repositories are containers for code and documentation. For example, the Rust Repository contains code for tools, component building blocks, and demonstration code for the Rust Story. Repositories are grouped into topics, e.g., Rust, C++, C#, Javascript, and others. Repositories each have a documentation web page that discusses its code and links to a github repository with that code. Essentially, repositories in this site are proxies for the actual code in a github repository.

Language Content:

This site focuses on three programming languages: C++, Rust, and C#, with emphsis on the first two. Content tracks are provided for basic background information, and for each of the three languages.

Table 1. - Language Tracks

TrackContentComments
Basics Platforms, Programming, and Object Models Background information needed to develop code effectively
C++ primitives, functions, classes, relationships, templates Source compiles to native code, good performance, safe by convention using library tools
Rust primitives, mutation, copy, move, structs, generics, safety Compiles to native code, good performance, safe by construction through compiler enforcements
C# primitives, classes, generics, garbage collection Source compiles to bitecode, jitted to native at run-time, safe by construction
The tracks provide information suitable for developers, for reference or to start learning about one of these languages. Stories and Bites cover most of the features of C++ and Rust, and materials for C# are being developed too. Discussions are quite complete, but accompanied with diagrams and code examples to make the learning process fairly painless. There are also coding exercises at the end of most story chapters and many of the Bites.

Purpose:

Many of the images and diagrams in this site are expandable. Click on the body to expand, click on the title to contract.
Figure 1. TextFinder Repo Figure 2. TextFinder Packages Figure 3. TextFinder Output
This site is intended to provide access to, and documentation for, a collection of code resources, like the TextFinder tool shown in the diagrams, on the right. Some of these resources are complete applications, most are useful reusable parts. Many were developed for my Syracuse University classes. New code appears here for other things of interest now.
SU Site
The original SU site organizes material for graduate Computer Engineering courses I taught from 1991 to 2019. It is structured by course and student interests with lots of student pictures. Another intent is to experiment with ways to document and deploy code: how to provide quick access to important code fragments as well as an entire product with multiple packages, how to balance browser view space between non-trivial text descriptions, diagrams, and images, and how to provide intuitive navigation through large collections of code and resources.
Interesting links
Check out Interesting Links for technical commentary that relates to things in this site and a few other things I find interesting.
If you wish to provide constructive feedback about this site, visit Website Repository and click on the New discussion tab.
 

Other Resources

The Rust community has crafted a number of high quality ebooks and web pages. Here are three that are especially effective.
Rust Cheat Sheet
Tour of Rust
Rust - the Book
Some parts of this site have broader focus than a single language. Basic Bites introduces simple models for platform, program, and object behaviors. Idioms & Patterns compares small code examples written in C++, Rust, and C#. Tooling helps you get started with language tools so you can start building code quickly. Finally, Software Development deals with the engineering side of project construction.
Basic Bites
Idioms & Patterns
Tooling for C++, Rust, C#
Software Dev: Design
Software Dev: UML
There are a lot of programming and language reference materials here. For now, language references focus on C++ and Rust, but eventually the site may add references for C#, and a few other languages. Here are places to look for language support:
  • Resources (Res) dropdown menu at top of the home level pages.
  • The Stories dropdown has C++ and Rust story tutorials. Eventually there will be other language stories as well.
  • The C++ Repositories have a lot of C++ code examples and projects.
  • The Rust Repositories are now acquiring code examples and projects.
  • SiteMap links to most of the resources in this site.
You will find more information about the site goals, design, and status in  SiteDesign.html.
Repository home: https://github.com/JimFawcett
Syracuse University website: https://ecs.syr.edu/faculty/fawcett