Compare commits

..

41 Commits

Author SHA1 Message Date
Rebecca-Chou 5adebddec6 test placeholder
continuous-integration/drone/push Build is passing Details
2022-03-10 11:02:35 +08:00
Rebecca-Chou cafdf334fe final fix
continuous-integration/drone/push Build is passing Details
2022-03-10 10:42:49 +08:00
Rebecca-Chou 00caa70143 fix data type
continuous-integration/drone/push Build is passing Details
2022-03-10 10:31:57 +08:00
Rebecca-Chou ccd075fa84 resolve conflicts with main
continuous-integration/drone/push Build is passing Details
2022-03-10 01:09:45 +08:00
Rebecca-Chou 67afba862a fix type bug
continuous-integration/drone/push Build is passing Details
2022-03-10 00:51:18 +08:00
Rebecca-Chou 4c087b4af4 eliminate position name to keep in sync
continuous-integration/drone/push Build is failing Details
2022-03-10 00:38:37 +08:00
Rebecca-Chou 51bb491277 fix undefined bug
continuous-integration/drone/push Build is passing Details
2022-03-04 17:08:52 +08:00
Rebecca-Chou 2d9176256d Fix logic for fetching array
continuous-integration/drone/push Build is failing Details
2022-03-04 16:15:15 +08:00
Beihao Zhou 83b68a3ce3 Merge branch 'main' into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-27 09:19:25 -05:00
Rebecca-Chou 856f849526 finalize ldap
continuous-integration/drone/push Build is passing Details
2022-02-17 11:42:05 +08:00
Rebecca-Chou 0c0515a3c6 fetch array at index 0 from ldap
continuous-integration/drone/push Build is passing Details
2022-02-17 10:58:42 +08:00
Rebecca-Chou 3dbc1efe39 test data type for position
continuous-integration/drone/push Build is passing Details
2022-02-17 00:06:08 +08:00
Rebecca-Chou f09580151f test position array
continuous-integration/drone/push Build is passing Details
2022-02-16 23:42:40 +08:00
Rebecca-Chou bb743f4ca6 test president
continuous-integration/drone/push Build is failing Details
2022-02-16 23:31:14 +08:00
Rebecca-Chou ca1a9f3185 debug sort function
continuous-integration/drone/push Build is passing Details
2022-02-16 21:45:37 +08:00
Rebecca-Chou 3506b6d00c test sort function
continuous-integration/drone/push Build is passing Details
2022-02-16 21:07:19 +08:00
Rebecca-Chou 615a8ddbf9 test filter function
continuous-integration/drone/push Build is passing Details
2022-02-16 20:50:40 +08:00
Rebecca-Chou 6dc69fbe14 get position test
continuous-integration/drone/push Build is passing Details
2022-02-16 20:29:32 +08:00
Rebecca-Chou 9a1ecf82bd edit president to presidentcro
continuous-integration/drone/push Build is passing Details
2022-02-16 20:15:27 +08:00
Rebecca-Chou f96d776259 Test position field 2
continuous-integration/drone/push Build is passing Details
2022-02-16 20:01:46 +08:00
Rebecca-Chou fe3358d9ae Test position field
continuous-integration/drone/push Build is passing Details
2022-02-16 19:35:13 +08:00
Rebecca-Chou 340dfa67b5 Add placeholder
continuous-integration/drone/push Build is passing Details
2022-02-14 11:45:30 +08:00
Rebecca-Chou 57f67bc8d1 edit codey file name
continuous-integration/drone/push Build is passing Details
2022-02-14 10:09:12 +08:00
Rebecca-Chou ae66794a54 add codey
continuous-integration/drone/push Build is failing Details
2022-02-14 09:59:58 +08:00
Rebecca-Chou be43b75694 change order of exec
continuous-integration/drone/push Build is passing Details
2022-02-14 09:33:00 +08:00
Beihao Zhou 2aeaeaccde Fix Line Format
continuous-integration/drone/push Build is failing Details
2022-02-13 11:32:05 -05:00
Beihao Zhou c729bf40ee Fix name order
continuous-integration/drone/push Build is failing Details
2022-02-13 11:22:28 -05:00
Rebecca-Chou 8b8432cf76 Change the order of exec name 2022-02-14 00:11:08 +08:00
Rebecca-Chou 3a7ec04f4e Debug ldap data fetch function
continuous-integration/drone/push Build is failing Details
2022-02-13 23:48:30 +08:00
Rebecca-Chou ae0b81c4cc debug getExecNames
continuous-integration/drone/push Build is failing Details
2022-02-10 01:35:23 +08:00
Rebecca-Chou c7947d9054 Test new getExecNames
continuous-integration/drone/push Build is passing Details
2022-02-10 01:22:09 +08:00
Rebecca-Chou 6ad38d1971 Test getExec function
continuous-integration/drone/push Build is failing Details
2022-02-10 01:01:39 +08:00
Rebecca-Chou 608f6342da Debug placeholder
continuous-integration/drone/push Build is passing Details
2022-02-10 00:44:56 +08:00
Rebecca-Chou fc3d3e11d3 Merge branch 'b72zhou-ldap-exec' of https://git.csclub.uwaterloo.ca/www/www-new into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-09 21:31:00 +08:00
Rebecca-Chou 0f15953979 Fix Typo 2022-02-09 21:30:15 +08:00
Beihao Zhou cb17e15b22 Merge branch 'main' into b72zhou-ldap-exec
continuous-integration/drone/push Build is passing Details
2022-02-09 08:25:03 -05:00
Rebecca-Chou 79c5005652 add placeholder
continuous-integration/drone/push Build is passing Details
2022-02-09 21:22:38 +08:00
Rebecca-Chou 8f144983ef Test Ldap
continuous-integration/drone/push Build is failing Details
2022-02-02 21:48:21 +08:00
Rebecca-Chou fbcdec33eb Change returned data type
continuous-integration/drone/push Build is failing Details
2022-02-02 17:06:13 +08:00
Rebecca-Chou 6e8f7bba94 Test using console log
continuous-integration/drone/push Build is failing Details
2022-02-02 16:04:40 +08:00
Rebecca-Chou b06189f5f3 Test Ldap
continuous-integration/drone/push Build is failing Details
2022-02-02 15:32:53 +08:00
1040 changed files with 3511 additions and 6279 deletions

View File

@ -37,13 +37,6 @@ 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:
@ -54,7 +47,6 @@ steps:
- name: export
image: node:16
depends_on:
- generate-api
- generate-calendar
- build
commands:

View File

@ -17,12 +17,7 @@ module.exports = {
],
plugins: ["@typescript-eslint", "react", "react-hooks", "prettier"],
rules: {
'prettier/prettier': [
'error',
{
'endOfLine': 'lf',
}
],
"prettier/prettier": "error",
"import/first": "error",
"import/order": [

6
.gitignore vendored
View File

@ -29,9 +29,3 @@ yarn-error.log*
# Images should be optimized
/public/images
# APIs should be automatically generated, schema should be checked in
/public/api/*
!/public/api/schema
.idea/**

View File

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

View File

@ -1,13 +1,6 @@
# README
# Development
## Documentation
- [Architecture and Folder Structure](docs/architecture.md)
- [Everything about pages](docs/pages.md)
## Development
### Dependencies
## 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
@ -15,20 +8,19 @@ 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`)

View File

@ -3,7 +3,7 @@
}
.page > h1 {
border-bottom: calc(1rem / 16) solid var(--border);
border-bottom: calc(1rem / 16) solid var(--primary-heading);
padding-bottom: 1rem;
}

View File

@ -6,6 +6,7 @@
.bubble {
--border-radius: calc(5000rem / 16);
display: flex;
flex-direction: row;
position: absolute;

View File

@ -2,8 +2,8 @@
.link {
font-family: "Poppins", "sans-serif";
border-radius: calc(20rem / 16);
background-color: var(--button-background);
color: var(--text-light);
background-color: var(--primary-accent);
color: var(--primary-background);
border: none;
outline: none;
transition-duration: 0.3s;

View File

@ -31,10 +31,6 @@
margin-bottom: 0;
}
.content > h1 a {
color: var(--primary-heading);
}
.content,
.content > h2 {
font-weight: 400;

View File

@ -10,8 +10,7 @@ import styles from "./EventCard.module.css";
interface EventCardProps {
name: string;
short: string;
startDate: Date;
endDate?: Date;
date: Date;
online: boolean;
location: string;
poster?: string;
@ -19,27 +18,18 @@ interface EventCardProps {
permaLink: string;
showDescription?: boolean;
children: ReactNode;
year: number;
term: string;
slug: string;
titleLinked: boolean;
}
export function EventCard({
permaLink,
name,
startDate,
endDate,
date,
online,
location,
poster,
registerLink,
children,
showDescription = false,
year,
term,
slug,
titleLinked,
}: EventCardProps) {
return (
<article className={styles.card}>
@ -64,20 +54,9 @@ export function EventCard({
showDescription ? styles.mobileShowDescriptionContent : "",
].join(" ")}
>
<h1>
{titleLinked ? (
<Link href={`/events/${year}/${term}/${slug}`}>{name}</Link>
) : (
name
)}
</h1>
<h1>{name}</h1>
<h2>
<EventSetting
startDate={startDate}
endDate={endDate}
online={online}
location={location}
/>
<EventSetting date={date} online={online} location={location} />
</h2>
{!showDescription && (
<Link href={permaLink}>

View File

@ -4,7 +4,7 @@
max-width: calc(540rem / 16);
padding: calc(24rem / 16);
border-radius: calc(20rem / 16);
background-color: var(--card-background);
background-color: var(--primary-background);
}
.poster {
@ -38,7 +38,7 @@
.setting {
margin: 0;
color: var(--link);
color: var(--primary-accent);
font-size: calc(14rem / 16);
font-weight: 600;
}

View File

@ -13,8 +13,7 @@ interface Props {
short: string;
online: boolean;
location: string;
startDate: Date;
endDate?: Date;
date: Date;
poster?: string;
registerLink?: string;
permaLink: string;
@ -35,8 +34,7 @@ export function EventDescriptionCard({
poster,
name,
short,
startDate,
endDate,
date,
online,
registerLink,
permaLink,
@ -50,12 +48,7 @@ export function EventDescriptionCard({
<div className={styles.details}>
<h1 className={styles.name}>{name}</h1>
<h2 className={styles.setting}>
<EventSetting
startDate={startDate}
endDate={endDate}
online={online}
location={location}
/>
<EventSetting date={date} online={online} location={location} />
</h2>
<p className={styles.desc}>{short}</p>
<Link href={permaLink}>Learn more</Link>

View File

@ -3,51 +3,30 @@ import React from "react";
import styles from "./EventSetting.module.css";
interface Props {
startDate: Date;
endDate?: Date;
date: Date;
online: boolean;
location: string;
}
export function EventSetting(props: Props) {
const date = props.startDate.toLocaleDateString("en-US", {
const date = props.date.toLocaleDateString("en-US", {
day: "numeric",
month: "long",
year: "numeric",
});
const time = props.startDate.toLocaleTimeString("en-US", {
const time = props.date.toLocaleTimeString("en-US", {
hour: "numeric",
minute: "numeric",
timeZoneName: "short",
});
const endDate =
props.endDate?.toLocaleDateString("en-US", {
day: "numeric",
month: "long",
year: "numeric",
}) ?? "";
const location = props.online ? `Online - ${props.location}` : props.location;
const separator = <span className={styles.separator}> | </span>;
return (
<div className={styles.container}>
{!props.endDate || date == endDate ? (
// Single day event
<>
<time dateTime={props.startDate.toISOString()}>{date}</time>
{separator}
<span>{time}</span>
</>
) : (
// Multi day event
<span>
<time dateTime={props.startDate.toISOString()}>{date}</time>
<span> - </span>
<time dateTime={props.startDate.toISOString()}>{endDate}</time>
</span>
)}
<time dateTime={props.date.toISOString()}>{date}</time>
{separator}
<span>{time}</span>
{separator}
{location}
</div>

View File

@ -1,6 +1,6 @@
.footer {
box-sizing: border-box;
background: var(--footer-background);
background: var(--primary-heading);
padding: 1rem 0;
width: 100%;
}
@ -17,7 +17,7 @@
}
.text {
color: var(--text-light);
color: var(--primary-background);
font-style: normal;
text-align: center;
}

View File

@ -1,15 +1,11 @@
import Link from "next/link";
import React from "react";
import { Button } from "./Button";
import { SocialLinks } from "./SocialLinks";
import { useThemeContext } from "./Theme";
import styles from "./Footer.module.css";
export function Footer() {
const themeContext = useThemeContext();
return (
<footer className={styles.footer}>
<div className={styles.container}>
@ -19,16 +15,6 @@ export function Footer() {
<a className={styles.email}>exec@csclub.uwaterloo.ca</a>
</Link>
</div>
<Button
size="small"
onClick={() =>
themeContext?.theme.name === "dark"
? themeContext?.setTheme("light")
: themeContext?.setTheme("dark")
}
>
Toggle Theme
</Button>
<SocialLinks color="white" size="small" />
</div>
</footer>

View File

@ -1,5 +1,5 @@
.link {
color: var(--link);
color: var(--primary-accent);
transition-duration: 0.3s;
text-decoration: none;
white-space: normal;
@ -7,5 +7,5 @@
}
.link:hover {
color: var(--link-hover);
color: var(--secondary-accent);
}

View File

@ -2,11 +2,10 @@
box-sizing: border-box;
position: relative;
padding: calc(20rem / 16);
color: var(--text);
}
.darkBg {
background-color: var(--dark-card-background);
.card:nth-child(odd) {
background-color: var(--secondary-accent-light);
}
.name {
@ -15,10 +14,6 @@
margin: 0;
}
.name a {
color: var(--primary-heading);
}
.nameSpacer {
width: calc(140rem / 16);
}
@ -62,15 +57,13 @@
fill: var(--primary-accent);
}
.card h1,
.card h2,
.card h3,
.card h4 {
font-size: calc(18rem / 16);
font-size: calc(16rem / 16);
margin-top: calc(24rem / 16);
margin-bottom: calc(8rem / 16);
color: var(--mini-event-card-text);
}
@media only screen and (max-width: calc(768rem / 16)) {

View File

@ -1,54 +1,36 @@
import React, { ReactNode } from "react";
import { EventSetting } from "./EventSetting";
import { Link } from "./Link";
import styles from "./MiniEventCard.module.css";
interface MiniEventCardProps {
interface Props {
name: string;
description: ReactNode;
short: string;
online: boolean;
location: string;
startDate: Date;
endDate?: Date;
background: "dark-bg" | "normal-bg";
year: number;
term: string;
slug: string;
date: Date;
}
export const MiniEventCard: React.FC<MiniEventCardProps> = ({
export const MiniEventCard: React.FC<Props> = ({
name,
short,
description,
location,
startDate,
endDate,
date,
online,
background,
year,
term,
slug,
}) => {
const cardBackground =
background === "dark-bg" ? `${styles.darkBg} ${styles.card}` : styles.card;
return (
<details className={cardBackground}>
<details className={styles.card}>
<summary>
<div onClick={(event) => event.preventDefault()}>
<h2 className={styles.name}>
<Link href={`/events/${year}/${term}/${slug}`}>{name}</Link>
<div>{name}</div>
<div className={styles.nameSpacer}></div>
</h2>
<div className={styles.info}>
<EventSetting
startDate={startDate}
endDate={endDate}
location={location}
online={online}
/>
<EventSetting date={date} location={location} online={online} />
</div>
<p className={styles.shortDescription}>{short}</p>
</div>

View File

@ -63,7 +63,7 @@
}
.navMenu a {
color: var(--primary-text);
color: var(--primary-heading);
text-decoration: none;
}
@ -219,14 +219,6 @@
cursor: pointer;
}
.icon line {
stroke: var(--icon);
}
.icon path {
fill: var(--icon);
}
.navMobileBackground {
position: fixed;
visibility: hidden;

View File

@ -98,7 +98,7 @@ const menu: Menu = [
},
{
name: "Internships",
route: "https://github.com/uwcsc/2023-internships",
route: "https://github.com/uwcsc/winter2022-internships",
},
],
},
@ -120,7 +120,7 @@ export function Navbar() {
className={styles.hamburger}
onClick={() => dispatch({ type: "open", route: router.pathname })}
>
<HamburgerSvg />
<Image src="/images/hamburger.svg" alt="Menu" />
</button>
<div
className={
@ -263,7 +263,7 @@ function NavItem(props: NavItemProps) {
}
onClick={() => props.onToggle(props.route)}
>
<DropdownSvg />
<Image src="/images/dropdown-icon.svg" alt="Dropdown Icon" />
</button>
<ul
className={
@ -348,64 +348,3 @@ function getMainRoute(route: string) {
}
return "/" + route.split("/")[1];
}
function HamburgerSvg() {
return (
<svg
width="30"
height="23"
viewBox="0 0 30 23"
className={styles.icon}
xmlns="http://www.w3.org/2000/svg"
>
<line
x1="28"
y1="2"
x2="2"
y2="2"
stroke="#2A2A62"
strokeWidth="4"
strokeLinecap="round"
strokeLinejoin="round"
/>
<line
x1="28"
y1="11.375"
x2="2"
y2="11.375"
stroke="#2A2A62"
strokeWidth="4"
strokeLinecap="round"
strokeLinejoin="round"
/>
<line
x1="28"
y1="20.75"
x2="2"
y2="20.75"
stroke="#2A2A62"
strokeWidth="4"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
);
}
function DropdownSvg() {
return (
<svg
width="14"
height="9"
viewBox="0 0 14 9"
fill="none"
className={styles.icon}
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7.75593 8.12713C7.35716 8.58759 6.64284 8.58759 6.24407 8.12713L0.638743 1.65465C0.0778675 1.00701 0.537921 0 1.39467 0L12.6053 0C13.4621 0 13.9221 1.00701 13.3613 1.65465L7.75593 8.12713Z"
fill="#2A2A62"
/>
</svg>
);
}

View File

@ -1,7 +1,7 @@
.card {
padding: calc(30rem / 16) calc(40rem / 16);
max-width: calc(524rem / 16);
background-color: var(--card-background);
background-color: var(--primary-background);
border-radius: calc(20rem / 16);
margin-bottom: 1rem;
}
@ -10,17 +10,15 @@
max-width: unset;
padding: unset;
border-radius: unset;
background-color: var(--primary-background);
}
.date {
font-size: calc(18rem / 16);
margin: 0;
color: var(--primary-subtitle);
}
.author {
color: var(--author-text);
color: var(--secondary-heading);
font-style: normal;
}

View File

@ -30,7 +30,7 @@
margin: calc(8rem / 16) calc(32rem / 16) calc(20rem / 16) 0;
height: calc(100vh - (44rem / 16));
color: var(--sidebar-text);
color: var(--primary-heading);
font-weight: 500;
}
@ -55,14 +55,10 @@
.selected {
background-color: var(--primary-accent-lightest);
color: var(--primary-heading);
color: var(--primary-accent);
font-weight: 700;
}
.selected div {
color: var(--primary-heading);
}
.readAll {
font-weight: 700;
}
@ -73,7 +69,7 @@
.selected .marker {
display: inline;
background-color: var(--marker);
background-color: var(--primary-accent);
height: calc(24rem / 16);
width: calc(4rem / 16);
margin-right: 1rem;

View File

@ -8,12 +8,12 @@
flex-direction: row;
align-items: flex-end;
padding-bottom: 1rem;
border-bottom: calc(1rem / 16) solid var(--border);
border-bottom: calc(1rem / 16) solid var(--primary-heading);
}
.header {
line-height: 1;
color: var(--primary-title);
color: var(--primary-heading);
font-size: calc(48rem / 16);
margin: 0 0 0 calc(36rem / 16);
text-align: center;

View File

@ -22,5 +22,5 @@
}
.white {
fill: var(--text-light);
fill: var(--primary-background);
}

View File

@ -77,7 +77,7 @@ function InstagramSvg(color: string) {
xmlns="http://www.w3.org/2000/svg"
>
<linearGradient id="bluegreen-gradient">
<stop offset="0%" stopColor="var(--blue-gradient)" />
<stop offset="0%" stopColor="#1481E3" />
<stop offset="100%" stopColor="#4ED4B2" />
</linearGradient>
<path
@ -101,7 +101,7 @@ function DiscordSvg(color: string) {
version="1.1"
>
<linearGradient id="bluegreen-gradient">
<stop offset="0%" stopColor="var(--blue-gradient)" />
<stop offset="0%" stopColor="#1481E3" />
<stop offset="100%" stopColor="#4ED4B2" />
</linearGradient>
<g id="surface1">
@ -125,7 +125,7 @@ function TwitchSvg(color: string) {
xmlns="http://www.w3.org/2000/svg"
>
<linearGradient id="bluegreen-gradient">
<stop offset="0%" stopColor="var(--blue-gradient)" />
<stop offset="0%" stopColor="#1481E3" />
<stop offset="100%" stopColor="#4ED4B2" />
</linearGradient>
<g clipPath="url(#clip0)">
@ -170,7 +170,7 @@ function FacebookSvg(color: string) {
xmlns="http://www.w3.org/2000/svg"
>
<linearGradient id="bluegreen-gradient">
<stop offset="0%" stopColor="var(--blue-gradient)" />
<stop offset="0%" stopColor="#1481E3" />
<stop offset="100%" stopColor="#4ED4B2" />
</linearGradient>
<path
@ -194,7 +194,7 @@ function LiberaSvg(color: string) {
xmlns="http://www.w3.org/2000/svg"
>
<linearGradient id="bluegreen-gradient">
<stop offset="0%" stopColor="var(--blue-gradient)" />
<stop offset="0%" stopColor="#1481E3" />
<stop offset="100%" stopColor="#4ED4B2" />
</linearGradient>
<path

View File

@ -7,7 +7,7 @@
}
.table thead tr {
background: var(--table-header);
background: var(--secondary-accent-light);
}
.table tbody tr {
@ -15,8 +15,8 @@
vertical-align: top;
}
.table tbody tr:nth-child(even) {
background: var(--table-section);
.table tbody tr:nth-child(odd) {
background: var(--primary-accent-lightest);
}
.table th {

View File

@ -6,13 +6,13 @@ import styles from "./TeamMember.module.css";
interface TeamMemberProps {
name: string;
role?: string;
role: string;
image: string;
}
export const TeamMember: React.FC<TeamMemberProps> = ({
name,
role = "",
role,
image,
}) => {
return (

View File

@ -24,9 +24,6 @@
.image {
width: calc(126rem / 16);
height: calc(126rem / 16);
clip-path: circle();
object-fit: cover;
}
.name {

View File

@ -8,14 +8,14 @@ import styles from "./TeamMemberCard.module.css";
export interface TeamMemberCardProps {
name: string;
role?: string;
role: string;
image: string;
children: React.ReactNode;
}
export function TeamMemberCard({
name,
role = "",
role,
image,
children,
}: TeamMemberCardProps) {
@ -48,12 +48,7 @@ export function TeamMemberCard({
);
}
function TeamMemberInfo({
name,
role = "",
image,
children,
}: TeamMemberCardProps) {
function TeamMemberInfo({ name, role, image, children }: TeamMemberCardProps) {
return (
<>
<div className={styles.picture}>
@ -74,13 +69,7 @@ interface PopupProps extends TeamMemberCardProps {
handleClick: () => void;
}
function ExecPopup({
name,
role = "",
image,
children,
handleClick,
}: PopupProps) {
function ExecPopup({ name, role, image, children, handleClick }: PopupProps) {
return (
<>
<div className={styles.popupBackground} onClick={handleClick} />

View File

@ -19,10 +19,6 @@ export const PALETTE_NAMES = [
"--primary-background",
"--secondary-background",
"--scrollbar-track",
"--scrollbar-thumb",
"--scrollbar-hover",
"--primary-accent",
"--primary-accent-soft",
"--primary-accent-light",
@ -33,17 +29,9 @@ export const PALETTE_NAMES = [
"--secondary-accent-light",
"--primary-heading",
"--secondary-heading",
"--primary-title",
"--primary-subtitle",
"--secondary-subtitle",
"--primary-text",
"--text",
"--text-light",
"--author-text",
"--sidebar-text",
"--mini-event-card-text",
"--form-invalid",
"--warning-background",
@ -53,24 +41,9 @@ export const PALETTE_NAMES = [
"--input-placeholder-text",
"--input-text",
"--icon",
"--code-background",
"--button-background",
"--footer-background",
"--card-background",
"--dark-card-background",
"--table-header",
"--table-section",
"--navbar-page-overlay",
"--link",
"--link-hover",
"--blue-gradient",
"--border",
"--marker",
] as const;
export const emptyPalette = PALETTE_NAMES.reduce(
@ -104,9 +77,15 @@ export function ThemeProvider(props: Props) {
const setTheme = (input: SetThemeInput) => {
if (typeof input === "string") {
PALETTE_NAMES.forEach((name) =>
document.body.style.setProperty(name, "var(--" + input + name + ")")
document.body.style.setProperty(name, "")
);
savePalette(getCurrentPalette(input));
if (input === "light") {
document.body.classList.remove("dark");
} else if (input === "dark") {
document.body.classList.add("dark");
}
setThemeName(input);
} else {
const properties = Object.keys(input) as PaletteNames[];
@ -128,14 +107,7 @@ export function ThemeProvider(props: Props) {
const customPalette = getSavedPalette();
if (customPalette == null) {
const prefersDark = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
if (prefersDark) {
setTheme("dark");
} else {
setTheme("light");
}
setThemeName("light");
} else {
setTheme(customPalette);
setThemeName("custom");
@ -152,11 +124,11 @@ export function ThemeProvider(props: Props) {
theme: {
name: themeName,
get palette() {
return getCurrentPalette(themeName);
return getCurrentPalette();
},
},
setTheme,
save: () => savePalette(getCurrentPalette(themeName)),
save: () => savePalette(getCurrentPalette()),
clearSaved: clearSavedPalette,
}
}
@ -176,30 +148,13 @@ export type Palette = {
[key in PaletteNames]: string;
};
function themePropertyName(
name: PaletteNames,
themeName: BuiltInThemes
): string {
return `--${themeName}${name}`;
}
function getCurrentPalette(themeName: string) {
function getCurrentPalette() {
const styles = getComputedStyle(document.body);
if (themeName === "light" || themeName === "dark") {
return PALETTE_NAMES.reduce(
(partial, name) => ({
...partial,
[name]: styles
.getPropertyValue(themePropertyName(name, themeName))
.trim(),
}),
{} as Palette
);
}
return PALETTE_NAMES.reduce(
(partial, name) => ({
(partial, varName) => ({
...partial,
[name]: styles.getPropertyValue(name).trim(),
[varName]: styles.getPropertyValue(varName).trim(),
}),
{} as Palette
);

View File

@ -1,9 +1,8 @@
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";

View File

@ -1,14 +0,0 @@
[
"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"
]

View File

@ -1,5 +1,6 @@
---
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.

View File

@ -1,5 +1,6 @@
---
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.

View File

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

View File

@ -1,5 +1,6 @@
---
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:

View File

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

View File

@ -1,5 +1,6 @@
---
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.

View File

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

View File

@ -1,5 +1,6 @@
---
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).

View File

@ -1,5 +1,6 @@
---
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.

View File

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

View File

@ -1,5 +1,6 @@
---
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.

View File

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

View File

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

View File

@ -1,9 +1,10 @@
---
title: Amendments and Procedures
index: 10
---
1. A constitutional amendment can be initiated by the Executive Council or any thirty (30) members. The initiation shall involve making the amendment available for viewing, including in the CSC office.
2. There shall be at least twenty-eight (28) days between the amendment's initiation and announcement of the finalized version. Members shall be provided an avenue to discuss the amendment throughout this time period.
3. The finalized version of the amendment shall be announced to all members, taking place through email to the members' mailing list.
4. A general meeting shall be held to consider the finalized version of the amendment at least seven (7) and no more than thirty (30) days after its announcement, which may be the regular meeting for the term, or a special meeting.
1. A proposed constitutional amendment can be initiated by the Executive Council or any ten (10) members.
2. The proposed amendment shall be announced to all members by email to the members' mailing list.
3. The proposed amendment shall be made available for viewing by all members in the Computer Science Club office.
4. A general meeting shall be held to consider the amendment at least seven (7) days after the announcement and no more than thirty (30) days after, which may be the regular meeting for the term, or a special meeting.
5. A constitutional amendment requires a 2/3 vote for adoption.

View File

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

View File

@ -1,5 +1,6 @@
---
title: Committees
index: 7
---
## Programme Committee
@ -7,27 +8,20 @@ title: Committees
1. The Programme Committee shall be a standing committee chaired by the Vice-President.
2. The Vice-President shall appoint and remove members to and from the Programme Committee as needed.
3. The Programme Committee shall plan and arrange the events of the Club.
4. The Programme Committee shall be responsible to the Executive Council and to the Vice-President.
4. The Programme committee shall be responsible to the Executive Council and to the Vice-President.
## Systems Committee
1. The Systems Committee (syscom) shall be a standing committee, chaired by the Systems Administrator (sysadmin).
2. New members to the Systems Committee shall be appointed at the Systems Administrators discretion. Members should only be appointed to the Systems Committee if they show interest and some existing ability in systems administration.
3. Members should only be removed from the Systems Committee with cause, or when they no longer show interest in systems administration.
4. When a member is added to or removed from the Systems Committee, the Systems Committee and the Executive must be notified via both mailing lists.
1. The Systems Committee will be a standing committee, chaired by the Systems Administrator.
2. The Systems Administrator shall appoint and remove members to and from the Systems Committee.
3. Members should only be appointed to the Systems Committee if they show interest and some existing ability in systems administration.
4. Members should only be removed from the Systems Committee with cause, or when they no longer show interest in systems administration.
5. The Systems Committee will collectively, under the leadership of the Systems Administrator,
1. operate any and all equipment in the possession of the Club.
1. maintain and upgrade the software on equipment that is operated by the Club.
1. facilitate the use of equipment that is operated by the Club.
6. Members of the Systems Committee shall have root access to the machines operated by the Club.
## Web Committee
1. The Web Committee (webcom) will be a standing committee, chaired by the Webmaster.
2. The Webmaster shall appoint and remove members to and from the Web Committee as needed.
3. The Web Committee shall maintain and develop the club website with infrastructure support from the Systems Committee, if necessary.
## Other Committees
1. The President, with approval of the Executive Council, may appoint such special committees as are deemed necessary.
1. The President, with approval of the executive council, may appoint such special committees as are deemed necessary.

View File

@ -1,5 +1,6 @@
---
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.

View File

@ -1,11 +1,12 @@
---
title: Duties of Officers
index: 5
---
1. The duties of the President shall be:
1. to call and preside at all general, special, and executive meetings of the Club, except during the election of officers;
1. to appoint special committees of the Club and the membership and chairs of such committees, with the approval of the Executive Council;
1. to audit, or to appoint a representative to audit, the financial records of the club at the end of each academic term; and
1. to appoint special committees of the Club and the membership and chairs of such committees, with the approval of the Executive Council; and
1. to audit, or to appoint a representative to audit, the financial records of the club at the end of each academic term.
1. with the approval of the Faculty Advisor, rule on any point of procedure under the constitution that arises outside of a meeting.
1. The duties of the Vice-President shall be:
1. to assume the duties of the President in the event of the President's absence;
@ -13,15 +14,14 @@ title: Duties of Officers
1. to appoint members to and remove members from the Programme Committee;
1. to ensure that Club events are held regularly; and
1. to assume those duties of the President that are delegated to them by the President.
1. The duties of the Assistant Vice-President shall be:
1. The duties of the Secretary shall be:
1. to keep minutes of all Club meetings;
1. to care for all Club correspondence; and
1. to manage any persons appointed to internal positions by the Executive.
1. manage any persons appointed to internal positions by the Executive.
1. The duties of the Treasurer shall be:
1. to collect dues and maintain all financial and membership records; and
1. to collect dues and maintain all financial and membership records;
1. to produce a financial or membership statement when requested.
1. The duties of the System Administrator shall be:
1. to chair the Systems Committee;
1. to appoint members to and remove members from the Systems Committee;
1. to ensure that the duties of the Systems Committee are performed; and
1. to act as a liaison for the CSC with CSCF, IST, and similar organizations.
1. to appoint members to and remove members from the Systems Committee.
1. to ensure that the duties of the Systems Committee are performed.

View File

@ -1,9 +1,10 @@
---
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.
2. The Executive Council may appoint people to various positions to help manage the Club.
3. If members provide any points of feedback to the Executive Council at a meeting, then the Executive Council shall respond to them.
3. The Executive Council must obey any instructions given to it by the members at a meeting and can be overruled by them.
4. The Executive Council can act by consensus achieved on their mailing list.
5. Minutes of the Executive Council meetings shall be made available for inspection by any member of the Club and shall be filed with the Club records. On request, a member shall be shown the archive of any thread on the Executive Council mailing list which resulted in a decision being made.
5. Minutes of the Executive Council meetings shall be available for inspection by any member of the Club and shall be filed with the Club records. On request, a member shall be shown the archive of any thread on the Executive Council mailing list which resulted in a decision being made.

View File

@ -1,5 +1,6 @@
---
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.

View File

@ -1,12 +1,13 @@
---
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.
2. A special meeting for a motion to remove an executive from office may be called at any time deemed necessary by the Executive Council, by the Faculty Advisor, by any thirty (30) members, or by 1/3 of the Club membership if there are fewer than thirty (30) members.
2. Special meetings may be called at any time deemed necessary by the Executive Council, by the Faculty Advisor, or by any ten (10) members.
3. All members shall be notified at least two days prior to a forthcoming meeting of the meeting and of the business to be considered at that meeting. A message to the members' mailing list will be considered sufficient notification, though other forms of notification are also encouraged.
4. The Club shall hold meetings only in places that are open to all members of the Club.
5. The Club membership cannot act except at a general meeting.
6. A quorum necessary for the conduct of business is defined as twenty-five (25) full members or 2/3 of the full membership, whichever is smaller. If an election meeting lacks quorum, then the inquorate meeting can set a date and time for the elections, and can choose to either run the new elections with the same nominations or with a new nomination period (which does not need to meet the usual minimum requirement).
7. A motion to remove an officer, or to call new elections (except at a regular election meeting or in the case of vacancies), requires at least a week's notice; a quorum of fifty (50) full members or 2/3 of the full membership, whichever is smaller; and a 2/3 vote. Any other motion requires a majority vote.
6. A quorum necessary for the conduct of business is defined as fifteen (15) full members or 2/3 of the full membership, whichever is smaller. If an election meeting lacks quorum, then the inquorate meeting can set a date and time for the elections, and can choose to either run the new elections with the same nominations or with a new nomination period (which does not need to meet the usual minimum requirement).
7. A motion to remove an officer, or to call new elections (except at an election meeting), requires a 2/3 vote and at least a week's notice. Any other motion requires a majority vote.
8. If a motion is defeated, it cannot be brought again for sixty (60) days.

View File

@ -1,9 +1,10 @@
---
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.
2. Affiliate membership in this Club shall be open to all members of the University community, including alumni. Affiliate members shall have all the rights of full members except for the rights of voting and holding executive office.
3. Membership shall be accounted for on a termly basis, where a term begins at the start of lectures in Winter or Spring, and at the start of Orientation Week in Fall.
4. A person is not a member until he or she has paid the current membership fee and has been enrolled in the member database. A person must only be enrolled after paying the current membership fee, unless they are not a current undergraduate student at the University and the Executive grants them honorary membership free of charge. The termly membership fee is set from time to time by the Executive. Under conditions approved by the Executive, a member who purchases a membership at the end of the current term may be given membership for both the current term and the next term. If the membership fee changes, then this does not affect the validity of any membership terms already paid for.
4. A person is not a member until he or she has paid the current membership fee and has been enrolled in the member database. The termly membership fee is set from time to time by the Executive. Under conditions approved by the Executive, a member who purchases a membership at the end of the current term may be given membership for both the current term and the next term. If the membership fee changes, then this does not affect the validity of any membership terms already paid for.
5. The Club may grant access to its systems, either free of charge or for a fee, to members of the University community in order to offer them services. This does not constitute membership.

View File

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

View File

@ -1,31 +1,30 @@
---
title: Officers
index: 4
---
1. The officers of the Club shall be:
1. President
1. Vice-President
1. Assistant Vice-President
1. Secretary
1. Treasurer
1. Systems Administrator
1. System Administrator
1. There shall additionally be a Faculty Advisor, selected by the Executive from time to time from among the faculty of the School of Computer Science. The Faculty Advisor shall be an ex-officio affiliate member of the Club.
1. The choice of officers shall be limited to full members of the Club.
1. All officers, other than the Systems Administrator, shall be elected at a meeting to be held no later than two weeks after the start of lectures in each term.
1. All officers, other than the System Administrator, shall be elected at a meeting to be held no later than two weeks after the start of lectures in each term.
1. The election of officers shall be accomplished by the following procedure:
1. Before the end of the prior term, the then-Executive shall choose a willing Chief Returning Officer, who is responsible for carrying out elections according to this procedure.
1. The CRO shall set the date and time of the election meeting, and set the nomination period. The nomination shall be at least one week long and shall end at least 24 hours before the start of the election meeting.
1. Announcements of the election and the nomination procedure must be distributed to all members by the members' mailing list.
1. During the nomination period, the Chief Returning Officer (CRO) shall be available to receive nominations for the posts of officers of the club, either in person, by email, or by writing the nomination in a place in the CSC office to be specified by the CRO.
1. Announcements of the election and the nomination procedure must be distributed to all members by the members' mailing list, and should also be advertised by posters in the MC building.
1. During the nomination period, the Chief Returning Officer (CRO) shall be available to receive nominations for the posts of officers of the club, either in person, by email, by depositing nomination forms in the CSC's mailbox in the MathSoc office, or by writing the nomination in a place in the CSC office to be specified by the CRO.
1. A nomination shall consist of the nominee's userid, and post(s) nominated for. Nominees must be full members of the Computer Science Club. A member may decline a nomination at any point prior to the taking of the vote.
1. Within 24 hours of the CRO receiving a nomination, the CRO must publicize the nomination, such as by writing it on the CSC office whiteboard.
1. Each nominee shall make a platform and submit it to the CRO. Within 24 hours of the CRO receiving a platform from a nominee, the CRO must publicize the platform. Each nominee is also encouraged to publicize their platform on their own.
1. The election shall commence with the offering of memberships for sale. After a reasonable time, control of the meeting is given to the CRO who will preside over the election of the President, Vice-President, Assistant Vice-President, and Treasurer, in that order.
1. All nominees shall present their platforms. If a position has no nominees, then the CRO shall take nominations from the floor. Any present, eligible member can be nominated.
1. Voting shall be by secret ballot, in a manner that is to be decided on by the CRO and agreed upon by the members at the meeting. A simple heads-down-hands-up method is considered acceptable.
1. The election shall commence with the offering of memberships for sale. After a reasonable time, control of the meeting is given to the CRO who will preside over the election of the President, Vice-President, Treasurer, and Secretary, in that order.
1. During each election, if the position has no nominees, the CRO will take nominations from the floor. Any present, eligible member can be nominated.
1. Each election shall be carried out by secret vote, in a manner to be decided on by the CRO, with the approval of the members at the meeting. A simple heads-down-hands-up method is considered acceptable.
1. The CRO shall not vote except to break a tie.
1. The CRO may, if feasible, accept absentee ballots from full members. No absentee vote from a member shall be counted if the member is present at the time the vote is taken. The CRO shall make a best effort to ensure that absentee ballots are compatible with the method of voting chosen; if this is not possible (for instance, if the CRO is overruled by the membership), then the absentee votes shall not be counted.
1. Immediately after the vote is taken, the CRO will announce the results of the election and the winner will be removed from subsequent contests. If, due to a lack of candidates (because there were no nominations, or candidates withdrew or were eliminated), there is no one elected to an office, then the members at the meeting will decide whether or not to hold extra elections in accordance with the procedure for vacancies. If they choose not to, this does not prevent the Executive or a group of members from calling extra elections later in the term in accordance with the usual vacancy provisions.
1. Following the elections, it is the responsibility of the new Executive to select a Systems Administrator. The selection of Systems Administrator must then be ratified by the members at the meeting. If a suitable Systems Administrator is not available, the duties of the Systems Administrator shall be carried out by the Systems Committee, with decisions made by consensus achieved on their mailing list.
1. Immediately after the vote is taken, the CRO will announce the results of the election and the winner will be removed from subsequent contests. If, due to lack of candidates (because there were no nominations, or candidates withdrew or were eliminated), there is no one elected to an office, then the members at the meeting will decide whether or not to hold extra elections in accordance with the procedure for vacancies. If they choose not to, this does not prevent the Executive or a group of members from calling extra elections later in the term in accordance with the usual vacancy provisions.
1. Following the elections, it is the responsibility of the new executive to select a System Administrator. The selection of System Administrator must then be ratified by the members at the meeting. If a suitable System Administrator is not available, then the executive may delay their selection until one becomes available. In this case the selection of System Administrator must be ratified at the next meeting of the Club.
1. Any two offices may be held by a single person with the approval of the President (if any), and the explicit approval of the members.
1. In the case of a resignation of an officer or officers, including the President, or if a vacancy occurs for any other reason, the Executive, members at a meeting, or any ten (10) members may call extra elections to replace such officer(s). If extra elections are held, they are held for all vacant offices.
1. Whenever extra elections are held, they shall follow the usual election procedure. If they are held after elections failed to elect an officer, then the nomination period may be shortened to less than a week in order to allow the extra elections to take place at the same date and time in the following week. The Executive (or the ten (10) members who called the election) may appoint a replacement CRO if the previous CRO is unwilling or unable to fulfill their duties.

View File

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

View File

@ -1,5 +1,6 @@
---
title: Revision
index: 14
---
The latest revision of the constitution is effective January 11, 2024.
The constitution was last revised on 25 January 2018.

View File

@ -1,5 +1,6 @@
---
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.

View File

@ -11,6 +11,7 @@ The [Mathematics Endowment Fund](https://uwaterloo.ca/math-endowment-fund/) ha
- A gigabit switch for the MathSoc offices (including ours)
- Academic talks
- Linux CDs for first-year students
- Caffeine, our primary server
- Various books for the CSC library
The Computer Science club graciously thanks the Mathematics Endowment Fund for their financial support.
@ -25,6 +26,6 @@ The [MathSoc Capital Improvements Fund](https://mathsoc.uwaterloo.ca/wp-content
## Student Life Endowment Fund
The [Student Life Endowment Fund](https://wusa.ca/about/your-money/funding/) has provided funding of new hardware:
The [Student Life Endowment Fund](https://feds.ca/funding#fund-slef) has provided funding of new hardware:
- Biloba, a server to improve CSC web hosting services

View File

@ -1,7 +1,7 @@
---
name: "ACM-Style Programming Contest"
short: ""
startDate: 'October 15 1994 11:00'
date: 'October 15 1994 11:00'
online: false
location: "MC 3022"
---

View File

@ -1,7 +1,7 @@
---
name: "CSC Elections"
short: ""
startDate: 'September 16 1994 17:30'
date: 'September 16 1994 17:30'
online: false
location: "MC 4040"
---

View File

@ -1,7 +1,7 @@
---
name: "Exploring the Internet"
short: ""
startDate: 'October 20 1994 17:30'
date: 'October 20 1994 17:30'
online: false
location: "MC 3009"
---

View File

@ -1,7 +1,7 @@
---
name: "Game Theory"
short: ""
startDate: 'November 02 1994 17:30'
date: 'November 02 1994 17:30'
online: false
location: "MC 2038"
---

View File

@ -1,7 +1,7 @@
---
name: 'Movie Outing: Brainstorm'
short: ' No description available. '
startDate: 'September 13 1994 21:00'
date: 'September 13 1994 21:00'
online: false
location: 'Princess Cinema'
---

View File

@ -1,7 +1,7 @@
---
name: "Prograph: Picture the Future"
short: ""
startDate: 'October 13 1994 18:00'
date: 'October 13 1994 18:00'
online: false
location: "DC 1302"
---

View File

@ -1,7 +1,7 @@
---
name: "SIGGRAPH Video Night"
short: ""
startDate: 'September 21 1994 19:30'
date: 'September 21 1994 19:30'
online: false
location: "DC 1302"
---

View File

@ -1,7 +1,7 @@
---
name: "UNIX I Tutorial"
short: ""
startDate: 'September 22 1994 17:30'
date: 'September 22 1994 17:30'
online: false
location: "MC 3022"
---

View File

@ -1,7 +1,7 @@
---
name: "UNIX II Tutorial"
short: ""
startDate: 'September 26 1994 17:30'
date: 'September 26 1994 17:30'
online: false
location: "MC 3022"
---

View File

@ -1,7 +1,7 @@
---
name: 'Calculational Mathematics'
short: 'By Edgar Dijkstra'
startDate: 'December 02 1999 13:30'
date: 'December 02 1999 13:30'
online: false
location: 'DC1302'
---

View File

@ -1,7 +1,7 @@
---
name: 'Ctrl-D'
short: 'End-of-term dinner'
startDate: 'December 01 1999 19:00'
date: 'December 01 1999 19:00'
online: false
location: 'Golf''s Steakhouse'
---

View File

@ -1,7 +1,7 @@
---
name: "GDB, Purify Tutorial"
short: ""
startDate: 'October 19 1999 17:30'
date: 'October 19 1999 17:30'
online: false
location: "DC1304"
---

View File

@ -1,7 +1,7 @@
---
name: 'Homebrew Processors and Integrated Systems in FPGAs'
short: 'By Jan Gray'
startDate: 'December 01 1999 16:30'
date: 'December 01 1999 16:30'
online: false
location: 'MC2066'
---

View File

@ -2,7 +2,7 @@
name: 'Living Laboratories: The Future Computing Environments at
Georgia Tech'
short: 'By Blair MacIntyre and Elizabeth Mynatt'
startDate: 'October 18 1999 14:30'
date: 'October 18 1999 14:30'
online: false
location: 'DC1304'
---

View File

@ -1,7 +1,7 @@
---
name: 'Open Q&A session'
short: 'By Edsger Dijkstra'
startDate: 'December 03 1999 15:00'
date: 'December 03 1999 15:00'
online: false
location: 'DC1351'
---

View File

@ -1,7 +1,7 @@
---
name: 'Proofs and Programs'
short: 'By Edsger Dijkstra'
startDate: 'December 03 1999 10:00'
date: 'December 03 1999 10:00'
online: false
location: 'Siegfried Hall,
St Jerome''s'

View File

@ -1,7 +1,7 @@
---
name: 'CSC Elections'
short: 'Fall 2000 Elections for the CSC.'
startDate: 'September 14 2000 18:00'
date: 'September 14 2000 18:00'
online: false
location: 'DC1302'
---

View File

@ -1,7 +1,7 @@
---
name: 'Realising the Next Generation Internet'
short: 'By Frank Clegg of Microsoft Canada'
startDate: 'September 25 2000 14:30'
date: 'September 25 2000 14:30'
online: false
location: 'DC1302'
---

View File

@ -1,7 +1,7 @@
---
name: 'SIGGraph Video Night'
short: ' SIGGraph Video Night Featuring some truly awesome computer animations from Siggraph ''99. '
startDate: 'September 14 2000 19:00'
date: 'September 14 2000 19:00'
online: false
location: 'DC1302'
---

View File

@ -1,7 +1,7 @@
---
name: 'Ctrl-D'
short: 'End-of-term dinner'
startDate: 'July 20 2000 19:00'
date: 'July 20 2000 19:00'
online: false
location: 'Ali Babas Steak
House, 130 King Street S, Waterloo'

View File

@ -1,7 +1,7 @@
---
name: "Enterprise Java APIs and Implementing a Web Portal (1)"
short: ""
startDate: 'March 30 2000 17:30'
date: 'March 30 2000 17:30'
online: false
location: "DC1304"
---

View File

@ -1,7 +1,7 @@
---
name: "Enterprise Java APIs and Implementing a Web Portal"
short: ""
startDate: 'March 24 2000 17:30'
date: 'March 24 2000 17:30'
online: false
location: "DC1304"
---

View File

@ -1,7 +1,7 @@
---
name: 'ACM-Style programming contest'
short: 'Practice for the ACM international programming contest'
startDate: 'June 02 2001 10:30'
date: 'June 02 2001 10:30'
online: false
location: 'MC3006'
---

View File

@ -1,7 +1,7 @@
---
name: 'ACM-Style programming contest'
short: 'Practice for the ACM international programming contest'
startDate: 'January 27 2001 10:30'
date: 'January 27 2001 10:30'
online: false
location: 'MC3006'
---

View File

@ -1,7 +1,7 @@
---
name: 'Executive elections'
short: 'Winter 2001 CSC Elections.'
startDate: 'January 15 2001 16:30'
date: 'January 15 2001 16:30'
online: false
location: 'MC3036'
---

View File

@ -1,7 +1,7 @@
---
name: 'Meeting #2'
short: 'Second CSC meeting for Winter 2001.'
startDate: 'January 22 2001 15:30'
date: 'January 22 2001 15:30'
online: false
location: 'MC3036'
---

View File

@ -1,7 +1,7 @@
---
name: "Meeting #3"
short: ""
startDate: 'January 29 2001 15:39'
date: 'January 29 2001 15:39'
online: false
location: "MC3036"
---

View File

@ -1,7 +1,7 @@
---
name: "Meeting #4"
short: ""
startDate: 'February 05 2001 16:30'
date: 'February 05 2001 16:30'
online: false
location: "MC3036"
---

View File

@ -1,7 +1,7 @@
---
name: "Meeting #5"
short: ""
startDate: 'February 12 2001 16:30'
date: 'February 12 2001 16:30'
online: false
location: "MC3036"
---

View File

@ -1,7 +1,7 @@
---
name: 'A GNU Approach to Virtual Memory Management in a Multiserver Operating System'
short: 'Neal Walfield, a GNU Hurd developer, talks about a possible Virtual Memory Management subsystem for the GNU Hurd'
startDate: 'October 26 2002 16:30'
date: 'October 26 2002 16:30'
online: false
location: 'MC2066'
---

View File

@ -1,7 +1,7 @@
---
name: 'Automatic Memory Management and Garbage Collection'
short: 'A talk by James A. Morrison'
startDate: 'November 12 2002 16:30'
date: 'November 12 2002 16:30'
online: false
location: 'MC4058'
---

View File

@ -1,7 +1,7 @@
---
name: 'Business Meeting'
short: 'Vote on a constitutional change.'
startDate: 'September 30 2002 18:30'
date: 'September 30 2002 18:30'
online: false
location: 'Comfy lounge, MC3001'
---

View File

@ -1,7 +1,7 @@
---
name: 'Debian in the Enterprise'
short: 'A talk by Simon Law'
startDate: 'October 17 2002 17:30'
date: 'October 17 2002 17:30'
online: false
location: 'MC2065'
---

View File

@ -1,7 +1,7 @@
---
name: 'F02 elections'
short: 'Come and vote for this term''s exec'
startDate: 'September 16 2002 17:30'
date: 'September 16 2002 17:30'
online: false
location: 'Comfy lounge'
---

View File

@ -1,7 +1,7 @@
---
name: 'GNU/Linux InstallFest with KW-LUG and UW-DIG'
short: 'Bring over your computer and we''ll help you install GNU/Linux'
startDate: 'November 02 2002 11:00'
date: 'November 02 2002 11:00'
online: false
location: 'MC3002 (Math Coffee and Donut Store)'
---

View File

@ -1,7 +1,7 @@
---
name: 'GNU/Linux on HPPA'
short: 'Carlos O''Donnell talks about "the last of the legacy processors to fall before the barbarian horde"'
startDate: 'October 26 2002 13:30'
date: 'October 26 2002 13:30'
online: false
location: 'MC2066'
---

View File

@ -1,7 +1,7 @@
---
name: 'Metaprogramming GPUs'
short: 'A talk by Michael McCool of the Computer Graphics Lab.'
startDate: 'November 19 2002 16:30'
date: 'November 19 2002 16:30'
online: false
location: 'MC4058'
---

View File

@ -1,7 +1,7 @@
---
name: 'Perl 6'
short: 'A talk by Simon Law'
startDate: 'November 21 2002 18:00'
date: 'November 21 2002 18:00'
online: false
location: 'MC2066'
---

View File

@ -1,7 +1,7 @@
---
name: 'Pints with the Profs'
short: 'Get to know your profs and be the envy of your friends!'
startDate: 'October 01 2002 18:30'
date: 'October 01 2002 18:30'
online: false
location: 'The Bomber'
---

View File

@ -1,7 +1,7 @@
---
name: 'Samba and You'
short: 'A talk by Dan Brovkovich, Mathsoc''s Computing Director'
startDate: 'November 21 2002 16:30'
date: 'November 21 2002 16:30'
online: false
location: 'MC2066'
---

Some files were not shown because too many files have changed in this diff Show More