Also known as "mcmonkey" on the internet.
I have a website about me AlexGoodwin.dev.
My avatar here on GitHub and most places is an altered version Luke Skywalker from Jedi Knight 2.
I am the CEO of FreneticLLC and the project lead of DenizenScript, alongside work on various other open source projects and less-publicly-notable companies.
I was previously a Machine Learning Engineer at Stability AI and a Software Engineer at Comfy Org, alongside work on a variety of other former projects and teams.
I learned programming through game modding when I was a kid, and I never stopped. I have a pretty broad range of experience now.
I write blog posts sometimes on the Frenetic LLC Blog and Patreon. I write a lot more in various Discords and their announcement channels, including especially SwarmUI, Denizen, and Frenetic discords.
Most of my work is public on my GitHub / in one of the GitHub orgs I own. I use mcmonkeyprojects as a mini-org just to separate my noteworthy personal projects from the random dump on my profile - FreneticLLC and DenizenScript orgs are also full of projects I made. I have done programming work for-hire that is obviously not public, and of course I've had a variety of personal projects that I've never had reason to publish. Sometimes the small personal projects wind up on my Gist if somebody asks me to share it. I have contributed to a variety of other public projects here on GitHub that you can find if you go back through my account history.
- Significant/long term experience: C# [1] [2] [3] [4] [5] [6], Java [1] [2] [3]
- Experienced: Web (HTML/CSS/JavaScript) [1] [2] [3] [4], TypeScript [1], Python [1] [2] [3], GLSL [1]
- Have worked in: x86_64 Assembly, C [1], C++, Rust [1], Lua, Bash, Batch, Bohemia Script, .NET CIL [1], Java Byte Code
- Have dabbled: SQL, PHP, Powershell, HLSL, Various domain-specific languages
- Created myself lol: DenizenScript [1] [2], FreneticScript [1]
If you take a look through any of the above linked project README's or related documentation sites you'll notice I take good documentation very seriously.
Some of the programming-related tools I have developed with (not all, hard to track) (also not sorted, some of these are heavy experience and some light):
- Hardware interfaces: x86, x86_64, OpenGL, OpenAL, Nvidia CUDA, Win32
- Data syntaxes: ini, toml, quake cfg, JSON, HTML, XML, YAML, FDS (created myself lol)
- Databases: SQL servers, SQLite, MongoDB, Redis, LiteDB, some proprietary corporate stuff too (otel, AWS S3, datadog, bigquery, ...)
- Communication: Email (automation, account confirmation tools, etc.), IRC (bots), Discord (bots), GitHub (API), xenforo (modifications/extensions), phpbb (modifications/extensions)
- IDEs: Visual Studio (C#, C, C++), Code::Blocks (C, C++), VS Code (variety of langs), Cursor (variety of langs), NP++, IntelliJ IDEA (Java), Eclipse (past Java), NetBeans (past Java)
- Advanced dev tools: Java Decompiler, Java Bytecode Viewer, ILSpy, HexEdit, YourKit
- Operating Systems: Windows (XP/7/8/8.1/10/11, Home and Pro), Linux (Debian server/desktop, Raspbian desktop, Ubuntu server/desktop (and derivatives), CentOS)
- CLI tools: Windows Batch, Powershell, Bash via Linux terminal, Bash over SSH, git (obviously lol), live shells for SQL/Mongo/python/etc.
- Frontend web tech: Raw HTML/JS/CSS, TypeScript Compilers, React, Vue, Vite, NextJS, Tailwind
- Games I've modded: Empire at War (C, XML), Jedi Knight 2 (C, C++) [1], Jedi Academy (C, C++), Minecraft (Java) [1], Garry's Mod (Lua), Arma 3 (in-house Bohemia Script), and various games I dabbled in modding but never published much for
I primarily use git via GitHub Desktop and think it's wild that more people don't use it. I have the experience with git
CLI to use it when GitHub Desktop is insufficient (eg advanced merging, rebasing, etc).
- Webdev (multiple sites for various projects, and site generators)
- Game dev (Voxalia)
- Game engine dev (FreneticGameEngine)
- low-level systems (experiments with building Assembly and C-API tools, and OS modifications)
- low-level CPU/GPU code optimization
- algorithm optimization
- scripting language development (DenizenScript/FreneticScript)
- microservices (my repo list is full of em)
- AI/ML technology (Stable Diffusion and LLM tools, including work with Inference and Training, and UI/UX tool development for it, including professional work at Stability.AI) ("AI Art" isn't a thing, "AI Image Generation" is a tool, a human can use it to make art, but that's human art with AI as a tool)
- software security (have worked on projects related to data encryption, account privacy protection, etc.) (Also I heavily research news related to security issues - new vulns, future threats like quantum, new ways to protect users, etc.) (have also worked as red-team for other projects at request of those project's authors)
- user interfaces (UI/GUI) (I'm not a graphic designer though)
- User Experience (UX) (I have very strong opinions about good UX. Software tools should maximize user-freedom while minimizing confusion, and we can do that a lot better than many popular software projects currently do)
- databases (Mongo and LiteDB are my favorite, SQL I can handle but in my opinion its overprescribed)
- advanced asynchronous programming and multithreading (most async code in the world is ticking timebombs of missing access locks. I try to be better than most about avoiding that)
- data processing and streaming, including low-level (eg tarfiles, network data streams, ...) and high-level (databases, data management interfaces, etc)
- I am a co-author of SD3: Scaling Rectified Flow Transformers for High-Resolution Image Synthesis
- I am the first listed "acknowledgement" for SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
- I am also cited in a few papers for various other works, notably my Dynamic Thresholding work has been cited a few times
- I discovered a unet optimization technique (my test code here) a few months before the authors of DeepCache beat me to actually publishing a paper about the same idea
- 1: Communication. Code is code, but code with thorough documentation, an active support chat, etc. is a project. I believe it's extremely important for creators and leaders to emphasize communication. (I learned this the hard way - I used to be pretty bad at it, and have seen the difference in results as I grew and improved my communication).
- 2: User choice. My biggest problem with many software projects I've used is that you're often stuck doing it the way the author does (or not at all), with maybe a few settings to give a little flex. I believe projects should strive to empower the end-user to make their own choices and do things their own ways. You'll notice many of my public projects are scripting languages, modding tools, etc. - designed to increase user freedom of choice where previously it was lacking.