cityuni-webserver/index.go.yml
Captain ALM d41851cfbc
Some checks are pending
ci/woodpecker/push/build Pipeline is pending
Squash and merge edge.
September Update.
2023-09-19 23:27:32 +01:00

342 lines
19 KiB
YAML

#This file is (C) Captain ALM
#Under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License
cssBaseURL: "resources/assets/base.css"
cssDarkURL: "resources/assets/dark.css"
cssLightURL: "resources/assets/light.css"
jScriptURL: "resources/assets/index.js"
noVideoImageLocation: "resources/assets/novideo.png"
playVideoImageLocation: "resources/assets/video.png"
logoImageLocation: "resources/assets/logo.png"
moonImageLocation: "resources/assets/moon.png"
sunImageLocation: "resources/assets/sun.png"
sortImageLocation: "resources/assets/sort.png"
headerLinks:
Main Portfolio: "https://portfolio.captainalm.com/"
Root Site Home: "https://www.captainalm.com/"
LinkedIn: "https://www.linkedin.com/in/alfred-manville/"
about:
title: "Alfred Manville (Captain ALM)"
content: >
<p>
Hello, I'm Alfred Manville (#age# Years Old) and a third year student at City, University of London.
I'm a free and open-source developer who enjoys networking my laptops together,
writes network software to communicate between them and then tries to break said software.
I also have a <a href="https://youtube.com/c/CaptainALM">Youtube Channel</a> which is in the process of being resumed from a hiatus.
</p>
<p>
On the programming side, I know Visual Basic .net, C# .net, C, Java, Go, Javascript, C++, Python,
Processing and Microsoft Smallbasic (I have also dabbled in Bash/Batch).
I am currently in the progress of writing infrastructure software in Go, in the past, I wrote a <a href="https://github.com/Captain-ALM/CALM-Console">command console</a>
in VB .net for my own pluggable libraries (I created a CMD emulator to get past the school disabling interactive CMD) and some <a href="https://github.com/Captain-ALM/CALMNetLibSamples">
network communication applications</a> (Including a peer-to-peer <a href="https://github.com/Captain-ALM/C-ALM-VOIP">VOIP client</a>
using NAudio as the audio library and my own network wrapper library, however, it is in need of bug-fixing at the moment).
</p>
<p>
My github username is <a href="https://github.com/Captain-ALM">Captain-ALM</a> and has half my public programming projects,
the other half is located at: <a href="https://code.mrmelon54.com/alfred">https://code.mrmelon54.com/alfred</a>
</p>
<p>
On the cracking / hacking side, I've used virtual machines a lot (Mainly infrastructure testing
but I did at one point try creating and breaking into a test windows domain network I had setup).
I've also used VMs to pull perform a PXE boot off a network and analyse the partially deployed image
(And this is why the deployment servers should be switched off when unneeded, especially since PXE
auto-domain-join would store its credentials in the image).
I also played around with <a href="https://github.com/Captain-ALM/rdpccgs-ccgsrdp-">accessing the RDP servers</a>
when I was in secondary school (Turns out remote apps is just a glorified application auto-launcher with window size detection).
Here is <a href="https://github.com/Captain-ALM/op_ctrl">Operation Control</a> (Stylized: op_ctrl) used for same-computer exploiting
by wrapping target applications run by other users (Such as via RDP Remote Apps) and then starting a master server to send arbitrary
.net DLLs to execute on the target slaved client.
</p>
<p>
I also <a href="https://subsection.captainalm.com/">bake bread</a> (Mostly learnt from my grandma); although this sub-site is still under construction.
I also play video-games (Check my Youtube Channel or my <a href="https://www.gog.com/u/Captain_ALM">GOG Profile</a>) and am an expert at using lower-end hardware.
</p>
<p>
I used to do Karate (Kyokushin Brown Belt) and I wish I could still fit my bike.
Here is my <a href="https://cdn.captainalm.com/download/keys/alfred@captainalm.com.asc">GPG Key</a> for my email address.
</p>
<p>
My CV is available in the following formats: ( <a href="https://cdn.captainalm.com/download/cvs/AlfredManvilleCV-2023.docx">DOCX</a> | <a href="https://cdn.captainalm.com/download/cvs/AlfredManvilleCV-2023.pdf">PDF</a> )
</p>
thumbnailLocation: "resources/assets/imageofyou_t.jpg"
imageLocation: "resources/assets/imageofyou.jpg"
imageAltText: "Image of me."
birthYear: 2002
contactEmail: "alfred@captainalm.com"
entries:
- name: "Bootcamp 2021: Ninjaformer GUI"
content: >
<p>
My first programming task at City, concluding the 2 week 2021 Programming Bootcamp,
although I have only spent 3 days programming this and was a tad bit too ambitious.
(I could have started earlier though)
</p>
<p>
This Processing project show that I can use arrays, loops, mouse and keyboard interaction and geometric transforms.
The project contains a GUI library that I made to create the menu system for what could have been the Ninjaformer game.
</p>
<p>
Unfortunately, while the code for loading tile, sprite and level information exists (JSON, sprite sheet support);
I ran out of time before the submission to actually even start on the game. But you can play around with the main code and build your own GUIs too so...
</p>
<p>
Here is the repo: <a href="https://github.com/Captain-ALM/Ninjaformer-Processing">https://github.com/Captain-ALM/Ninjaformer-Processing</a>
</p>
<p>
The original video is available here: <a href="resources/stream/vid1.mp4">resources/stream/vid1.mp4</a>
</p>
startDate: "01/10/2021"
endDate: "31/10/2021"
videoLocation: "resources/stream/vid-bootcamp.mp4"
videoContentType: "video/mp4"
videoThumbnailLocation: "resources/assets/bootcamp-vid.png"
thumbnailLocations:
- "resources/assets/pic1_t.jpg"
- "resources/assets/pic2_t.jpg"
- "resources/assets/pic3_t.jpg"
- "resources/assets/bootcamp-1_t.jpg"
- "resources/assets/bootcamp-2_t.jpg"
- "resources/assets/bootcamp-3_t.jpg"
imageLocations:
- "resources/assets/pic1.jpg"
- "resources/assets/pic2.jpg"
- "resources/assets/pic3.jpg"
- "resources/assets/bootcamp-1.jpg"
- "resources/assets/bootcamp-2.jpg"
- "resources/assets/bootcamp-3.jpg"
imageAltTexts:
- "Level select screen."
- "Empty content interface (Gameplay)."
- "Level editor screen."
- "Ninjagame source code."
- "Button image source code."
- "Sprite world source code."
- name: "City Game Project 2022: Ninjaformer (Alpha, Beta)"
content: >
<p>
My first major project at City (A Java Game), concluding 2.2 Months of programming.
This game uses the University provided game library (Which is just JBox2D extended).
</p>
<p>
Looking back on this, I wish I started earlier (Like January) that way I could have implemented all the features I wanted.
This project allows for levels to be designed within the program and allows them to be edited as XML outside the program.
</p>
<p>
The code is extensible and it is relatively straight forward to implement new features. There are a few bugs that can crop up
(Such as sticking to surfaces due to ground body updates) but I already know ways to fix them.
This project relies on part of a GUI library I built in it and I had to modify the CityGame library by extending it.
The audio and assets were also created by me, although they're a bit amateurish as I'm a computer scientist not an artist!
</p>
<p>
This game is designed to be a story based game... The tutorial level at the beginning of the game is the dream in which the main
character dreams of being a ninja, this allows for the player to learn the controls and basic mechanics of the game.
The next level is the training level in which the ninja trains within a monastery.
The final level allows the ninja to "complete" the game while exploring a set of caves.
</p>
<p>
The game contains a mechanism system allowing for the unlocking of portals (Doors) for the character to progress within and between levels.
The character contains a set of different stamina types, core stamina which if depleted causes a death, leg stamina which is a multiplier for
doing any action that uses legs and arm stamina which is a multiplier for doing any action that uses arms. The game contains a weapon system of
throwing stars, swords and throwable liquids.
</p>
<p>
Here is the repo: <a href="https://github.com/cityteaching/citygame2122-Captain-ALM"><strike><del>Not public due to university anti-plagiarism policy.</del></strike></a>
</p>
<p>
The original video is available here: <a href="resources/stream/vid2.mp4">resources/stream/vid2.mp4</a>
</p>
startDate: "25/02/2022"
endDate: "08/05/2022"
videoLocation: "resources/stream/vid-ninjaformer-2022.mp4"
videoContentType: "video/mp4"
videoThumbnailLocation: "resources/assets/ninjaformer-vid.png"
thumbnailLocations:
- "resources/assets/pic4_t.jpg"
- "resources/assets/pic5_t.jpg"
- "resources/assets/pic6_t.jpg"
- "resources/assets/ninjaformer-1_t.jpg"
- "resources/assets/ninjaformer-2_t.jpg"
- "resources/assets/ninjaformer-3_t.jpg"
imageLocations:
- "resources/assets/pic4.jpg"
- "resources/assets/pic5.jpg"
- "resources/assets/pic6.jpg"
- "resources/assets/ninjaformer-1.jpg"
- "resources/assets/ninjaformer-2.jpg"
- "resources/assets/ninjaformer-3.jpg"
imageAltTexts:
- "Cave level."
- "Tutorial level."
- "Training level (Editor mode)."
- "Main Menu screen."
- "Pause Menu screen."
- "Audio Settings screen."
- name: "Global Game Jam January 2022 : Shadow work"
content: >
<p>
I may have not done any programming for this (Even though I know C#) but I helped write a good chunk of the background story
(I also helped with the level design although it turns out 48 hours is hard to get polished stuff done in, so some stuff had to be axed).
</p>
<p>
Read about and get the game files from: <a href="https://globalgamejam.org/2022/games/shadow-work-8">https://globalgamejam.org/2022/games/shadow-work-8</a>
</p>
<p>
Download the windows executable from: <a href="https://cdn.captainalm.com/download/game/dist/ShadowWorkExecutable.zip">https://cdn.captainalm.com/download/game/dist/ShadowWorkExecutable.zip</a>
</p>
<p>
The Design Document is available here: <a href="https://cdn.captainalm.com/download/game/design/Shadow-WIP-Story-Info.pdf">https://cdn.captainalm.com/download/game/design/Shadow-WIP-Story-Info.pdf</a>
</p>
startDate: "20/01/2022"
endDate: "30/01/2022"
videoLocation: "resources/stream/vid-shadowwork.mp4"
videoContentType: "video/mp4"
videoThumbnailLocation: "resources/assets/shadowwork-vid.png"
thumbnailLocations:
- "resources/assets/shadowwork-2_t.jpg"
- "resources/assets/shadowwork-3_t.jpg"
- "resources/assets/shadowwork-4_t.jpg"
- "resources/assets/shadowwork-5_t.jpg"
- "resources/assets/shadowwork-6_t.jpg"
- "resources/assets/shadowwork-1_t.jpg"
imageLocations:
- "resources/assets/shadowwork-2.jpg"
- "resources/assets/shadowwork-3.jpg"
- "resources/assets/shadowwork-4.jpg"
- "resources/assets/shadowwork-5.jpg"
- "resources/assets/shadowwork-6.jpg"
- "resources/assets/shadowwork-1.jpg"
imageAltTexts:
- "Main Menu screen."
- "Controls screen."
- "Bedroom (Beginning game area)."
- "First Puzzle, duality keys."
- "Visualisation of in-game character split."
- "End of the game area."
- name: "City-University Portfolio"
content: >
<p>
This project is what's outputting this page at the moment! The backend is written in Go and there is both custom front-end Javascript and CSS!
The pages support theming and the entries can be sorted through Javascript or on the backend through GET parameters.
</p>
<p>
This project is under the BSD-3-Clause License, so if reusing, you must scrub references to me, the yml file this is written in is under
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
</p>
<p>
Find the source code here: <a href="https://code.mrmelon54.com/alfred/cityuni-webserver">https://code.mrmelon54.com/alfred/cityuni-webserver</a>
</p>
startDate: "13/07/2022"
- name: "Python Communicator"
content: >
<p>
After learning python for my portfolio development option, I wanted to showcase what I knew in python.
I usually make a network application in each of the new programming languages that I learn.
For the repo showing me learning python please go to: <a href="https://code.mrmelon54.com/alfred/LearningPy">https://code.mrmelon54.com/alfred/LearningPy</a>
</p>
<p>
This project is a message based network communicator written in python and has a module for networking.
The project allows the sending of text messages and files over a network.
It also comes with a nice twist, in that if you select the pickle protocol, you can inject code into another client by sending a specially crafted message!
</p>
<p>
Find the source code here: <a href="https://github.com/Captain-ALM/CALMPyNetworker">https://github.com/Captain-ALM/CALMPyNetworker</a>
</p>
startDate: "10/12/2022"
endDate: "10/12/2022"
videoLocation: "resources/stream/vid-pycom.mp4"
videoContentType: "video/mp4"
videoThumbnailLocation: "resources/assets/pycom-vid.png"
thumbnailLocations:
- "resources/assets/pycom-1_t.jpg"
- "resources/assets/pycom-2_t.jpg"
- "resources/assets/pycom-3_t.jpg"
- "resources/assets/pycom-4_t.jpg"
imageLocations:
- "resources/assets/pycom-1.jpg"
- "resources/assets/pycom-2.jpg"
- "resources/assets/pycom-3.jpg"
- "resources/assets/pycom-4.jpg"
imageAltTexts:
- "Text Messaging."
- "File Messaging."
- "Exploit Testing."
- "Failed Exploit Testing."
- name: "Group Project - AirVia ATS (AirTicket Sales)"
content: >
<p>
This group project was creating a Ticket Sales system for the fictional company AirVia LTD, for this the group had to both design the implementation and then write the code for it.
Unfortunately, the project was not finished to a state where all the required features were added in and while all of the backend functionality except for the reports existed,
the GUIs to view and control those backends was not available.
Examples of this include: Sales, Transactions, Discounts and Reports where no GUIs were created or finished for any of these components.
The design of the program was followed with a lot of adaptations (Rather than not being followed at all) and it architecturally made sense with the use of facade implementations;
The use of facade allowed for other people to code against an interface while waiting for a controller to be finished which extended the interface.
</p>
<p>
The database system was handled via an abstraction layer I designed and wrote myself which supports 'locking' a record for keeping consistency when multiple instances of the program are running.
This system uses an auxiliary table that has only the primary key column, a record is locked if it does not exist in the auxiliary table (Cannot delete) and is not locked if it does (Cannot insert);
This allows for atomic locking and unlocking of the record.
The implementation requires the record locked for safe access (Loading, Storing).
The abstraction layer makes use of two base classes, one for a single record and one for a table; with tha table one allowing the creation and deletion of the extending table via a schema and name being provided (As seen in the source code).
I also developed a backup system for the database that supports any table with the specifically supported data types used in the tables defined in the schema - removing the need to use third-party programs like SQLDump.
</p>
<p>
In the end, the following features were implemented: Login, Help / Error / Status Bar, Account System + GUI, Blank Types + GUI, Blanks + GUI, Customers + GUI, Discounts, Flexible Discounts, Sales, Transactions, Refunds, Dashboard + Notifications, Database Interfacing + Backup and Rates + GUI.
</p>
<p>
Find the source code here: <a href="https://github.com/karansambee/IN2018-Team-Project/tree/master">https://github.com/karansambee/IN2018-Team-Project/tree/master</a>
</p>
startDate: "01/02/2023"
endDate: "30/04/2023"
videoLocation: "resources/stream/vid-groupproject-2023.mp4"
videoContentType: "video/mp4"
videoThumbnailLocation: "resources/assets/groupproject-vid.png"
thumbnailLocations:
- "resources/assets/groupproject-1_t.jpg"
- "resources/assets/groupproject-2_t.jpg"
- "resources/assets/groupproject-3_t.jpg"
- "resources/assets/groupproject-4_t.jpg"
- "resources/assets/groupproject-5_t.jpg"
- "resources/assets/groupproject-6_t.jpg"
- "resources/assets/groupproject-7_t.jpg"
- "resources/assets/groupproject-8_t.jpg"
- "resources/assets/groupproject-9_t.jpg"
- "resources/assets/groupproject-10_t.jpg"
imageLocations:
- "resources/assets/groupproject-1.png"
- "resources/assets/groupproject-2.png"
- "resources/assets/groupproject-3.png"
- "resources/assets/groupproject-4.png"
- "resources/assets/groupproject-5.png"
- "resources/assets/groupproject-6.png"
- "resources/assets/groupproject-7.png"
- "resources/assets/groupproject-8.png"
- "resources/assets/groupproject-9.png"
- "resources/assets/groupproject-10.png"
imageAltTexts:
- "Logon Interface."
- "Administrator Dashboard Interface."
- "Blank Modifier."
- "Customer Creator."
- "Disabling an Account."
- "Rate Creator."
- "Blank Type Editor."
- "Help on Force Unlocking (Database Manager Interface)."
- "Account Editor on a Manager within The Dashboard Interface."
- "Part of the Main.java source code Screenshot."
- name: "City-University Promotional Video"
content: >
<p>
Here, I star in an interview for City, University of London's Promotional Marketing Campaign. Join <a href="https://www.city.ac.uk/">City</a>!
</p>
<p>
Find the video here: <a href="https://www.youtube.com/watch?v=tOccImgskec">https://www.youtube.com/watch?v=tOccImgskec</a>
</p>
<p>
Find the general School of Science and Technology video here: <a href="https://www.youtube.com/watch?v=pkTCf4CWFSY">https://www.youtube.com/watch?v=pkTCf4CWFSY</a>
</p>
startDate: "05/06/2023"
endDate: "05/06/2023"
videoLocation: "https://www.youtube.com/watch?v=tOccImgskec"
videoContentType: "text/uri-list"
videoThumbnailLocation: "resources/assets/citypromo-vid.png"