Projects
Free Coding Tutorials — I originally wrote a book about software development, but then converted it into a website instead of publishing it as a traditional book. It features tutorials for Java, Python, C++, Bash, Git, HTML, CSS, JavaScript, Linux, Apache, MySQL, PHP, security, data structures, algorithms, design patterns, cloud, virtualization, and many other miscellaneous tech topics. Link
IT ticketing system — for a database class at NEIU, I had a final project where I had to create a Java program that interacted with a database that used at least 4 tables. I chose to make a ticketing system, which is a system that lets an employee of a company request support from the IT department, which has a title, description, etc. An employee can be assigned to a ticket, and there may or may not be a standard procedure for it. Technicians can look at open tickets, tickets they're assigned to, and things like that. When a ticket is finished, it's "closed" and no longer active, and the technician can write a description of the solution to the issue. The point of this project was to get more experience using databases. Link
File Hider — a file steganography tool for hiding files within other files. Written in Java with JavaFX for the GUI. Link
EZcrypt — a file encryption/decryption tool. Written in Java with JavaFX for the GUI. Link
Intro to security — a short book about information security. Uses Markdown for the chapters. Link
ChiWeather — a bot that gets weather data for Chicago using a weather API. It also uses FTP to download a photo of the sky taken on another device, and then uses a script to add a timestamp to the image. It then uses the Twitter API to send a tweet that contains weather data. Written in Python and Bash. It has two separate components: one for taking the photo on a Raspberry Pi Zero (written in Bash), and another for building and sending the tweet (Python). It uses crontab for task scheduling. Link
To-do list app — a LAMP stack web-based to-do list app which stores to-do items in a database and requires authentication to view. I made this because I wanted a simple to-do list app, because I find myself using text files for writing to-do lists. Not only is it useful for me, it also demonstrates proficiency with Apache, MySQL, and PHP. Link
Prime Finder — a program that finds prime numbers, gaps between primes, and frequency of prime number occurrence. Then it graphs the data. It can save its place and then quit and resume later. Written in C++ and gnuplot. Link
AWS S3 Bucket Scraper — a simple proof-of-concept security tool, written in Python, that demonstrates how misconfiguring an S3 bucket can be bad, as the S3 API's XML responses can let someone enumerate all objects within a bucket. This tool can download all files in an S3 bucket. If you're going to use the cloud, it's important that you understand security for it. If you're an employer and you'd like to see the security projects I've written, let me know. Otherwise, they are private so that people can't misuse them.
ASIO — Alan's Simple IO module for Python 3. It makes it easier to make HTTP requests, get HTTP responses, download files, write data to files, and more. It supports Unicode, ASCII, and binary data. Link
Clone All — a Python tool for cloning every repo from a given GitHub user. Uses ASIO for IO operations. Link
AMP — Alan's Maintenance Program. A shell script for automating Linux tasks, such as installing software updates, testing the network connection, and scanning for malware. Link
0x416c616e.github.io / alans100daysofcode.com — a Jekyll-based blog. Jekyll is a static site generator written in Ruby. I didn't make Jekyll though, just used it. A static site generator is a type of tool that is used as an alternative to a content management system, which has the benefits of being simpler and more secure due to decreased attack surface, and having more of the code running on the developer's machine rather than a web server. Link
Static Site Generator — I was frustrated with some of the quirks of Jekyll (needing specific versions of dependencies and getting errors), so I made my own simple static site generator instead. Written in Python. Link
Java weather API tool — a tool for downloading and saving weather data. Written in Java. Link
Software development book — a book about software development in a variety of languages. Not yet published, but unfinished versions are available upon request. Update: I converted this project to freecodingtutorials.com, which has the same exact writing as the book, but in a website instead of a book. Approximately 200,000 words.
Unnamed 2D game engine — a 2-dimensional game engine for RPG games. It features tile-based movement and collision detection, as well as 2D graphics. It also has a level editor. Written in Java and uses JavaFX for the GUI. Link
Tech quotes — a project that randomly displays tech quotes from famous people in tech. Written in JavaScript. Link
ClearClipboard — a browser add-on for Firefox and Chrome that clears your clipboard. Useful when you're copying and pasting something you only need to use for a little while and don't want to accidentally paste later. Link
Dice Roller — a browser add-on that lets you roll dice or specify a custom range for random numbers to generate. Link
Saint Louis Software website — a static website with basic information about who I am, what my education is, and what I can do. Made with HTML, CSS, JavaScript, Bootstrap, etc. Primarily a front-end development project. Link
Various Wordpress websites — I've made sites with Wordpress, a popular LAMP-based content management system. Examples: Hello Life Skills and Smart Financial Research. Link1 Link2
PHP web shell — a website security tool written in PHP. If you're an employer and you'd like to see the security projects I've written, let me know. Otherwise, they are private so that people can't misuse them.
Simple rootkits — a collection of simple scripts relating to rootkits, backdoors, reverse shells, bind shells, and listeners. Only for educational purposes, intended to demonstrate simple security concepts about remote interactive shells via /dev/tcp/, TCP listeners, and how crontab can be misused. If you're an employer and you'd like to see the security projects I've written, let me know. Otherwise, they are private so that people can't misuse them.
Rootkit Finder — a simple security tool for finding rootkits and other suspicious stuff in Linux. Link
Abyss — a simple botnet proof-of-concept project which uses cron for persistence. Instead of having a typical reverse shell, it uses a steganographic means of establishing 2-way communication, by downloading an image that has a hidden command in it. It then executes the command and makes a request to a web server with the results of the command as a query string, which can then be seen in the server traffic logs. This, like my other security projects, is for educational, non-malicious purposes only. If you're an employer and you'd like to see the security projects I've written, let me know. Otherwise, they are private so that people can't misuse them.
File servers — I've set up multiple file servers with FreeNAS and ZFS for SMB file sharing. I've set up user accounts and permissions so that people can access their own files, but not other people's. Primarily used for Windows desktop file backups. Link
Custom routers — I've set up routers with pfSense and DD-WRT. I've also used Cisco IOS and FortiOS, though those aren't really custom per se. Link
Server rack project — built some servers and a network. Set up all the physical stuff as well as software. It features an open frame server rack, patch panel, Cisco switch, DD-WRT router, Fortigate router, mini-ITX server running VMware ESXi, a file server running FreeNAS, an Ubiquiti AP, a network printer, and some servers running Ubuntu and Kubernetes, though I haven't done much with Kubernetes just yet. Photos/screenshots coming soon.
Computer science flash cards — digital flash cards (for an app called Anki) for my computer science classes. Link