Hello World and Welcome

I publishing code to contribute to our World.

Hi, My name is Ryan Scott White and I live in the San Francisco Bay area. This site will be mostly dedicated to share code and ideas. My main passion has been AI programming since high school, so you will find items related to that.

Outlook message deduplication tool - A tool to move or delete duplicate emails in Outlook on Windows.

Do you have duplicate messages in our Outlook because you accidently copied instead of moved them. You can use this tool to cleanup those documents. This tool has not been heavly tested so use with caution and always backup your data!/p>

Built: October 2022

Article on RyanWhite.org

Newton Plus - Fast Square Root algorithm for large numbers - Worlds fastest?

A Fast square root function for BigIntegers and floats. The algorithm uses a variety of new and existing ideas to calculate the square root with greater efficiency and better performance than other algorithms. The performance of this function only starts large numbers above 2^52. It is presented in both Java and C# versions./p>

Built: November 2020 - Febuary 2022

Article on CodeProject and RyanWhite.org

Detecting Infinite Loops

Can we detect if a finite program will hault and get stuck in a loop? Yes we can as long as the program does not have infite memory. What are some possible good methods to do this. Note: I did no prior research into this so no references.

Built: August 2019

GCN Assembler for AMD GPUs

Worlds first open source and directly usable AMD GCN GPU compiler.

The first open source assembler/compiler written in C# .net.

It had some good ideas for an asm complier:

  • First of it's kind, 3-letter abbrivated data types that would state the type(vector or scaler), size, and datatype(int/unsigned/float/bit). v4i would be vector-4byte-integer or s8f would be a double.(first of its kind?)
  • It would auto allicate registers but registers could also be forced to a specific register number. (first of its kind?)
  • Inline Variable Declarations - Example: "v_add_i32 int x, y, z." would declare x in the same line.(first of its kind in asm?)
  • Variable Indexing - Variable indexing adds the ability to access a particular register in a multi-register variable. For example, with s8b myVar there might be a need to access the second register. This can be achieved by appending a [1] to the variable.
  • Free a Variable manually - example "free myVar1" would free the name myVar1 and let the asmembler know that register was free. (first of its kind in asm?)
  • Choose a register pool - example: #S_POOL s22, s23, s24, s27, s29, s30, s31, s33, s34, s35, s36, s37

Article on CodeProject and Source Code on GitHub

Built: February 2015


This was a nice program called CudaPAD that had asm in a right side vertical windows and the source c++ code on the left side vertical window. This was the first of its kind - so I guess I invented it. Just a few years later another gentlemen, Matt Godbolt, had a simular idea and created GCC explorer (later named to Compiler Explorer). Seeing the popularity of this I guess I should have stuck with my CudaPAD!

Worlds First side-by-side code to Assembly/IL...

  • that automaticlly updates asm
  • with Diff
  • with different compiler options in the menus
  • that removed junk code
  • with Syntex Highlihting
  • with Single-click register highlighting and search

What is CudaPAD?

  • Enter your Cuda c++ code in the left window and the assembly shows up on the right. (Note: This 1st item was not my idea. I got this was from an AMD tool called Brooke++ from 2007)
  • Automatically starts re-compiling each time a change is made in the left source window. (and it indicates it is compiling)
  • Menu options at the top for selecting what compiler options
  • A built in Diff shows the changes after every action.
  • Visual lines match up the code in the C++ to asm on the right.
  • Syntax Highlighting, Clean assembly Formatting
  • Online Error/Warning Search
  • Single-click register highlighting and search (added Jan 2016)
Article on CodeProject and RyanWhite.org and source code on GitHub

Built: December 2008

Text Template Transformation Engine / Code Generation Tool in C#

A simple drop-in function that provides T4 like template based text generation.

Basically text transformations, also called dynamic text, allows the use of programming methods to modify text. Common uses might be for repeating sections of text, filling in fields on an ASP page, showing a username or account code in an email, or to write 1 to 1000 on a webpage.

This project is similar to Microsoft's T4, but simpler. It is similar because it uses encapsulated C# code to inject text. Microsoft Visual Studio's T4 is more powerful and this project is not meant to be a replacement... at least not inside of Visual Studio! There are a couple of issues when using T4 templates in 3rd party applications. The foremost is the licensing. The T4 DLL is not redistributable. There are funky ways around this by installing some MS packages that have the DLL or installing Visual Studio express but that is messy. This project by contrast is not even a DLL, it is a simple drop in function. Another issue is T4 does not mesh well with many syntax highlighting and code completion projects. To work around this, I created \*: code-here :*\ like commands in comments. This allows this templating system to be used directly in C#/C++ files within causing havic on design time error checking.

Article on RyanWhite.org and CodeProject and source code on GitHub

Built: January 2015