commit a3cb590d260708f6fbedfb3fce137934becfec7b Author: Alex Selimov Date: Fri Jul 11 23:23:10 2025 -0400 Initial commit of site with new terminal theme diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46f5006 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..f320301 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/hugo-theme-terminal"] + path = themes/hugo-theme-terminal + url = https://github.com/panr/hugo-theme-terminal.git diff --git a/README.md b/README.md new file mode 100644 index 0000000..66288d0 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Alex Selimov's Personal Website + +These are the hugo files which can be used to generate [my personal website](https://alexselimov.com). diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..25b6752 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ ++++ +date = '{{ .Date }}' +draft = true +title = '{{ replace .File.ContentBaseName "-" " " | title }}' ++++ diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..e26619b --- /dev/null +++ b/content/_index.md @@ -0,0 +1,18 @@ +--- +title: "" +framed: true +date: 2022-10-03T14:17:10-04:00 +layout: index +--- + +I am a materials scientist and software developer proficient in Rust, Fortran, C++, Java, and Python. I have extensive experience with Unix operating systems on both high performance computing resources and on my personal computer (check out [Void Linux](https://voidlinux.org)). I currently work at [UKG](https://www.ukg.com) as a Java Backend Engineer. + +This website is a place for me to post about a range of topics from professional news, to tech tutorials, to recipes I enjoy very much. Checkout some of my recent posts below or find them all organized by tags [here](/posts). + +I also designed and manage a few websites for family members, so check them out: + +[alexanderselimov.com](https://alexanderselimov.com) + +[iberoamericanliterarysociety.com](https://iberoamericanliterarysociety.com) + +**Checkout some posts below and thanks for stopping by!** diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..e957768 --- /dev/null +++ b/content/about.md @@ -0,0 +1,21 @@ ++++ +title = "About" +date = "2019-01-25" +author = "Radek" ++++ + +# Hi there + +My name is Radek and I'm the author of this theme. I made it to help you present your ideas easier. + +We all know how hard is to start something on the web, especially these days. You need to prepare a bunch of stuff, configure them and when that’s done — create the content. + +This theme is pretty basic and covers all of the essentials. All you have to do is start typing! + +The theme includes: + +- fully customizable color schemes generated by [**terminal.css**](https://panr.github.io/terminal-css/). +- great reading experience thanks to [**Fira Code**](https://github.com/tonsky/FiraCode). +- nice code highlighting thanks to [**PrismJS**](https://prismjs.com) that matches the theme's color scheme. + +So, there you have it... enjoy! diff --git a/content/cv.md b/content/cv.md new file mode 100644 index 0000000..48a18bf --- /dev/null +++ b/content/cv.md @@ -0,0 +1,75 @@ +--- +title: "" +date: 2022-10-04T23:35:54-04:00 +--- + +Alex Selimov +================== + + +**aselimov3@gatech.edu · [https://alexselimov.com](https://alexselimov.com)** + +[{{< fontawesome class="fa-solid fa-download" >}}PDF version](/AlexSelimovCV.pdf) +## Education + +- **Georgia Institute of Technology** (North Avenue, Atlanta, GA 30332)\ + PhD in Materials Science and Engineering (August 2017 - December 2022) +- **University of Central Florida** (4000 Central Florida Blvd, Orlando, FL 32816)\ + B.S. in Mechanical Engineering (August 2013 - December 2016)\ + Bachelor's Thesis: Characterization of Dispersion and Residual Stress in Nanoparticle Reinforced Hybrid Carbon Fiber Composites + +## Publications: + +{{< publications >}} + +## Presentations + +{{< presentations >}} + +## Grants + +- Role: Co-PI (PI. David McDowell), Amount: 1,997,041 Service Units \ +Funding Source: Extreme Science and Engineering Discovery Environment (XSEDE)\ +Project Title: Concurrent atomistic-continuum simulations of extended scale defect interactions in heterogeneous microstructures (TG-MSS150010)\ +Funding Period: Jan 1, 2019 - June 30, 2022 + +## Research Experience +**McDowell Research Group**, Dr. David McDowell, Georgia Tech\ +*Graduate Research Assistant (August 2017 -- Present)* + +- Worked on the development and extension of the Concurrent Atomistic-Continuum method for running massively parallel coarse-grained atomistic simulations of dislocation interactions with interfaces and other defect structures in nanolaminate and stainless steel materials. +- Improved parallel implementation and tuned calculation algorithms of in-house simulation suite obtaining runtime reductions of 66%. Also contributed to a fork of LAMMPS implementing the CAC simulation method. +- Implemented the finite element method to solve conservation law field equations to enable reductions in degrees-of-freedom leading to reduced computational cost. +- Tested various metrics to numerically characterize atomic interface structure of metallic semi-coherent interfaces and applied machine learning methods to track the interface structure evolution with loading. +- Modeled solute distributions in diffuse Cu/Ni semi-coherent interfaces and their effect on the glide of interface misfit dislocations and overall interface properties. +- Investigated the sequential interactions between dislocations and obstacles in various systems to quantify evolving obstacle strength and interaction mechanisms. + +**Mechanics of Materials Organization**, Dr. Xiaowang Zhou, Sandia National Lab\ +*Intern - Engineering Sciences Summer institute (May 2021 -- Aug 2021)* + +- Studied the barrier strength of grain boundaries with embedded helium bubbles to improve hardening predictions of irradiated stainless steel materials, collaboration continued beyond internship period. +- Extended molecular dynamics barostat algorithms to coarse-grained regions for pressure relaxation. +- Worked on CAC capabilities for high temperature dynamics simulations through development of new finite element types and extension of neighboring codes for cluster potentials. + +**AeroStructures Lab**, Dr. Seetha Raghavan, UCF\ +*Research Assistant (September 2013 -- December 2016)* + +- Utilized photoluminescence spectroscopy and piezospectroscopy for the characterization of material and mechanical properties in ceramic and composite materials. +- Worked on collaborative project with Imperial College London (Dr. Ambrose Taylor’s Research Group) for the testing and characterization of novel hybrid carbon fiber reinforced polymer (HCFRP) composites. +- Worked on collaborative project with German Aerospace Center (DLR) to study stress development in thermally grown oxide layers of thermal barrier coatings. + +**Pollock Research Group**, Dr. Tresa Pollock, UCSB \ +*RISE Undergraduate Intern, NSF funded REU (June -- August 2015)* + +- Studied Magnesium-zinc alloys to determine methods for texture weakening for improvement of material properties through analyzing presence of intermetallic particles. +- Utilized scanning electron microscopy to take secondary electron images, backscatter electron images, and to analyze crystallographic texture through electron backscatter diffraction +- Prepared image analysis tools to determine volume fraction of intermetallic particles from SEM images for comparison to grain size distribution of samples with Matlab. + +## Skills + +- Programming in Fortran, C, and C++ with additional expertise utilizing the Message Passing Interface (MPI) for implementation of parallel and scalable simulation tools. +- Programming in MATLAB, HTML, and CSS. +- Data analysis and pipeline creation using Python with Numpy, Scipy, Scikit-Learn, Pandas, and Tkinter modules. Additional familiarity with Jupyter Notebooks. +- Expertise in atomistic simulations using LAMMPS with Molecular Statics, Molecular Dynamics, and Monte-Carlo methods. +- Expertise with Linux software environment and building applications for use with computing cluster architectures. +- Familiarity with software development methodologies including test case design and CI/CD pipelines. diff --git a/content/posts/cuda_on_void.md b/content/posts/cuda_on_void.md new file mode 100644 index 0000000..ca6ab46 --- /dev/null +++ b/content/posts/cuda_on_void.md @@ -0,0 +1,23 @@ +--- +title: "Getting CUDA toolkit installed on Void Linux" +date: 2025-04-15T10:45:26-04:00 +--- + +This is a short post (mainly for myself) to remember how I got CUDA installed on Void Linux. +These steps are as follows: + +1. **Download the installation files:** Go to the CUDA toolkit installation website. Select Linux->x86_64->Debian->11->runfile (local) +2. **Set executable permission:** `chmod +x ./cuda_version.run` +3. **Install using the correct flags:** + ```bash + sudo ./cuda_11.8.0_520.61.05_linux.run --silent --override --toolkit --no-opengl-libs --tmpdir=/home/aselimov/down/tmp + ``` +4. **Add to path:** Build should now be installed at /usr/local/cuda-version. Add the following to your bashrc or zshrc: + ```bash + export PATH="$PATH:/usr/local/cuda-version/bin" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-version/lib64" + ``` + +The reason I had to add the `--tmpdir` command was because I was getting an error message about the default `tmp` directory not having enough space. +Hopefully this helps someone else out! + diff --git a/content/posts/gitea.md b/content/posts/gitea.md new file mode 100644 index 0000000..c65c11a --- /dev/null +++ b/content/posts/gitea.md @@ -0,0 +1,171 @@ +--- +title: "Hosting your own git frontend service using Gitea" +date: 2023-02-25T10:19:50-05:00 +topics: ['git', 'self-host'] +--- + +I recently had interest in starting to work on the implementation of the [Concurrent Atomistic-Continuum Method](https://doi.org/10.1063/1.5099653) using C++ to take advantage of GPU acceleration. +As a first step, I began thinking about where I wanted to host my project. +I decided to add hosting my own git server to my list of self-hosted services, including [e-mail](https://github.com/LukeSmithxyz/emailwiz) and [matrix chat server](https://matrix.org/docs/projects/server/synapse). +This is a quick guide on how I set up [Gitea](https://gitea.io/en-us/) and configured it on my website. +**As a note, my web server is a Debian machine using Nginx** + +## Setting up the database + +I already use [PostgreSQL](https://www.postgresql.org/) to manage my matrix-synapse database and configured Gitea to use the same. +First, following the [Gitea documentation](https://docs.gitea.io/en-us/database-prep/#postgresql-1), I set the `listen_address` and `password_encryption` in my `postgresql.conf` at `/etc/postgresql/11/main/postgresql.conf`: + +``` +listen_addresses = 'localhost, 203.0.113.3' +password_encryption = scram-sha-256 +``` + +You should then restart PostgreSQL. +Now you can log into the database console: + +``` +su -c "psql" - postgres +``` + +Then create a database user, gitea: + +``` +CREATE ROLE gitea WITH LOGIN PASSWORD '{ReplaceWithStrongPassword}'; +``` + +Then you can actually create your gitea database: + +``` +CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8'; +``` + +The last step is adding authentication rules to your `pg_hba.conf` at `/etc/postgresql/11/main/pg_hba.conf`. +**As a note, the following line should be added near the top of this file as authentication rules are evaluated sequentially. +As a result, any generic rule at the top of this file may be used instead of the inserted rule if not inserted first.** + +``` +local giteadb gitea scram-sha-256 +``` + +## Installing and setting up gitea + +Since my server is on debian, I didn't have access to a gitea package. +Instead, I downloaded the executable: + +``` +wget -O gitea https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64 +chmod +x gitea +``` + +You should then create a git user account on your server: + +``` +adduser \ + --system \ + --shell /bin/bash \ + --gecos 'Git Version Control' \ + --group \ + --disabled-password \ + --home /home/git \ + git +``` + +A few directories need to be created for gitea and file permissions set: + +``` +mkdir -p /var/lib/gitea/{custom,data,log} +chown -R git:git /var/lib/gitea/ +chmod -R 750 /var/lib/gitea/ +mkdir /etc/gitea +chown root:git /etc/gitea +chmod 770 /etc/gitea +``` + +You can then copy gitea to a directory on your path, i.e.: + +``` +cp gitea /usr/local/bin/gitea +``` + +The last step for setting up gitea is downloading the [example systemd service file](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) and placing that in `/etc/systemd/system`. +At this point you should be able to enable and start the service: + +``` +sudo systemctl enable gitea +sudo systemctl start gitea +``` + +## Gitea and Nginx configuration + +There are a few configurations options you need to set for Gitea and Nginx that I'll outline here. +First as a note, I wanted my git server to be accessible at [alexselimov.com/git](alexselimov.com/git). +It's possible to set gitea up as a subdomain, i.e. `git.some.site`, but I won't go into that. +First you want to configure nginx so you can access your Gitea instance. +You can also simply go to `your.web.site:3000` to skip the Nginx configuration. +Adding Gitea at `your.web.site/git` is extremely simple and if you have SSL certificates with certbot, access to your Gitea instance will also occur over HTTPS. +All you have to do is add: + +``` +location /git/{ + proxy_pass http://localhost:3000/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; +} + +``` +in your primary server block for your website. +Now if you restart Nginx you should be able to navigate to `your.web.site/git`. +The first time you access your Gitea instance, it will ask you several configuration questions which then populate the default configuration file for Gitea that you can then adjust. +Answer to the best of your knowledge and then we will go over the most important ones in your configuration file. + +Gitea configurations are available in the `/etc/gitea/app.ini` file. +You want to double check that your `[database]` section is correct, especially the `NAME` variable. + +``` +[database] +DB_TYPE = postgres +HOST = 127.0.0.1 +NAME = giteadb +USER = gitea +PASSWD = '{SOME SECURE PASSWORD}' +``` + +If you want you can set your default branch name in the `[repository]` section: + +``` +[repository] +DEFAULT_BRANCH = master +``` + +Finally to make sure your site works properly, you want to go to your `[server]` section and make sure that `[SSH_DOMAIN]` is set to the domain that you use to ssh into your server. +For example, I ssh into [alexselimov.com](alexselimov.com) so my `app.ini` has: + +``` +[server] +SSH_DOMAIN = alexselimov.com +``` + +Your `ROOT_URL` should however be set to the url that maps to your Gitea instance, i.e., + +``` +ROOT_URL = https://alexselimov.com/git +``` + +To finish setting up ssh, you just have to add your public key to your user account in the Gitea under settings->SSH/GPG keys. +Then as site admin you have to go to the Site Administration menu and run the "Update the '.ssh/authorized_keys' file with Gitea SSH keys." option. +At this point you should be good to go with Gitea and using ssh to access your repositories. +The final option I though was useful was: + +``` +[sevice] +DISABLE_REGISTRATION = true +``` + +I am making this repo for personal use. +Disabling registration still allows people to clone my public repositories, but I want to be sure that I screen potential contributors or other people that can have accounts on my instance. + +## Conclusion + +I hope these instructions were useful to someone, let me know if I missed a step or got something wrong and I'll be sure to correct it. Thanks for reading! diff --git a/content/posts/highlighedmenu.md b/content/posts/highlighedmenu.md new file mode 100644 index 0000000..41edaa8 --- /dev/null +++ b/content/posts/highlighedmenu.md @@ -0,0 +1,89 @@ +--- +title: "Highlighting the active menu item in Hugo" +date: 2023-07-03T22:19:00-04:00 +topics: ['hugo','web design'] +--- + +I've recently been developing sites for some family/friends. +I had one person request highlighting the currently selected menu item. +I had built a custom theme which used a navbear defined in the site wide `hugo.toml`. +There were a few different solutions but I wanted to highlight the solution I ended up using for my use case. +A dummy of my site directory set up is: + +``` +content + |-- section1 + |--_index.md + |--section1Post.md + |-- section2 + |--_index.md + |--section2Post.md + |-- section3 + |--_index.md +``` + +In my header partial I created a menu by looping over the entries in `[[menu.main]]` defined in the `hugo.toml`. +It's important here to end the `url` with a `/`. +Hugo adds an ending `/`, to the urls of the pages that it creates. +While this might not be necessary to make the hyperlink work, it will be necessary to get the highlighting correct. +The definition of the menu looks like: + +``` +[menu] + [[menu.main]] + name= "section1" + url= "/section1/" + weight= "1" + [[menu.main]] + name= "section2" + url= "/section2/" + weight= "2" + [[menu.main]] + name= "section3" + url= "/section3/" + weight= "3" +``` + +The original header partial is pretty simple. +I just loop over the range `.Site.Menus.main` and insert a `
` which is my div class for a navbar menu item. +I populate the text and link from the variables associated with the main menu item. +This is all wrapped within a `