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.
|
-
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.
-
CommCompare: C++ and Rust
Queued message communicatiors in C++ and Rust. Compares performance for
different platfroms.
-
C++ Sockets (Mike Corley)
C++ Sockets library - compatible with Windows and Linux.
-
more coming from Repositories
|
-
show_all & do_each
Using both C++ and Rust:
build function that shows every element of a collection or scalar with any type
of element
build function that executes a, possibly mutable, closure on every element of
a collection or scalar with any type of element.
This will be a nice demonstration of generics and iteration.
-
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.
-
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.
-
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.
|
-
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.
-
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.
-
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.
-
more coming
|
-
Distinguished Rust
Extract from RustBites_GettingStarted.html
Remove all but the tables and immediate commentary
Fix links and menu dropdowns
Edit embedded links, being quick to remove
This will be a nice beginning piece for developers new to Rust
-
Rust Safety
Extract from RustBites_Safety.html
Won't need much editing
Fix links and menu dropdowns
This will be a Rust feature presentation
-
show_all & do_each
Using both C++ and Rust:
build function that shows every element of a collection or scalar with any type
of element
build function that executes a, possibly mutable, closure on every element of
a collection or scalar with any type of element.
This will be a nice demonstration of generics and iteration.
-
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.
-
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.
-
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.
|
-
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:
-
Execute ML Models using Mojo
Mojo is a language with Multi-Level Intermediate Representation (MLIR) backend and
is compatible with Python toolsets.
references
-
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
-
more coming
|
-
Do Exercises in C++ Story
Most are relatively simple, some have suggested designs, very few have solutions.
-
Do Exercises in Rust Story
Most are relatively simple, some have suggested designs, very few have solutions.
-
Do Exercises in Rust Bites
Most are relatively simple, some have suggested designs, very few have solutions.
-
Modify examples in Rust By Example
Most are relatively simple, some have suggested designs, very few have solutions.
-
more coming
|