Hi I'm

Logan Campbell

A Software/Web Developer

About

I'm Logan Campbell, a Bachelor of Computer Information System graduate from Okanagan College. I am an aspiring software developer and most interested in standalone software, but also enjoy full-stack web development. I also dabble in game development from time to time.

Projects

Tetrade: PlayStation Homebrew

Tetrade is a Tetris clone for the original PlayStation (released in 1994) and is fully playable in an emulator and on real PlayStation hardware. The game can be played solo or with two players, including a "versus" head-to-head mode, and plays very similarly to modern Tetris games. Tetrade is built using the community-created and open-source SDK PSn00bSDK, which is a set of libraries for interacting with the console's BIOS/hardware. Tetrade was created as a personal project in 2024

In recent years, there has been a resurgence in "retro"-styled games mainly focused on the N64 and PlayStation. I find this style fascinating even though I have no nostalgia for it (as it was before my time), as a result, I thought it would be fun to not only make a game in the style of the original PlayStation but one for it. This project served as a way to learn the hardware of the system, improve my C programming skills, finish more projects, and as a stepping stone to creating 3D games for the PlayStation. Overall, it was a fun opportunity to dive into lowish-level software development.

Technologies Used
  • C
  • cmake

Marathon Mode: allows 1 or 2 players to play simultaneously and independently.

Gameplay of marathon mode

Versus Mode: 2-player head-to-head.

Gameplay of versus mode

Flexible Work Location Tool

What The Project Is

The Flexible Work Location Tool (FWLT) is an application being built for Interior Health as part of my capstone project for Okanagan College. FWLT is needed to streamline the process of handling forms submitted by employees as currently it is done through sharing pdf files or physical copies. The forms are related to applying to work from home. Employees will fill out forms and submit them through the application then managers can review the forms and approve or deny these forms. The forms take a data-driven approach, meaning all the questions and the answers are stored in a relational database instead of being hard-coded in the front end.

Admins of the application can use a custom What You See Is What You Get (WYSIWYG) form builder for creating new forms that can then be filled out by users.

HR users can view varoius analytics related the application, like form approval rate, average manager response time, and employee workplace by province.

Technologies Used
  • Blazor Server
  • C#, HTML, CSS
  • Entity Framework
  • Microsoft SQL Server
  • Tableau
My Contrabution

One of the major parts I've worked on is the form builder WYSIWYG. This includes breaking done the problem in smaller sizable chunks, building out a general structure, and actually programming large portion of the component.

What I've Learned

The project is being developed as part of a group of ten others using Agile, Scrum, and some Extreme Programming methodologies. During the project, I have learnt a ton about working with large groups, communication, software development, and software engineering.

How important it is to ask for help when stuck (especially from those with more experience) and put aside a bit of ego for the success of the project. While working with others in XP pairs, learning to effectively communicate ideas back and forth, read other's code live and provide feedback and assistance take the feedback as well. Effectively discuss and resolve disagreements in a friendly productive manner.

Lots about developing software in an Agile and Scrum approach, learning to self manage and being proactive enough to take on new tasks. Discussing what we have done, will do etc. almost every day. Meeting with clients regularly to gain a better understanding of the kind of software that they need, and applying their feedback to our project.

The critical role of version control, and being strict on uploading new features or fixes to their own branch. Submitting and reviewing pull requests to have more eyes so that hopefully no bugs slip through. I've read a lot of code reviewing my peers' work and found it incredibly useful for understanding the project well, but also as practice for being able better read and learn from others' code.

Since others will be reading my code as well I've learnt to better write self-documenting code and better descriptive comments too, for more complex sections. I've also got to write tons of documentation for the project (which I can't show, unfortunately), and gotten lots of practice writing clear and in-depth explanations of the software.

In short, I have learned how better work and communicate in large groups, applying agile methodologies, and have become a better programmer and software developer in general.

Form Builder in action.

Various analytics of the application are provided through Tableau Cloud, and displayed on our app.

Map showing locations of users

A table displaying all roles on the app, admins can add new roles as needed.

Table of user roles

Roles have many permissions and can be added or removed by admins.

In the Middle of a game of pong

Networked Pong

Networked Pong is a rendition of the classic that can be played over a network (Internet or LAN), as the name implies. Players connect to the server application and once all players are connected then a game of pong is run. The server application handles all game logic, the client application itself simply acts as a view reciveing game state from the server, updating the screen, and sends player input the the server. The applications are written in Java, the client GUI uses Swing. The project was built for a network programming course at my college in April 2023.

In the Middle of a game of pong

Chat Application

LANMessenger is a simple chatting application, it has a login system, and a Group Chat that allows all users to message to (even users not logged in), and private messaging between users. It is built using Blazor WebAssembly, ASP.NET Core, and Entity Framework for interacting with a database.

Sending a message to the group chatLogining in and sending a private message

Minesweeper Clone

Minesweeper clone built in Java with JavaFX and Gradle. The game has three difficulties like the original game (Easy, Intermediate, Expert) a custom difficulty option which allows you to change the height, width and number of mines. It also writes to a file keeping track of high scores which are measured by how fast you win the game. It was built as part of a programming course at my college in 2020.

Easy game winExpert game lose

Contact

If you want me for your projects, or have any questions the best way to contact me is at.