Andrew's Portfolio
Espy

Espy Command System API for C#

Images

Snippet of code showing the use of threading, cancellation tokens and a custom queue which sorts by priority.

What do you want to know?

Me and a good friend of mine, Joshua Jovanovich, who also attends Olympic College. We also had a third party that had to leave before any code was actually done, but nevertheless they provided some input. They however wished to be anonymous.
A scalable priority queue-based event system which allows custom commands to be ran. It also allows for your own priority types through generics.
  • We Started writing ideas down for it early august 2017, with our first commit to our team services repo on August 5th 2017.
  • It took us about a week to decide how we wanted the media viewer to run and we decided on a command based event system.
  • Over the next month we made many updates, including two complete rewrites. It's not a good idea to go in without any pre-planning.
  • The last commit, just before we decided we didn't have time to work on it was September 8th 2017.
This was originally designed to be used in a Media Viewer application, where you could view, sort, tag, group, and share your media. Eventually we had also planned to allow minor editing, much like some of the common social media applications do today.

Because of work and school between both me and Joshua however we decided that we did not have the collective time to finish the original project. Instead, we decided to change our Espy command system into a library to be usable in more than just this one application.
RPI Commune

RPI Commune

Images

The display that's shown on my Raspberry Pi from the main graphical interface. The display is an 800 x 480 touchscreen.

I wrote most of the drawing mechanics from scratch. This is part of the TabContainer class used to hold the set of tabs in the graphical interface.

What do you want to know?

This was created solely by me and for me. There were no other parties involved.
A set of utilities made in C# and Python to communicate between my desktop and my Raspberry Pi. The original program was for polling playable, unowned maps from a game I've played, which were clickable on the Raspberry Pi & would signal to the game on my desktop to download the map.

Over time I let the interface go, but still used the communication aspect to create backups of screenshots and word documents.
This project I started in 2016, and created the graphical interface around then. After a few weeks I stopped development.

Later I picked it back up in 2017 and wrote code to use it as a backup server for my documents.

Hardware:

  • Raspberry Pi 3B
  • 5" TFT LCD Touchscreen (800 x 480) for Raspberry Pi Model 3B

Software:

Libraries:

At first I just wanted to create something I could have searching for new maps while I was playing the game the maps were for. After I was done one there'd be more maps listed so I can near-instantly play a new map.

After a while I stopped development, but when I started back up I turned it more into a backup server, since my desktop was experiencing common crashes.
Drop Log

Drop Log

Images

This is the main view of the Drop Log Interface. It has the option enabled to only show total drops, however you can see each drop at the time it was logged by clicking a button in the title bar.

This is the minimal version of the program, layered ontop of a black background. This view has partial transparency and can be always-on-top, so you can interact with your game while being able to add drops to the log almost effortlessly.

Another view of the interface, in transparent mode, but full view & has full drop log enabled instead of condensed.

A very small part of the code for the interface. This creates a new tab in the tab pane for each boss, the pane item inherits from a custom DLIButton class, which among other things allows customization of the shape of the component.

What do you want to know?

This was created solely by me. I've had a couple friends who play similar games debug it for me as well, with no glaring issues.
An interface built in java for organizing and logging dropped items in various games. You can select a boss and click the drop when you got it, logging when you dropped it.

It has multiple view states:
  • always-on-top mode so you can have it on top of your game, to click the item each time
  • small-form-factor mode so it takes close to half the size it does. This removes the drop log view and enables you to only have the drop buttons to click when you need them.
  • transparent mode to allow you to view the game under the drop log
  • condensed drop mode, which instead of listing each drop at the time they occured, shows totals of each drop you've logged
Each of these modes are mutually exclusive.

There are two large caveats so far though...
  • You can set it up for virtually any game, it reads off xml files for boss logs.. but you have to manually create the log for the boss / game unless you have one already made.
  • It cannot automatically log the items, you have to manually click the item button to log it
For some games these caveats might be too big of a hurdle to use, but others it can still be worth using!
I started this project in March 2018 and spent close to 2 to 3 weeks on it. I had to put it on the back burner because of life, but I plan on adding onto it in the future.

Software:

Libraries:

There's a lot of games I play, most of them are some sort of mmorpg, and I wanted something to catch me up on Java, since I hadn't used it in a few years. I decided a drop log program would be nice.