Compare commits

...

19 Commits

Author SHA1 Message Date
Aditya Thakral 6eb8d4d064 Simplify teams page 8 months ago
Aditya Thakral a7eac7b81e Create members api 8 months ago
Aditya Thakral ef9050357f Add api folder to gitignore 8 months ago
Raymond Li 8e0e446fd9 Update Leo in syscom/termcom (#488) 8 months ago
Shahan Nedadahandeh 8c43ed47b2 Remove warning about emails being lost (#487) 8 months ago
Amy Wang 6e31d572ba Add warning about emails being lost (#486) 8 months ago
Amy Wang 82cf6a7872 Update Fall 2022 hiring deadline (#484) 8 months ago
Jared He c509757975 Make recent images square (#483) 8 months ago
Amy Wang 72723df9eb Add Fall 2022 hiring news (#482) 8 months ago
Jared He f4fbfa254a Add events (#481) 8 months ago
Amy Wang 0a30564750 Update team name to Community Representatives (#478) 8 months ago
Raymond Li 7f9706a1b5 Update the MUA (#473) 8 months ago
Shahan Nedadahandeh 13c6a0fb91 Added afterhours event (#477) 8 months ago
Amy Wang 0a3222a9ce Update Anton Mosunov Prof Talk room (#476) 8 months ago
Shahan Nedadahandeh e88283bc64 Added CTF and Code party events (#475) 8 months ago
Amy Wang e7ca161e76 Fix Andrew Wang Photos (#471) 9 months ago
Amy Wang 14ef810ad9 Image Optimization - Create new ImagePool for each batch (#470) 9 months ago
Aditya Thakral 767e32511d Add some docs about architecture (#459) 9 months ago
Aditya Thakral 44af493832 Do not use index: as metadata for OrganizedContent (#468) 9 months ago
  1. 8
      .drone.yml
  2. 5
      .gitignore
  3. 6
      .vscode/settings.json
  4. 18
      README.md
  5. 2
      components/EventCard.tsx
  6. 2
      components/MiniEventCard.tsx
  7. 3
      components/WarningHeader.tsx
  8. 14
      content/about/code-of-conduct/ORDER.json
  9. 1
      content/about/code-of-conduct/additional-information.md
  10. 1
      content/about/code-of-conduct/addressing-grievances.md
  11. 1
      content/about/code-of-conduct/confidentiality.md
  12. 1
      content/about/code-of-conduct/consequences-of-inappropriate-behaviour.md
  13. 1
      content/about/code-of-conduct/contact-information.md
  14. 1
      content/about/code-of-conduct/expected-behaviour.md
  15. 1
      content/about/code-of-conduct/experiencing-unacceptable-behaviour.md
  16. 1
      content/about/code-of-conduct/license-information-and-attribution.md
  17. 1
      content/about/code-of-conduct/purpose.md
  18. 1
      content/about/code-of-conduct/revision.md
  19. 1
      content/about/code-of-conduct/scope-and-spaces.md
  20. 1
      content/about/code-of-conduct/unacceptable-behaviour.md
  21. 16
      content/about/constitution/ORDER.json
  22. 1
      content/about/constitution/amendments-and-procedures.md
  23. 1
      content/about/constitution/code-of-conduct.md
  24. 1
      content/about/constitution/committees.md
  25. 1
      content/about/constitution/dissolution.md
  26. 1
      content/about/constitution/duties-of-officers.md
  27. 1
      content/about/constitution/executive-council.md
  28. 1
      content/about/constitution/finances.md
  29. 1
      content/about/constitution/meetings.md
  30. 1
      content/about/constitution/membership.md
  31. 1
      content/about/constitution/name.md
  32. 1
      content/about/constitution/officers.md
  33. 1
      content/about/constitution/purpose.md
  34. 1
      content/about/constitution/revision.md
  35. 1
      content/about/constitution/use-of-club-resources.md
  36. 21
      content/events/2022/spring/Afterhours.md
  37. 22
      content/events/2022/spring/Cali-Panel.md
  38. 17
      content/events/2022/spring/Code-Party-Sequel.md
  39. 2
      content/events/2022/spring/Code-Party-scream.md
  40. 16
      content/events/2022/spring/Ctf.md
  41. 24
      content/events/2022/spring/End-Of-Term.md
  42. 19
      content/events/2022/spring/Git-Internals-Talk.md
  43. 17
      content/events/2022/spring/Prof-Talk-Anton-Mosunov.md
  44. 14
      content/news/2022/spring/2022-07-25-a258wang.md
  45. 11
      content/resources/machine-usage-agreement/ORDER.json
  46. 3
      content/resources/machine-usage-agreement/acceptable-and-unacceptable-use.md
  47. 7
      content/resources/machine-usage-agreement/club-accounts.md
  48. 10
      content/resources/machine-usage-agreement/definitions.md
  49. 3
      content/resources/machine-usage-agreement/rights-of-syscom-and-exec.md
  50. 3
      content/resources/machine-usage-agreement/security.md
  51. 6
      content/resources/machine-usage-agreement/summary.md
  52. 1
      content/resources/machine-usage-agreement/usage-policy.md
  53. 3
      content/resources/machine-usage-agreement/user-agreement.md
  54. 1
      content/resources/machine-usage-agreement/user-responsibilities.md
  55. 16
      content/resources/services/ORDER.json
  56. 1
      content/resources/services/cloud-accounts.md
  57. 1
      content/resources/services/club-web-hosting.md
  58. 1
      content/resources/services/cs-club-email.md
  59. 1
      content/resources/services/git-hosting.md
  60. 1
      content/resources/services/in-office-books.md
  61. 1
      content/resources/services/irc.md
  62. 1
      content/resources/services/live-streaming.md
  63. 1
      content/resources/services/machine-accounts.md
  64. 1
      content/resources/services/mailing-lists.md
  65. 1
      content/resources/services/mattermost.md
  66. 1
      content/resources/services/software-mirror.md
  67. 1
      content/resources/services/ssh-key-fingerprints.md
  68. 1
      content/resources/services/video-conferencing.md
  69. 1
      content/resources/services/web-hosting.md
  70. 3
      content/team/discord-team.json
  71. 0
      content/team/representatives-team.json
  72. 6
      content/team/systems-committee.json
  73. 3
      content/team/terminal-committee.json
  74. 2
      content/warnings/warnings.json
  75. 62
      docs/architecture.md
  76. 1
      docs/static/architecture.drawio
  77. 4
      docs/static/architecture.svg
  78. BIN
      images/events/2022/spring/Afterhours.png
  79. BIN
      images/events/2022/spring/Cali-Panel.png
  80. BIN
      images/events/2022/spring/Code-Party-Sequel.png
  81. BIN
      images/events/2022/spring/Ctf.png
  82. BIN
      images/events/2022/spring/End-Of-Term.png
  83. BIN
      images/events/2022/spring/Git-Internals-Talk.png
  84. BIN
      images/events/2022/spring/Prof-Talk-Anton-Mosunov.png
  85. BIN
      images/team/AndrewWang-Discord.jpeg
  86. 0
      images/team/AndrewWang-Syscom.jpg
  87. 176
      lib/events.ts
  88. 2
      lib/members.ts
  89. 39
      lib/news.ts
  90. 38
      lib/organized-content.ts
  91. 89
      lib/team.ts
  92. 70
      package-lock.json
  93. 6
      package.json
  94. 7
      pages/about/members.tsx
  95. 257
      pages/about/team.tsx
  96. 8
      pages/events/[year]/[term]/[event].tsx
  97. 25
      pages/events/[year]/[term]/index.tsx
  98. 4
      pages/events/[year]/index.tsx
  99. 2
      pages/events/archive.tsx
  100. 5
      pages/events/index.tsx
  101. Some files were not shown because too many files have changed in this diff Show More

@ -37,6 +37,13 @@ steps:
commands:
- npm run build:calendar
- name: generate-api
image: node:16
depends_on:
- install-deps
commands:
- npm run build:api
- name: build
image: node:16
depends_on:
@ -47,6 +54,7 @@ steps:
- name: export
image: node:16
depends_on:
- generate-api
- generate-calendar
- build
commands:

5
.gitignore vendored

@ -28,4 +28,7 @@ yarn-error.log*
/public/events.ics
# Images should be optimized
/public/images
/public/images
# APIs should be automatically generated
/public/api

@ -40,7 +40,11 @@
"files.eol": "\n",
"[markdown]": {
"editor.wordWrap": "on",
"editor.quickSuggestions": false,
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
},
"editor.tabSize": 4
}
}

@ -1,6 +1,13 @@
# Development
# README
## Dependencies
## Documentation
- [Architecture and Folder Structure](docs/architecture.md)
- [Everything about pages](docs/pages.md)
## Development
### Dependencies
Make sure that you have `node` >= 14 and `npm` >= 7. Node 14 ships with npm v6,
so if you're using node 14, you would need to upgrade npm. Alternatively you
@ -8,19 +15,20 @@ could also upgrade to node 16, which ships with npm 7.
How to upgrade npm: `npm i -g npm`
## Local
### Local
- `npm install` to install project dependencies
- `npm run build:images` to optimize images for the first time after cloning
- `npm run dev` to run the dev server (http://localhost:3000)
## Production
### Production
- `npm install` to install project dependencies
- `npm run build` to generate html/css/js
- `npm run export` to move the built files (along with assets in the public directory) to the `/out` directory
- Use your favourite web server to host the files in the `/out` directory. (A very simple one would be `python -m http.server` - not sure if it should actually be used for production :P)
# Deploy
## Deploy
- `groups` (make sure you're in the `www` group)
- `curl -o- https://git.csclub.uwaterloo.ca/www/www-new/raw/branch/main/deploy.sh | bash` (run on `caffeine`)

@ -19,7 +19,7 @@ interface EventCardProps {
permaLink: string;
showDescription?: boolean;
children: ReactNode;
year: string;
year: number;
term: string;
slug: string;
titleLinked: boolean;

@ -14,7 +14,7 @@ interface MiniEventCardProps {
startDate: Date;
endDate?: Date;
background: "dark-bg" | "normal-bg";
year: string;
year: number;
term: string;
slug: string;
}

@ -1,8 +1,9 @@
import { parse } from "date-fns";
import React from "react";
import { DATE_FORMAT, getLocalDateFromEST } from "@/utils";
import warnings from "../content/warnings/warnings.json";
import { DATE_FORMAT, getLocalDateFromEST } from "../utils";
import styles from "./WarningHeader.module.css";

@ -0,0 +1,14 @@
[
"purpose",
"expected-behaviour",
"unacceptable-behaviour",
"experiencing-unacceptable-behaviour",
"consequences-of-inappropriate-behaviour",
"addressing-grievances",
"confidentiality",
"scope-and-spaces",
"contact-information",
"additional-information",
"license-information-and-attribution",
"revision"
]

@ -1,6 +1,5 @@
---
title: Additional Information
index: 10
---
Additionally, the Executive Council are available to help Club members engage with local law enforcement or to otherwise help those experiencing unacceptable behaviour feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

@ -1,6 +1,5 @@
---
title: Addressing Grievances
index: 6
---
If either the complainant or the subject disagree with the decision made by the Handling Officer, they can appeal to the Officers, who can overturn the decision with a majority vote of all the Officers.

@ -1,6 +1,5 @@
---
title: Confidentiality
index: 7
---
The Club recognizes that all members have a right to privacy, and will handle complaints confidentially.

@ -1,6 +1,5 @@
---
title: Consequences of Inappropriate Behaviour
index: 5
---
After having done so, the Handling Officer shall use their best judgment to determine if the complaint is valid and, if so, determine with the relevant Officers the appropriate action to ensure that the complainant feels welcome in the Computer Science Club and to avoid a subsequent incident:

@ -1,6 +1,5 @@
---
title: Contact Information
index: 9
---
- The Computer Science Club [Officers can be contacted as a whole](/about).

@ -1,6 +1,5 @@
---
title: Expected Behaviour
index: 2
---
- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this Club.

@ -1,6 +1,5 @@
---
title: Experiencing Unacceptable Behaviour
index: 4
---
_The Executive Council and Faculty Advisor are herein referred to as the Officers, or singularly as Officer._

@ -1,6 +1,5 @@
---
title: License Information and Attribution
index: 11
---
- The Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike License](http://creativecommons.org/licenses/by-sa/3.0/), derived from the [Women in Computer Science Code of Conduct](http://wics.uwaterloo.ca/deprecated/code-of-conduct/), the [UW Amateur Radio Club Code of Conduct](http://uwarc.uwaterloo.ca/policies-procedures/code-of-conduct/), and the [FASS Code of Conduct](http://fass.uwaterloo.ca/fassconstitution).

@ -1,6 +1,5 @@
---
title: Purpose
index: 1
---
One of the primary goals of the Computer Science Club of the University of Waterloo is the inclusion and support of all members of the University of Waterloo community who are interested in Computer Science. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sex, sexual orientation, ability, ethnicity, socioeconomic status, age, and religion or lack thereof.

@ -1,6 +1,5 @@
---
title: Revision
index: 12
---
Revision 1.3, adopted by the Computer Science Club of the University of Waterloo on 25 January 2018.

@ -1,6 +1,5 @@
---
title: Scope and Spaces
index: 8
---
In cases where the Code of Conduct contradicts University policies, or applicable laws and bylaws, the Code of Conduct does not apply to the extent to which it conflicts.

@ -1,6 +1,5 @@
---
title: Unacceptable Behaviour
index: 3
---
**Unacceptable behaviours include:**

@ -0,0 +1,16 @@
[
"name",
"purpose",
"membership",
"officers",
"duties-of-officers",
"executive-council",
"committees",
"meetings",
"finances",
"amendments-and-procedures",
"dissolution",
"code-of-conduct",
"use-of-club-resources",
"revision"
]

@ -1,6 +1,5 @@
---
title: Amendments and Procedures
index: 10
---
1. A proposed constitutional amendment can be initiated by the Executive Council or any ten (10) members.

@ -1,6 +1,5 @@
---
title: Code of Conduct
index: 12
---
1. The Club has a [Code of Conduct](/about/code-of-conduct).

@ -1,6 +1,5 @@
---
title: Committees
index: 7
---
## Programme Committee

@ -1,6 +1,5 @@
---
title: Dissolution
index: 11
---
1. In the event of dissolution of the Club, all assets of the Club shall be transferred to the Mathematics Society of the University of Waterloo.

@ -1,6 +1,5 @@
---
title: Duties of Officers
index: 5
---
1. The duties of the President shall be:

@ -1,6 +1,5 @@
---
title: Executive Council
index: 6
---
1. The Executive Council shall consist of the present officers of the Club and the Faculty Advisor (as a non-voting member) and has the power to run the affairs of this club within the limits of this constitution. This includes the power to overrule or issue directions to any officer.

@ -1,6 +1,5 @@
---
title: Finances
index: 9
---
1. The Treasurer shall, each term, present to the Executive a financial statement for the previous term. They shall, before the end of the current term, ensure that the records are in a good condition to make this task as easy as possible for the next Treasurer.

@ -1,6 +1,5 @@
---
title: Meetings
index: 8
---
1. A regular meeting of the Club shall be held each term. This meeting shall be called by the CRO and shall be the election meeting for that term.

@ -1,6 +1,5 @@
---
title: Membership
index: 3
---
1. In compliance with MathSoc regulations and in recognition of the club being primarily targeted at undergraduate students, full membership is open to all Social Members of the Mathematics Society and restricted to the same.

@ -1,6 +1,5 @@
---
title: Name
index: 1
---
The name of this organization shall be the "Computer Science Club of the University of Waterloo".

@ -1,6 +1,5 @@
---
title: Officers
index: 4
---
1. The officers of the Club shall be:

@ -1,6 +1,5 @@
---
title: Purpose
index: 2
---
1. The Club is organized and will be operated exclusively for educational and scientific purposes in furtherance of:

@ -1,6 +1,5 @@
---
title: Revision
index: 14
---
The constitution was last revised on 25 January 2018.

@ -1,6 +1,5 @@
---
title: Use of Club Resources
index: 13
---
1. All resources under control of the Club are to be used in accordance with the aims of the Club.

@ -0,0 +1,21 @@
---
name: 'Afterhours'
short: "If you want to talk about topics overlooked in the daily grind of university and co-op, come join us for CSC Afterhours."
startDate: 'July 19 2022 19:00'
endDate: 'July 19 2022 20:30'
online: false
location: 'SLC Multipurpose Room'
poster: 'images/events/2022/spring/Afterhours.png'
registerLink: https://forms.gle/qhEXgKrhL5XcdD4b7
---
📣 If you want to talk about topics overlooked in the daily grind of university and co-op, come join us for CSC Afterhours.
🤩 Afterhours is a space for CSC members to discuss topics ranging from happiness😃, finding ways to grow outside of uni/career🏫, becoming an adult, managing relationships, and avoiding academic/job search toxicity, and many more.
✨ If any of these topics have been weighing on your mind recently, we encourage you to come out, hear the stories of others, discuss your own thoughts, and feel a little less alone.
📌 Feel free to rotate between discussions in a close-knit, non-judgmental environment.
🗓 Date: July 19th, 7:00-8:30PM at SLC Multipurpose room.
👉 Sign up from this link: https://forms.gle/qhEXgKrhL5XcdD4b7

@ -0,0 +1,22 @@
---
name: "Cali Panel"
short: "Are you struggling with finding a work-life balance? Or interested in how to build your career in the tech industry? Come to the Cali Panel!"
startDate: "July 23 2022 18:30"
endDate: "July 23 2022 20:30"
online: true
location: "Online"
poster: "images/events/2022/spring/Cali-Panel.png"
registerLink: "https://forms.gle/eZRruDdWhYtuGmj3A"
---
📣 Are you struggling with finding a work-life balance? Or interested in how to build your career in the tech industry? Come to the Cali Panel!
🚀 CSC is bringing together current and past students working for prestigious tech companies to talk about a variety of topics including career, networking, work-life balance, travelling for work, etc.
🤩 You will be able to get some insights into how to achieve your dream careers while having a work-life balance! Check out our panelists below.
📅 Event date: July 23rd, 6:30 PM - 8:30 PM.
📍This is an online event. Zoom link: https://us06web.zoom.us/j/86890664040?pwd=T3RxWFFXeTlQTER4L2hEaGl6Q3E0Zz09
👉 Sign up from this link: https://forms.gle/eZRruDdWhYtuGmj3A

@ -0,0 +1,17 @@
---
name: 'Code Party; The Sequel'
short: 'CSC Code Party is Back!'
startDate: 'July 14 2022 19:00'
endDate: 'July 14 2022 21:00'
online: false
location: 'STC 0060'
poster: 'images/events/2022/spring/Code-Party-Sequel.png'
registerLink: 'https://forms.gle/txwwN6okM1FvYQtx5'
---
📣 CSC Code Party is Back!
💻 Are you looking for a chance to practice coding with friends and discover where your skills can improve? Come to Code Party: The Sequel to enjoy a fun coding session with your peers! Feel free to bring your projects and assignments to work on.
📅 This event is being held on July 14 7PM-9PM at STC 0060.
Sign up from this link: https://forms.gle/txwwN6okM1FvYQtx5

@ -8,7 +8,7 @@ location: 'STC 0060'
poster: 'images/events/2022/spring/Code-Party-Scream.png'
registerLink: https://bit.ly/s22-midtermscream-codeparty-signup
---
📣Do you ever feel like screaming on the top of your lungs? 🙀 Then CSC’s Code Party and Midterm Scream is where you need to be!
📣 Do you ever feel like screaming on the top of your lungs? 🙀 Then CSC’s Code Party and Midterm Scream is where you need to be!
🤩 Come to our first code party of the term! You can chill out, work on side-projects, or finish up on homework and assignments. 📚 There will also be snacks while you are working away or just hanging out with a fellow CSC friend. At 9 PM we will head out to the Rock Garden to let out a synchronized, one-minute long scream to relieve midterm stress! 🥳

@ -0,0 +1,16 @@
---
name: 'Capture The Flag Contest'
short: 'The CTF Club in association with CSC is running a Capture The Flag contest! '
startDate: 'July 15 2022 18:00'
endDate: 'July 17 2022 12:00'
online: true
location: 'Online'
poster: 'images/events/2022/spring/Ctf.png'
registerLink: 'https://ctf.uwaterloo.ca/s22'
---
👀 Looking for a challenge that may win you money?
🚩 The CTF Club in association with CSC is running a Capture The Flag contest this term! Participants will work individually or in teams of up to 3 (division-dependent) to solve information security (InfoSec), penetration testing (pentesting) and cryptography challenges.
🤩 There is a total of $110 of prize money to be won! Winners from the noob category can win $20 and the pros can win up to $90.
🗓 This contest will be held virtually from July 15th to 17th, so be sure to sign up from https://ctf.uwaterloo.ca/s22 !

@ -0,0 +1,24 @@
---
name: "End Of Term + Speed Frending"
short: "Surprise, it's almost end of term!"
startDate: "July 21 2022 19:00"
endDate: "July 21 2022 21:00"
online: false
location: "DC 1351"
poster: "images/events/2022/spring/End-Of-Term.png"
registerLink: https://forms.gle/USNvFgAPCk8MR4me8
---
🎊 Surprise, it's almost end of term!
🎉 Join us from 7-9PM at DC 1351 for a fun night of speed-friending, games, painting & more!
🎲 Some potential games that we might play include: Tug of War, Red Light Green Light, etc.
🥳 If you want to socialize and have some fun before exams, make sure to attend!
📆 Event Date: July 21st from 7-9PM ET at DC 1351
P.S There's free food and Coco's vouchers! 🧋
👉 Register at the link: https://forms.gle/USNvFgAPCk8MR4me8

@ -0,0 +1,19 @@
---
name: "Git Internals Talk"
short: "Have you heard of Git or used it in your past coop terms? Come join us for a deep dive under the hood!"
startDate: "July 25 2022 18:00"
endDate: "July 25 2022 19:00"
online: false
location: "MC 5479"
poster: "images/events/2022/spring/Git-Internals-Talk.png"
---
🚀 Have you heard of Git or used it in your past coop terms?
🖥 Most software development these days is done using git. Git can seem very complex to use (and often is!). However, it turns out the core architecture behind git is quite simple and elegant.
🤔 We will explore how git works under the hood to understand this architecture, and demystify what commonly used git commands actually do. Afterwards, we will dive deeper into the implications of this architecture, both positive and negative, as well as how this knowledge can be useful day to day. We will end it off by answering the question: “Is git the first blockchain?” (spoiler: sort of!) There are drinks/snacks served at the event!
🗓 Event Date: July 25th, at MC 5479 from 6-7 PM
👉 Sign up is not required for this event!

@ -0,0 +1,17 @@
---
name: 'Prof Talk with Anton Mosunov'
short: "Are you interested in learning more about parallel computation? CSC is hosting a Prof Talk with the amazing Professor Anton Mosunov to talk about his awe-inspiring research."
startDate: 'July 13 2022 17:00'
endDate: 'July 13 2022 18:30'
online: false
location: 'MC 5479'
poster: 'images/events/2022/spring/Prof-Talk-Anton-Mosunov.png'
registerLink: https://bit.ly/s22-prof-talks
---
📣 Are you interested in learning more about parallel computation? CSC is hosting a Prof Talk with the amazing Professor Anton Mosunov to talk about his awe-inspiring research. 🤩 He will deliver a captivating talk about parallel computation. If you don’t yet know what that is yet or want to learn more about it, make sure to be there! 💻 Make sure to bring a laptop!
📆 Event Date: July 13th from 5 - 6:30 PM
📌 Location: ~~DC 1350~~ MC 5479
👉 Sign-up through this link: https://bit.ly/s22-prof-talks

@ -0,0 +1,14 @@
---
author: 'a258wang'
date: 'July 25 2022 00:00'
---
📣 CS Club’s Committees are hiring for Fall 2022! 📣
Are you interested in organizing program-wide events, reaching out to industry professionals, or being a member of an impactful community? Are you passionate about making a difference in the UW CS and surrounding communities?
Apply for a role on the CS Club’s Internal Committee for Fall 2022! We are looking for people like you to join our Programme Committee and/or Systems Committee! 🙌
Apply ASAP because the form closes ~~July 30th~~ Aug 1st! We will reach out through email after this date for interview slots/questions.
👉 Apply at https://lnkd.in/ghZ_PByB. Alternatively, you can email us at exec@csclub.uwaterloo.ca from your UW email with an introduction of yourself, which positions you are interested in, and any questions you might have!

@ -0,0 +1,11 @@
[
"summary",
"usage-policy",
"acceptable-and-unacceptable-use",
"user-responsibilities",
"security",
"rights-of-syscom-and-exec",
"club-accounts",
"definitions",
"user-agreement"
]

@ -1,8 +1,9 @@
---
title: Acceptable and Unacceptable Use
index: 3
---
The CSC machines are intended for research, personal projects, and general use in accordance with the aims of the CSC (see the [CSC Constitution](/about/constitution) for further details). Projects that are of interest to the CSC may be given special priority by the CSC Systems Committee.
Users must adhere to the CSC's policies concerning machine usage.
The same policies apply to the CSC Cloud resources.

@ -1,6 +1,5 @@
---
title: Club Accounts
index: 7
---
The club accounts policy is divided into the following 2 sections:
@ -14,11 +13,13 @@ _Note: For the given section, any mention of the club, except in direct referenc
Clubs are given accounts and provided with an e-mail and WWW pages, but are subject to the following to certain rules. They are as follows:
1. The club account is subject to all restrictions of a users account, except that it is a shareable account.
1. The club account is subject to all restrictions of a user account, except that it is a shareable account.
1. The club members must have regular user accounts on the CSC machine that the club account will be on. If the club member does not already have such an account, one will be created to allow the member to manage the club account.
1. The members of the club with access to the club account shall be known to the CSC Systems Administrator to ensure that these people are aware of this section of the user agreement.
1. The club members with access to the club account shall not grant access to any other members by any means that are available to them, other than approaching the CSC System Administrator and requesting the change of access.
## Responsibility and Accountability
The account is the responsibility of the members who have access. If the resources owned by the club account are found to be in violation of any policy/rule/law of any of, but not limited to, the Computer Science Club, MFCF, the University of Waterloo, or any relevant law enforcement agency, then the members with access will be held **equally** responsible for that action.
The account is the responsibility of the members who have access. If the resources owned by the club account are found to be in violation of any policy/rule/law of any of, but not limited to, the Computer Science Club, CSCF, the University of Waterloo, or any relevant law enforcement agency, then the members with access will be held **equally** responsible for that action.
Club reps are required to read the [Club Hosting](https://wiki.csclub.uwaterloo.ca/Club_Hosting) page on the CSC Wiki when they first become a club rep, and thereafter at least once every term, and abide by any notices, warnings, recommendations and best practices provided on it.

@ -1,6 +1,5 @@
---
title: Definitions
index: 8
---
CSC
@ -9,16 +8,16 @@ CSC
CSC Network
- The network of computer hardware and peripherals owned by, rented to, on loan to, or otherwise under the control of the CSC.
- The network of computer hardware and peripherals owned by, rented to, on loan to, or otherwise under the control of the CSC, including everything under the `csclub.uwaterloo.ca` DNS zone.
MFCF
CSCF
- The [Math Faculty Computing Facility](http://www.math.uwaterloo.ca/mfcf/) at the University of Waterloo.
- The [Computer Science Computing Facility](https://uwaterloo.ca/computer-science-computing-facility/) at the University of Waterloo.
Machine
- Computer, terminal or other piece of hardware.
- Non-CSC machines include MFCF's xterms and printers.
- Non-CSC machines include CSCF's xterms and printers.
Systems Committee
@ -41,3 +40,4 @@ Computing Resources
- TTYs and pseudo-TTYs
- Network bandwidth
- Ports
- CSC Cloud Services

@ -1,10 +1,11 @@
---
title: Rights of the Systems Committee and the CSC Executive
index: 6
---
The Systems Committee may examine any files or programs believed to be out of control or in violation of the usage policies for the CSC network. Examination of a program includes examination of the running process and its binary. Files believed to be the data or source to the process may also be examined. The process may be killed, stopped or otherwise interrupted at the discretion of the Systems Committee. If the Systems Committee takes any of the above actions, the owner of the process will be notified.
The Systems Committee may at any time revoke a user's permission to access an account provided that a written (possibly electronic) explanation is given. Cause for removal of access to an account includes, but is not limited to, violation of the machine usage policy. In the event of a dispute, a user whose account has been revoked may appeal to the CSC Executive for its reinstatement, as per the [CSC Constitution](/about/constitution).
The Systems Committee may delete a user's CSC Cloud resources when their CSC account expires, at its sole discretion.
The CSC Executive has the right to update any policy, including this one, with reasonable notice.

@ -1,6 +1,5 @@
---
title: Security
index: 5
---
Users may not attempt to gain access to accounts other than those which they have been permitted to use. Similarly, users may not attempt to access other users' private files, nor may they attempt to find out the password of any account.
@ -8,6 +7,6 @@ Users may not attempt to gain access to accounts other than those which they hav
An account may only be used by the person assigned to it. *Do not tell your password to anybody, or let anyone else use your account*. Users should consider the security implications of their actions. For example:
- Passwords for accounts on CSC machines should not be used on other machines
- Accounts not on MFCF or CSC machines should not be granted automatic access to CSC accounts (e.g. via .rhosts files).
- Accounts not on CSCF or CSC machines should not be granted automatic access to CSC accounts (e.g. via .rhosts files).
The appropriate members of the systems committee must be notified immediately in the event that a security problem is found. Naturally, the problem should neither be exploited nor made public until it can be corrected.

@ -1,20 +1,19 @@
---
title: Summary
index: 1
---
This is a brief version of the usage policy. Everyone who receives an account on one of the CS Club machines must sign the full Machine Usage Agreement, and this summary lists the things that the users will agree to.
## Use of accounts
- One person per account only.
- One person per account.
- Usage intended for personal or course work.
- Don't abuse system resources.
- Use the machines in a respectful manner.
## Security
- Your `.rhosts` file should only contain your user IDs on CSC and MFCF machines.
- Your `.rhosts` file should only contain your user IDs on CSC and CSCF machines.
- Don't use passwords that you use elsewhere, and *never* tell anyone your password.
- If you find security holes, report them to the [Systems Committee](mailto:syscom@csclub.uwaterloo.ca). Intentional malpractice will not be tolerated.
@ -29,3 +28,4 @@ This is a brief version of the usage policy. Everyone who receives an account on
- Don't do anything illegal, damaging, or unethical.
- The executive team can change their policies with reasonable notice.
- CS Club machines will not be up at all times, and may crash while you are using them.
- This document and its rules also apply to CSC Cloud resources.

@ -1,6 +1,5 @@
---
title: Usage Policy
index: 2
---
Everyone who receives an account on one of the CS Club machines must sign the agreement in the final section. This document does not state who will be allowed accounts on CS Club machines, the normal expiry period of accounts, nor any other similar matters. Further, this policy does not, in general, guarantee any rights to users.

@ -1,9 +1,8 @@
---
title: User Agreement
index: 9
---
I have read and understood the usage policy of 29 August 2007, and I agree to use my account(s) on the CSC network in accordance with this policy. I am responsible for all actions taken by anyone using this account. Furthermore, I accept full legal responsibility for all of the actions that I commit using the CSC network according to any and all applicable laws.
I have read and understood the CSC Usage Policy of 10 July 2022, and I agree to use my CSC account(s) in accordance with this policy. I am responsible for all actions taken by anyone using this account. Furthermore, I accept full legal responsibility for all of the actions that I commit using the CSC network according to any and all applicable laws.
I understand that with little or no notice machines on the CSC network and resources on these machines may become unavailable. Machines may shut down while users are using them, and I will not hold the CSC responsible for lost time or data.

@ -1,6 +1,5 @@
---
title: User Responsibilities
index: 4
---
Users must be responsible for their behaviour. Users, and not the CSC, will be held accountable for any of their illegal, damaging or unethical actions. Such actions are obviously not permitted on CSC machines.

@ -0,0 +1,16 @@
[
"machine-accounts",
"cloud-accounts",
"cs-club-email",
"web-hosting",
"club-web-hosting",
"git-hosting",
"software-mirror",
"irc",
"mattermost",
"video-conferencing",
"live-streaming",
"in-office-books",
"mailing-lists",
"ssh-key-fingerprints"
]

@ -1,6 +1,5 @@
---
title: Cloud Accounts
index: 2
---
With the CSC cloud, you can create your own virtual machines, host your Docker container images, and deploy your apps on Kubernetes.

@ -1,6 +1,5 @@
---
title: Club Web Hosting
index: 5
---
If you're a club and looking for web space, the CS Club is the place go.

@ -1,6 +1,5 @@
---
title: CS Club Email
index: 3
---
Members also receive a **[username@csclub.uwaterloo.ca](#)** email address.

@ -1,6 +1,5 @@
---
title: Git Hosting
index: 6
---
We host an instance of [Gitea](https://git.csclub.uwaterloo.ca/) for all of our members. The UI and workflow of Gitea are very similar to GitHub. Gitea is currently home to most CSC software projects, including the [code for this website](https://git.csclub.uwaterloo.ca/www/www-new).

@ -1,6 +1,5 @@
---
title: In-Office Books
index: 12
---
The CS Club maintains an extensive collection of Computer Science-related books. Feel free to come by the office to take a look at our library.

@ -1,6 +1,5 @@
---
title: IRC
index: 8
---
We host an instance of [The Lounge](https://chat.csclub.uwaterloo.ca/) for all of our members. The Lounge is a web-based IRC client which is simple to setup and use. It also has a Progressive Web App available for mobile devices.

@ -1,6 +1,5 @@
---
title: Live Streaming
index: 11
---
We host an instance of [Icecast](https://icy.csclub.uwaterloo.ca/), which can stream live audio and video. We have successfully streamed live events to Icecast using OBS Studio. Latency usually ranges between 5-10 sec.

@ -1,6 +1,5 @@
---
title: Machine Accounts
index: 1
---
The main benefit of becoming a CS Club member is to get access to our various machines.

@ -1,6 +1,5 @@
---
title: Mailing Lists
index: 13
---
Our [csc-general mailing list](https://mailman.csclub.uwaterloo.ca/postorius/lists/csc-general.csclub.uwaterloo.ca/) informs members about our current events.

@ -1,6 +1,5 @@
---
title: Mattermost
index: 9
---
We host an instance of [Mattermost](https://mattermost.csclub.uwaterloo.ca/) for all of our members. Mattermost is an open-source alternative to Slack. We currently bridge the `#csc` channel on libera.chat to Mattermost (if you are looking for a generic web-based IRC client, see [The Lounge](/resources/services/irc)). CSC executives currently use Mattermost for planning and logistics.

@ -1,6 +1,5 @@
---
title: Software Mirror
index: 7
---
The CSC runs a mirror of popular open source software. The [mirror](http://mirror.csclub.uwaterloo.ca/) has a list of available software. More information is available on our [wiki article](http://wiki.csclub.uwaterloo.ca/Mirror).

@ -1,6 +1,5 @@
---
title: SSH Key Fingerprints
index: 14
---
| Machine Name | Key Type | Fingerprint |

@ -1,6 +1,5 @@
---
title: Video Conferencing
index: 10
---
We host an instance of [BigBlueButton](https://bbb.csclub.uwaterloo.ca/), a free and open-source video conferencing platform. BigBlueButton offers many useful features such as a multi-user whiteboard, breakout rooms, shared notes, and more.

@ -1,6 +1,5 @@
---
title: Web Hosting
index: 4
---
Many of members take advantage of our web hosting service. Our web server runs on Apache, and has PHP, Python, and Perl modules installed. We also have MySQL and PostgreSQL databases available upon request.

@ -11,7 +11,8 @@
"name": "Allen Lu"
},
{
"name": "Andrew Wang"
"name": "Andrew Wang",
"image": "/images/team/AndrewWang-Discord.jpeg"
},
{
"name": "Edwin Yi-Jan Yang",

@ -8,11 +8,15 @@
"role": "Alumni"
},
{
"name": "Andrew Wang"
"name": "Andrew Wang",
"image": "/images/team/AndrewWang-Syscom.jpg"
},
{
"name": "Rio Liu"
},
{
"name": "Leo Shen"
},
{
"name": "Amin Bandali",
"role": "Alumni"

@ -1,7 +1,4 @@
[
{
"name": "Yiao Shen"
},
{
"name": "Devin Lin"
},

@ -14,4 +14,4 @@
"endDate": "June 15 2022 22:00",
"message": "CSC machines will have their software updated and will momentarily go offline at 6pm EST on Wednesday, June 15, 2022"
}
]
]

@ -0,0 +1,62 @@
# Architecture and Folder Structure
The diagram below shows a general overview of how the website is architected. A thin black arrow on the graph depicts a dependency.
Legend:
- <span style="background: #dae8fc;">Blue</span>: React components
- <span style="background: #f8cecc;">Red</span>: Code or assets that only exist during build time
- <span style="background: #d5e8d4;">Green</span>: Static assets that exist during runtime on the server
![diagram](static/architecture.svg)
## <code style="background: #dae8fc;">/pages</code>
This folder acts as the entry point for the our website. Pages are not built as reusable components, but rather as an outline of our website. All dynamically generated pages use the functionality exposed by the `/lib` folder. There are some folders that directly use the items in the `/content` folder directly.
Look at the [docs about pages](pages.md) to learn more about them.
## <code style="background: #dae8fc;">/components</code>
Components are the building blocks of our website. Most of our components are simple functional components that do not do much except making the UI look nice. Almost all of our components have no dependencies except `react`, `date-fns`, and other components from the `/components` folder. This structure allows us keep components and design separate from the business logic of the website making it easier to split them off into their own mini design framework if necessary.
## <code style="background: #f8cecc;">/scripts</code>
These contain scripts that run during the CI/CD phase to insert dynamically generated assets into the public folder - this is what the thick red arrow is referring to.
The two main scripts that we have today are:
- `generate-calendar` (`npm run build:calendar`): to generate an ical file that consumes events using the `/lib` folder - writing the resulting file to `public/events.ics`
- `optimize-images` (`npm run build:images`): to optimize images present in the `images` folder and write the optimized images in the `public/images` folder for the website to consume. You **must run it at least once after cloning** the repository so that you can see all the images during development.
## <code style="background: #f8cecc;">/lib</code>
This folder acts as an API layer for the website. It mainly adds helper functions to access the data in the `/content` folder easily, with the exception of `/lib/members.ts` - which uses LDAP to query CSC members.
## <code style="background: #f8cecc;">/content</code>
All the `.md` files in this folder are used by the `/lib` folder to provide an API over them. These markdown files may or may not have some metadata at the top written in yaml, which we parse using the `gray-matter` library.
Example of the metadata:
```
---
foo: i am some metadata
bar: some more
baz: ok last one
---
# This is not metadata
```
**Note**: The `.mdx` files under this folder are directly used in `/pages`. They are automatically converted to react components on the fly.
## <code style="background: #f8cecc;">/images</code>
These are the unoptimized images that you see on the website. They are consumed by the `optimize-images` script to ... optimize them ... before putting them in the `/public/images` folder. We need to optimize images in order to decrease the latency of the website.
## <span style="background: #d5e8d4;">`/public`</span>
This is the folder that contains all the static assets of the website. Everything in here is accessible at `https://csclub.uwaterloo.ca/[asset file name]`
For example `/public/fonts/future-bold.woff` is available at `https://csclub.uwaterloo.ca/fonts/future-bold.woff`.

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2022-06-06T07:02:10.844Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36" etag="Yv6lipB2xa6Es_IGroX6" version="19.0.0" type="device"><diagram id="to5jL6O8asY2GUfFvI2Z" name="Page-1">7Vpbb5swFP41PLYCcwl5bNN21bRJkzpp66MD5rIZzIxpyH79DNgBU9IlKQ2oqlSp+Fx8Od/n42OIZq6S8hOFWfSV+AhrQPdLzbzRADAsALTqT/e3jWQBnEYQ0tgXRq3gIf6LhFAX0iL2Ua4YMkIwizNV6JE0RR5TZJBSslHNAoLVUTMYomeCBw/i59Ifsc+iRuraeiu/R3EYyZENXWgSKI2FII+gTzYdkXmrmStKCGueknKFcBU8GZfG726PdjcxilJ2iENmFJ/L5DE0svjeXIKoKL+zC9HLE8SFWLAGHMz7uw4I75bPmm1FKJw/BZGKi7wG6oobGFbGwb5u9VWUoaf6rEiaEwzzrpUTNv/vqhjmcljebkaWaqBMAlBSpD6qlmRw9SaKGXrImuE2nIFcFrEEC3UQY7wimNDa1/QhcgOPy3NGyW/U0Tiei9bBbrwnRBkq98bZ2KHHaY9IghjdchPpYNuNy1YyWRBg0/LHkKSIOtxxhAwKyoa7rltU+YMA9hiQrQGUe3FFPqe9aBLKIhKSFOLbVnrdRl7nrdbmCyGZiPcvxNhW7GFYMNJDg+MqlHxGMtbVwC9Hms+TFFQwaniFYj0M0hCxF+zMYeQowpDFT+o8RocBzGCv4Xh9jp0WuB7yBnfa2rUtWx9np4GFutOANfVOM2cAMT8JGapxrQde01b3XoE33amBH8qw5wc+yUjKQ5hPg/15jldTn9metw84XFP/qqpFecvj6OWxpwZSPVr75yQqY/az0l3aovUo/Krnm1K41Y2tbKR8aY3Twpbtx66y9atb0nHEQ1mW6/87lK1hvDuA2gN4StnBZ7cY4RuJ6w0p6WSpqWSx7PGkWabw6pbX/Y6WvY6sXkdNHJ51VHNut+zTaejOIANlxRpzbk+TfWzk+tZQ9nHB2nSccbKP00s/0xf3yxngnns0zqY6ds5TcpjLuQEv35BMinycdC/v7xF425hbwWEMXSTHrTja6gEcVT2cUqpMUHGAKSsOo5dJdq86j604dkyUKanPuDeuOIyh2+5b8fC4KnZiHi4/eHhOHi4+8uHreGjo2oREtHSVPxY4kYiWrXZkLs5MxKE7WI+IeQSz6jHAqBSMvB6LnAozL+0DuWl0mNnydJibh1VgPgpggdk0XHY/qDwGlYeulaPm1H2U6VKslb6W5DMvSPd8lzoPaUH/hnNqIdAnLTjwFRhnEdx2zLLKIH9pwuqrNstQvnzzh6bHA3cEb7Zf4Rvz9rcM5u0/</diagram></mxfile>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Before

Width:  |  Height:  |  Size: 907 KiB

After

Width:  |  Height:  |  Size: 907 KiB

@ -6,28 +6,33 @@ import matter from "gray-matter";
import { MDXRemoteSerializeResult } from "next-mdx-remote";
import { serialize } from "next-mdx-remote/serialize";
import type { Props } from "../pages/events/[year]/[term]/index";
// do not use alias "@/utils" as generate-calendar imports a function from this file and ts-node is not compatible
import {
Term,
TERMS,
isTerm,
DATE_FORMAT,
getLocalDateFromEST,
} from "../utils";
TermYear,
getTermYear,
getCurrentTermYear,
} from "@/utils";
import type { Props } from "../pages/events/[year]/[term]";
const EVENTS_PATH = path.join("content", "events");
export async function getEventYears(): Promise<string[]> {
export async function getEventYears(): Promise<number[]> {
return (await fs.readdir(EVENTS_PATH, { withFileTypes: true }))
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name)
.map((dirent) => parseInt(dirent.name))
.sort();
}
export async function getEventTermsByYear(year: string): Promise<Term[]> {
export async function getEventTermsByYear(year: number): Promise<Term[]> {
return (
await fs.readdir(path.join(EVENTS_PATH, year), { withFileTypes: true })
await fs.readdir(path.join(EVENTS_PATH, year.toString()), {
withFileTypes: true,
})
)
.filter((dirent) => dirent.isDirectory() && isTerm(dirent.name))
.map((dirent) => dirent.name as Term)
@ -55,7 +60,7 @@ interface Metadata {
location: string;
permaLink: string;
registerLink?: string;
year: string;
year: number;
term: string;
slug: string;
}
@ -66,12 +71,12 @@ export interface Event {
}
export async function getEventBySlug(
year: string,
year: number,