School Life Hacks (ADHD Edition)

As a student, you may often find yourself struggling to balance your academic workload with other responsibilities, such as extracurricular activities, part-time jobs, and social life. In addition, group projects can be challenging, as you have to coordinate with your team members and ensure that everyone is on the same page. Add a sprinkle of executive dysfunction disorder on top, and managing all of this can feel completely overwhelming. However, with the right tools and strategies, you can make school work and group projects easier and more manageable. Here are some life hacks to help you stay on top of your academic game, even with ADHD.

Develop a Study Plan

One of the most effective ways to stay on top of your academic workload is to create a study schedule. This will help you allocate time for each task and ensure that you are making progress towards your goals. As someone with ADHD, creating and sticking to a study schedule is both essential and almost impossible, but it’s just about finding out what works for you.

I don’t do well working on something a little bit everyday partially because switching whatever it is I’m working on can be an almost Herculean task, so my study schedule is typically all the work for one class that week, per day. It doesn’t always work out that perfectly as sometimes there is more work than can be done in one day, or there is a quiz I have to take on a specific day, or I am taking a class where the professor doesn’t even add assignments to Canvas until 2 days before they are due, but it is as close to that as I can. At the beginning of each week I make little checklists of everything to get done for each class, and then I decide what day to assign to each class.

I also have a schedule of all the due dates for my classes and the calendar/to do list on Canvas, which I obsessively check on my phone multiple times a day. I have also found that having this schedule in several places like my phone’s calendar, my written planner, and a giant calendar on my wall makes it very difficult for me to miss something, and therefore also makes me significantly less anxious.

Create a Designated Workspace

On my long journey figuring out what works best for me, this was probably the most life changing step. Find somewhere comfortable in your house that you designate as your “workspace” where you don’t do anything else besides school work (typically this is a desk). This should be somewhere free of distractions and quiet (but not too quiet), preferably somewhere you can close a door. I like to keep my phone near me but on do not disturb, that way I’m not just thinking about any important missed calls/texts I might be getting.

In this workspace, everything you could possibly need while doing work should be within arms reach, including beverages and snacks, a sweatshirt for if you get cold, headphones, a roll of paper towels, I have nail clippers, the list is endless. You don’t want to have a reason to get out of the chair (besides maybe going to the bathroom) when it is suppose to be school time. For me, this also means not really taking short breaks, because there is no such thing as a short break. Once my butt leaves the chair, there is really no telling when I will return.

I also have multiple visual aids around this workspace to remind me what I need to get done. While this includes obvious things like my giant wall calendar, it also includes just leaving things in my path. This could mean leaving myself sticky notes in the center of my computer screen, or something as simple as leaving open a tab to a specific website.

Be Kind to Yourself

While you want to be as productive and successful as you can, sometimes you will mess up. The arguably hardest life hack is extending yourself some kindness and not beating yourself up when you forget something, or procrastinate, or simply can’t bring yourself to do something you know you are suppose to do. With or without ADHD, you are not a robot.

In conclusion, school work and group projects can be challenging, but with the right tools and strategies, you can make them easier and more manageable. Of course with an attention deficit disorder just saying buy a planner and sit at your desk is easier said than done, and the life hack of finally getting on medication is in part what allowed me to figure out all of the other stuff. Despite capitalism’s best efforts to convince us otherwise, there is no morality in productivity, and there is no specific timeline you have to be on to be a successful person. Try different stuff out and figure out what works for you, and don’t be too upset with yourself when something doesn’t work.

Technologies

Our senior capstone project involves the redevelopment of the Soundbendor Lab website. The goal of our project is to create a modular and customizable website for the client, so it is easy for them to change things as they see fit, while having the front end be static, so as to not hike up any unnecessary hosting and server costs. To achieve this goal, we have been using NextJS for the front-end and Strapi for the back-end of the website, both of which I have found enjoyable and pretty easy to use.

NextJS is a React-based framework for building server-side rendered and statically generated web applications. It is built on top of Node.js and provides a simple and streamlined way to develop web applications that are both fast and scalable.

What sets NextJS apart is its ability to automatically optimize and serve your pages for the best performance. It pre-renders the HTML for each page on the server and then serves it to the client, providing a fast and seamless experience for users. This also makes it easy to create web pages that are SEO-friendly and accessible to a wider audience. In addition to its performance optimizations, NextJS also provides a range of features and tools for building complex web applications, such as automatic code splitting, dynamic imports, and serverless functions.

I will note, my prior knowledge with React definitely played a role in my ability to learn and use NextJS effectively. As React is a JavaScript library for building user interfaces, which is in essence was NextJS is, it allowed me to quickly pick up the core concepts and features, such as the component-based architecture of NextJS.

Strapi is an open-source headless content management system (CMS). A headless CMS is a back-end only content management system, which allows you to store and manage your content, and then deliver it to any platform or device. What sets Strapi apart is its user-friendly interface and highly customizable architecture. It provides an intuitive way to manage and organize content, making it easy to add, change, and update any content on the site. This makes it the perfect choice for our senior capstone project, as it allows us to build a modular and customizable back-end for the Soundbendor Lab website.

While both Strapi and NextJS are user-friendly and pretty easy to use, connecting them together did have a slight learning curve. Integrating a headless CMS like Strapi with a static front-end framework like NextJS requires a deeper understanding of both technologies and how they work together. Currently, our solution has been to create a json file “package” of the modular content using Strapi and passing it to our NextJS front-end as a static database for it to pull from.

While we’ve figured out creating the content using Strapi and displaying the content statically using NextJS, we are still working on automating the process of downloading the json file when content is updated and then uploading it to our Media Library folder. While downloading and placing a single file into a specific folder in Strapi is not difficult, and our client has stated website content is not updated very often so this small step wouldn’t be too much of an inconvenience, it is still our plan to try to automate this process if time allows.

In conclusion, both NextJS and Strapi have been invaluable tools for our senior capstone project. NextJS’s performance optimizations and powerful development tools have allowed us to build a fast and scalable static front-end for the Soundbendor Lab website, while Strapi’s user-friendly interface and highly customizable architecture have made it the perfect choice for building our back-end. I would highly recommend both of these technologies to anyone looking to build a modern and modular static web application.

The (second) first post

As a developer, it is important to write clean and readable code that is easy to maintain and understand. However, as projects grow and evolve, it can be easy for code to become cluttered and difficult to navigate. This is where code smells come in. Code smells are indicators that something may be wrong with the code, such as poor design or lack of organization.

One example of a code smell is the use of magic numbers. Magic numbers are numerical values that are used in the code without any explanation of their meaning. It can be difficult to understand the purpose of a magic number, and it can also make the code less readable. A better practice would be to use constants or variables to store these values and give them a meaningful name.

example of “magic numbers”
cleaned up

Another example of a code smell is duplicated code. Duplicated code is when the same code is repeated multiple times throughout a project. Not only is this a sign of poor organization, but it also makes it harder to maintain the code. When a change needs to be made, it must be made in multiple places, increasing the chance of introducing bugs. To avoid this, it is better to refactor the code and extract common functionality into a separate function or method.

On the other hand, writing clean code is all about making sure your code is easy to understand, maintain and change. To write clean code, it is important to follow a consistent coding style, to use meaningful variable and function names, and to organize your code in a logical way.

A good example of clean code is the Single Responsibility Principle (SRP). SRP states that a class should have one and only one reason to change. This means that a class should have a single, well-defined responsibility. This makes it easy to understand the purpose of a class and also makes it easier to change or extend the class in the future.

Another example of clean code is the separation of concerns. Separation of concerns means that different parts of the code should be responsible for different things. For example, the code for handling user input should be separate from the code for displaying output. This makes it easier to understand the code and also makes it easier to change or extend the code in the future.

Martin Fowler said “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” As a student, I would definitely say I got into the bad habit of not writing super clean code, especially for smaller assignments. Working on this capstone project has definitely influenced the code I’ve been writing for other classes for the better.

First Term Recap

With the first term of our capstone project almost finished, I thought it might be good to go over the basics of what we completed over the past 10 weeks. Our team has been working on re-developing a website for the Soundbendor Lab. While majority of it was creating the two major technical documents needed to begin, we also laid out the bare bones of the site. We did this by starting to work with some of the tools we will be utilizing for the rest of the project.

Current Soundbendor Lab Website

Documents

The first step in the process was creating the requirements document, which is essential for any sort of complex project, like building a website. It’s basically an outline of what you need the end result to be. Requirements documents list out function, form, and feasibility requirements for the project at hand. Requirements can be functional, meaning they outline what the website or product needs to do. For example, a requirement might state that a website needs to have a search function. Form requirements deal with the look and feel of the site or product. Feasibility requirements focus on whether or not the project is actually possible given the resources and time constraints. Requirements documents are important because they help to keep everyone on the same page and ensure that the final product meets everyone’s needs.

The next step was creating the design document. It outlines the overall design of the site, including the layout, content and even things such as the aesthetic design. The technical document also specifies the functionality that will be included on the site. This can include contact forms, searchable databases, or e-commerce functionality. The design document is an important tool for communicating the vision for the project to the development team. In our capstone project, we spent a considerable amount of time developing the design document. We wanted to make sure that our website met all of the requirements of our client while also ensuring that our website was easy to navigate and understand.

Portion of the Table of Contents from Design Document
Portion of System Specifications from Requirements Document

Tools

One of the tools we used in our project was Strapi, an open-source, Node.js-based content management system (CMS). It enables developers to easily build and manage customizable APIs for their web applications. Strapi’s main goal is to make it easy for developers to create and manage APIs while also providing the option to use their own tools and frameworks. Strapi is also available as a headless CMS, which means that it can be used with any front-end technology such as the one we are utilizing, React. In addition, Strapi provides an intuitive admin panel that makes it easy to manage your content.

Strapi CMS Homepage

Another tool we used, which is used by the majority of developers today, was React, a JavaScript library for building user interfaces that was created by Facebook. It is Declarative, which means that it makes code easy to read and understand. React is also Component-Based, which means that it is easy to reuse code. Next.js is a React framework that enables the creation of static and server-side rendering React applications. We chose to use React with Next.js for our capstone project because we wanted to create a frontend that was static. This meant that we could host our application on their local computer, which would greatly reduce the overall cost.

AWS is a cloud computing platform that offers a variety of services, including storage, computing power, and databases. For our capstone project, we used AWS to store our media files in a shared directory on AWS Simple Storage Solution (S3) and to create a simple database instance on AWS Relational Database Server (RDS). AWS RDS is a relational database service that makes it easy to set up, operate, and scale a database in the cloud. Using AWS RDS, we were able to quickly create a database instance and connect to it from our web app. AWS S3 is a simple storage service that offers a secure, scalable way to store and retrieve data. By storing our media files in AWS S3, we were able to provide access to them from anywhere in the world without having to worry about server capacity or bandwidth limits.

Bootstrap is a frontend CSS framework that we used in our capstone project. It provides a responsive design that makes it easy to develop mobile-first projects. Bootstrap includes a number of pre-built components that can be used to create common web elements, such as buttons, progress bars, and form controls. In addition, Bootstrap provides a grid system that can be used to create fluid, responsive layouts. Bootstrap is easy to use and saves time by reducing the need to write custom CSS code.

Bare Bones setup of new website created with React and Bootstrap

I am really happy with the work we have done so far on our capstone project. In terms of the requirements and design documents, I feel as though we have set up a solid roadmap for what the nexts steps in the project are. And, I think using tools like Strapi, React, AWS, and Bootstrap will help us successfully develop the Soundbendor Lab website into something more customized to the client. I am looking forward to continued progress in the next two terms!

Blog Post 2

I am very excited to actually begin the “real” work on the project this week, as technical writing will probably be the death of me. While I understand that these documents are part of the process, honestly, I hate them. This is not a complaint, just a simple fact, and I would like it to be noted. I understand why people get the impression that STEM folks are all boring nerds, technical documents are so dry you will literally be physically and mentally dehydrated after reading one. In my opinion writing them is far worse, like crawling through a desert.

The one exception to my technical writing hatred is making figures. Figures are technically not part of the actual technical writing, but as they are essential to the overall technical document, I believe, technically, they count. They are my oasis in desert, a refreshing break in between the dunes of text. I don’t think anything would make me happier than if the only thing I was responsible for was spending hours on Figma making an aesthetically beautiful and functional mockup of our proposed site design.

Initial Proposed Home Page Mock-Up
Initial Proposed Team Page Wireframe

Also, it’s not just limited to making mock-ups and wireframes. I love a good database schema or ER diagram. I think tangibly organizing my thoughts so I have a better grasp of how the relationships between the entities might work is very satisfying. It also shows me the gaps in my logic or plan that I need to fill in or revise.

Initial Proposed Database Schema for Our “People” Object

Maybe it’s just part of being in STEM, but I believe a lot of my frustration creating these documents comes from the feeling that language alone can be incredibly limiting as far as communicating your ideas. I don’t want to try to explain in complete sentences how things will work because I don’t think I’m particularly good at it, I just want to show you. I could write paragraph after paragraph trying to verbally communicate how I think the home page should look and function, or I could make a mock-up with a couple notes and convey way more information with a much smaller margin for confusion.

One of the members of my team has a few years experience working as a professional software engineer, and they have been an integral part in the ease of this first phase of our project. They very clearly seem to have an image of how all the parts of this website need to come together, and getting to pester them with questions has greatly expanded my understanding of web development. They also mentioned that while these documents are genuinely part of the processes, very rarely are the actual developers the ones writing them. This information brought me much joy.

All in all I am very pleased with how the project is going thus far. There are almost always a few things you can find to to complain about, as with anything in life, but as long as the list of good stuff is longer than the list of bad stuff, I will be happy. If trekking through the technical writing desert is the most difficult part of the project, I’d say I’ve got it pretty good.




Hello world!

Though this was the default title, I felt as though it was an appropriate title for the first post of a Computer Science degree capstone project blog.

As everyone enjoys talking about themselves, I thought I could start this off by introducing myself. My name is Ann Marie Hicks, I turned 25 less than two weeks ago, and I live in Columbia, South Carolina. I have a cat, Sunday, and a currently unnamed foster kitten who I have been calling “little boy”. I have been fostering cats for about two years now, but I think “little boy” might be my first foster fail (which sounds terrible but just means I’m going to keep him). My hobbies include starting arts and crafts projects and finishing about half of them, watching my boyfriend cook, and long-weekend trips to places within a 6-hour drive. Our most recent excursion was to DC over Labor Day weekend, which is 7 hours away but we first stopped in Richmond to visit family, so technically the original destination was less than 6.

“little boy” sitting on my friend’s laptop
Sunday looking well-behaved (shes not)

I was put in the Soundbendor Lab Website group, which wasn’t my first choice but it’s kind of hard to be upset about your project being web development. Also, it’s only been a few days since being placed in our groups, but from the bit of contact we’ve had, I’m fairly certain I have excellent teammates. I’m excited to be starting this capstone project as it indicates the beginning of the end of my undergraduate career, which is both a thrilling and terrifying prospect. On the one hand, I started college in the fall of 2016, so 3 different schools, 2 breaks, and 1 global pandemic later, I am more than ready to be done with this chapter of my life. On the other hand, I have no idea what the next chapter holds, and as the main goal during my quarter century here on Earth has been to get through school, I know just setting the next long-term goal will be an ordeal.

Thankfully, I have a school year and capstone project to worry about before I really have to face that crisis.