Alex Kyron

https://alexkyron.xyz/

Blog

Here you will see my ramblings. New YouTube videos will be accompanied by blog posts, as well as new projects & updates on existing projects. You can also subscribe to my RSS feed to see these in your newsreader of choice :)

This is the rolling blog page which shows all of my recent posts. If you want an easily browsable index listing, go to my index page, which lists the posts by date.

## [Where have I been, and what's next?](/blog/where-have-i-been-and-whats-next.php) Alright, so, I've kind of been MIA from this blog for a while. A lot has happened! I've launched another jam game (it's pretty bad, but getting some updates soon then I'll proudly link it here) in CryENGINE (a real challenge to learn!), started some projects which I'll talk about later, and secured an amazing job. ### The Job I found work in Vancouver as a C++ gameplay programmer on VR products. It is a field that interests me, a technology I love, and a tech stack I've worked with for years - it's the perfect job for me. Plus, its in the perfect city - I am so ready to get out of Oshawa and live in such a beautiful coastal city on my own. I'm really surprised I got it without my degree, but it turns out good demos and great code actually go a long way. I found work earlier this year with a company that shall not be named due to unethical workplace behavior and a vague threat of lawsuits for exposing them (it does not matter if I will win, as I cannot afford to fight it anyway), and turned down another offer at a great startup in Toronto, before finding this opportunity - finding work in CS isn't as hard as [r/cscareerquestions](https://reddit.com/r/cscareerquestions) makes it out to be. I found a great place right downtown and it's super exciting to hit the ground running and be financially stable off of something I love! ### The Projects Besides that CryENGINE game, I've also begun working on a [Discord client called Powercord/EpicDiscord](https://github.com/AlexanderKyron/EpicDiscord) which is designed for powerusers and has great features. The repo is a skeleton with no functionality on it because I have not yet pushed my local commits, but right now it is a functioning Discord client with send/receive functionality etc and a very efficient, compact UI. It's lightweight too. Features planned include automation support with node based visual scripting and Python bindings (+ a collaborative code editor built right in for working on bots, as it can log into bot accounts), embed support (rich bot messages for users!), end-to-end encryption with keys traded p2p out of band transiently over a private server (or manually traded), voice modification and TTS over voice channel, and more - basically, a Discord client which is efficient, feature-rich, privacy-centric and caters to developers/powerusers. Very excited to get the first working builds out! It is very data-centric as well, storing message history, servers/channels, etc in a local rdbms and some cool features come from there. It is powered by Qt 6 and written with speed and efficiency in mind, targeting low-end systems while still packing enough power to beat out Discord for functionality and looks on the high end machines that don't benefit as much from the resource efficiency. Since it is just a client for Discord, it serves the same ecosystem and makes an attractiv choice - and doesn't violate the TOS (automation features are a plugin, making this not selfbotting/automation). It does contain forms for buying Nitro etc so I'm not here to out-compete Discord - just improve it, because their desktop client is laughably bad. I'm also helping someone out with their Ghost Spider fangame, and progress on Get Talent! has been slow but steady after the loss of our frontend developer. I'm looking to distance myself from the project as I move on to fulltime work with my new employer, so send me an email if you're interested in the rights. There're some other projects I'm working on, but those are best kept secret until later ;) (unless any information security professionals/hobbyists want to reach out to me privately over email) ### Life A lot has changed. My parents are divorcing, I'm moving to Vancouver, I broke things off with my now-ex, and just... yeah, a lot of has changed sinced my last post. But I feel better than I have in recent memory, to be honest - I'm going to be out of this toxic environment at home, I'm free of a relationship that was doing nothing but draining both of us, and I'm gonna be making a living off of doing what I love. For once, I feel very hopeful about the future, and happy overall. Signing off for now, hopefully I'll update this more frequently in the future :)
March 31 2021 21:18:34.
## [Launching the Get Talent website](/blog/launching-the-get-talent-website.php) Well, I suppose it's time I show the world what I'm working on. [Get Talent!](https://gettalent.ca) is a groundbreaking new app for finding people to work on projects. Yes, it might be a little bold to announce this early, but I really like what the team and I have going on so far. I'm the main developer and I work across our entire technology stack - from the primary Spring Boot backend for the REST API, to the PostgreSQL database, to the Flutter cross-platform mobile app. It's been a great experience so far which has taught me a lot about backend development for web services and given me the experience I need to tackle any task. We're early on, but working as a well-oiled machine. I've budgeted out my time perfectly so I can keep working just as hard when I find full time work (and I'm interviewing for a few great positions over the next week) and while I stay a full time student, as well as working on this alongside the primary projects at Winnitude! Software. Most of the primary backend for the user-based systems is done, which is nice. I'm rapidly clearing the backlog in that area and designing the chat system, and looking to pick up some more developers soon to help get the collaboration services done once we have some funding, either through my own income or through investment. I am excited for what the future holds for [Get Talent!](https://gettalent.ca) and will see this through to launch.
December 12 2020 22:26:06.
## [Game Jam Time!](/blog/game-jam-time!.php) Oh man, it's time for a game jam :) It's a 7 day game jam by my friends on the Jam Fam Discord server, which mostly consists of people who participated in the Brackeys Game Jam 2020.1 jam. I made a terrible game called Demise for that one. Anyways, the theme for the jam is actually up for choice by each person, out of two options: 1. Christmas theme 2. Remix of old jam game I chose to go with a remix of an old jam game personally, so I'm making a remake/sequel/reboot to [Viral Insurgent](https://winnitude.itch.io/viral-insurgent), a game I made in 12 hours when I was 16 years old. I figured I could blow the original one out of the water while still staying faithful to the core ideas that made the original enjoyable and garnered it a few fans who played it for hours and hours. I also have a group project for my Games Marketplace course at my University, and there's a 10% bonus mark to it if there's a functional game demo to go with the pitch. Gonna use this (with some further development) as the game to pitch and as the demo. Total win, kills 2 birds with 1 stone. Usually when I do a game jam I end up slowly killing myself by way of caffeine and sleep deprivation, but the plan this time is to take it more casually. I already have the hard parts worked out - the actual game concept - and a whiteboard full of the pseudocode for the implementations of a lot of the core mechanics from the original, so developing this one shouldn't be too hard. I'm also doing the art for this one myself, here are some guns I modeled in just under an hour right as the day started: ![Shotguns](https://i.imgur.com/lLebt18.png?1) ![Pistol](https://i.imgur.com/Z9nC6ju.png?1) It's using the same low poly, neon based art style as the first game, but I'm trying to be less over the top and offensive to the eyes this time around. I'd also like to point out the glow-up the shotgun has had over the almost 2 years since the first game: ### 2019: ![Original Shotguns](https://i.imgur.com/UVk8FSW.png) ### 2020: ![New Shotguns](https://i.imgur.com/XLjGM9H.png) It may be a little unfair to compare a screenshot from Unity to a screenshot from Blender, but I don't have them in the engine yet, and with the right tweaks they'll look almost the same in Unreal as they do in Blender. Major upgrades here. ## Gameplay Changes I've made changes to the gameplay, although almost all is on a whiteboard right now and I'm just starting to prototype. First, ### Movement Movement in the original game was always a bit odd. It was a love it or hate it scenario - a friend of mine who is a Portal speedrunner REALLY LIKED it because it was pure bunnyhopping platforming to gain as much speed as possible. On the other side of things, people without much experience bhopping who were otherwise great at games could spend hours. On thetutorial level. So, I'm scrapping the bhopping feature the original was built around, but keeping the core theme of fast, skillful movement - replacing bhop with easier to grasp mechanics which still have to be chained together. * Grappling hook * Wall riding * Rail grinding * Grapple striking The grappling hook here doesn't work like the one in [Demise](https://winnitude.itch.io/demise). Instead, it rips the player out towards a point. They'll always pass through a defined area along their arc as well so long as they don't deliberately redirect it with their movement keys, which means I can use grappling hooks to introduce keyholes which make the player feel stylish and cool while not needing all the skill it took to feel cool in the original game. It automatically locks on to the best point, which is scored based on the dot product of the camera to the point (ie. closest to look direction on screen), alongside a few other rules which adjust its score, before the one with the best possible score is used. Wallriding allows the player to slide across a wall. They don't latch onto it and wallrun like in, say, Titanfall, but instead, it slows down their acceleration due to gravity, and then allows them to launch off of it. The player slides down the wall. It doesn't stop their fall (unless they wall-jump to cancel their Z velocity), but it means they won't keep falling *faster*, and allows them to cross pretty large sections of wall before slipping too far if they go in at a flat angle. I'm playing around with adjusting their Z velocity on entry to maybe half of what it is before they attach to the wall. The rail grinding system is pretty cool. Rails are set up as splines, and at each point along the rail there is a grappleable point. If the player latches onto the point, they are shot towards the rail, and the spot they pass through on their arc is just above it so that the rail detector collider on the player will catch on it and cause them to start rail grinding. It works a bit like, say, Sunset Overdrive or Sonic the Hedgehog, where it propels the player along the rail at a high speed until they dismount. Currently it's just jump to dismount, but I plan on adding left, right keys to switch between adjacent rails. Could be really interesting to do a high-speed chase level where the player is constantly swapping rails to avoid hazards and catch up to an enemy. Finally, grapple striking. Grapple striking is basically the web-strike mechanic from Spider-Man: Web of Shadows. Grapple onto an enemy, press it again at the right time to do high damage. You might be thinking, "That's not movement!", and you my friend need to play Web of Shadows. Sure, hitting the attack button again will just damage them then pop the player on the ground to follow up with a combo, but hitting jump at the end damages them and then launches the player off of them like a springboard, to continue chaining up to other strike moves. This is the main way I want players to approach encounters with lots of stationary turrets or similar enemy types, strategically laid out to create a path players can follow by springing off of each enemy. These are not hard to use, nor particularly hard to master, which makes it very accessible to just pick up and play, but they can be combined in ways that make the player feel like a stylish badass. ### Combat The original game allowed the player to dual-wield any weapons in any combination. This was a cool idea, but clunky and OP in practice. So instead, I'm bringing back the dual wielding feature for shotguns since they're the "iconic" (not really, but it's the thought that counts) weapon from VI in all the screenshots and most of the trailer. The submachine guns will get it as well. Other weapons are held single. This is for 3 reasons: 1. Balance 2. Streamlining control scheme 3. Time to create more advanced animations for both hands The machine guns are being replaced with some interesting SMGs I'm designing which are clip-fed like some older guns (ratcheting clip moves through the weapon, rather than static magazine pushes bullets into the weapon). The Railgun and Grenade launcher are being removed, with the new Laser Bow taking the position of both - a chargeable weapon which delivers a horizontal spread of light rays for crowd control uncharged, and focuses more as it charges until it shoots a single super-powerful cannon shot with a small but powerful AOE explosion at the impact, to be used as a sniper type weapon. A new weapon to fill a role previously not addressed is being added too, the blue pistol pictured above. It works a bit like the D-TAP from Hyperscape or the Smart Pistol from Titanfall - it automatically acquires targets in an area around the crosshair, and when firing, bullets will go towards the closest target to the aim point (until it dies, in which case it gets the next-closest, and so on). This makes the game easy to pick up and play for people of a lower skill level who might not be able to hit their shots while moving at full speed, and is fairly balanced by it's low damage and slow fire rate (and therefore long TTK), as well as disadvantage at long and very close ranges. A more experienced player will probably find it more effective to use any of the other, more skill-based weapons, while less experienced players will be able to enjoy the mechanics without worrying about having perfect tracking or flicks. Another feature I'm considering is multistage reloads, similar to what is seen in Bullets per Minute, where each tap of the R key is connected to each action in the reload, requiring the user to hit the key multiple times. In my implementation, I want to make it so if they hit the key too early, the character's animation for the next stage fumbles - for instance, hitting the magwell on the way in then having to adjust and slap the mag after - whereas if they get the timing just right or even go a little late, they get a perfect version of that action - for example, sliding the magazine in with one quick motion. It turns reloading into a skill the player can pick up and adds a rhythm to it, without being too punishing for people who may just spam the key or don't have the timings right, adding less than a second, maybe even half, to their reload time, letting skilled players fully optimize their gameplay down to even reloading a gun. ## Story There's not much here. The player is a trojan virus making their way through a computer system, when they're caught, and have to go loud against the antivirus. It's a silly concept that lets me be creative. I'm implementing aspects of the Christmas theme (even though I'm doing the other options) by having it so the user has themed their PC for the season; the player could potentially have to fight in a Christmas-themed desktop wallpaper, for example, after jumping out of the recycle bin icon, before having to escape into a folder. Lots of interesting ideas for what can be done with it, and now I have the skills to do it, unlike when I made the first game. I'll be updating more about this throughout the week, so stay posted!
November 20 2020 13:46:14.
## [Spring Boot, phone posting](/blog/spring-boot,-phone-posting.php) ## Phone posting? This is my first test of posting to this blog using my smartphone! It's not really anything special, just a custom client that effectively copies the blog post file to the server and then hits the publish command via ssh. Still, it is pretty fun to play around with and now I can blog on the go securely. no reliance on a fancy dynamic web server implementation! Just a custom client for what already works on the server. it's getting closer and closer to being a full CMS. if the app works well enough that I can safely say it is worth releasing, I'll publish it to my github as an open source project to go along with the script. ## Spring Boot Shenanigans With that out of the way, I want to talk about my new project. Details are still under wraps, so no specific, but I've been writing the backend REST API in Java with Spring Boot and it has been a BREEZE. NEVER has it been this easy to write an API! It's as close to plug and play as it seems to get. I set up my configuration classes, build some regular Java classes with some annotations for it to automatically build a database, and set up my API endpoints. That's it! It does the heavy lifting. Definitely my new favourite framework for this stuff. Sorry, Ruby on Rails, Spring Boot is my new friend. At least until I do another project it isn't as well suited for. The auto wiring is fantastic too and I do love Java syntax. It feels like home, familiar programming as if at am building any other desktop or console app, but with some basic annotations and minimal class setup to get it rolling on the web. I was able to set up secure authentication with JWT tokens, a few CRUD controllers, the foundation of a RESTful API featuring authentication, registration, profile updates, posting, image uploads, and more, and get it all running with a database very quickly, **while** learning the framework from scratch. Needless to say, Spring Boot is amazing!
November 13 2020 08:37:36.
## [Added Twitter support to the blogging script](/blog/added-twitter-support-to-the-bot.php) Today I added Twitter support to the blogging script. It has everything it needs, I think, although this tweet is the first real test of that. It has two main functions - one, it automatically tweets out the link to this blog as well as the title. Two I can tweet from inside a blog post by adding the <tweet> tags. Check it out: This is a tweet generated by my blog post Alright, it... doesn't look like much here, but I promise, on my twitter, there's a tweet that says that and links back here. The updated script is currently on the dev branch on the [Github repository](https://github.com/alexanderkyron/blogscript) and I'll merge it to master after fixing some bugs. It WILL silently fail if the tweets are too long. Whoops.
November 11 2020 05:56:20.
## [Watching the election...](/blog/watching-the-election....php) Oh man, watching the US election is mindblowing. I'm working on a video for my YT channel to kick it off while vaguely listening to [Vaush](https://vaush.gg/)'s coverage, and occasionally checking the map on Google. One look at my [Twitter](https://twitter.com/alexkyron) makes it absolutely no secret that I'm a lefty - maybe not as extreme as others, but I generally align myself with the left. I'm making that clear right now before proceeding because I obviously have my own biases which will naturally contaminate my commentary on the issue. First, election night - November 3rd was *stressful*. It looked like Trump had it for a while, but it was always too early to call. Still, for some reason, I had faith in the statistical models which largely predicted a Biden landslide. Of course, we now know that those were inaccurate - my assumption is that it's due to the data put into the models, given that the most volatile step of the process is trusting the people polled to be honest and trusting the samples to be taken very well. When it became clear Biden would win, I was happy, although I'm pro Biden begrudgingly because he's far better than Trump, but I would have preferred Bernie, Yang, Warren... the list goes on. Regardless, he's the better option and his plans are to bring general improvement to the USA. Seeing Georgia progress towards flipping (only 665 votes apart as I write this, moving to go blue right as it closes) solidifies the win. It's sad to see how close it was, and it's sad to see how policy meant nothing, how it was all about cults of personality and "not the other guy" for both sides. I'm happy to see Biden looking pretty close to guaranteed to take the win. I'm happy to see that the election was kept honest and democracy intact. I'm working on a new app that I'll be talking about here once I've got enough done to show it off. It's pretty cool, but I don't know how much faith I have in it making much money or getting too popular - it makes a good portfolio piece, though.
November 06 2020 08:13:33.
## [Fixed RSS](/blog/fixed-rss.php) Fixed the blogging script's RSS functionality. Writing this to demonstrate on video that it works now. RIP.
November 04 2020 04:13:04.
## [Working on a video about the blogging script](/blog/working-on-a-video-about-the-blogging-script.php) I'm currently working on recording a video about my [blogging script](https://github.com/alexanderkyron/blogscript). I'm actually recording the video as I write this. Excited to demonstrate the tool and its use from start to finish and help people set up blogs easily. The video will be up on my [channel](https://www.youtube.com/channel/UCK8dBLmTgiyGQFxCKKCnn8g?view_as=subscriber) shortly, probably in the afternoon of tomorrow (November 4th).
## [Updates to the blog script](/blog/updates-to-the-blog-script.php) I've done some major updates to the [blog script](https://github.com/alexanderkyron/blogscript). They're on the dev branch as I'm writing this, but if this publishes successfully I'm merging the PR basically immediately after. New Features: * Auto-update RSS feeds * Greater configurability/more site agnostic * Options to disable or enable rolling blog, blog index, rss pages * Previously hardcoded paths are now easily editabe variables * String concatenation changed to formatted strings for easy editing * Cleaner code The script is pretty much done for what I need it to do, but I'll still be maintaining the repository and adding things as needed. Trying not to let it get bloated, because I want by blog script to suck just a little bit less ;)
## [Testing my new blog script](/blog/testing-my-new-blog-script.php) Hi everyone! I made a new **blog script** inspired by Luke Smith's lb blog script. I set this up for a variety of reasons outlined on the [Github page](https://github.com/alexanderkyron/blogscript). It's written in Python 3 and makes blogging from the command line really easy with the setup I have, which unfortunately, lb wasn't working well for anymore and the modifications I was making made it more worthwhile to just make a whole different script for. I wrote this at 4 in the morning so there are some flaws in it, and I'm still ironing out the bugs.
November 03 2020 19:55:39.

New Website

Okay, I've done it yet again and redesigned my site. This time I picked up a VPS from Vultr and bought my own domain name on the cheap. I'm using a custom blog program I'm writing inspired by Luke Smith's lb blog system which includes a more scalable, flexible and configurable design, written in python, to manage this blog as I think it's a very nice and elegant solution to blogging. I strongly dislike his political stances, but some of his takes on technology aren't bad. This is more or less my new public profile, like a Facebook page, but instead of renting a room from Mark Zuckerberg, I instead own my own plot of land on the Internet, so to speak. Of course, I've always loved the idea of having my own personal website - I had a Neocities back in 2016 which was full of early-internet inspired garbage, a review site hosted from there in 2018 and 2019, I worked on my own social network, and I even had some really rubbishy freewebs site as a kid. However, I always felt limited by the static nature of Neocities' pure HTML and JS, and by the rigid frameworks presented by Webs.com and other site builders. Using a VPS has been freeing. I'm hosting my own email (send me some stuff at alex@alexkyron.xyz, and working on setting up other features like a search instance and some web apps I'm working on. It's a place to put my projects and post what's on my mind without limits, and enjoy simply creating without the pressures of modern social media. I'm planning on setting up some projects later to talk about. I'm using MarkedJS so I can do **fancy markdown stuff** which is cool too.
November 03 2020 19:55:39.