Wow, what a broad question, I'm not sure where to begin.
I love animals and have had (or my family when I was growing up), birds (a dove and parakeet), goldfish (a couple lived to about 20 years old), a tarantula (G. porteri), dogs, and a cat. I rehome spiders who are in dangerous (for them) locations in my house to more beneficial places for everyone involved.
I have a wide variety of interests including listining to music of many different genres (both recorded and live), writing and playing music (though I am good at neither), watching movies (mostly comedy, horror, sci-fi/fantasy, and documentaries), reading (mostly non-fiction these days), playing video games, puns, walking in forest preserves, and programming.
I started typing programs from books and magazines into my family's Commodore VIC-20 when I was 4, and stared writing my own programs in Commodore BASIC when I was 8, though none of those are what anyone would consider a masterpiece. I moved on to GW-BASIC, Pascal, C, and x86 Aseembly language over the next several years. Because of this interest, I was occasionally being paid in pizzas to write small utilities for a tiny company that I knew the owner of in junior high and highschool. I got my first real programming job while in college.
Which brings me to...
I have been a full-time professional programmer for 25 years and, in that time, have used a number of languages (though some for only a short while):
- Assembly Language (x86)
- Bash (Linux, UNIX)
- Batch (DOS/Windows)
- C
- C++
- C#
- COBOL
- CSS
- HTML
- JavaScript
- Perl
- PHP
- Python
- SQL (Oracle, MySQL, SQL Server, Postgres)
- VBA
- VBScript
- Visual Batch Script
I've also used a number of other languages non-professionally:
- AutoIt
- BASIC (various flavors)
- FORTRAN
- Java
- Pascal
These days, in my full-time employment, I mostly use Perl, Python, SQL, CSS, JavaScript, and HTML with a bit of Bash here and there.
I find a number of topics (in both my professional as well as my hobby programming) interesting. These include (in no particular order):
-
programatic image manipulation
-
automation
-
data collection and analysis
-
machine learning and artificial intelligence
-
puzzle solving
My desire is to write software that helps people in their daily lives or helps society as a whole.
And that brings me to...
My most recent side project, Last Listened, is a program that creates an image with the details of the last songs the user listened to for placing on a website, audio program, etc. Currently, it supports Last.fm, but it is extensible via plugins to support any number of services, local databases, Excel files, or whatever the user needs. This combines my interests of image manipulation as well as data collection and analysis.
Another program that I've released plays the 1980s game "Dragon's Lair". I've always liked that game, but have never been good at it so I decided to work smarter, not harder and create a bot in AutoIt to play it for me.
Nonogram Solver, as its name would imply, solves nonogram puzzles. Mostly, this was written to see if I could come up with an algorithm to solve puzzles like this. I'm sure there are probably more efficient algorithms out there for solving nonograms and some of the code could be improved by using libraries such as pandas, but this was more of quick proof of concept than a "best in show" solver. As small code changes could have huge impacts on the functionality, code tests are ran on each start up to verify that the logic still works correctly. The interface is written in HTML, CSS, and JS and uses webview to communicate between the Python and the interface.
GoldFire Redux is a Python port of a demo I wrote in Assembly language and C in my teens. Most of the keyboard commands from the original have been implemented. Also, all palette files from the original have been included. Additional palette files can be created by the end-user (as in the original).
FakeSysKey is a small C# program that imitates the Windows utility SysKey for use in scambaiting. SysKey creates a system password (distinct from the login password) and makes a computer unusable without the password. Scammers, at least a few years ago, were running SysKey on unspecting users' computers and extorting them for the password. Scambaiters could replace to replace the official version on their VM (or actual computer for those who live dangerously) with this look-alike. This had two benefits. The first is that this imitation does not actually encrypt anything. The second is that, upon submitting the form, FakeSysKey always reports that the passwords do not match and displays the password in plain text. If the scammer has locked anyone's computer, and the scambaiter has their contact information, they may be able to use this password to help the victim recover their computer. At least one major YouTube scambaiter had been using this program. This has probably been the biggest help to society of any of my side projects.
I have a number of other projects in the works as well as old projects that are no longer useful, but may be of interest to someone. Be sure to check back so you don't miss anything.