diff --git a/out/april-fools-images/amtrak.png b/out/april-fools-images/amtrak.png new file mode 100644 index 0000000..d81cb50 Binary files /dev/null and b/out/april-fools-images/amtrak.png differ diff --git a/out/april-fools-images/nypd.png b/out/april-fools-images/nypd.png new file mode 100644 index 0000000..bb6a9c4 Binary files /dev/null and b/out/april-fools-images/nypd.png differ diff --git a/out/april-fools-images/uspis.png b/out/april-fools-images/uspis.png new file mode 100644 index 0000000..36d24ee Binary files /dev/null and b/out/april-fools-images/uspis.png differ diff --git a/out/april-fools.html b/out/april-fools.html new file mode 100644 index 0000000..371388c --- /dev/null +++ b/out/april-fools.html @@ -0,0 +1,23 @@ +
++ This domain name has been seized by the American Railroad Passenger Corporation + Police pursuant to a seizure warrant issued by the United States Supreme Court + under the authority of 18 U.S.C. s.s. 918 and 2323. +
++ + (April fools! Continue to my website) + +
+ +A collection of my thoughts, some of them may be interesting
-[ NWS Postmortem 11/08/23 ] - November, , 2023
+[ NWS Postmortem 11/08/23 ] - November, 16th, 2023
[ Side Project Log 10/20/23 ] - October 20th, 2023
[ Side Project Log 8/15/23 ] - August 15th, 2023
[ Side Project Log 8/08/23 ] - August 8th, 2023
diff --git a/out/blogs/doing-c-assignments-in-csharp.html b/out/blogs/doing-c-assignments-in-csharp.html index 03bdf2f..a64e708 100644 --- a/out/blogs/doing-c-assignments-in-csharp.html +++ b/out/blogs/doing-c-assignments-in-csharp.html @@ -16,25 +16,25 @@Thanks to Arpan Dhatt for doing most of the work on this (his blog here: https://arpan.one/posts/messing-with-gradescope/)
At the end, he made this comment:
--And so, that's the end of this post. To whom it may concern, don't try doing your C assignment in C# (you know who you are).
+And so, that{{ body_area }}#39;s the end of this post. To whom it may concern, don{{ body_area }}#39;t try doing your C assignment in C# (you know who you are).
The reason for this comment (besides the fact that I talk about C# a lot) is due to the fact that C# requires a runtime to be installed for it to work. This is because C# does not compile to native bytecode but rather compiles to an intermediary language (dubbed CIL by Microsoft) and is then translated 'Just In Time' by the runtime.
-This makes running assignments in a docker container where the runtime is not already installed considerably hard. One option we have is that we could just include the runtime in our submission. Sounds easy, right? Well it would be non-trivial to do but due to the fact that the .NET runtime is very large, I wouldn't consider this a good idea (Not to mention it's super boring).
-The better solution is to use .NET's (experimental) AOT compilation feature (formerly called CoreRT). C# has had a number of attempts at an AOT compiler such as :
+The reason for this comment (besides the fact that I talk about C# a lot) is due to the fact that C# requires a runtime to be installed for it to work. This is because C# does not compile to native bytecode but rather compiles to an intermediary language (dubbed CIL by Microsoft) and is then translated {{ body_area }}#39;Just In Time{{ body_area }}#39; by the runtime.
+This makes running assignments in a docker container where the runtime is not already installed considerably hard. One option we have is that we could just include the runtime in our submission. Sounds easy, right? Well it would be non-trivial to do but due to the fact that the .NET runtime is very large, I wouldn{{ body_area }}#39;t consider this a good idea (Not to mention it{{ body_area }}#39;s super boring).
+The better solution is to use .NET{{ body_area }}#39;s (experimental) AOT compilation feature (formerly called CoreRT). C# has had a number of attempts at an AOT compiler such as :
-We'll be using the official Ready2Run AOT compilation built by Microsoft. In order to use it, all you have to do is add the following to your nuget.config
:
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
+We{{ body_area }}#39;ll be using the official Ready2Run AOT compilation built by Microsoft. In order to use it, all you have to do is add the following to your nuget.config
:
+{{ body_area }}lt;add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /{{ body_area }}gt;
-and then install the package: Microsoft.DotNet.ILCompiler
. After doing that if you run the command: dotnet publish -r [Runtime] -c [Config]
and after waiting a considerable amount of time, you'll have a full-fledged C# application compiled directly to your target runtime's bytecode!
+and then install the package: Microsoft.DotNet.ILCompiler
. After doing that if you run the command: dotnet publish -r [Runtime] -c [Config]
and after waiting a considerable amount of time, you{{ body_area }}#39;ll have a full-fledged C# application compiled directly to your target runtime{{ body_area }}#39;s bytecode!
Compiling my simple Hello, Wold test to linux-x64 (dotnet publish -r linux-x64 -c Release
) and adding it to my project files should let me run it using the same method Arpan used in his blog.
After doing that, we can follow the instructions followed by Arpan and viola! C# runs on Gradescope!
-I don't recommend this but it was fun to do and I needed stuff to write in a blog.
+I don{{ body_area }}#39;t recommend this but it was fun to do and I needed stuff to write in a blog.
Other Interesting (Low Level) C#/.NET Features
-C# actually has many lower level features people don't expect it to have. Some of these include pointers and direct memory management. Pointers can be enabled by encasing your code in an unsafe code block.
+C# actually has many lower level features people don{{ body_area }}#39;t expect it to have. Some of these include pointers and direct memory management. Pointers can be enabled by encasing your code in an unsafe code block.
Example (Written by Microsoft)
// Normal pointer to an object.
@@ -43,7 +43,7 @@
unsafe
{
// Must pin object on heap so that it doesn't move while using interior pointers.
- fixed (int* p = &a[0])
+ fixed (int* p = {{ body_area }}amp;a[0])
{
// p is pinned as well as object, so create another pointer to show incrementing it.
int* p2 = p;
diff --git a/out/blogs/nws-postmortem-11-8-23.html b/out/blogs/nws-postmortem-11-8-23.html
index d15d790..495883a 100644
--- a/out/blogs/nws-postmortem-11-8-23.html
+++ b/out/blogs/nws-postmortem-11-8-23.html
@@ -22,7 +22,7 @@
- The incident lasted 28 minutes after which it was automatically
+ The incident lasted 38 minutes after which it was automatically
resolved and all services were restored. This is NWS' first
outage event of 2023.
@@ -43,9 +43,9 @@
At around 09:47 UTC, Cloudflare detected that our servers in
Texas (Austin and Hill Country) were down. It did not detect an
error, but rather an HTTP timeout. This is an indication that the
- server has lost network connectivity. When it detected that the
+ server may have lost network connectivity. When Cloudflare detected that the
servers were down, it removed their A records from the
- entry.nws.nickorlow.com domains. Since NWS' Pennsylvania servers
+ entry.nws.nickorlow.com domain. Since NWS Pennsylvania servers
have been undergoing maintenance since August 2023, this left no
servers able to serve requests routed to entry.nws.nickorlow.com,
resulting in the outage.
@@ -66,12 +66,12 @@
- No firewall rules existed that could have blocked this traffic
+ No firewall rules existed that could have blocked the healthcheck traffic from Cloudflare
for either of the NWS servers. There was no other configuration
found that would have blocked these requests. As these servers
are on different networks inside different buildings in different
parts of Texas, their networking equipment is entirely separate.
- This rules out any hardware failure of networking equipment owned
+ This rules out any failure of networking equipment owned
by NWS. This leads us to believe that the issue may have been
caused due to an internet traffic anomaly, although we are currently
unable to confirm that this is the cause of the issue.
diff --git a/out/blogs/side-project-10-20-23.html b/out/blogs/side-project-10-20-23.html
index d003846..ac1e33b 100644
--- a/out/blogs/side-project-10-20-23.html
+++ b/out/blogs/side-project-10-20-23.html
@@ -85,13 +85,13 @@ echo Starting container...
cur_dir=`pwd`
container_name=${cur_dir////$'_'}
container_name="${container_name:1}_$RANDOM"
-docker run --name $container_name --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --mount type=bind,source="$(pwd)",target=/work -d nick-vim &> /dev/null
+docker run --name $container_name --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --mount type=bind,source="$(pwd)",target=/work -d nick-vim {{ body_area }}> /dev/null
echo Execing into container...
docker exec -w /work -it $container_name bash
echo Stopping container in background...
-docker stop $container_name &> /dev/null &
+docker stop $container_name {{ body_area }}> /dev/null {{ body_area }}
diff --git a/out/blogs/side-project-3-20-23.html b/out/blogs/side-project-3-20-23.html
index 9e05412..05069a1 100644
--- a/out/blogs/side-project-3-20-23.html
+++ b/out/blogs/side-project-3-20-23.html
@@ -14,18 +14,18 @@
Side Project Log 3/20/2023
Spring break just wrapped up. I wrote a blog last week about the side projects that I was planning on
-doing. I wanted to provide an update on what I got done, and figured I'd turn it into a recurring thing.
+doing. I wanted to provide an update on what I got done, and figured I{{ body_area }}#39;d turn it into a recurring thing.
This side project log covers work done from 3/13/2023 - 3/20/2023
Personal Website Facelift
I managed to move my website over to tab-based navigation pretty early on in the break. It just involved setting
up a navbar component and then using react-navigation to navigate between pages. I also managed to
update my projects page to be more compact and readable.
There is still work to be done on making it look better, but I mostly believe that
-it's just going to be somewhat minor tweaks.
+it{{ body_area }}#39;s just going to be somewhat minor tweaks.
Mahantongo
-I managed to finish this one. I learned a lot about Rust and I've gained an appreciation for
-Rust's enforcement of good programming habits, and I really like how error handling is done.
-Working with Serenity was pretty easy as it mirrored some of the other Discord SDKs I've used
+
I managed to finish this one. I learned a lot about Rust and I{{ body_area }}#39;ve gained an appreciation for
+Rust{{ body_area }}#39;s enforcement of good programming habits, and I really like how error handling is done.
+Working with Serenity was pretty easy as it mirrored some of the other Discord SDKs I{{ body_area }}#39;ve used
before.
The below projects had minimal/no work done on them: RingGold, NWS Container Deployment Service, and VerifiedBot
diff --git a/out/blogs/side-project-3-27-23.html b/out/blogs/side-project-3-27-23.html
index f955055..077e2f9 100644
--- a/out/blogs/side-project-3-27-23.html
+++ b/out/blogs/side-project-3-27-23.html
@@ -15,17 +15,17 @@
Side Project Log 3/27/2023
This side project log covers work done from 3/20/2023 - 3/27/2023
SEPTA Site
-I started a new project that aimed to recreate parts of SEPTA's website with a more elegant UI, and using
-SEPTA's new "SEPTA Metro" wayfinding. The main goal with this project was to help me learn Svelte. I also had
+
I started a new project that aimed to recreate parts of SEPTA{{ body_area }}#39;s website with a more elegant UI, and using
+SEPTA{{ body_area }}#39;s new {{ body_area }}quot;SEPTA Metro{{ body_area }}quot; wayfinding. The main goal with this project was to help me learn Svelte. I also had
to reverse-engineer the APIs on septakey.org in order to authenticate a user and get their trip history.
In terms of Svelte, I really enjoyed working with it and overall I found it much more elegant and easier to work
-with than React. I didn't like the way it handled client-server interaction with its serverside functions.
-I have not made this open source yet and do not intend to until it's more polished.
+with than React. I didn{{ body_area }}#39;t like the way it handled client-server interaction with its serverside functions.
+I have not made this open source yet and do not intend to until it{{ body_area }}#39;s more polished.
Verified Bot
I made all the necessary changes and tests to get VerifiedBot working. It is now waiting on my friend Ben
to merge my PR with the changes outlined in my spring break blog.
Mahantongo
-I created some QoL features, such as using Discord's embeds instead of sending regular text messages, showing which board
+
I created some QoL features, such as using Discord{{ body_area }}#39;s embeds instead of sending regular text messages, showing which board
a post was on, and fixing some bugs.
The below projects had minimal/no work done on them: RingGold, and NWS Container Deployment Service
diff --git a/out/blogs/side-project-4-29-23.html b/out/blogs/side-project-4-29-23.html
index 3696543..e447d31 100644
--- a/out/blogs/side-project-4-29-23.html
+++ b/out/blogs/side-project-4-29-23.html
@@ -17,23 +17,23 @@
This side project log is a bit late due to it being a busy month of school, but today is my last day!
SEPTA Site
This week, I published SEPTA Site on Github, you can find it here: github.com/nickorlow/septa-site.
-I made a few tweaks to it in terms of styling and also wrote a descriptive README to give people instructions on how to run it as I don't want
+
I made a few tweaks to it in terms of styling and also wrote a descriptive README to give people instructions on how to run it as I don{{ body_area }}#39;t want
to host it myself since it handles credentials from another service.
SQUIRREL
-SQUIRREL, short for SQL Query Util-Izing Rust's Reliable and Efficient Logic, is a SQL database that I am writing in Rust. Currently, it can
+
SQUIRREL, short for SQL Query Util-Izing Rust{{ body_area }}#39;s Reliable and Efficient Logic, is a SQL database that I am writing in Rust. Currently, it can
parse CREATE TABLE commands, and works with the data types varchar and int. I plan to implement basic CRUD operations, then add JOINs, and
then try to make it wire-compatible with Postgres.
This project is currently not open-sourced as I am waiting to add more features and polish it up more.
Swole Control
-This one isn't a personal project, however it is a project that I worked on with a group. We began working on it in February as a part of a
-club at UT called Texas Convergent. We recently presented it at the club's demo day and won the prize for having the best business.
+This one isn{{ body_area }}#39;t a personal project, however it is a project that I worked on with a group. We began working on it in February as a part of a
+club at UT called Texas Convergent. We recently presented it at the club{{ body_area }}#39;s demo day and won the prize for having the best business.
Swole Control is an app that monitors machine usage at a gym on a machine-by-machine level, providing gym goers with information about what machines
are free (this is a major pain point as a gym goer myself). It also provides gym owners with statistics on which machines are most popular, providing
them valuable insights into their business.
To achieve this, we built hardware that consisted of an ESP-32 micro controller and an ultrasonic distance sensor. This hardware is mounted on a gym machine
and it measures the distance to the nearest object. It then sends this measurement to a Rust backend which stores it in a Firestore database (although we had
a fork of it that worked with Postgres). The backend then uses these measurements and compares them to a baseline to determine if there is a user at a machine.
-Our mobile app then reads this from the Firestore database (it's planned to have it read this from the API to have a better-defined application boundary). The
+Our mobile app then reads this from the Firestore database (it{{ body_area }}#39;s planned to have it read this from the API to have a better-defined application boundary). The
frontend is written in React Native.
These projects had minimal/no work done on them: RingGold, and NWS Container Deployment Service
diff --git a/out/blogs/side-project-7-12-23.html b/out/blogs/side-project-7-12-23.html
index 76e8b45..959d8c2 100644
--- a/out/blogs/side-project-7-12-23.html
+++ b/out/blogs/side-project-7-12-23.html
@@ -21,12 +21,12 @@ distribution across a set of geo-distributed Kubernetes clusters. I detail the c
I wrote. In order to implement auto-created/auto-renewing SSL, I implemented the below solution:
First, a user creates a request to add SSL to their NWS CDS service through the web UI which calls the NWS API (not pictured)
-Then, the NWS API calls SSLiaison (in-house written software) which adds the domain to Caddy's list of domains. Caddy will then attempt to create
+
Then, the NWS API calls SSLiaison (in-house written software) which adds the domain to Caddy{{ body_area }}#39;s list of domains. Caddy will then attempt to create
an SSL certificate from an ACME server (not pictured).
The ACME server will query NWS for the challenge response by requesting a file at /.well-known/acme-challenge
on the
domain to be verified (this is the green arrows).
HAProxy will re-route these requests to NWS Hill Country, which is where the NWS Management Engine (NWSME) lives (this is
-the orange arrows). (NWSME controls what's deployed on each k8s cluster on NWS)
+the orange arrows). (NWSME controls what{{ body_area }}#39;s deployed on each k8s cluster on NWS)
HAProxy in NWS Hill Country will then route this request to Caddy, which will solve the http-01 challenge, and then get the certificate
from the ACME server. Once it does this, it will write the certificate to a directory that is bind-mounted to both Caddy
and SSLiaison.
@@ -34,38 +34,38 @@ and SSLiaison.
hosted in GitHub.
From here, the certificate will be added to all the k8s clusters via Rancher Fleet.
-For next steps, I'd like to revise this solution such that it doesn't have a single point of failure.
+
For next steps, I{{ body_area }}#39;d like to revise this solution such that it doesn{{ body_area }}#39;t have a single point of failure.
Currently, if NWS Hill Country is down (which it is about 0.025% of the time), then SSL certificates
-won't be able to be created or renewed.
+won{{ body_area }}#39;t be able to be created or renewed.
To do this, I will have SSLiaison implement the ACME client specification so that it can create and respond do ACME HTTP challenges.
-SSLiaison will run on NWS CDS (so that it's running on all of our k8s clusters and is HA) instead of running as a standalone docker container.
-I'll have SSLiaison use some distributed database (probably CockroachDB) to store the HTTP challenges so that it doesn't matter
+SSLiaison will run on NWS CDS (so that it{{ body_area }}#39;s running on all of our k8s clusters and is HA) instead of running as a standalone docker container.
+I{{ body_area }}#39;ll have SSLiaison use some distributed database (probably CockroachDB) to store the HTTP challenges so that it doesn{{ body_area }}#39;t matter
which k8s cluster the challenge request from the ACME server is routed to.
Next Steps for NWS
-- HA NWS Management Engine: Currently (as somewhat discussed above), the NWSME will go down when NWS Hill Country goes down. I'd like to
-make it so that this isn't the case. This would likely just require that each NWS cluster runs its own instance of Rancher Fleet instead
+
- HA NWS Management Engine: Currently (as somewhat discussed above), the NWSME will go down when NWS Hill Country goes down. I{{ body_area }}#39;d like to
+make it so that this isn{{ body_area }}#39;t the case. This would likely just require that each NWS cluster runs its own instance of Rancher Fleet instead
of one central Rancher Fleet that manages all the clusters. It would also require the HA SSLiaison.
- IaC for Everything: Currently, all NWS CDS services are defined in yaml files in a git repo, however the underlying infrastructure that
-it runs on is not. Ideally, I'd like every NWS machine to run Proxmox and then have Terraform & Ansible configs to define how to set up
+it runs on is not. Ideally, I{{ body_area }}#39;d like every NWS machine to run Proxmox and then have Terraform {{ body_area }}amp; Ansible configs to define how to set up
vms on proxmox that will run the k8s clusters that support CDS services. This should eliminate my headaches of sshing into each machine
to apply config changes and make sure everything is standardized. It should also make the process of setting up new servers easy.
-- Monitoring: I've been working on setting up monitoring on a lot of our services at my current internship using the TIG stack (Telegraf,
-InfluxDB, and Grafana). Now that I've been exposed to the usefulness of having a bunch of metrics on hand, I think it would be nice to have
+
- Monitoring: I{{ body_area }}#39;ve been working on setting up monitoring on a lot of our services at my current internship using the TIG stack (Telegraf,
+InfluxDB, and Grafana). Now that I{{ body_area }}#39;ve been exposed to the usefulness of having a bunch of metrics on hand, I think it would be nice to have
some dashboards setup for NWS to monitor speed, resource usage, uptime, and traffic. Doing this would also make it possible to expose resource usage in the
NWS dashboard.
-Enhanced Infrastructure: This is kind of a blanket one for things I want to do that don't fit into other categories. It includes making
-hardware upgrades (mostly adding more storage), make management more accessible (such as Dell IDRAC's WebSerial), some load testing to
-identify painpoints, run an NWS machine in a cloud VM so I can say it's cross cloud (although my friends have told me this is cheating at creating
-my own cloud), and trying to figure out how to set up an Anycast network. I don't think I can setup an Anycast network without selling
+
Enhanced Infrastructure: This is kind of a blanket one for things I want to do that don{{ body_area }}#39;t fit into other categories. It includes making
+hardware upgrades (mostly adding more storage), make management more accessible (such as Dell IDRAC{{ body_area }}#39;s WebSerial), some load testing to
+identify painpoints, run an NWS machine in a cloud VM so I can say it{{ body_area }}#39;s cross cloud (although my friends have told me this is cheating at creating
+my own cloud), and trying to figure out how to set up an Anycast network. I don{{ body_area }}#39;t think I can setup an Anycast network without selling
a kidney first. Renting a /24 CIDR alone would be more than I want to spend on a side project. I may look into setting it up with ipv6 only,
-however I'd still have to jump through hoops to get an Autonomous System number from an RIR. I'll probably write a whole blog about Anycast
+however I{{ body_area }}#39;d still have to jump through hoops to get an Autonomous System number from an RIR. I{{ body_area }}#39;ll probably write a whole blog about Anycast
in the coming weeks.
Reduced External Dependence: The main goal of NWS is to have no external dependence. In theory, everything but core internet infrastructure
@@ -76,9 +76,9 @@ should
Rust, ActixWeb, PostgreSQL
Olney is a new project I am starting with my friend Sridhar Nandigam. It aims to make
tracking your job applications easier. Most of my friends either use spreadsheets or Trello to track their job applications, I
-think that we can make something that's a bit better for the job. Some features I'd like to have are: resume version attached to
+think that we can make something that{{ body_area }}#39;s a bit better for the job. Some features I{{ body_area }}#39;d like to have are: resume version attached to
your application, job posting notifications from job boards such as pittcsc, and watching
-your email for emails from recruiters. Currently, I have part of the backend setup with basic CRUD operations. Now that I'm done with
+your email for emails from recruiters. Currently, I have part of the backend setup with basic CRUD operations. Now that I{{ body_area }}#39;m done with
the latest batch of NWS work, this is next on my list to work on.
These projects had minimal/no work done on them: RingGold, SQUIRREL
diff --git a/out/blogs/spring-break-2023.html b/out/blogs/spring-break-2023.html
index 8161138..3471e11 100644
--- a/out/blogs/spring-break-2023.html
+++ b/out/blogs/spring-break-2023.html
@@ -13,62 +13,62 @@
Spring Break 2023
-It's Spring Break, and that means I finally have time to spend all day working on side projects without having to worry about school.
+It{{ body_area }}#39;s Spring Break, and that means I finally have time to spend all day working on side projects without having to worry about school.
I figured I should write out the side projects I plan to work on over the break
RingGold
Rust, Swift, PostgreSQL
-Last week, me and my cousin wanted to try out Apple's fitness competition feature that works with Apple Watch. It works
+
Last week, me and my cousin wanted to try out Apple{{ body_area }}#39;s fitness competition feature that works with Apple Watch. It works
by giving you 1 point for every percent you complete of your move, exercise, and stand goals with a point cap of 600
-per day. The issue with it was that it didn't work at all, not syncing on time if at all. I want to build a clone of it
+per day. The issue with it was that it didn{{ body_area }}#39;t work at all, not syncing on time if at all. I want to build a clone of it
with some additional features such as:
-Notifications: I didn't like how it was possible to workout and gain a bunch of points and just completely blindside your opponent. Hopefully this would encourage users to workout even more.
+Notifications: I didn{{ body_area }}#39;t like how it was possible to workout and gain a bunch of points and just completely blindside your opponent. Hopefully this would encourage users to workout even more.
-Widget/Watch Complication: Similar to the above, adding a homescreen widget or a watch complication would make it easier to keep up with your competitor's progress.
+Widget/Watch Complication: Similar to the above, adding a homescreen widget or a watch complication would make it easier to keep up with your competitor{{ body_area }}#39;s progress.
-Custom Competitions: I think it'd be nice to have competitions with custom rules and lengths so that you're not stuck with only one setting. Settings could include custom duration and custom caps on points.
+Custom Competitions: I think it{{ body_area }}#39;d be nice to have competitions with custom rules and lengths so that you{{ body_area }}#39;re not stuck with only one setting. Settings could include custom duration and custom caps on points.
-I'm building the web API for it in Rust and the mobile app in Swift. I chose these languages to gain more exposure to them, also
+
I{{ body_area }}#39;m building the web API for it in Rust and the mobile app in Swift. I chose these languages to gain more exposure to them, also
Swift was a good choice since the app is going to be platform specific to iOS due to its need to integrate with Apple Watch.
(this is named after New Ringgold, PA)
NWS Container Deployment Service
C#, Rancher
-I've created my own hosting/cloud service called Nick Web Services. It currently allows people to deploy
+
I{{ body_area }}#39;ve created my own hosting/cloud service called Nick Web Services. It currently allows people to deploy
dockerized applications on my geo-distributed k8s clusters running on Dell Poweredge servers. In order to actually deploy this, I
-had to manually create the Kubernetes manifest files and then ssh into each individual server and apply them. I've setup
+had to manually create the Kubernetes manifest files and then ssh into each individual server and apply them. I{{ body_area }}#39;ve setup
Rancher Fleet to automate this process by pulling the manifest from a git repo (this is something called gitops). I also
wrote an API to generate the manifest files and then upload them to a git repo. I have a video demo of this working that
you can watch here.
-Currently, the service works for deployment but only if you don't want to use SSL or you use Cloudflare's flexible SSL
+
Currently, the service works for deployment but only if you don{{ body_area }}#39;t want to use SSL or you use Cloudflare{{ body_area }}#39;s flexible SSL
technology. I wrote a separate blog post here about the challenges of doing this and how I plan on implementing it.
-I'd like to complete part of this implementation during the break.
+I{{ body_area }}#39;d like to complete part of this implementation during the break.
VerifiedBot
JavaScript, Rust
-This project isn't a personal project, as a lot of it was built by my friends Arpan and Ben.
+
This project isn{{ body_area }}#39;t a personal project, as a lot of it was built by my friends Arpan and Ben.
A little over a year ago, we wanted to make a Discord bot to verify that people on some Discord servers we ran
went to the University of Texas. Initially, it worked by verifying you had a utexas.edu email address and then verifying
some additional information via LDAP. A few months ago Ben found out that using the SaaS survey software that the university uses
-(qualtrics), we could have users verify themselves by using the university's SSO system. This works because qualtrics can send
-data to a webhook when a survey is complete, and it can also require signing in with the university's SSO before filling out a survey.
+(qualtrics), we could have users verify themselves by using the university{{ body_area }}#39;s SSO system. This works because qualtrics can send
+data to a webhook when a survey is complete, and it can also require signing in with the university{{ body_area }}#39;s SSO before filling out a survey.
It required that I write a wasm wrapper for an encryption library. I wrote almost all the code for this function last year, but
-due to a bug in qualtrics, it wasn't working properly. It seems that this bug has been fixed and we can start rolling it out.
+due to a bug in qualtrics, it wasn{{ body_area }}#39;t working properly. It seems that this bug has been fixed and we can start rolling it out.
Personal Website Facelift
Typescript, React
My personal website (this one) is a little overdue for some design updates. My main focus will be making it more mobile
-friendly. Last year, I made some improvements to make it usable on mobile but it still doesn't feel quite right. I also
+friendly. Last year, I made some improvements to make it usable on mobile but it still doesn{{ body_area }}#39;t feel quite right. I also
think that it has some information overload in some areas such as the projects section. I think that to mitigate this I
might just have a small summary of each project and then you can click into each to learn more about it, similar to my
-friend Raul's Website. I'm also considering a move to tab-based navigation so that I can have
-more information in each section. Further down the line, I think I might re-write it using Svelte as I'm seeing it being used more and more
+friend Raul{{ body_area }}#39;s Website. I{{ body_area }}#39;m also considering a move to tab-based navigation so that I can have
+more information in each section. Further down the line, I think I might re-write it using Svelte as I{{ body_area }}#39;m seeing it being used more and more
and would like to get some exposure to it.
Mahantongo
Rust, PostgreSQL
-I'm one of the members of the Community Team that runs some UT Computer Science community Discord servers.
+
I{{ body_area }}#39;m one of the members of the Community Team that runs some UT Computer Science community Discord servers.
Currently, a Discord bot called Carlbot provides us a star-board, which is a specific channel where messages that 5 or more people
-react to with a star emoji get posted. It's supposed to be a collection of the funniest and best messages sent on the server.
-One of the things our server members have wanted is the addition of more '*-board' channels where you can create multiple star-board
-like channels but with custom emojis. I'm writing it in Rust and I'm just hoping to use this project to get more acquainted with the language.
+react to with a star emoji get posted. It{{ body_area }}#39;s supposed to be a collection of the funniest and best messages sent on the server.
+One of the things our server members have wanted is the addition of more {{ body_area }}#39;*-board{{ body_area }}#39; channels where you can create multiple star-board
+like channels but with custom emojis. I{{ body_area }}#39;m writing it in Rust and I{{ body_area }}#39;m just hoping to use this project to get more acquainted with the language.