diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 7485d39..e199cdc 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -33,8 +33,8 @@ jobs: with: push: true tags: | - ghcr.io/ericzty/www:${{ github.sha }} - ghcr.io/ericzty/www:latest + ghcr.io/ezrizhu/www:${{ github.sha }} + ghcr.io/ezrizhu/www:latest build-args: | COMMIT=${{ github.sha }} REF=${{ github.ref }} @@ -49,19 +49,19 @@ jobs: - name: Deployment Grace Period run: sleep 5 - name: Ensure that www0 is updated - run: 'curl -H "X-Server-Select: www0" https://ericz.me | grep ${{ github.sha }}' + run: 'curl -H "X-Server-Select: www0" https://ezrizhu.com | grep ${{ github.sha }}' - name: Trigger www1 to update run: ${{ secrets.WTWWW1 }} - name: Deployment Grace Period run: sleep 5 - name: Ensure that www1 is updated - run: 'curl -H "X-Server-Select: www1" https://ericz.me | grep ${{ github.sha }}' + run: 'curl -H "X-Server-Select: www1" https://ezrizhu.com | grep ${{ github.sha }}' - name: Ensure that default is updated - run: 'curl https://ericz.me | grep ${{ github.sha }}' + run: 'curl https://ezrizhu.com | grep ${{ github.sha }}' google: needs: deploy runs-on: ubuntu-latest steps: - name: Upload sitemap - run: curl "www.google.com/webmasters/tools/ping?sitemap=https://ericz.me/sitemap.xml" + run: curl "www.google.com/webmasters/tools/ping?sitemap=https://ezrizhu.com/sitemap.xml" diff --git a/README.md b/README.md index d1609aa..12d724c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # www -This is the repo for [my website](https://ericz.me). +This is the repo for [my website](https://ezrizhu.me). I took a lot of inspirations from [Xe's website](https://xeiaso.net/talks/how-my-website-works), I also wanted to learn rust and remake my website, so I decided to do this. diff --git a/assets/files/Tianyu_Zhu_Resume.pdf b/assets/files/Tianyu_Zhu_Resume.pdf index 04b5fdb..5de20c3 100644 Binary files a/assets/files/Tianyu_Zhu_Resume.pdf and b/assets/files/Tianyu_Zhu_Resume.pdf differ diff --git a/assets/files/ssh b/assets/files/ssh deleted file mode 100644 index de67431..0000000 --- a/assets/files/ssh +++ /dev/null @@ -1,8 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2whKHD8XCH+CQwnagH+iBfkyjc/2f/QEfdsEi0SaKO -ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHp8yRnahmUS7l8STsx0pH25O4xTWGYQyQEWeKWxeM7gbkTNPGpiUswmsHgN8Ng0+FwjIw0FHkjQeLSMH9OTSB4= ipad0esp -ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEVpA5XHzpctFKlRCx2etYyvC1FFGZfFXlL17hyk7J/a/Ka3o6A1nXQ6OeivYJZnJWABV/wZaUlfZvfXBo/kljQ= iphone1esp -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJdN4a3yJUlKIaVezOe4hE8fRK9DkGSzwoZ9vfpsBsHh ide0.sn3.eric.si -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAOjEepqNg5Nm4jDqSg96Xv1MzpNLB0z95a9ZngncWwQ pass@ide0.sn3.eric.si -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFTp/N/zHQmaL+zwCcQL2DBTeNWDZl2Go6QkzCedkq3j deck0 -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEE5oCjeFKOJ4NeiAoiAI/Z0CQScjUhZPFVAj0N9DxJZ mbp1 -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDJolBdGKj7CCTDrzN4AlmQiPuZ18NlMEepdnUjpZrZx ipadbak diff --git a/assets/img/eric2.webp b/assets/img/eric2.webp deleted file mode 100644 index 7e80172..0000000 Binary files a/assets/img/eric2.webp and /dev/null differ diff --git a/assets/img/eric1.webp b/assets/img/ezri1.webp similarity index 100% rename from assets/img/eric1.webp rename to assets/img/ezri1.webp diff --git a/assets/img/logo.svg b/assets/img/logo.svg index 2647d98..1c54b2e 100644 --- a/assets/img/logo.svg +++ b/assets/img/logo.svg @@ -1,5 +1,8 @@ - - - - + + + + + + + diff --git a/assets/img/logo.svg.bak b/assets/img/logo.svg.bak new file mode 100644 index 0000000..2647d98 --- /dev/null +++ b/assets/img/logo.svg.bak @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/robots.txt b/assets/robots.txt index f554468..600b8f4 100644 --- a/assets/robots.txt +++ b/assets/robots.txt @@ -1,5 +1,5 @@ User-Agent: * -Sitemap: https://ericz.me/sitemap.xml +Sitemap: https://ezrizhu.com/sitemap.xml Disallow: /health User-agent: GPTBot Disallow: /blog/ diff --git a/assets/ssh b/assets/ssh index 3df0179..5c025fa 100644 --- a/assets/ssh +++ b/assets/ssh @@ -1,4 +1,4 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2whKHD8XCH+CQwnagH+iBfkyjc/2f/QEfdsEi0SaKO -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAOjEepqNg5Nm4jDqSg96Xv1MzpNLB0z95a9ZngncWwQ ssh@ide0.sn3.eric.si +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2whKHD8XCH+CQwnagH+iBfkyjc/2f/QEfdsEi0SaKO t0 +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAOjEepqNg5Nm4jDqSg96Xv1MzpNLB0z95a9ZngncWwQ ide0 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEE5oCjeFKOJ4NeiAoiAI/Z0CQScjUhZPFVAj0N9DxJZ mbp1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGLev2ZGV5SZHOCAMtMXuOM8/yc5PdRx6UNcVxQBkw/BLawalhc+YglqsMhsLzFzBaVBwuZoynHGvDI/7aNmIMY= ipadesp diff --git a/content/blog/20230723-this_blog.md b/content/blog/20230723-this_blog.md index ce4eca1..9738323 100644 --- a/content/blog/20230723-this_blog.md +++ b/content/blog/20230723-this_blog.md @@ -79,7 +79,7 @@ non-U.S. regions, which would have the added benefit of higher reliability. However, I’d rather my website be 100% under my control, and the small latency is really negligible since the website is already lightweight. I hope that some day I’ll run a global anycasted CDN, and move my website over. But until then, -my website will live on EricNet, California. +my website will live on EzriCloud, California. ## Deployment diff --git a/content/blog/20230725-tablet_for_cs.md b/content/blog/20230725-tablet_for_cs.md index 4371d66..e70854d 100644 --- a/content/blog/20230725-tablet_for_cs.md +++ b/content/blog/20230725-tablet_for_cs.md @@ -16,7 +16,7 @@ that uses the iPad for computer science. I have an ordinary iPad Air (Fifth Gen), it runs stock iPadOS, and has the M1 chip with cellular data. I also have the Magic Keyboard and an Apple Pencil with -it. I run [EricNet](https://as206628.net), an infrastructure and networking +it. I run [EzriCloud](https://as206628.net), an infrastructure and networking project consisting of a few colocated servers in California and New York City, running on my own ISP. In my cluster of hypervisors, the most important machine is my workstation virtual machine (VM). The workstation VM is a simple Debian diff --git a/content/blog/20230726-build_your_own_isp.md b/content/blog/20230726-build_your_own_isp.md index b0eb251..16852c9 100644 --- a/content/blog/20230726-build_your_own_isp.md +++ b/content/blog/20230726-build_your_own_isp.md @@ -183,7 +183,7 @@ connect to two of the transit providers below. * [Freetransit](https://freetransit.ch/) * [BGP Tunnel](https://bgptunnel.com/) -* [EricNet](https://as206628.net) +* [EzriCloud](https://as206628.net) ### Setting Up BIRD on Your Server diff --git a/content/blog/20230728-site_update.md b/content/blog/20230728-site_update.md index 87dd261..de461e2 100644 --- a/content/blog/20230728-site_update.md +++ b/content/blog/20230728-site_update.md @@ -36,6 +36,6 @@ useful. section. * Server side syntax highlighting for code blocks. * And the other future plans from the bottom of [my last post about this - website](https://ericz.me/blog/this-blog). + website](https://ezrizhu.com/blog/this-blog). * Blog roll. * Resume as html, with pdf link contained within diff --git a/content/blog/20230731-ill_read_it.md b/content/blog/20230731-ill_read_it.md index 80bd81e..dd2c82f 100644 --- a/content/blog/20230731-ill_read_it.md +++ b/content/blog/20230731-ill_read_it.md @@ -29,4 +29,4 @@ If you are afraid that no one will read it, **I’ll read it**. I can also read simplified Chinese, and would love to connect with more people back in China. -So please, [send them over](mailto:eric@ericz.me). +So please, [send them over](mailto:me@ezrizhu.com). diff --git a/content/blog/20230731-using_github.md b/content/blog/20230731-using_github.md index 5f3c743..c20ae76 100644 --- a/content/blog/20230731-using_github.md +++ b/content/blog/20230731-using_github.md @@ -20,7 +20,7 @@ programming activities to stand out, making myself a more attractive applicant. With Github being the most popular git hosting platform out there, I think recruiters will look at my Github and see what I have been up to, along with other metrics that they can see from my [Github -profile](https://github.com/ericzty). +profile](https://github.com/ezrizhu). Github has nice features like the activity graph that shows people how much I contribute to projects on github, and the organizations I am associated with. diff --git a/content/blog/20230801-hello_indieweb.md b/content/blog/20230801-hello_indieweb.md index e806e3e..e505595 100644 --- a/content/blog/20230801-hello_indieweb.md +++ b/content/blog/20230801-hello_indieweb.md @@ -24,7 +24,7 @@ authentication method. For webmention, I wrote a simple [GoLang](https://go.dev/) API that accepts webmention query and sends them to me as a discord webhook. The source can be -found [here](https://github.com/ericzty/dismention) +found [here](https://github.com/ezrizhu/dismention) This website is my home, so I thought it'd be nice if it is somewhat connected with the rest of the IndieWeb blogging scene. diff --git a/content/blog/20230814-aug3_server_upgrades.md b/content/blog/20230814-aug3_server_upgrades.md index c996008..27a360d 100644 --- a/content/blog/20230814-aug3_server_upgrades.md +++ b/content/blog/20230814-aug3_server_upgrades.md @@ -9,12 +9,12 @@ Tags: I run a small sized server infrastructure consisting of mainly three hypervisors in California, and one hypervisor in NYC. Those servers are all owned and maintained by me, with the occasional help of the helpful datacenter staff. You -can read more about EricNet [here](https://ericz.me/projects/ericnet) +can read more about EzriCloud [here](https://ezrizhu.com/projects/ezricloud) My servers were awfully out of date, being two major versions behind on Proxmox, and Debian. I have been ignoring the EOL warning as I thought I would have finished writing my Proxmox Replacement [Eve -Suite](https://ericz.me/projects/eve) soon. But I have came to the realization +Suite](https://ezrizhu.com/projects/eve) soon. But I have came to the realization that it will still take me a while, and that it’s not super safe being vulnerable to all the vulnerabilities out there to Linux and Proxmox. That’s where I have decided to upgrade all my hypervisors and other machines that runs @@ -121,7 +121,7 @@ The time is now 4:52 am, almost three hours past the expected end of the maintenance window. I head to sleep as I need to pack up to prepare to move to my new apartment tomorrow. Hopefully this is the last time I upgrade Proxmox, this experience was a great motivation to me to finish writing [Eve -Suite](https://ericz.me/projects/eve). +Suite](https://ezrizhu.com/projects/eve). ![screenshot of me notifying my users the status of this server upgrade](/assets/img/blog/20230814-screenshot.png) diff --git a/content/blog/20230917-network_latency_and_cpu.md b/content/blog/20230917-network_latency_and_cpu.md index 22c49e0..5d550dc 100644 --- a/content/blog/20230917-network_latency_and_cpu.md +++ b/content/blog/20230917-network_latency_and_cpu.md @@ -18,7 +18,7 @@ But since I have made the switch, the latency to my servers has been dramatically higher, and it didn't make a lot of sense. ```text -eric in ide0 in ~ took 11s +ezri in ide0 in ~ took 11s λ ping 1.1 PING 1.1 (1.0.0.1) 56(84) bytes of data. 64 bytes from 1.0.0.1: icmp_seq=1 ttl=56 time=22.5 ms diff --git a/content/blog/20231021-cloud_vnc_proxy.md b/content/blog/20231021-cloud_vnc_proxy.md index 3d9e2a5..b0185fd 100644 --- a/content/blog/20231021-cloud_vnc_proxy.md +++ b/content/blog/20231021-cloud_vnc_proxy.md @@ -9,7 +9,7 @@ Tags: I’m currently working on eve, a management toolkit for libvirt-based virtualization servers. Think of it as openstack, but for small scale cloud -deployments. I am building it primarily for deployments like EricNet, small +deployments. I am building it primarily for deployments like EzriCloud, small scale, multi-siloed, and with user support. It features a management pane, and it talks to hypervisor agents to interact with libvirt and other systems on each hypervisor, like firewalling, backups, etc… diff --git a/content/blog/20231030-hello_nix.md b/content/blog/20231030-hello_nix.md index efa91c5..cc95d89 100644 --- a/content/blog/20231030-hello_nix.md +++ b/content/blog/20231030-hello_nix.md @@ -28,15 +28,15 @@ use. boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only networking.hostName = "nixplay"; # Define your hostname. - networking.search = ["eric.si"]; + networking.search = ["bns.sh"]; networking.nameservers = [ "9.9.9.10" "149.112.112.10" ]; time.timeZone = "America/New_York"; i18n.defaultLocale = "en_US.UTF-8"; - users.users.eric = { + users.users.ezri = { isNormalUser = true; extraGroups = [ "wheel" ]; openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2whKHD8XCH+CQwnagH+iBfkyjc/2f/QEfdsEi0SaKO " + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN2whKHD8XCH+CQwnagH+iBfkyjc/2f/QEfdsEi0SaKO t2" ]; }; environment.systemPackages = with pkgs; [ diff --git a/content/contact.md b/content/contact.md index 28d42d5..ed39dff 100644 --- a/content/contact.md +++ b/content/contact.md @@ -5,12 +5,12 @@ feel free to contact me if you want me to read your blog, share your ideas, or ask me about something. If you think I am wrong about something, please let me know! -The best way to reach me is via email at [eric@ericz.me](mailto:eric@ericz.me).\ +The best way to reach me is via email at [me@ezrizhu.com](mailto:me@ezrizhu.com).\ If you wish to send encrypted email to me, I have a PGP key [0xC15ECEC52397343B](/files/publickey.asc). For a more asynchronous chat, I usually idle in Libera IRC under the nick -`ericzty`. My Discord is `ericzty`. Discord will automatically +`ezrizhu`. My Discord is `ezrizhu`. Discord will automatically reject requests if you're not in a mutual server with me, feel free to join the [Rust Programming Language Community Server](https://discord.gg/rust-lang-community) if you need a mutual. @@ -25,15 +25,15 @@ Fax: +1 9292070306 Mailing address: ```plain -Student Tianyu Zhu +Student Ezri Zhu Stevens Institute of Technology 1 Castle Point Terrace Hoboken NJ 07030 USA ``` -[Github](https://github.com/ericzty) • -[LinkedIn](https://linkedin.com/in/tianyu-zhu-577356250) • -[Fedi](https://uwu.social/@eric) • -[Bsky](https://bsky.app/profile/ericz.me) • -[Twitter](https://twitter.com/ericzty) • -[Email](mailto:eric@ericz.me) +[Github](https://github.com/ezrizhu) • +[LinkedIn](https://linkedin.com/in/ezrizhu) • +[Fedi](https://sleepless.cafe/ezri) • +[Bsky](https://bsky.app/profile/ezrizhu.com) • +[Twitter](https://twitter.com/ezrizhu) • +[Email](mailto:me@ezrizhu.com) diff --git a/content/home.md b/content/home.md index fa433ab..47713e3 100644 --- a/content/home.md +++ b/content/home.md @@ -13,7 +13,7 @@ reading, writing my blog, and exploring the city. You can find what my current focuses are, what I'm reading, watching, and what I have been playing on my [now page](/now). -[Github](https://github.com/ericzty) • -[LinkedIn](https://linkedin.com/in/tianyu-zhu-577356250) • -[Fedi](https://uwu.social/@eric) • [Bsky](https://bsky.app/profile/ericz.me) • -[Twitter](https://twitter.com/ericzty) • [Email](mailto:eric@ericz.me) +[Github](https://github.com/ezrizhu) • +[LinkedIn](https://linkedin.com/in/ezrizhu) • +[Fedi](https://sleepless.cafe/ezri) • [Bsky](https://bsky.app/profile/ezrizhu.com) • +[Twitter](https://twitter.com/ezrizhu) • [Email](mailto:me@ezrizhu.com) diff --git a/content/projects/20200501-ericnet.md b/content/projects/20200501-ezricloud.md similarity index 71% rename from content/projects/20200501-ericnet.md rename to content/projects/20200501-ezricloud.md index f486cfc..f302fee 100644 --- a/content/projects/20200501-ericnet.md +++ b/content/projects/20200501-ezricloud.md @@ -1,5 +1,5 @@ --- -Title: EricNet +Title: EzriCloud Description: A not-for-profit IT and Networking project that provides free hosting and BGP upstream to students and open-source projects. With over 50 users and 10 BGP downstreams, It offers VPS and web Hosting, BGP transit, and other bespoke web services for students, open source developers, and non-profit organizations. Tags: - networking @@ -10,9 +10,9 @@ Tags: Project duration: Mar 2020 - Present -I registered AS206628 EricNet on 19 Mar 2020 with [Inferno +I registered AS206628 EzriCloud on 19 Mar 2020 with [Inferno Communications](https://infernocomms.com/) and I have been maintaining it since. -EricNet offers classic VPS hosting, web hosting, BGP transit, and other bespoke +EzriCloud offers classic VPS hosting, web hosting, BGP transit, and other bespoke web services for all students, open source developers, and non-profit -organizations. EricNet now has over 50 users, including over 10 BGP downstreams. +organizations. EzriCloud now has over 50 users, including over 10 BGP downstreams. Read more about it [here](https://as206628.net). diff --git a/content/projects/20221101-eve.md b/content/projects/20221101-eve.md index 984294b..169101e 100644 --- a/content/projects/20221101-eve.md +++ b/content/projects/20221101-eve.md @@ -12,7 +12,7 @@ Tags: Project duration: Nov 2022 - Present I am currently working on the EVE Suite to replace Proxmox on -[EricNet](https://as206628.net), the EVE Suite is mainly made up of the +[EzriCloud](https://as206628.net), the EVE Suite is mainly made up of the following software. * [EVE, the main API](https://github.com/baseddevelopment/eve) diff --git a/src/feed/blog_atom.rs b/src/feed/blog_atom.rs index a495f02..392bb3e 100644 --- a/src/feed/blog_atom.rs +++ b/src/feed/blog_atom.rs @@ -23,11 +23,11 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("feed").attr("xmlns", "http://www.w3.org/2005/Atom").into(), XmlEvent::start_element("title").into(), - XmlEvent::characters("Eric's blog").into(), + XmlEvent::characters("Ezri's blog").into(), XmlEvent::end_element().into(), XmlEvent::start_element("id").into(), - XmlEvent::characters("https://ericz.me/blog.atom").into(), + XmlEvent::characters("https://ezrizhu.com/blog.atom").into(), XmlEvent::end_element().into(), XmlEvent::start_element("updated").into(), @@ -36,25 +36,25 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("author").into(), XmlEvent::start_element("name").into(), - XmlEvent::characters("Tianyu (Eric) Zhu").into(), + XmlEvent::characters("Tianyu (Ezri) Zhu").into(), XmlEvent::end_element().into(), XmlEvent::start_element("email").into(), - XmlEvent::characters("eric@ericz.me").into(), + XmlEvent::characters("me@ezrizhu.com").into(), XmlEvent::end_element().into(), XmlEvent::end_element().into(), XmlEvent::start_element("link") - .attr("href", "https://ericz.me/blog.atom") + .attr("href", "https://ezrizhu.com/blog.atom") .attr("rel", "self").into(), XmlEvent::end_element().into(), XmlEvent::start_element("link") - .attr("href", "https://ericz.me/blog") + .attr("href", "https://ezrizhu.com/blog") .attr("rel", "alternate").into(), XmlEvent::end_element().into(), XmlEvent::start_element("generator").into(), - XmlEvent::characters("https://github.com/ericzty/www").into(), + XmlEvent::characters("https://github.com/ezrizhu/www").into(), XmlEvent::end_element().into(), ]; @@ -64,7 +64,7 @@ pub async fn get(State(state): State) -> Response { for post in state.blog { let title = post.title; - let link = format!("https://ericz.me/blog/{}", post.slug); + let link = format!("https://ezrizhu.com/blog/{}", post.slug); let date = post.date.to_rfc3339(); let content = post.body; diff --git a/src/feed/blog_rss.rs b/src/feed/blog_rss.rs index b1738a2..972427d 100644 --- a/src/feed/blog_rss.rs +++ b/src/feed/blog_rss.rs @@ -23,15 +23,15 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("channel").into(), XmlEvent::start_element("title").into(), - XmlEvent::characters("Eric's blog").into(), + XmlEvent::characters("Ezri's blog").into(), XmlEvent::end_element().into(), XmlEvent::start_element("link").into(), - XmlEvent::characters("https://ericz.me/blog").into(), + XmlEvent::characters("https://ezrizhu.com/blog").into(), XmlEvent::end_element().into(), XmlEvent::start_element("description").into(), - XmlEvent::characters("Eric's thoughts on things.").into(), + XmlEvent::characters("Ezri's thoughts on things.").into(), XmlEvent::end_element().into(), XmlEvent::start_element("language").into(), @@ -43,7 +43,7 @@ pub async fn get(State(state): State) -> Response { XmlEvent::end_element().into(), XmlEvent::start_element("generator").into(), - XmlEvent::characters("https://github.com/ericzty/www").into(), + XmlEvent::characters("https://github.com/ezrizhu/www").into(), XmlEvent::end_element().into(), XmlEvent::start_element("ttl").into(), @@ -57,7 +57,7 @@ pub async fn get(State(state): State) -> Response { for post in state.blog { let title = post.title; - let link = format!("https://ericz.me/blog/{}", post.slug); + let link = format!("https://ezrizhu.com/blog/{}", post.slug); let date = post.date.to_rfc2822(); let content = post.body; diff --git a/src/feed/news_atom.rs b/src/feed/news_atom.rs index 781ca48..6974c81 100644 --- a/src/feed/news_atom.rs +++ b/src/feed/news_atom.rs @@ -25,11 +25,11 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("feed").attr("xmlns", "http://www.w3.org/2005/Atom").into(), XmlEvent::start_element("title").into(), - XmlEvent::characters("Eric's news").into(), + XmlEvent::characters("Ezri's news").into(), XmlEvent::end_element().into(), XmlEvent::start_element("id").into(), - XmlEvent::characters("https://ericz.me/news.atom").into(), + XmlEvent::characters("https://ezrizhu.com/news.atom").into(), XmlEvent::end_element().into(), XmlEvent::start_element("updated").into(), @@ -38,25 +38,25 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("author").into(), XmlEvent::start_element("name").into(), - XmlEvent::characters("Tianyu (Eric) Zhu").into(), + XmlEvent::characters("Tianyu (Ezri) Zhu").into(), XmlEvent::end_element().into(), XmlEvent::start_element("email").into(), - XmlEvent::characters("eric@ericz.me").into(), + XmlEvent::characters("me@ezrizhu.com").into(), XmlEvent::end_element().into(), XmlEvent::end_element().into(), XmlEvent::start_element("link") - .attr("href", "https://ericz.me/news.atom") + .attr("href", "https://ezrizhu.com/news.atom") .attr("rel", "self").into(), XmlEvent::end_element().into(), XmlEvent::start_element("link") - .attr("href", "https://ericz.me/news") + .attr("href", "https://ezrizhu.com/news") .attr("rel", "alternate").into(), XmlEvent::end_element().into(), XmlEvent::start_element("generator").into(), - XmlEvent::characters("https://github.com/ericzty/www").into(), + XmlEvent::characters("https://github.com/ezrizhu/www").into(), XmlEvent::end_element().into(), ]; @@ -74,7 +74,7 @@ pub async fn get(State(state): State) -> Response { let (date_str, title) = news.split_once(": ").unwrap(); let content = title.clone(); // link (id), has to be unique - let link = format!("{}#{}", "https://ericz.me/news", (news_len - count).to_string()); + let link = format!("{}#{}", "https://ezrizhu.com/news", (news_len - count).to_string()); count+=1; let date = NaiveDate::parse_from_str(&format!("{} {}", date_str, "01"), "%b %Y %d").unwrap().and_hms_opt(0, 0, 0).unwrap(); diff --git a/src/feed/news_rss.rs b/src/feed/news_rss.rs index 97690a4..fd7b711 100644 --- a/src/feed/news_rss.rs +++ b/src/feed/news_rss.rs @@ -25,15 +25,15 @@ pub async fn get(State(state): State) -> Response { XmlEvent::start_element("channel").into(), XmlEvent::start_element("title").into(), - XmlEvent::characters("Eric's news").into(), + XmlEvent::characters("Ezri's news").into(), XmlEvent::end_element().into(), XmlEvent::start_element("link").into(), - XmlEvent::characters("https://ericz.me/news").into(), + XmlEvent::characters("https://ezrizhu.com/news").into(), XmlEvent::end_element().into(), XmlEvent::start_element("description").into(), - XmlEvent::characters("Eric's news.").into(), + XmlEvent::characters("Ezri's news.").into(), XmlEvent::end_element().into(), XmlEvent::start_element("language").into(), @@ -45,7 +45,7 @@ pub async fn get(State(state): State) -> Response { XmlEvent::end_element().into(), XmlEvent::start_element("generator").into(), - XmlEvent::characters("https://github.com/ericzty/www").into(), + XmlEvent::characters("https://github.com/ezrizhu/www").into(), XmlEvent::end_element().into(), XmlEvent::start_element("ttl").into(), @@ -67,7 +67,7 @@ pub async fn get(State(state): State) -> Response { let (date_str, title) = news.split_once(": ").unwrap(); let content = title.clone(); // link (id) has to be unique - let link = format!("{}#{}", "https://ericz.me/news", (news_len - count).to_string()); + let link = format!("{}#{}", "https://ezrizhu.com/news", (news_len - count).to_string()); count+=1; let date = NaiveDate::parse_from_str(&format!("{} {}", date_str, "01"), "%b %Y %d").unwrap().and_hms_opt(0, 0, 0).unwrap(); diff --git a/src/site/blog.rs b/src/site/blog.rs index 4ec7821..7e4907a 100644 --- a/src/site/blog.rs +++ b/src/site/blog.rs @@ -31,8 +31,8 @@ pub async fn blog_index(State(state): State) -> Markup { }; let extra_headers = html! { link rel="stylesheet" href="/assets/css/post-index.css"; - link rel="alternate" title="Eric's Blog" type="application/rss+xml" href="https://ericz.me/blog.xml"; - link rel="alternate" title="Eric's Blog" type="application/atom+xml" href="https://ericz.me/blog.atom"; + link rel="alternate" title="Ezri's Blog" type="application/rss+xml" href="https://ezrizhu.com/blog.xml"; + link rel="alternate" title="Ezri's Blog" type="application/atom+xml" href="https://ezrizhu.com/blog.atom"; }; base("Blog", "My blog.", extra_headers, content, Some(state)) } diff --git a/src/site/contact.rs b/src/site/contact.rs index 3c8f665..f521a63 100644 --- a/src/site/contact.rs +++ b/src/site/contact.rs @@ -3,7 +3,7 @@ use axum::extract::State; use super::base; pub async fn contact(State(state): State) -> Markup { - let description = "Email: eric@ericz.me"; + let description = "Email: me@ezrizhu.com"; let contact = state.contact.clone(); let content = html! { diff --git a/src/site/home.rs b/src/site/home.rs index 0d4767f..983eeee 100644 --- a/src/site/home.rs +++ b/src/site/home.rs @@ -9,13 +9,13 @@ pub async fn home(State(state): State) -> Markup { let bio = state.home.clone(); let news = state.five_news.clone(); - let projects = vec!["ericnet", "try", "eve"]; + let projects = vec!["ezricloud", "try", "eve"]; let blogs = state.blog[0..7].to_vec(); let content = html! { div class="hero pure-g" { div class="pure-u-1 pure-u-md-1-3" { - img src="/assets/img/eric1.webp" alt="An image of Eric Zhu wearing a cow hat." class="pure-img headshot"; + img src="/assets/img/ezri1.webp" alt="An image of Ezri Zhu wearing a cow hat." class="pure-img headshot"; p class="pronouns" { "(they/any)" }; } div class="pure-u-1 pure-u-md-2-3" { @@ -65,11 +65,11 @@ pub async fn home(State(state): State) -> Markup { let extra_headers = html! { link rel="stylesheet" href="assets/css/home.css"; link rel="authorization_endpoint" href="https://indieauth.com/auth"; - link rel="me" href="mailto:eric@ericz.me"; - link rel="alternate" title="Eric's Blog" type="application/rss+xml" href="https://ericz.me/blog.xml"; - link rel="alternate" title="Eric's Blog" type="application/atom+xml" href="https://ericz.me/blog.atom"; - link rel="alternate" title="Eric's news" type="application/rss+xml" href="https://ericz.me/news.xml"; - link rel="alternate" title="Eric's news" type="application/atom+xml" href="https://ericz.me/news.atom"; + link rel="me" href="mailto:me@ezrizhu.com"; + link rel="alternate" title="Ezri's Blog" type="application/rss+xml" href="https://ezrizhu.com/blog.xml"; + link rel="alternate" title="Ezri's Blog" type="application/atom+xml" href="https://ezrizhu.com/blog.atom"; + link rel="alternate" title="Ezri's news" type="application/rss+xml" href="https://ezrizhu.com/news.xml"; + link rel="alternate" title="Ezri's news" type="application/atom+xml" href="https://ezrizhu.com/news.atom"; }; base("", description, extra_headers, content, Some(state.clone())) } diff --git a/src/site/mod.rs b/src/site/mod.rs index a90cff5..bf696e1 100644 --- a/src/site/mod.rs +++ b/src/site/mod.rs @@ -22,9 +22,9 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark ); let title: String = if title.is_empty() { - "Tianyu (Eric) Zhu".to_string() + "Tianyu (Ezri) Zhu".to_string() } else { - title.to_string() + " - Tianyu (Eric) Zhu" + title.to_string() + " - Tianyu (Ezri) Zhu" }; let mut webring_enabled = false; @@ -47,7 +47,7 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark title { (title) }; meta name="description" content=(description); - meta name="author" content="Tianyu (Eric) Zhu"; + meta name="author" content="Tianyu (Ezri) Zhu"; link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png"; link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png"; @@ -60,7 +60,7 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark meta property="og:title" content=(title); meta property="og:description" content=(description); meta property="og:theme-color" content="#2e3440"; - meta property="og:site_name" content="Eric's Blog"; + meta property="og:site_name" content="Ezri's Blog"; link rel="stylesheet" href="/assets/css/main.css"; (extra_headers) @@ -68,7 +68,7 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark body { div class="home-menu pure-menu pure-menu-horizontal" { a href="/" { - img class="logo" src="/assets/img/logo.svg" alt="Tianyu (Eric) Zhu"; + img class="logo" src="/assets/img/logo.svg" alt="Tianyu (Ezri) Zhu"; } ul class="pure-menu-list" { li class="pure-menu-item" { @@ -119,6 +119,9 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark "I'm open to employment for summer of 2024 internships! Please contact me via the " a href="/contact" { "contacts page." } } + div class="banner" { + "Happy new year! I now go by Ezri, my new email address is me@ezrizhu.com." + } div class="main" { (content) } @@ -142,9 +145,9 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark "Copyright 2018-2023 • All text here are released under " a target="_blank" href="https://creativecommons.org/licenses/by/4.0/" { "(CC BY 4.0)" } " • Source code " - a target="_blank" href="https://github.com/ericzty/www" { "available here" } + a target="_blank" href="https://github.com/ezrizhu/www" { "available here" } ", released under the " - a target="_blank" href="https://github.com/ericzty/www/blob/main/COPYING" { "GNU AGPLv3 license" } + a target="_blank" href="https://github.com/ezrizhu/www/blob/main/COPYING" { "GNU AGPLv3 license" } "." br; (build_info); @@ -169,9 +172,9 @@ pub fn base(title: &str, description: &str, extra_headers: Markup, content: Mark } div class="h-card" style="display: none" { - a class="u-email" href="mailto:eric@ericz.me" {}; - img class="u-photo" src="https://ericz.me/assets/img/eric1.webp" alt="my face"; - a class="u-url u-uid p-name" href="https://ericz.me" { "Tianyu (Eric) Zhu" }; + a class="u-email" href="mailto:me@ezrizhu.com" {}; + img class="u-photo" src="https://ezhizhu.com/assets/img/ezri1.webp" alt="my face"; + a class="u-url u-uid p-name" href="https://ezrizhu.com" { "Tianyu (Ezri) Zhu" }; p class="p-note" { "I’m a student interested in software development, computer networking, managing infrastructure at scale, cybersecurity, and DevOps" }; } } diff --git a/src/site/news.rs b/src/site/news.rs index 28ce1af..d98b615 100644 --- a/src/site/news.rs +++ b/src/site/news.rs @@ -3,7 +3,7 @@ use axum::extract::State; use super::base; pub async fn news(State(state): State) -> Markup { - let description = "Recent news on Eric"; + let description = "Recent news on Ezri"; let news = state.news.clone(); let content = html! { @@ -19,8 +19,8 @@ pub async fn news(State(state): State) -> Markup { }; let extra_headers = html! { link rel="stylesheet" href="assets/css/news.css"; - link rel="alternate" title="Eric's news" type="application/rss+xml" href="https://ericz.me/news.xml"; - link rel="alternate" title="Eric's news" type="application/atom+xml" href="https://ericz.me/news.atom"; + link rel="alternate" title="Ezri's news" type="application/rss+xml" href="https://ezrizhu.com/news.xml"; + link rel="alternate" title="Ezri's news" type="application/atom+xml" href="https://ezrizhu.com/news.atom"; }; base("", description, extra_headers, content, Some(state)) } diff --git a/src/site/not_found.rs b/src/site/not_found.rs index 667f02f..82daae7 100644 --- a/src/site/not_found.rs +++ b/src/site/not_found.rs @@ -7,7 +7,7 @@ pub async fn not_found() -> (StatusCode, Markup) { let content = html! { h1 { (description) } p { "The page you're looking for does not exist. If this was unexpected, please shoot me an email or create an issue on " - a target="_blank" href="https://github.com/ericzty/www" { "Github" } + a target="_blank" href="https://github.com/ezrizhu/www" { "Github" } "."} }; let extra_headers = html! { diff --git a/src/site/post.rs b/src/site/post.rs index 31f4629..82789a7 100644 --- a/src/site/post.rs +++ b/src/site/post.rs @@ -46,7 +46,7 @@ fn post(post: Post, state: SiteState, page_type: PageType) -> Markup { h1 class="p-name" { (post.title) }; div class="byline" { p { - "by " a class="p-author h-card" href="https://ericz.me" target="_blank" { "Eric" } + "by " a class="p-author h-card" href="https://ezrizhu.com" target="_blank" { "Ezri" } @if matches!(page_type, PageType::Blog) { @let date_str = post.date.format("%B %d, %Y").to_string(); @let date_rfc3339 = post.date.to_rfc3339(); @@ -62,14 +62,14 @@ fn post(post: Post, state: SiteState, page_type: PageType) -> Markup { div class="e-content" { p { (PreEscaped(post.body)) }; } - a style="display: none;" class="u-url" href=(format!("https://ericz.me/{}/{}", page_name, post.slug)) { "Permalink" } + a style="display: none;" class="u-url" href=(format!("https://ezrizhu.com/{}/{}", page_name, post.slug)) { "Permalink" } } hr; - p { "If you have any questions, want to change my mind, or literally anything else, please " a href="mailto:eric@ericz.me" {"reach out"} "!" }; + p { "If you have any questions, want to change my mind, or literally anything else, please " a href="mailto:me@ezrizhu.com" {"reach out"} "!" }; }; let extra_headers = html! { link rel="stylesheet" href="/assets/css/post.css"; - link rel="webmention" href="https://ericz.me/webmention/accept"; + link rel="webmention" href="https://ezrizhu.com/webmention/accept"; }; base(&post.title, &post.description, extra_headers, content, Some(state)) } diff --git a/src/sitemap.rs b/src/sitemap.rs index 7238c9f..447a235 100644 --- a/src/sitemap.rs +++ b/src/sitemap.rs @@ -10,19 +10,19 @@ pub fn init(state: super::SiteState) -> Result> { let mut sm: Vec = Vec::new(); let smw = sitemap::writer::SiteMapWriter::new(&mut sm); let mut urlwriter = smw.start_urlset()?; - urlwriter.url("https://ericz.me")?; + urlwriter.url("https://ezrizhu.com")?; let static_pages = vec!["contact", "news", "projects", "blog", "now", "projects/tags", "blog/tags", "talks", "talks/tags"]; for page in static_pages { - urlwriter.url(format!("https://ericz.me/{}", page))?; + urlwriter.url(format!("https://ezrizhu.com/{}", page))?; } for project in state.projects { - urlwriter.url(format!("https://ericz.me/projects/{}", project.slug))?; + urlwriter.url(format!("https://ezrizhu.com/projects/{}", project.slug))?; } for blog in state.blog { - urlwriter.url(format!("https://ericz.me/blog/{}", blog.slug))?; + urlwriter.url(format!("https://ezrizhu.com/blog/{}", blog.slug))?; } for talk in state.talks { - urlwriter.url(format!("https://ericz.me/talks/{}", talk.slug))?; + urlwriter.url(format!("https://ezrizhu.com/talks/{}", talk.slug))?; } urlwriter.end()?; Ok(sm) diff --git a/src/webring.rs b/src/webring.rs index 11cfd42..5bb4c5b 100644 --- a/src/webring.rs +++ b/src/webring.rs @@ -18,7 +18,7 @@ pub async fn fetch() -> Result> { } pub fn get_neighbors(ring: Vec) -> (Node, Node) { - let index = ring.iter().position(|x| x.id == "eric").unwrap(); + let index = ring.iter().position(|x| x.id == "ezri").unwrap(); let prev = ring.get((index + ring.len() - 1) % ring.len()).unwrap(); let next = ring.get((index + 1) % ring.len()).unwrap(); (prev.clone(), next.clone()) @@ -27,7 +27,7 @@ pub fn get_neighbors(ring: Vec) -> (Node, Node) { pub fn get_random(ring: Vec) -> Node { let (left, right) = get_neighbors(ring.clone()); let ring: Vec = ring.clone().iter() - .filter(|&node| node.id != "eric") + .filter(|&node| node.id != "ezri") .filter(|&node| node.id != left.id) .filter(|&node| node.id != right.id) .cloned().collect();