I have been mostly out of the open-source world for a while now.
I would like to move/mirror this over at https://ab.hl9.net. I will be doing that in the next few weeks.
Additionally, I have a large number of small scripts/projects which need polishing and released. Mostly very small utilities for Linux. Some are distro-specific, some are generic. I would like to ensure they are licensed and packaged properly.
I am A.B. Carroll III.
I have been a professional software engineer since before I was 18, completing my first contract gig at age 16, some 20+ years ago. Our family received its first computer, a 66MHz DX2, in 1995, and connected to the internet for the first time in 1997. I wrote my first HTML webpage at age 8 and began working with languages such as C, Perl, and eventually PHP in my early teens. At the same time, I delved into Linux and BSD-based operating systems, laying the foundation for a lifelong passion for open source, POSIX, and technology.
Today, in my mid 30's, I am proficient in a wide range of programming languages and environments. I am particularly skilled in PHP, Python, JavaScript, the C Language, and Linux/BSD operations. In addition to my technical expertise, I excel in project management, software architecture, ensuring that development and operations align with business goals while maintaining high-quality standards.
Beyond my experience in application development and systems administration—which I have practiced professionally for over 14 years—I am deeply fascinated by the inner workings of programming languages. I enjoy dissecting and understanding the technical intricacies of programming language design, including error handling models, the differences between static and dynamic typing, various object-oriented paradigms, and how different languages manage memory. I also explore how virtual machines operate—be it the Java VM, Python’s VM, or PHP’s VM—as well as how just-in-time compilation and static analysis contribute to optimizing performance across diverse architectures. Of particular interest is the LLVM Compiler Architecture, and its various compiler optimization methods including Polly, the polyhederal compiler optimization suite for LLVM, and various interesting methodology such as register spilling.
Over the years, I have compiled an extensive collection of personal notes and experiences. Although much of this material remains private—containing trade secrets or project-specific details—I am gradually sharing the portions that might benefit the broader community.
I do this work professionally to pay my bills, so the accuracy and clarity of these notes are of great importance to me. If you find any of the content to be inaccurate, inappropriate, or if you’d simply like to chat, please feel free to contact me. I am regularly available on the FreeNode and OFTC IRC networks under the nickname mr_ab
.
On top of my notes, I have written a few small open source projects over the years.
bash-better-history
: A part of a larger suite of Bash/shell environment scripts, this will ensure that Bash shell history is always kept, and keeps it highly searchable.bash-profile.d
: A part of a larger suite of Bash/shell environment scripts, this is a simple system to manage.bashrc
modifications, particularly for someone who accesses many machines remotely and wishes to keep their environment consistent.tmux-start
: A small utility to launchtmux
, so you can attach to existing sessions quickly.reproducible-mysqldump-for-vcs
: A very simple script that can generate reproducible MySQL/MariaDB SQL table schemas for version control systems (VCS). By comparing one to the next, you can see if a particular database has changed schema without notifying the DB administrator. The script even will generate git commits for you if the schema changes. Also tracks triggers.- PHP
ab/lib-mime
: A simple mime type library, available in composer.ab/twidal-x
: A fork of a project calledtwidal
, which integrates into Twig for XML-based data.ab/locoX
: A recursive-descent monadic parser-generator. Based on a project called Loco, but improved and modernized using modern PHP techniques.- simple-ansi-escape: Obsolete, but interesting project if you want to look into ANSI tty/pty escape sequences.
pressuretest-php
: Obsolete set of scripts for testing for memory leaks in particular PHP functions.- ab-web-starter: A very simple project which shows how to use various PHP modularity properly
- TypeScript
- ts-logger: A TypeScript logging class that copies PHP PSR-3
- Obsolete
abcarroll/fiche
- A fork of the originalfiche
project which took in several improvements from other forks on github, and put them into a single repo.fiche
is a simple pastebin server.
- Perl One Liners - Excellent reference on quick one-liners for perl.
- Building Compilers
- Language Design Overview
- Parser and Lexer Overview
- My list of Parsers and Lexer Software
- Information regarding PHP and parsing
- Linux Overview
- OpenBSD Overview
- Linux Image Processing and Conversion
- Linux NSS and PAM login
- Linux RAID through MDADM
- Remote Control of a Linux Machine
- Linux and BSD Resources
- A.B's PHP Cookbook
- About superglobals and globals
- async and parallel execution in PHP
- Foreign Function Interface in PHP
- PHP: Foreign Function Interface
- PHP: Quality Assurance, Testing, and Deployment
- PHP: Getting mime types (quick guide)
- PHP and Git
- PHP and PDF - Also general PDF information
- PHP 5.x to 7.x Migration - Tools
- Quality Assurance (QA) and Testing in PHP
- Software Architecture Resources - DDD Design
- PHP: Misc - Some misc. notes
- A.B's Guide to PHP Testing
- Application Servers - All about PHP-based application servers (like gearman)
- Quality Assurance (QA) and Testing in PHP
- Software Architecture Resources - DDD Design
Since this repository is written in markdown, markdown related things go first, here:
- [] is a pretty good markup cheat sheet.
- [highlight.js languages repository] is how to find out which languages are called what using the syntax highlighting.
For example, you need to use
sql
notmysql
, but interestingly there is apgsql
, too. Just remove ".js" from the names in the directory.
- Licensing Works: An Overview
- https://www.oreilly.com/library/view/perl-cookbook/1565922433/ch20s07.html
- A lot.
- To come:
- Quick Reference of Protocols & File Formats (Information and resources on various file formats and protocols (usually network ones).)
- 'Enterprise' Software Development (When I write software it usually has to scale out. This is dedicated to that, particularly with PHP and the operations techniques behind it.)
- Debian Linux (I use Debian linux primarily as my personal desktop as well as my first choice for server operating systems. However, that's not always the best choice. More about that... SSO, Forking...)
- Other Big Collections of Notes (These are collections of links and resources I've legitimately found useful, but that I did not create or write myself.)
- CI / CD, Automation (Deployment, Jenkins, Drone, Gitea, and so much more...)
- Clean up a lot of other PHP+C notes.
- AWS/ELK stuff.
- Twig and friends
- Write some scripts to keep this repo clean and tidy.
For general meta information and licensing information (CC BY-SA 4.0) about this repository, please see META.md which also contains a brief overview how the non-code text within this repository is licensed. This is separate from Licensing.Works.Overview.md which is an overview of different licenses and plain-english what they mean.
(C) Copyright 2019-2025 A.B. Carroll (http://github.com/abcarroll/abcarroll)
See meta/META.md for full use, licensing, and copyright details.