<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Alec</title>
  <subtitle>Alec — data analysis, programming projects, and writing.</subtitle>
  <link href="https://abrooks.dev/feed.xml" rel="self"/>
  <link href="https://abrooks.dev/"/>
  <updated>2025-02-24T00:00:00Z</updated>
  <id>https://abrooks.dev/</id>
  <author>
    <name>Alec</name>
    <email>contact@abrooks.dev</email>
  </author>
  <entry>
    <title>♟️ ChessPI : A Chess.com API Interaction Tool ♟️</title>
    <link href="https://abrooks.dev/blog/chesspi/"/>
    <updated>2025-02-24T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/chesspi/</id>
    <content type="html">&lt;p&gt;ChessPI is an R package designed to interact with the Chess.com API to download and analyze saved games. Chess.com records data for every game you play, and this tool makes it easy to retrieve those records for review. Whether you&#39;re a chess enthusiast looking to revisit past matches or a data analyst identifying patterns, ChessPI simplifies the process.&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;p&gt;ChessPI offers two primary functions:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Archives&lt;/strong&gt; – Retrieves a list of available months for a user&#39;s game history, making it easier to select specific time ranges for download.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pull&lt;/strong&gt; – Downloads a user&#39;s game records from Chess.com. Users can specify a username and time range or download all games by default.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;You can install ChessPI using the following commands in R:&lt;/p&gt;
&lt;h3&gt;Accessing the Project&lt;/h3&gt;
&lt;p&gt;If you&#39;re interested in exploring ChessPI or reviewing the source code, you can access the project on my GitHub repository: &lt;a href=&quot;https://github.com/AlecBrooks/ChessPI&quot;&gt;ChessPI on GitHub&lt;/a&gt;. Simply download the repository and follow the provided instructions to start analyzing your Chess.com games.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;ChessPI provides an efficient way to retrieve and analyze Chess.com game records. Whether you&#39;re studying past performances or gathering data-driven insights, this tool makes the process simple. Feel free to check out the GitHub repository and start using ChessPI!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>🌿 Ecoblitz-Analysis: Investigating Climate &amp; Biodiversity 🌿</title>
    <link href="https://abrooks.dev/blog/ecoblitz-analysis/"/>
    <updated>2025-02-24T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/ecoblitz-analysis/</id>
    <content type="html">&lt;p&gt;From agriculture and infrastructure to energy and water supplies, climate plays a crucial role in societal functionality and health. As climate change leads to increasingly volatile weather patterns, understanding its effects on biodiversity becomes more critical. This project utilized multiple datasets, including weather data and flower phenology data. The weather dataset was constructed using two local sources: a snowpack dataset from a station approximately 9 miles from the flower survey area, provided by the California Department of Water Resources through the California Data Exchange Center (CDEC), and a temperature dataset from the National Weather Service (NWS) station at the Reno Airport, about 4 miles from the survey area. The phenology dataset was gathered from TMCC&#39;s Ecoblitz events, where faculty and students recorded plant observations using the iNaturalist app. This study focused on identifying factors influencing blooming patterns in Nevada and analyzing how climate variability impacts plant life.&lt;/p&gt;
&lt;p&gt;By integrating these data sources, this study explored how climate variability influenced local biodiversity, particularly plant phenology.&lt;/p&gt;
&lt;h3&gt;Data Processing&lt;/h3&gt;
&lt;p&gt;Data cleaning and statistical analysis were performed using R.&lt;/p&gt;
&lt;h3&gt;Results &amp;amp; Findings&lt;/h3&gt;
&lt;p&gt;A detailed report summarizing the findings of this analysis can be accessed below:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/demos/Ecoblitz/Ecoblitz.html&quot;&gt;&lt;strong&gt;View Full Report&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Accessing the Project&lt;/h3&gt;
&lt;p&gt;If you&#39;re interested in exploring the data or reviewing the source code, visit the project&#39;s GitHub repository:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AlecBrooks/Ecoblitz-Analysis&quot;&gt;&lt;strong&gt;Ecoblitz-Analysis on GitHub&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Acknowledgments&lt;/h3&gt;
&lt;p&gt;This research was conducted as part of a &lt;strong&gt;research grant&lt;/strong&gt; and was mentored by &lt;strong&gt;Eriko Sakamura&lt;/strong&gt;. My research partner for this project was &lt;strong&gt;Seth Miller&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Additional support provided by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;National Institute of General Medical Sciences&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;National Aeronautics and Space Administration (NASA) 🚀&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>♟️ The Islands Chess Experiment: Investigating Chess &amp; Memory ♟️</title>
    <link href="https://abrooks.dev/blog/islands-chess-memory/"/>
    <updated>2024-12-15T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/islands-chess-memory/</id>
    <content type="html">&lt;p&gt;Chess has long been associated with intelligence, but does playing chess actively enhance cognitive abilities? This study explored the relationship between regular chess playing and memory improvement using simulated data from &lt;strong&gt;The Islands&lt;/strong&gt; platform. Over the course of a simulated fall semester, students were divided into two groups: a participant group that played chess daily and a control group that did not. Both groups completed daily memory tests, allowing the analysis of the impact of chess engagement on cognitive performance.&lt;/p&gt;
&lt;p&gt;Although the participant group demonstrated greater improvement in memory scores than the control group, the difference lacked strong statistical significance, likely due to the small sample size. However, linear regression analysis revealed that the duration of study participation and the number of chess wins were significant predictors of memory scores, accounting for a notable portion of the observed variation. These findings suggest a potential link between playing chess and memory enhancement, though further research with larger, real-world populations is needed to confirm these effects.&lt;/p&gt;
&lt;h3&gt;Data &amp;amp; Analysis&lt;/h3&gt;
&lt;p&gt;The dataset was generated from The Islands simulation, where students engaged in controlled experiments. Key variables included memory test scores, and chess game outcomes. Statistical analyses, including a Welch Two Sample t-test and linear regression, were performed in R to determine patterns in memory improvement.&lt;/p&gt;
&lt;h3&gt;Results &amp;amp; Findings&lt;/h3&gt;
&lt;p&gt;A full report detailing the methodology, statistical analysis, and conclusions can be accessed below:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/demos/Chess_DATA_220/Chess-s-Impact-on-Memory.pdf&quot;&gt;&lt;strong&gt;View Full Report&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Video Summary&lt;/h3&gt;
&lt;p&gt;For a visual overview of the study and its key findings, watch the summary video below:&lt;/p&gt;
&lt;video controls preload=&quot;metadata&quot;&gt;
  &lt;source src=&quot;/demos/Chess_DATA_220/Chess-s-Impact-on-Memory-Final.mp4&quot; type=&quot;video/mp4&quot;&gt;
  Your browser doesn&#39;t support embedded video. &lt;a href=&quot;/demos/Chess_DATA_220/Chess-s-Impact-on-Memory-Final.mp4&quot;&gt;Download the video&lt;/a&gt; instead.
&lt;/video&gt;
&lt;h3&gt;Accessing the Dataset&lt;/h3&gt;
&lt;p&gt;The dataset used in this study is publicly available for further exploration:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kaggle.com/datasets/alecbrooks/the-islands-chess-experiment&quot;&gt;&lt;strong&gt;The Islands Chess Experiment on Kaggle&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Acknowledgments&lt;/h3&gt;
&lt;p&gt;This study was conducted using data from &lt;strong&gt;The Islands&lt;/strong&gt; platform, developed by the University of Sydney. Special thanks to &lt;strong&gt;The Islands research team&lt;/strong&gt; for providing access to this simulated population.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>⚡ Lightning Count: A Card-Counting Dashboard ⚡</title>
    <link href="https://abrooks.dev/blog/lightning-count/"/>
    <updated>2024-06-01T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/lightning-count/</id>
    <content type="html">&lt;p&gt;Lightning Count is a browser-based blackjack card-counting dashboard I built in 2024 — informed directly by the surveillance side of my day job, where reviewing a player&#39;s bet sizing against the count is one of the core tools for spotting advantage play.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/img/demos/LightningCount_Dashboard.png&quot;&gt;&lt;img src=&quot;/img/demos/LightningCount_Dashboard.png&quot; alt=&quot;Lightning Count dashboard&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;p&gt;Running count tracking, live bet stats (max/min/avg), a win-loss-push ratio readout, and a full history log with charting via Chart.js — everything you&#39;d want when reviewing a session after the fact rather than just watching it live.&lt;/p&gt;
&lt;h3&gt;Try it live&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/demos/LightningCount/index.html&quot;&gt;&lt;strong&gt;Live demo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Accessing the Project&lt;/h3&gt;
&lt;p&gt;Plain HTML/CSS/JS, no build step, no dependencies beyond the Chart.js CDN. Source is on GitHub: &lt;a href=&quot;https://github.com/AlecBrooks/LightningCount&quot;&gt;Lightning Count on GitHub&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>📦 Cube Runner: A VBA Game Project 📦</title>
    <link href="https://abrooks.dev/blog/cube-runner/"/>
    <updated>2023-06-22T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/cube-runner/</id>
    <content type="html">&lt;p&gt;Back in late 2020 during my early stages of learning VBA (Visual Basic for Applications), I took on a side project called Cube Runner to further develop my skills. Cube Runner is a game created using VBA and user forms within Microsoft Excel. This project allowed me to apply my knowledge, challenge myself, and showcase my progress. Here is an overview of the project.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/img/demos/QubeRunner_Demo.gif&quot;&gt;&lt;img src=&quot;/img/demos/QubeRunner_Demo.gif&quot; alt=&quot;Cube Runner Game Demo&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;The Game Concept&lt;/h3&gt;
&lt;p&gt;Cube Runner introduces a simple gameplay concept. Players control a pink &amp;quot;cubeMan&amp;quot; character with the objective of collecting cubes that spawn at random intervals in various locations on the screen. Additionally, there are enemy blue boxes that chase the player, and prolonged contact with them will result in a game over. The game offers endless level progression, allowing players to play for the highscore indefinitely.&lt;/p&gt;
&lt;h3&gt;Experience&lt;/h3&gt;
&lt;p&gt;Cube Runner represents a significant milestone in my programming journey, emphasizing my focus on VBA development and expanding my capabilities. This project allowed me to test both my VBA Proficiency and Problem Solving. (because, oh boy! there were problems.)&lt;/p&gt;
&lt;h3&gt;Accessing the Project&lt;/h3&gt;
&lt;p&gt;If you&#39;re interested in exploring Cube Runner or reviewing the source code, you can access the project on my GitHub repository: &lt;a href=&quot;https://github.com/AlecBrooks/QubeRunner&quot;&gt;Cube Runner on GitHub&lt;/a&gt;. Simply download the repository and follow the provided instructions to run the game within Microsoft Excel.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Cube Runner served as a valuable project during my early VBA journey, allowing me to apply the VBA skills I learned and test my progress. While it may not be a particularly complex game, it represents a milestone in my programming journey. Feel free to visit the GitHub repository and experience Cube Runner firsthand!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>🗪 SurvChat: An Overly Complicated Shared Drive Chat Program 🗪</title>
    <link href="https://abrooks.dev/blog/survchat/"/>
    <updated>2023-06-08T00:00:00Z</updated>
    <id>https://abrooks.dev/blog/survchat/</id>
    <content type="html">&lt;p&gt;Welcome to SurvChat, an excessively convoluted shared drive chat program built using VBA and Excel. SurvChat is a programming project that I undertook just for fun, embracing complexity in a purposeless manner. This blog post will take you through the unique features of SurvChat, including its encryption function, installation process, and overall experience.&lt;/p&gt;
&lt;h3&gt;The Encryption Function&lt;/h3&gt;
&lt;p&gt;SurvChat takes security to a whole new level with its client-side message encryption. The encryption function in VBA ensures that your messages remain secure and indecipherable to prying eyes. Here&#39;s a glimpse of the encryption function:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/img/demos/SurvChat_Demo%20Crop.gif&quot;&gt;&lt;img src=&quot;/img/demos/SurvChat_Demo%20Crop.gif&quot; alt=&quot;SurvChat Demo&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;language-vbnet&quot;&gt;&lt;code class=&quot;language-vbnet&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; Encrypt&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;crypt_in &lt;span class=&quot;token keyword&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;Dim&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i &lt;span class=&quot;token keyword&quot;&gt;As&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;Integer&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;For&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;To&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;crypt_in&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Asc&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Mid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;crypt_in&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;If&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;97&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;And&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;122&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;Then&lt;/span&gt;
        f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;97&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;ElseIf&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;65&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;And&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;Then&lt;/span&gt;
        f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;65&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;Else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;GoTo&lt;/span&gt; Build
    &lt;span class=&quot;token keyword&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;If&lt;/span&gt;
    c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; f
    &lt;span class=&quot;token keyword&quot;&gt;Do&lt;/span&gt;
        c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; c &lt;span class=&quot;token keyword&quot;&gt;Mod&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;Loop&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;While&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; f
Build&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    ROT &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ROT &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Chr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;Next&lt;/span&gt; i
    crypt_in &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ROT
&lt;span class=&quot;token keyword&quot;&gt;End&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Example of an Encrypted Conversation:&lt;/h4&gt;
&lt;p&gt;Here&#39;s a snippet of an encrypted conversation stored on the server:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Hfre1@QRFX - 03:16 CZ &amp;gt;  Uryyb Jbeyq!
Hfre2@QRFX - 03:16 CZ &amp;gt;  Url!
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Accessing the Project/Installation&lt;/h3&gt;
&lt;p&gt;To get started with SurvChat, you can download the client and server from my GitHub repository: &lt;a href=&quot;https://github.com/AlecBrooks/SurvTalk&quot;&gt;SurvTalk on GitHub&lt;/a&gt;. The installation process involves storing the server folder on a shared network drive and the client folder locally.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the client and server folders from the GitHub repository.&lt;/li&gt;
&lt;li&gt;Store the server folder on a shared network drive accessible to all users.&lt;/li&gt;
&lt;li&gt;Place the client folder on your local machine.&lt;/li&gt;
&lt;li&gt;Edit the Config File within the client folder to specify the location of the server folder.&lt;/li&gt;
&lt;li&gt;Set the admin password by modifying the server.conf file. SurvChat offers various administration commands that can be executed by a user with admin privileges by inputting the command &amp;quot;/chmod [admin password].&amp;quot; These commands enable actions such as creating and deleting new channels, kicking users from the server, and more. To explore the available commands, simply type &amp;quot;/help&amp;quot; in the chat.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;SurvChat, the overly complicated shared drive chat program, presents a unique and ultimately purposeless approach to communication. With its VBA-powered Excel interface, encryption functions, and admin controls, SurvChat delivers a chat experience like no other. Whether you&#39;re seeking a bit of programming fun or simply enjoy embracing complexity, SurvChat is a project worth exploring.&lt;/p&gt;
&lt;p&gt;To embark on your SurvChat journey, visit the GitHub repository and dive into the deep world of LAN chat goodness that SurvChat can offer. Experience the thrill of secure, convoluted conversations with your friends and colleagues. Happy SurvChatting!&lt;/p&gt;
&lt;p&gt;Note: SurvChat is intended for recreational purposes only and should not be used for sensitive or confidential communication.&lt;/p&gt;
</content>
  </entry>
</feed>
