about
Projects Track Summary
04/12/2024

Projects Track Summary

completed, new, suggested, speculative

Figure 1. Rust demo code
"Start where you are. Use what you have. Do what you can."
- Arthur Ashe

This track is a place to think about new projects, point to existing projects, and comment about their goals and deficiencies.

1.0 Projects List

Completed Projects Code Comparison Projects
Complete programs found in the repositories, linked in the Repos dropdown in top menu, that build and run using Visual Studio or Visual Studio Code IDE tool chains. Command line tools, component libraries, test and logging frameworks. These require intermediate command of the language and tool chain for C++, Rust, C#, or Python. Components that are simple enough to support implementing in two or more languages and comparing line count, scope-based complexity, need for other libraries, and making judgements about clarity and maintainability. But having interesting operations, implementations, and information management.
  1. BuildOn: Rust Building Rust Textfinder from composable parts.
    • Documentation: BuildOn
    • Specification: architecture ✔, implementation ✔
    • Code: BuildOn Repository
    • Needed Improvements: Command line parsing is not very ergonomic. Parser needs work.
  2. CommCompare: C++ and Rust Queued message communicatiors in C++ and Rust. Compares performance for different platfroms.
  3. C++ Sockets (Mike Corley) C++ Sockets library - compatible with Windows and Linux.
  4. more coming from Repositories
  1. Call graph analysis Building a call graph for a project's source code entails code parsing to find function definitions and invocations and building a directed graph of the function invocations. Most of the parts have been built for C++, i.e., a relatively simple static parser and directed graph class. The intent is to port the C++ code to Rust and build a useful command line tool.

    References:

    The C++ Parser has more capability than needed for this tool, so the Rust parser is expected to be considerably simpler.
  2. Link checker Checking links requires finding web pages in a directory tree, finding links in each page and storing in a table, along with location metadata. The table is then fed into an http client, looking for 404 messages. The Rust crates.io has several clients that should work nicely here. A side benefit is that this could be the basis for a link dependency analyzer.
  3. more coming
Technical Debt Projects Post Projects
Tools designed to help remove archaic content and refactor pages. Most of these will focus on migrating scripts and styles into separate linked pages and removing orphan pages, scripts, and styles. Projects that are the basis for posts to open-source communities, e.g., Rust users forum, Rust user groups, Rust discord server that start with small simple prototypes, then grow into interesting modular structures using pipelines, blocking queues, and thread pools.
  1. Link checker Checking links requires finding web pages in a directory tree, finding links in each page and storing in a table, along with location metadata. The table is then fed into an http client, looking for 404 messages. The Rust crates.io has several clients that should work nicely here. A side benefit is that this could be the basis for a link dependency analyzer.
  2. Page link graph Build graph of page links for contents of a directory tree holding web pages.
    • Extract page links from all files in a directory tree including html and script files.
    • Build graph using hash map of tuples of fullyqualified path name and vector of children.
    • Build one or more command-line tools that use the graph to find pages with no parents, deep hierarchies, and children with broken paths.
  3. Style and script structure Find all styles and scripts that are in page body, page head, and linked files.
    • Styles: find duplicate selectors, unused selectors, altered selector styles.
    • Scripts: find duplicate function names, unused functions, altered function bodies.
    • Figuring out what to do with that information is probably a developer task.
  4. more coming
  1. TextFinder Find all files in a directory tree that contain a specified string fragment.
    • Start with fixed options for path, display, text vs regex, ...
    • Use a simple directory walker, text searcher, and display
    • Build a pipeline using generic versions of the above and passing information down pipeline with enqueued messages.
    • Expand command line parsing to accept program options.
  2. Call graph analysis Building a call graph for a project's source code entails code parsing to find function definitions and invocations and building a directed graph of the function invocations. Most of the parts have been built for C++, i.e., a relatively simple static parser and directed graph class. The intent is to port the C++ code to Rust and build a useful command line tool.

    References:

    The C++ Parser has more capability than needed for this tool, so the Rust parser is expected to be considerably simpler.
  3. more coming
Speculative Projects Suggested Projects
These may or may not be useful, may have vague descriptions, or may require a lot of effort to master fundamentals of a new programming environment. This group is a staging area for New Projects or the dumpster. Good ways of building expertise in C++, Rust, C#, and Python.
  1. Text Finder with Elixir Elixir is a functional language derived from Erlang implementing effective concurrent and parallel processing. Text Finder has been implemented with Rust using a pipeline of directory search, text search, and queued display processing. This project will provide a nice chance to compare Rust concurrency with Elixir's.

    References:

  2. Execute ML Models using Mojo Mojo is a language with Multi-Level Intermediate Representation (MLIR) backend and is compatible with Python toolsets.

    references

  3. Build ML Models using ML.NET Model Builder Model Builder is a beta framework for building Machine Learning models using a visual interface for specifying learning data and initiating a build.

    references

  4. more coming
  1. Do Exercises in C++ Story Most are relatively simple, some have suggested designs, very few have solutions.
  2. Do Exercises in Rust Story Most are relatively simple, some have suggested designs, very few have solutions.
  3. Do Exercises in Rust Bites Most are relatively simple, some have suggested designs, very few have solutions.
  4. Modify examples in Rust By Example Most are relatively simple, some have suggested designs, very few have solutions.
  5. more coming

2.0 References

Annotated References 
Rust References C++ References
ebook in six chapters about Rust programming language
ebook in eleven chapters about C++ programming language
sequence of pages focused on specific language features
sequence of pages focused on specific language features (incomplete, just started)
table of common terms with explanations
thorough reference for C++ programming lanaguage
Community-based collection of Rust libraries
list of libraries that support many types of program operations.
Rust course from Google
blog for intermediate to advanced developers, focuses on principles and patterns
Short discussions, lists of questions
C++ Tutorial derived from StackOverflow
idioms and patterns
large collection of links to excellent Rust resources
Examples of the way things work in Rust
C# References Python References
Overview, Reference, What's new
What's new, Tutorial, Library reference, Language reference
Programming References Engineering References
Architecture, programming, security, development
  Next Prev Pages Sections About Keys