About Me

I'm narlock, a results-driven Software Engineer skilled in Integration and Fullstack development based in the United States. I have been working professionally in Integration and Backend engineering for over 3 years.

How I found myself here

When I was eight years old, I was introduced to Scratch. I would spend countless hours of my youth placing coding blocks on Scratch to create games, animations, and more. This was my first introduction to computer programming. I knew from that point forward that I wanted to build software.

I did not start my real coding journey until 2017 when I took my first introductory Java programming class in high school. This class taught me all about programming fundamentals and is the catalyst for my career in Java development.

Building personal applications

During my time in university, I began to build my own software projects outside of coursework. The first longer project I built was TamoStudy, a desktop study timer application designed to enhance focus and productivity by incorporating a virtual pet to assist users with motivation. GitHub stars

TamoStudy

I made numerous demo videos on YouTube showcasing the new features I would add for TamoStudy. This caused TamoStudy to become something that was used not only for me, but for others all around the world. As of writing, TamoStudy has over 2,500 downloads and continues to provide focus motivation.

The main focus of my personal projects throughout my time in univeristy all centered around personal growth and development. After TamoStudy, I created KaizenLAN, a fullstack application that provided different productivity related tools as an all-in-one package. I also created Alder, a Discord bot that runs on my server that tracks focus time, user leaderboards, and more. As of writing, Alder has been utilized by over 500 users within my server.

Gaining expertise

Before working as a Software Engineer, I was an undergraduate teaching assistant that specialized in junior/senior-level software design and development courses. This role allowed me to reinforce my understanding of concepts like object-oriented programming, data structures, containerizing applications, the software development lifecycle, design patterns, and the agile methodology while helping students learn and grow.

I've worked professionally primarly building Java and Python microservices and backend applications. I specialize in Spring, Kafka (Confluent), GraphQL (Apollo), Kubernetes, Terraform, and a suite of AWS services including Bedrock, Lambda, DynamoDB, S3, API Gateway, and OpenSearch. In addition to engineering applications, I have also utilized quality assurance tools like Spock and RestAssured to provide extensive regression and integration testing.

In addition to completing my B.S. in Computer Science, I have worked to receive certifications around the tools I specialize in. I've completed the Graph Developer - Professional from Apollo GraphQL and the Confluent Fundamentals Accrediation from Confluent. As of this writing, I am currently studying for the AWS AI Practitioner certification.

Workflow and setup

A software engineer's workflow and setup is very important when it comes to focus, productivity, and delivering new features and applications. The workflow itself is not just the tools that are used to complete work, but the catalysts for physical and digital organization.

Setup

I use a three screen setup. The focus monitor of my workflow is my ultrawide monitor. This is the primary screen that I use for any task that requires deep work. Whether that be for focused coding sessions or reading/writing documentation, having an ultra wide screen allows me to be focused entirely on what is in front of me. My second monitor is a vertical screen that solely serves the purpose of displaying my instant messaging applications. This allows me to easily see the messages that I receive while I am working, while not losing where I am at on my focus monitor. When I use a laptop, the laptop display is usually used to display my web browser that is opened on a page that describes what I am currently working on. When I need to review any kind of requirement, I can simply look at that screen to obtain details and return right back to whatever is on my focus monitor.

There are three main machines I use for my personal software development, they are as follows:

DeviceOSCPUGPURAM
ThinkPad T14sUbuntu 24.04Ryzen 7 PRO 4750U—16GB
MacBook Pro 14"macOSM1 Pro—16GB
Custom DesktopWindows 11 Proi5-12600KFRX 5700 XT32GB

I use all of these machines to do software development. When I built software, I often want to make sure that I can build, package, and run them on each operating system. Having machines that run Windows, macOS, and Linux allow me to test app experiences on each of them. It also allows me to directly debug software that may have OS differences.

For peripherals, I use the MX Mechnical and MX Master 3S as my keyboard and mouse respectively. I chose these because they easily allow me to toggle between which device they are connected - critical for a multi-computer setup.

In terms of my workflow, I have a notebook that I use a modified version of the Bullet Journal method. This notebook contains all of the things I need to do throughout my days, events that occur, notes, and day reflections. It is a very good tool for organizing all of my thoughts into a single place.

I mentioned previously that my laptop screen usually serves the purpose of displaying the task I am working on. These tasks typically come from whichever project management tool I am using. For projects that I work on that are open source, I use my own tool kb (short for Kanban) - a terminal-based Kanban task organizer. For my private projects, I use Gitea, a self-hosted Git server, and its Projects system in a similar, Kanban fashion.