Incorporating JavaScript & Reflecting on Decolonial Coding Practices

by Padi Falas-Maifala

Expressing Dual Creative Identities Through JavaScript

I want my portfolio website to highlight my two creative identities as a Writing & Interactivity and Game Design major. JavaScript provides the ideal foundation for bringing both personalities to life with interactive features customized for each aspect of what I major in.

For my game design projects, I'm implementing:

  • Custom game-like cursor effects that change based on section (controller icon for games, pencil or quill for writing)
  • Mini-game easter eggs hidden throughout the site to reward exploration, this will be a later implementation
  • Physics-based interactions where project elements or background respond with realistic movement
  • Interactive project showcases with playable demos embedded directly
  • Cool animations when visitors interact with important elements

For my writing and interactivity projects, I'm adding:

  • Dynamic text effects where words appear to be typed in real-time
  • Interactive storytelling components that create choose-your-own-adventure navigation
  • Animated literary devices that visualize metaphors and concepts
  • Word/concept clouds that visualize themes in my writing
  • Reading experience enhancements like customizable text display

Additionally, I'm developing a "mode switch" toggle that alternates between "Game Designer Mode" and "Writer Mode," each having a unique visual style and interaction approach. This not only demonstrates my technical skills but also produces a unique, customized experience that captures my creative personalities.

Decolonizing My Coding Practice

I've grown more aware of a few aspects of my personal coding practice that demand consideration when examining the significance of code in the context of decolonialism. Decolonization necessitates that we "act in a profoundly grounded and affective way (with the heart) to realize what decolonization entails," rather than just via intellectual comprehension, as Behari-Leak (2019).

In my own practice, I've identified several areas where I need to be more mindful:

The Myth of Technological Neutrality: A Challenge

I've realized that, according to what the reading on "Decolonizing Technology" implies, technology is not axiologically neutral, "methods of knowing, methods of doing, and ways of being, as well as content" must be addressed during decolonization (Luckett, 2016). This entails analyzing the ideals buried in the technologies I develop and use.

Terminology and Language

The vocabulary we use when coding is frequently filled with problematic phrases, such as "whitelist/blacklist" for permissions, "master/slave" relationships in databases, and even the idea of "native" programs. According to the reading, these concepts reflect and reproduce colonial theories in an effort to gain "validity" in the tech industry. In an attempt to avoid reinforcing negative power dynamics, I'm using alternate terms.

Contesting "Valid" Technological Knowledge

The reading emphasizes how knowledge systems establish what is considered "legitimate" and distinguish between "knowers" and "not knowers." According to Risam (2018), "Access to the means of digital knowledge production is important for altering the dynamics of cultural power and claiming the humanity that has been denied by the history of colonialism." I've had to consider my own presumptions about "good" coding techniques and whose standards I'm following in context with this.

Knowledge of Industry Demographics

Certain populations have traditionally held a dominant position in the tech industry. "Stereotypes for programmers appear to have been baked into the profession early on," according to the reading, with personality profiling in the 1960s choosing "anti-social, mathematically minded male" programmers (Vee, 2013). This knowledge enables me to take into account other viewpoints and refrain from developing technology that exclusively benefit privileged populations.

JavaScript Enhancements to My Portfolio Website

As my portfolio website has evolved, I've incorporated JavaScript to enhance both functionality and user experience. Here are the changes I've made and plan to implement:

System for Project Filtering

Adding a filtering function to my portfolio page. This enables users to filter between my writing/interactivity and game development projects. The following are involved in the implementation:

  • Making filter buttons that cause JavaScript to execute
  • Including data attributes for classification in project elements
  • Creating JavaScript that, depending on the chosen filter, displays or hides certain elements, i.e game design project cards or writing & interactivity project cards

When filtering, I want to use smooth transitions to enhance the visual experience. By enabling users to rapidly concentrate on the projects that most interest them rather than reading through all of the content, this filtering feature simplifies the interaction design.

Responsive Navigation with Hamburger Menu

For mobile responsiveness, I want to implement a hamburger menu using JavaScript rather than it just using CSS that:

  • Toggles a navigation drawer on smaller screens
  • Animates smoothly using CSS transitions
  • Manages focus states for accessibility
  • Closes automatically when a navigation item is selected

This significantly improves the mobile experience while maintaining the clean design aesthetic of my website.

Interactive Project Displays: Dual Specialties Shown

To better showcase my writing and game development:

For game dev projects:

  • Developing playable demos and interactive previews that are integrated into the page itself

For writing projects:

  • Putting in place expandable text with subtle unique animation and typography
  • For every project type, creating section-specific interface styles with distinctive hover effects combining game mechanics with narrative components to create a mixed experience
  • Using project-category-specific modal popups with unique interaction styles

Search Functionality

I am thinking of adding a search functionality to help visitors find specific content across blog posts and projects:

  • Adding a search bar that filters content in real-time
  • Highlighting matching terms in search results
  • Including tags and categories to improve discoverability

How These Changes Streamline Interaction Design

These JavaScript enhancements will significantly improve my portfolio's interaction design by:

  • Reducing cognitive load - Filtering, search, and organized navigation help visitors find relevant content without overwhelming them.
  • Improving accessibility - Proper focus management, keyboard navigation, and progressive enhancement ensure the site works for everyone.
  • Creating memorable interactions - Custom cursor effects, interactive animations, and playful elements make the site memorable and reinforce my creative identity.
  • Demonstrating technical skills - The interactive elements themselves showcase my JavaScript abilities while presenting my portfolio projects.
  • Telling a cohesive story - The different interaction styles help tell the story of my dual specialties while maintaining a cohesive overall experience.

JavaScript and Decolonial Principles in Balance

I'm continuously finding a balance between decolonial ideals and functionality as I apply these JavaScript improvements:

  • Ensuring the site works without JavaScript (progressive enhancement)
  • Optimizing for performance on lower-end devices and slower connections
  • Using semantic HTML as the foundation before adding JavaScript behaviors
  • Testing with sectionerse user scenarios and assistive technologies
  • Avoiding assumptions about users' devices, bandwidth, or technical knowledge

Balancing Creative Expression and Responsible Development

There are interesting problems in developing a portfolio that reflects my identity as a writer and game designer while upholding decolonial ideals:

  • Performance considerations: Users with older devices may not be able to enjoy fancy animations and interactivity due to their high processor requirements. This unintentionally establishes hierarchies of "knowers" and "not knowers" according to access to technology, as the reading on "Decolonizing Technology" indicates. I'm carefully improving every effect and provide backups.
  • I'm trying to implement JavaScript functionality that serves genuine purposes rather than chasing technological trends that, as the reading suggests, embed us in systems of the technological center.
  • Meaningful vs. Decorative - I'm ensuring each interactive element serves a purpose beyond decoration, enhancing understanding of my work rather than just looking impressive. As Costanza-Chock (2020) suggests in "Design Justice," this aligns with the principle of "Nothing about Us without Us."

Conclusion

In the future, I want to keep thinking about how I might use JavaScript to make interesting, approachable digital experiences that accurately reflect my creative identities in both writing and game design, while also better aligning my coding habits with decolonial principles. According to the conclusion of the reading on "Decolonising Technology," "continuous engagement with decolonization and the repercussions of techno-colonialism" is necessary to bring about long-lasting change, and I'm committing to this in my development work.