This page is an overview of the languages I've used, and my history with learning them. Also check out my blog! I started the blog in summer of 2017 when my contract at University of Arkansas ended and I was trying to learn basic computer science (algorithms, data structures) and implement what I was learning in C. I've picked it back up intermittently as I have free time between teaching jobs. Spring of 2023 I started writing about what I've been learning, mainly Python and JavaScript, from Erdös Institute. I even have a few posts about machine learning algorithms!
You can also see some of code I've written on my Github account.
$\LaTeX$ is a typesetting language used to render math equations. It is the standard for formatting math papers for publication (AMS has several packages).
I first learned $\LaTeX$ in my junior or senior year of undergrad. To use it, I downloaded an entire suite with MikTeX, which is the distribution, its package manager, and a program called TeXnicCenter, a text editor with a compiler and a preview of the .pdf rendered. What I liked about TeXnicCenter was that it had buttons for common $\LaTeX$ commands, and this is how I first learned them.
However, as I got more familiar with $\LaTeX$, I found that I no longer needed TeXnicCenter. At one point during grad school, I found a way to compile directly from Notepad++ (with MikTeX installed), then render the .pdf in the lightweight .pdf viewer, Sumatra PDF.
$\LaTeX$ has a few notable incarnations. An earlier version exists, called TeX back when it was first implemented, and called PlainTeX now. Until recent years, my Ph. D. advisor wrote all of his lecture notes using PlainTeX, so when I was giving talks at the student seminars in grad school, I wanted to make my lecture notes look like his. Here is an example of a talk I wrote using PlainTeX.
$\LaTeX$ also has the capability to make posters and slide shows. Here is a poster some students of mine and I made. $\LaTeX$ has a document class called Beamer that is used to make slide shows. The fun part is all the commands that customize the color scheme and layout. It is also possible to combine slide shows into one big slide show. Here is an example, of some individual calc I lectures I made at University of Arkansas. Here is the final combined output. This isn't the only time I've made lecture slides this way (see my AcademiaMaterials repository).
The final thing I will say about $\LaTeX$ is that it has a package called TikZ that is used for making graphics. There's a bit of a learning curve to use it, but I spent some time learning some things when I was in grad school. This talk uses it a lot. The poster I linked to above also uses it a bit.
Even though most of the Python I have learned has been recent, I first used it in spring of 2018 via SageMath. I was teaching the linear algebra with differential equations course at James Madison University and I wanted to give the students visualizations like slope fields. I chose SageMath because I thought being Python-based it would be easy to use, and SageMath doesn't require installation, it can be run on the cloud through CoCalc. Here is an assignment where I used SageMath.
I started to really learn Python again when I joined Erdös Institute in fall of 2022. For their data science boot camp there is a series of Python preparation videos. The boot camp has a data science project component, too, to be done in groups. Since I missed it, the following February I decided to try to do the boot camp project on my own. I was surprised at how much Python I was able to learn in just a month, just by referring to the boot camp lectures and Googling things. Here is a script I wrote with barely any Python experience, that scrapes metadata from features posts on fivethirtyeight.com. I learned so much Python in such a short period of time, that I was able to display enough proficiency to get a TA position for the May 2023 data science boot camp.
I first learned HTML from a course I took in high school. Then I think the next time I used it was for a website about a project I did in college where I was building a small radio telescope. I don't think the site exists anymore, but when I tried to find it I found this paper that cites it. And I managed to find the source file.
I don't think I learned about CSS until I made my personal page in grad school (here is the source file), then I used it more on my Arkansas website.
While doing the data visualization minicourse project from Erdös Institute I learned some best practices for writing HTML/CSS. You can see the difference between the source files I posted above and the source for this website.
I recently learned some R teaching intro to stats at Centre College. The college has an RStudio server with teaching materials other professors at Centre have used for the course. When modifying these documents for my own use I learned how to compile LaTeX documents with embedded R code that would print the output of the code when compiled (.Rnw files). Here is an example of a .Rnw file I modified for one of my lectures. Here is the lecture.
I've used JavaScript since as early as grad school, but it's always been small snippets I found on the internet to make my webpages do certain things. One ambitious thing I tried to do on my Arkansas website was to have pictures of my cats that change every time you refresh the page. I never got it to work, but you can still see the code commented out on the Arkansas home page source file.
I didn't really learn any JavaScript until April 2023 when I was using the library d3.js for my data visualization minicourse project with Erdös Institute. Here is the final product, the files are in my FitbitStatsProject repository, and I also wrote a couple of blog posts about it.
JavaScript is everywhere! I found out recently that MathJax is another JavaScript library that I had to import to my blog site in order to render $\LaTeX$ in my posts. I've found myself incorporating a little JavaScript in building this website, too. In the future I would like to use this website as a means to practice and experiment using JavaScript. Maybe it's not a good idea to use too much, since it can slow down page-loading time, if the viewer's browser even supports JavaScript. On the other hand, I think using more JavaScript for this website could make it look more contemporary.
I recently bought Flanagan's JavaScript: The Definitive Guide. After reading the first 10 chapters, I've learned a lot about object-oriented programming in general, client-side/frontend and server-side/backend programming, and I've gained some more insight into Python classes. Now I just need to practice what I've learned (this website!).
Macaulay2 (M2) is an open source computer algebra system that uses Gröbner bases in all of its algorithms. It's available for download for FreeBSD, Linux, and Mac OS operating systems, but not Windows. When I was in grad school the M2 site gave directions for running it through Emacs, through a Linux emulator. Here is an example of a script I wrote through Emacs, with the outputs. Nowadays Windows has the built-in emulator, Windows Subsystem for Linux, where you can run M2. I always run M2 straight from the command line, but plenty of people I know still use Emacs.
I actually learned C when I took a computer science course in college, and I did well in it! I remember at one point my instructor told the class that only one person had a grade that was higher than a C. Guess who it was -- I had recently checked my grade and it was at 104%. Unfortunately after that course I never needed to use C again. I did use other languages that were C-based, though (M2 and Matlab).
I decided to try to relearn C in summer of 2017. This was also when I created my GitHub account and my blog. My PracticeAndLearning repository has a few files with C in them. Two of them are Markdown files with embedded images of C that I wrote.