about
Home Page
03/06/2024
github Repositories Site Explorer

Code Workshop

Code repositories, stories, and Documentation.

Quick Status Recent site additions Bits code comparisons comparisons for C++, Rust, C#, Python, and JavaScript Site Explorer added wrapper page with clickable links to site pages. RustBite code examples added comprehensive list of RustBite code examples. new menu system New menus on Site pages, Tracks, Repos, and many stories.
Resrcs pages and Blogs still use the old menus.
Interesting items Added section on writing and presentations RustPlaygroundExamples github page with code examples and RustBite refs Rust Glossary Glossary with text and code references Rust FlashCards Quick views of some important Rust types
"Good judgement comes from experience, and experience comes from bad judgement."
- Jim Horning

Jim Fawcett
Hi, I'm Jim Fawcett. I enjoy talking about and developing software. This is my site and I'm glad you stopped by. The site is intended for anyone interested in software development, especially for developers using C++, Rust, or C#. All are welcome.
Disclaimer
I am building this site to learn about things that interest me and provide reference and learning materials for others. Code here is exploratory and/or expository. I make no claims of fitness for production. I think most of what you see here is correct, clearly stated, and follows accepted idioms. The earliest material may not always be so, but I do go back to make improvements. You can help by advising me here of needed improvements.

1.0 Places to Start:

  • This Home page
  • Site Explorer Ordered links to view contents in iframe.
  • Site Map Links to almost everything in site organized into large tables

1.0 Website Introduction:

You will find here a large curated collection of code written in C++, Rust, and a few items in C#. All of that can be accessed from the "Repos" dropdown in the top menu. There are also tutorial and reference materials presented in several hundred web pages, accessible from the "Tracks" dropdown. So you may need a small boost to get started. This video will give you, in about eight minutes, a brief introduction to the website. It presents top-level views of site navigation and contents.
You will probably want to view "picture-in-picture" or "full-screen" so details are large enough to be seen easily.
Find more details about navigation in the Site Demo page. That discusses uses for each of the menu and controls items. For more information about contents look at all the top-menu dropdowns and, for an exhaustive view, check out the Site Map.
Thanks to Mike Corley for many reviews and suggestions that have helped improve this site.

2.0 Intended Audience:

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.
Site Navigation
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 in a "HomeGroup" thread).
Site Explorer
 
A "Site Explorer" page is part of this "HomeGroup". That provides a clickable list of site pages organized into groups, with pages shown in an iframe.
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.
SiteDemo
 
The "SiteDemo" page provides a place to experiment with menus and pop-ups. That's a good place to learn about page widgets and how navigation works.
Also, you can get to SiteMap from anywhere in the site by pressing the "s" key. You can see all key bindings provided for this site by clicking the "Keys" button on the bottom menu. Tablet users can use the "keys" display, accessed from bottom menu, to emulate all keyboard actions provided for this site. You are likely to encounter links that are inactive (partially transparent). They are placeholders for things I plan to add. For example, the "SiteMap" page has a few that may become active fairly soon.

3.0 Stories, Bites, Bits, and Repositories:

Figure 1. Stories and Bites
Many of the images and diagrams in this site are expandable. Click on the body to expand, click on the title to contract.
Much of this site's contents are "Stories", "Bites", and "Repositories". To those we have recently added "Bits" content. 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.
Rust Story  
The Rust Story consists of seven chapters, with each chapter presented on one page. For example, the Models chapter provides an overview of Rust's code structure, process for building, ownership, user-defined types and Traits, and Generics. And provides exercises and references at the end. After studying this chapter you will be able to begin writing useful code with Rust. There are other stories which you can access from the "Stories" dropdown in the top menu, and can also be reached from links in the SiteMap.
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.
Rust Bites  
Rust Bites divide each story chapter into a few Bites, each focused on an important topic in the chapter, and linked together. For example the Data bite covers operations: bind, copy, borrow, move, clone, and mutate, with conclusions and exercises at the end. Bytes provide more details or a different point of view than the story chapter, so that makes an expanded narrative from easy to digest pieces. There are Bites for most of the Tracks, accessible from the "Tracks" dropdown in the top menu and from the SiteMap. Bits are relatively small compilable codes written in several languages: C++, Rust, C#, Python, and JavaScript. Bits allow you to compare two languages by comparing their code fragments and resulting outputs.
Code Bits  
Bits provide step-by-step instructions for setting up tool chains for building, running, and debugging code in each of the languages. They also provide levels of code examples, for each of the languages, that help you understand the language type systems, user-defined types, and common operations. For example, Bits_DataRust and Bits_DataCpp. Repositories are containers for code and documentation, available from the "Repos" drop-down on the top menu. There are repository collections for C++, Rust, C#, JavaScript, and Other. Each member of a collection is a documentation webpage that links to a github repository containing code.
Rust Repositories  
The Rust collection contains tools, components, libraries, projects, and demos. For example, the components contain a repository for a thread pool written in Rust. You will find many small C++ and Rust demonstration programs in the "Dems" drop-downs. All of the curated code is available from the "Repos" dropdown in the top menu.
Most repositories have a documentation web page that discusses its code and links to a github repository with the code. Essentially, repositories in this site are proxies for the actual code in a github repository. We've used Rust for these examples because Rust is the only language for which we have all three: Story, Bites, and Repositories. C++ has a story and Repositories. For C# there are only a few repositories. Eventually I expect that all three will have all of these things.
Languages Content
This site focuses on three programming languages: C++, Rust, and C#, with emphesis on the first two. Content tracks are provided, from the top menu, for basic background information, and for each of the three languages. 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 and, like C++ and Rust, can 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.

Table 1. - Language Tracks

Track Content Comments
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, memory 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.

4.0 Purpose:

This site is intended to provide access to, and documentation for, a collection of code resources, like the TextFinder tool found in a collection of repositories devoted to C++ code. 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.

4.1 Migrate code and resource materials from SU website

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. I taught five graduate courses based on my Syracuse University website. All the course contents: syllabus, lecture content, and assignments are accessible by clicking the "Courses" top menu item. This includes content for: Here are pictures of students from my classes and from my research team:

4.2 Experiment with Web Display Techniques

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. If you wish to provide constructive feedback about this site, visit Website Repository and click on the New discussion tab.

5.0 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
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 "Resrcs" dropdown menu in the top menu bar.
  • 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.
Interesting links
Check out Interesting Links for technical commentary that relates to things in this site and a few other things I find interesting.
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
Feedback
Your constructive comments and suggestions are welcome. You can provide those here. I'm especially interested in:
  • What you liked and did not like about the site
  • Is site navigation obvious and easy to use?
  • Which of the discussions are too complex or too simple?
  • Are the provided materials: Stories, Bites, Code, .. interesting?
  • Did you find the site attractive
  • Is it easy to use the SiteMap, access Stories and Bites, and use the site widgets (expanding images, badges)?

  Next Prev Pages Sections About Keys