Merge branch 'main' of https://git.csclub.uwaterloo.ca/www/www-new into feat/meet-the-team-page

This commit is contained in:
b38peng 2021-08-26 20:43:46 -03:00
commit 058fe5c22e
146 changed files with 2846 additions and 152 deletions

View File

@ -4,8 +4,15 @@ type: docker
name: node16
steps:
- name: check-lockfile
image: node:16
commands:
- node ./check-lockfile.js
- name: install-deps
image: node:16
depends_on:
- check-lockfile
commands:
- npm install
@ -30,6 +37,16 @@ steps:
commands:
- npm run export
- name: deploy (staging)
image: node:16
depends_on:
- export
environment:
TOKEN:
from_secret: STAGING_TOKEN
commands:
- 'curl -XPOST -H "Authorization: $TOKEN" -H "X-Branch: $DRONE_BRANCH" "https://csclub.uwaterloo.ca/~a3thakra/update-csc/"'
trigger:
event:
exclude:

10
check-lockfile.js Normal file
View File

@ -0,0 +1,10 @@
const lockfile = require('./package-lock.json')
if (lockfile.lockfileVersion !== 2) {
console.error(`
Please upgrade to npm v7 and revert changes to the lockfile.
- \`npm i -g npm\` to upgrade.
`.trim())
process.exit(1)
}

View File

@ -0,0 +1,6 @@
.code {
padding: 0 calc(4rem / 16);
background: var(--code-background);
border-radius: calc(5rem / 16);
word-wrap: break-word;
}

9
components/Code.tsx Normal file
View File

@ -0,0 +1,9 @@
import React, { HTMLAttributes } from "react";
import styles from "./Code.module.css";
export function Code(props: HTMLAttributes<HTMLElement>) {
const classes = [styles.code, props.className ?? ""];
return <code {...props} className={classes.join(" ")} />;
}

View File

@ -1,7 +1,3 @@
.container form {
box-sizing: border-box;
}
.header {
color: var(--primary-accent);
font-weight: 600;
@ -9,8 +5,9 @@
}
.button {
margin-top: calc(34rem / 16);
margin-top: calc(26rem / 16);
display: block;
width: fit-content;
}
@media only screen and (max-width: calc(768rem / 16)) {

View File

@ -1,21 +1,24 @@
import React from "react";
import { Button } from "./Button";
import { Input } from "./Input";
import styles from "./EmailSignup.module.css";
export function EmailSignup() {
return (
<section className={styles.container}>
<h1 className={styles.header}>Join Our Mailing List!</h1>
<form className={styles.form} action="">
<Input type="text" placeholder="Full Name*" required />
<Input type="email" placeholder="Email*" required />
<Button type="submit" className={styles.button}>
<h1 className={styles.header}>Join our mailing list!</h1>
<p>
Join our mailing list to receive email notifications about important
news and upcoming events!
</p>
<Button
isLink={true}
href="https://mailman.csclub.uwaterloo.ca/postorius/lists/csc-general.csclub.uwaterloo.ca/"
className={styles.button}
>
Subscribe
</Button>
</form>
</section>
);
}

View File

@ -23,6 +23,11 @@
text-align: center;
}
.email {
color: unset;
text-decoration: unset;
}
@media only screen and (max-width: calc(768rem / 16)) {
.footer {
height: calc(120rem / 16);

View File

@ -1,3 +1,4 @@
import Link from "next/link";
import React from "react";
import { SocialLinks } from "./SocialLinks";
@ -9,7 +10,10 @@ export function Footer() {
<footer className={styles.footer}>
<div className={styles.container}>
<div className={styles.text}>
Have questions? Email us at XX@XXX.COM
Have questions? Email us at{" "}
<Link href="mailto:exec@csclub.uwaterloo.ca">
<a className={styles.email}>exec@csclub.uwaterloo.ca</a>
</Link>
</div>
<SocialLinks color="white" size="small" />
</div>

View File

@ -0,0 +1,7 @@
.line {
display: block;
margin: calc(34rem / 16) 0;
height: calc(1rem / 16);
border: none;
background-color: var(--primary-heading);
}

View File

@ -0,0 +1,7 @@
import React from "react";
import styles from "./HorizontalLine.module.css";
export function HorizontalLine() {
return <hr className={styles.line} />;
}

View File

@ -1,6 +1,10 @@
import React, { ImgHTMLAttributes } from "react";
export function Image(props: ImgHTMLAttributes<HTMLImageElement>) {
if (props.src?.startsWith("http://") || props.src?.startsWith("https://")) {
return <img {...props} />;
}
const { src: relativeSrc = "" } = props;
let absoluteSrc = process.env.NEXT_PUBLIC_BASE_PATH ?? "/";

View File

@ -1,15 +1,16 @@
.card {
.card > a {
display: flex;
flex-direction: row;
box-sizing: border-box;
padding: calc(16rem / 16);
color: var(--purple-2);
font-size: 1rem;
color: inherit;
text-decoration: inherit;
}
.card aside {
max-width: calc(142rem / 16);
margin-right: calc(45rem / 16);
margin-right: 1rem;
display: flex;
justify-content: center;
align-items: center;
@ -29,6 +30,7 @@
margin: 0;
margin-top: calc(4rem / 16);
font-size: calc(18rem / 16);
color: var(--primary-heading);
}
.card section {

View File

@ -1,3 +1,4 @@
import Link from "next/link";
import React from "react";
import { Image } from "./Image";
@ -5,19 +6,36 @@ import { Image } from "./Image";
import styles from "./MiniTechTalkCard.module.css";
interface MiniTechTalkProps {
name: string;
short: string;
poster?: string;
slug: string;
title: string;
presentors: string[];
poster: string;
}
export function MiniTechTalkCard({ name, poster, short }: MiniTechTalkProps) {
export function MiniTechTalkCard({
slug,
title,
presentors,
poster,
}: MiniTechTalkProps) {
const presentorsStr = presentors.join(", ");
return (
<article className={styles.card}>
<aside>{poster && <Image alt={name} src={poster} />}</aside>
<Link href={`/resources/tech-talks/${slug}`}>
<a>
<aside>
<Image
alt={`Thumbnail of tech talk by ${presentorsStr}: ${title}`}
src={poster}
/>
</aside>
<div className={styles.content}>
<h1>{name}</h1>
<p>{short}</p>
<h1>{title}</h1>
<p>{presentorsStr}</p>
</div>
</a>
</Link>
</article>
);
}

View File

@ -62,6 +62,10 @@ const menu: Menu = [
name: "Services",
route: "/resources/services",
},
{
name: "Machine Usage",
route: "/resources/machine-usage-agreement",
},
{
name: "Tech Talks",
route: "/resources/tech-talks",
@ -70,6 +74,14 @@ const menu: Menu = [
name: "CS Club Wiki",
route: "https://wiki.csclub.uwaterloo.ca",
},
{
name: "Advice",
route: "/resources/advice/coop",
},
{
name: "Internships",
route: "https://github.com/uwcsc/winter2022-internships",
},
],
},
];

View File

@ -19,6 +19,15 @@
text-align: center;
}
.imageRight {
flex-direction: row-reverse;
}
.imageRight .header {
text-align: left;
margin-left: 0;
}
@media only screen and (max-width: calc(768rem / 16)) {
.headerContainer {
flex-direction: column;
@ -34,4 +43,8 @@
.headerImage {
width: calc(100rem / 16);
}
.description {
display: none;
}
}

View File

@ -8,14 +8,29 @@ export interface Props {
title: string;
image: string;
children: ReactNode;
description?: string;
imagePosition?: "left" | "right";
}
export function Header({ title, image, children }: Props) {
export function Header({
title,
image,
children,
description,
imagePosition,
}: Props) {
return (
<main className={styles.page}>
<header className={styles.headerContainer}>
<header
className={`${styles.headerContainer} ${
imagePosition === "right" ? styles.imageRight : ""
}`}
>
<Image src={image} className={styles.headerImage} />
<div>
<h1 className={styles.header}>{title}</h1>
{description && <p className={styles.description}>{description}</p>}
</div>
</header>
{children}
</main>

View File

@ -26,10 +26,19 @@ export interface Options {
pagePath: string;
title: string;
image: string;
imagePosition?: "left" | "right";
link?: ComponentType<LinkProps>;
description?: string;
}
export function createReadAllPage({ title, image, pagePath, link }: Options) {
export function createReadAllPage({
title,
image,
pagePath,
link,
description,
imagePosition,
}: Options) {
const Link = link ?? createLink(pagePath);
return function Page({ sections }: Props) {
@ -44,7 +53,12 @@ export function createReadAllPage({ title, image, pagePath, link }: Options) {
);
return (
<Header title={title} image={image}>
<Header
title={title}
image={image}
description={description}
imagePosition={imagePosition}
>
<OrganizedContent
id={readAllSection.section.id}
sections={[

View File

@ -1,13 +1,10 @@
import { MDXRemote, MDXRemoteSerializeResult } from "next-mdx-remote";
import React, { ComponentType } from "react";
import React from "react";
import {
createLink,
LinkProps,
OrganizedContent,
} from "@/components/OrganizedContent";
import { createLink, OrganizedContent } from "@/components/OrganizedContent";
import { Header } from "./Header";
import { Options } from "./ReadAll";
interface Section {
id: string;
@ -20,19 +17,24 @@ export interface Props {
current: number;
}
export interface Options {
title: string;
pagePath: string;
image: string;
link?: ComponentType<LinkProps>;
}
export function createSectionPage({ title, image, pagePath, link }: Options) {
export function createSectionPage({
title,
image,
pagePath,
link,
description,
imagePosition,
}: Options) {
const Link = link ?? createLink(pagePath);
return function Page(this: void, { content, sections, current }: Props) {
return (
<Header title={title} image={image}>
<Header
title={title}
image={image}
description={description}
imagePosition={imagePosition}
>
<OrganizedContent
sections={sections}
id={sections[current].id}

View File

@ -0,0 +1,6 @@
.pre {
padding: calc(10rem / 16);
background: var(--code-background);
overflow-x: auto;
border-radius: calc(5rem / 16);
}

9
components/Pre.tsx Normal file
View File

@ -0,0 +1,9 @@
import React, { HTMLAttributes } from "react";
import styles from "./Pre.module.css";
export function Pre(props: HTMLAttributes<HTMLPreElement>) {
const classes = [styles.pre, props.className ?? ""];
return <pre {...props} className={classes.join(" ")} />;
}

View File

@ -24,11 +24,31 @@
font-style: normal;
margin-top: 0;
margin-bottom: 0;
color: var(--blue-2);
color: var(--primary-accent);
}
.content h2,
.content h3,
.content h4 {
font-size: calc(18rem / 16);
}
@media only screen and (max-width: calc(768rem / 16)) {
.card {
flex-direction: column;
}
.card aside {
margin: 0;
margin-bottom: 1rem;
flex: unset;
}
.card aside img {
margin: 0;
}
.content ul {
padding-left: 1rem;
}
}

View File

@ -1,26 +1,57 @@
import React, { ReactNode } from "react";
import { Image } from "./Image";
import { Link } from "./Link";
import styles from "./TechTalkCard.module.css";
interface DownloadLink {
file: string;
type: string;
size?: string;
}
interface TechTalkProps {
name: string;
poster?: string;
title: string;
presentors: string[];
poster: string;
links: DownloadLink[];
children: ReactNode;
}
export function TechTalkCard({ name, poster, children }: TechTalkProps) {
export function TechTalkCard({
title,
poster,
presentors,
links,
children,
}: TechTalkProps) {
return (
<article className={styles.card}>
<aside>
{poster && <Image alt={name} src={poster} />}
{!poster && <div className={styles.spacer}></div>}
<Image
alt={`Thumbnail of tech talk by ${presentors.join(", ")}: ${title}`}
src={poster}
/>
</aside>
<section className={styles.content}>
<h1>{name}</h1>
<h1>{title}</h1>
<div>{children}</div>
<h2>Download:</h2>
<ul>
{links.map((link) => (
<li key={link.file + link.type}>
<DownloadLink {...link} />
</li>
))}
</ul>
</section>
</article>
);
}
function DownloadLink({ file, type, size }: DownloadLink) {
const text = size ? `${type} (${size})` : type;
return <Link href={file}>{text}</Link>;
}

View File

@ -38,6 +38,8 @@ export const PALETTE_NAMES = [
"--input-placeholder-text",
"--input-text",
"--code-background",
"--navbar-page-overlay",
] as const;

View File

@ -245,9 +245,13 @@ export function OrganizedContentDemo() {
}
export function TechTalkDemo() {
const poster =
tempTechTalkMetadata.thumbnails.large ??
tempTechTalkMetadata.thumbnails.small;
return (
<div>
<TechTalkCard {...tempTechTalkMetadata}>
<TechTalkCard {...tempTechTalkMetadata} poster={poster}>
<TempTechTalk />
</TechTalkCard>
</div>
@ -257,15 +261,18 @@ export function TechTalkDemo() {
export function MiniTechTalkDemo() {
return (
<div className={styles.miniTechTalkDemo}>
<MiniTechTalkCard {...tempTechTalkMetadata}>
<TempTechTalk />
</MiniTechTalkCard>
<MiniTechTalkCard {...tempTechTalkMetadata}>
<TempTechTalk />
</MiniTechTalkCard>
<MiniTechTalkCard {...tempTechTalkMetadata}>
<TempTechTalk />
</MiniTechTalkCard>
<MiniTechTalkCard
{...tempTechTalkMetadata}
poster={tempTechTalkMetadata.thumbnails.small}
/>
<MiniTechTalkCard
{...tempTechTalkMetadata}
poster={tempTechTalkMetadata.thumbnails.small}
/>
<MiniTechTalkCard
{...tempTechTalkMetadata}
poster={tempTechTalkMetadata.thumbnails.small}
/>
</div>
);
}

View File

@ -5,4 +5,4 @@ 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.
Changes to the Code of Conduct are governed by the Club's [constitution](https://csclub.uwaterloo.ca/about/constitution).
Changes to the Code of Conduct are governed by the Club's [constitution](/about/constitution).

View File

@ -3,4 +3,4 @@ title: Contact Information
index: 9
---
- The Computer Science Club [Officers can be contacted as a whole](https://csclub.uwaterloo.ca/about/).
- The Computer Science Club [Officers can be contacted as a whole](/about).

View File

@ -5,7 +5,7 @@ index: 4
_The Executive Council and Faculty Advisor are herein referred to as the Officers, or singularly as Officer._
If you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, [contact an Officer](https://csclub.uwaterloo.ca/about/). No situation is considered inconsequential. If you do not feel comfortable contacting an Executive Council member due to the nature of the incident, you may contact the [Faculty Advisor](https://csclub.uwaterloo.ca/about/exec#advisor).
If you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, [contact an Officer](/about). No situation is considered inconsequential. If you do not feel comfortable contacting an Executive Council member due to the nature of the incident, you may contact the [Faculty Advisor](/about#advisor).
Upon receiving a complaint the Officer will inform the first of the following people who is not personally involved in the situation, or in a close relationship with the someone involved in the situation and is available, and this person shall handle the complaint and shall here after be referred to as the Handling Officer.

View File

@ -3,6 +3,6 @@ title: 12. Code of Conduct
index: 12
---
1. The Club has a [Code of Conduct](https://csclub.uwaterloo.ca/about/code-of-conduct).
2. The [scope of the Code of Conduct](https://csclub.uwaterloo.ca/about/code-of-conduct/scopes-and-spaces) is specified by the Code of Conduct.
1. The Club has a [Code of Conduct](/about/code-of-conduct).
2. The [scope of the Code of Conduct](/about/code-of-conduct/scopes-and-spaces) is specified by the Code of Conduct.
3. Changes to the Code of Conduct are governed by the same rules as changes to the Constitution.

View File

@ -0,0 +1,16 @@
## Academic Advice
Find a nice group of people that you study well with and meet every once in a while to work on things together,
you can do that generally by asking around via messaging platforms/office hours. To avoid plagiarism, avoid discussing
intricate details of the solution but rather bounce ideas off one another, and leave yourself 30 minutes after the meeting
before you write up a solution
Try to complete your assignments without consulting your notes. It will be very challenging to do if you are not very confident
in the content and is a good indicator that you need to understand the content better! Try to review it again and do the
assignment without referring back to it.
Try to manage your pace when it comes to work. Its really easy to burn out and lose motivation in the middle to end of the term,
when you need it the most. Give yourself a breather and take breaks!
Assignments can be pretty endless, so make sure you celebrate your small wins. Modularize your tasks and reflect on all the
work youve done over a period of time. Its often much more than you think.

View File

@ -0,0 +1,98 @@
## Coop Advice
Although WaterlooWorks is quite reliable, there are many more opportunities outside of the job board.
Being able to apply for jobs externally not only prepares you to look for jobs full time but it also
provides a way to start your study term without having to worry about looking for a co-op.
Create rituals for starting your day and ending your day. Studies have shown that not having a post work activity
makes it harder to not think about work which leads to burn out and reduced productivity. Start your day by thinking
about what you want to achieve and how you want to feel. End your day by doing an activity i.e exercising, listing
todos for tomorrow, or even reflecting about the work day! This may help you have a more balanced lifestyle.
To make the best use of your time, set a time limit on how long you spend on the problem (e.g. 1 hour before
you ask for help). Asking for help on an issue youve been stuck on for some time can be beneficial. Its much
better to take an hour of your mentor/boss time than to be stuck for days without any results. The solution
may be team/organization specific and asking can save a lot of time. Be sure to try your best to solve the
problem on your own first to maximize your ability to learn.
If you have spent time diving into the codebase but you still are confused, schedule time with your mentor/coworkers
to have a code base walk through. Write up questions to ask during the meeting and take notes of unclear parts of the code.
Check over your code at least twice before submitting your code review. Reviewing the code a second time may
help you catch minor issues and/or problematic code that your reviewers may or may not comment on. If you are
unable to figure out a solution to an issue, then reach out to someone for help rather than implementing a
hacky solution. You will be more aware of your coding quality, less prone to ignoring issues, and overall
be a more responsible developer.
Asking for feedback from your manager/mentor throughout the term can go a long way. You can ask about your
performance in certain areas and ways you can improve. These feedbacks can help determine what you should continue
and/or change. For example, you can ask about their expectations and how you can achieve a specific rating on
the employer co-op rating to set up specific goals.
Around the middle of the term, ask to go over your co-op evaluation form with your manager. In doing so, you will
be able to modify your current goals to match/exceed your managers expectations. This is especially helpful for
you to determine how you can achieve the co-op rating you want.
Meeting and networking with people in and outside your team is an amazing way to learn and meet new people.
Coffee chats are a great way to learn about interesting roles and tasks others around the company perform.
Try to set up coffee chats with others at your company as you might meet an amazing connection or learn about
a really neat topic. This may lead to an idea of what you want to do in your future co-ops. A format you can
use is: “Hey, I'm the new intern of \<manager\> and I was wondering if I could put something on your calendar
so I can get to know you and your work a little better.”
Aim to make most/all of your code testable. This will ensure the code is functioning properly and will save
time debugging in the future. This is a useful skill to have as a developer.
Each push request (PR) should focus on a very specific change/feature. Modularizing the changes will make
reviewing the PR easier and quicker.
Set up a system to stay on top of your work. This can be as simple as setting up a to-do list ready for the day.
The important thing is to be clear and intentional with your goals each day so you can optimize your focus on getting things done.
Document any blockers you faced during onboarding, and how you overcame them because chances are others will face them too.
These can be tips/advice you would give new hires. Feel free to share these findings with your team, because they want to make
the onboarding process more efficient and up to date for future hires. Some examples of things to take note of are
outdated/incorrect/missing documentation and the way the team does a specific task.
Negotiating compensation for an offer when you already have competing offers can be very beneficial for you and its normal
to do. For a general guide, you can use the format:
-------------------------------------------------------------------------------------------------------------------------------
Hello [Name of recruiter],
I am very interested in working \[company name\]. I have been given an opportunity at \[another company name\] that is offering \[compensation\].
Would it be possible for [the company name] to match/increase the compensation.
Thank you,
[Name]
-------------------------------------------------------------------------------------------------------------------------------
If you do not have competing offers you can still try to negotiate using the format:
-------------------------------------------------------------------------------------------------------------------------------
Hello \[Name of recruiter\],
Given my experiences, would it be possible to increase the compensation to [compensation]?
Thank you,
[Name]
-------------------------------------------------------------------------------------------------------------------------------
Either way, it does not hurt to try as the worst they can say is no.

View File

@ -0,0 +1,42 @@
## Social Advice
If youre looking to watch movies with friends then you can either buy cheaper (Tuesday prices)
at the Student Life Center or Waterloo has a list of streaming sites where you can watch free movies.
Join different clubs or societies! Theyre a great way to make friends and manage your time better.
Plus, it makes going through a school term much more fun.
Take up the opportunities for meeting people. You never know who you might meet. If you dont put
yourself out there and take chances, its much harder to find a relationship, friendships, or even study buddies.
Be kind. Celebrate your friends successes when they get a co-op job and support them when theyre struggling
too. Waterloo is so competitive and sometimes it can be hard to navigate through, so make sure youre giving
and getting a good support network.
Additional Resources
Along with your tuition fees, part of your library fees grant you access to a database of [free movies](https://media3-criterionpic-com.proxy.lib.uwaterloo.ca/htbin/wwform/006/wwk770?&kw=zkcode%7C000005%7C)
SE servers:
[discord.gg/ZtmRPc59](https://discord.gg/ZtmRPc59)
[discord.gg/XyQtsfe5](https://discord.gg/XyQtsfe5)
Group Leetcode server:
[discord.gg/kwCsCNb3](https://discord.gg/kwCsCNb3)
There are many online resources for interview preparation including https://evykassirer.github.io/playing-the-internship-game/ and https://github.com/viraptor/reverse-interview
If you have issues regarding courses, there are MathSoc class representatives who can help voice your concerns to involved faculty members.
Access to eBooks: https://subjectguides.uwaterloo.ca/compsci/books
More specifically O'Reilly Higher education: https://learning-oreilly-com.proxy.lib.uwaterloo.ca/home
There are a lot of helpful books/videos that can teach you a variety of things from finance to leadership to a variety of cs topics! (With recommendations, case studies and playlist to help you get started)
We have GPUs: https://uwaterloo.ca/math-faculty-computing-facility/services/service-catalogue-teaching-linux/access-teaching-gpu-cluster
List of math faculty services: https://uwaterloo.ca/math-faculty-computing-facility/services
Internship/Interview advice
https://www.techintern.io/

View File

@ -14,10 +14,10 @@ a bunch of ways you can join and help out.
1. Drop by our office in **MC 3036/3037** with
- your WatCard, and
- $2 for term that you would like to pay for
2. Sign our [Machine Usage Agreement](https://csclub.uwaterloo.ca/services/machine_usage)
2. Sign our [Machine Usage Agreement](/resources/machine-usage-agreement)
That's all! After your account created, you'll have access to all the
[services](https://csclub.uwaterloo.ca/services/) available to members.
[services](/resources/services) available to members.
#### Membership Renewal
@ -36,7 +36,7 @@ University of Waterloo email address with the following:
1. a scan or photograph copy of your **WatCard**,
2. your **WatIAM userid**, and
3. your acknowledgement of having read, understood, and agreeing with our 
[Machine Usage Agreement](https://csclub.uwaterloo.ca/services/machine_usage).
[Machine Usage Agreement](/resources/machine-usage-agreement).
#### Membership Renewal
@ -82,4 +82,4 @@ Each term the CSC holds elections to determine the executive council.
To find out when and where the next elections will be held, keep an eye on on the [News](/).
For details on the elections, see the [Constitution](https://csclub.uwaterloo.ca/about/constitution).
For details on the elections, see the [Constitution](/about/constitution).

View File

@ -1,19 +1,67 @@
export const metadata = {
name: "Tech Talk Title",
short: "Learn how React works and make your own version!",
poster: "/images/playground/alt-tab.jpg",
slug: "not-a-valid-slug",
title: "1989 Bill Gates Talk on Microsoft",
presentors: ["Bill Gates"],
thumbnails: {
small: "/images/playground/alt-tab.jpg",
large: "/images/playground/alt-tab.jpg",
},
links: [
{
file: "http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.mp3",
type: "mp3",
size: "85M",
},
{
file: "http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.flac",
type: "flac",
size: "540M",
},
{
file: "http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.ogg",
type: "ogg",
size: "56M",
},
{
file: "http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.wav",
type: "wav",
size: "945M",
},
]
};
You've got a game, but you didn't write it. You're running it by emulating the machine it was meant to run on, and the machine it was
meant to run on never had support for networking. Now, you want to play with your friend, over the Internet. Oh, and it's not
acceptable to incur any latency between your controller and the game while we're at it. Surely that can't be possible, right?
Wrong. This talk will discuss the re-emulation technique for netplay used commercially by a system called GGPO and freely in
an emulator frontend called RetroArch, and how similar techniques can be applied to make networking work in other scenarios
it was never meant for. This will be an unprepared, impromptu talk with no slides, so it should either be a fascinating dive
into a little-heard-of technique, or an impenetrable mess of jargon and algorithms. Either way, it should be fun. Professor
Richards is the maintainer of the netplay infrastructure for RetroArch, a popular emulator frontend for multiple platforms.
Bill Gates discusses the software and computer industry, and how Microsoft has contributed. Gates also discusses his views on the future of the computing industry. The talk was recorded in 1989 but was only recently digitized.
# Download
Topics include:
- BitTorrent:[Netplay in Emulators (mp4)]
- HTTP (web browser):[Netplay in Emulators (mp4)]
- The start and history of the microcomputer industry
- Microsoft BASIC and the Altair 880 computer
- The transition from 8-bit to 16-bit computers
- Microsoft's history with IBM
- 640k memory barrier and 16-bit architectures
- 32-bit 386 and 486 architectures
- RISC and multi-processor machines
- EGA graphics and WYSIWYG editors
- Decreasing cost of memory, harddisks and hardware in general
- The importance and future of the mouse
- Object-oriented programming
- MS-DOS and OS/2
- Multi-threaded and multi-application systems
- Synchronization in multi-threaded applications
- Diskette-based software
- UNIX standardization and POSIX
- History of the Macintosh and Microsoft' involvement
- Involvement of Xerox in graphical user interfaces
- Apple vs. Microsoft lawsuit regarding user interfaces
- OS/2 future as a replacement for MS-DOS
- Microsoft Office on Macintosh
- Thin/dumb clients
- Compact discs
- Multimedia applications
- Gates' current role at Microsoft
<!-- -->
The following picture was taken after the talk (click for higher-res).
[![null](<http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.jpg>)](<http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg>)

View File

@ -0,0 +1,8 @@
---
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.

View File

@ -0,0 +1,24 @@
---
title: Club Accounts
index: 7
---
The club accounts policy is divided into the following 2 sections:
1. Access Control
1. Responsibility and Accountability
## Access Control
_Note: For the given section, any mention of the club, except in direct reference to the Computer Science Club, will refer to a club other than the CSC, which has, or requests, an account on a Computer Science Club machine._
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 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.

View File

@ -0,0 +1,43 @@
---
title: Definitions
index: 8
---
CSC
- The University of Waterloo [Computer Science Club](/) whose office is located in room 3036/3037 of Mathematics and Computer Building (UW campus), telephone number (519) 888-4657 x3870.
CSC Network
- The network of computer hardware and peripherals owned by, rented to, on loan to, or otherwise under the control of the CSC.
MFCF
- The [Math Faculty Computing Facility](http://www.math.uwaterloo.ca/mfcf/) at the University of Waterloo.
Machine
- Computer, terminal or other piece of hardware.
- Non-CSC machines include MFCF's xterms and printers.
Systems Committee
- An appointed body responsible for the operation of the CSC network and the software that runs on it. A complete description is available in the [CSC Constitution](/about/constitution).
Network Bandwidth
- The percentage of bytes per unit of time that can be handled by the network(s) in question. These networks include the University of Waterloo on-campus network and the Internet.
Computing Resources
- Resources the CSC considers limited include
- Public temporary disk space
- Swap space
- Other commonly held disk space (which may include the home file system)
- inodes
- Memory
- CPU time
- Processes
- TTYs and pseudo-TTYs
- Network bandwidth
- Ports

View File

@ -0,0 +1,10 @@
---
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 CSC Executive has the right to update any policy, including this one, with reasonable notice.

View File

@ -0,0 +1,13 @@
---
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.
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).
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.

View File

@ -0,0 +1,31 @@
---
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.
- 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.
- 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.
## The Systems Committee may
- Examine programs that seem to be violating policy or security; this includes the following, *when necessary*,
- Remove accounts with short/no notice and provide an reasonable explanation to the user as to why their account was removed.
## General
- You are completely responsible for your actions.
- 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.

View File

@ -0,0 +1,15 @@
---
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.
_Note: that in the following sections, the term "user" implies a user of a CS Club machine, unless otherwise specified._
The usage policy is divided into the following sections:
1. [Acceptable and Unacceptable Use](/resources/machine-usage-agreement/acceptable-and-unacceptable-use)
1. [User Responsibilities](/resources/machine-usage-agreement/user-responsibilities)
1. [Security](/resources/machine-usage-agreement/security)
1. [Rights of the Systems Committee and the CSC Executive](/resources/machine-usage-agreement/rights-of-syscom-and-exec)

View File

@ -0,0 +1,20 @@
---
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 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.
```
Name: ___________________________
Signature: ___________________________
Office Staff: ___________________________
Signature: ___________________________
Date: ___________________________
```

View File

@ -0,0 +1,10 @@
---
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.
Users must act responsibly, and the needs of others with regard to computing resources must be considered at all times. In particular, no user should use any resource to an extent that other users are prevented from similarly using that resource, and no user's actions shall disrupt the work of other users.
Users must also abide by the usage policies of all machines that they connect to from CSC machines, or use to connect to CSC machines. It is the users' responsibility to check the policies of *all* machines that they connect to.

View File

@ -0,0 +1,11 @@
---
title: Club Web Hosting
index: 4
---
If you're a club and looking for web space, the CS Club is the place go.
- Clubs have access to the same member services (e.g. disk quota, databases).
- We also offer club.uwaterloo.ca domain registration.
For more details, see the club hosting [wiki page](http://wiki.csclub.uwaterloo.ca/Club_Hosting).

View File

@ -0,0 +1,12 @@
---
title: CS Club Email
index: 2
---
Members also receive a **username@csclub.uwaterloo.ca** email address.
- Mailboxes are considered as part of your disk quota, so your mailbox may grow up to the amount of disk quota you have.
- Attachments of any file size or type may be sent.
- Our mail server runs a POP3, IMAP, and SMTP server with SSL/TLS enabled.
You can also access your mail via a [Roundcube web mail client](https://mail.csclub.uwaterloo.ca/).

View File

@ -0,0 +1,6 @@
---
title: In-Office Books
index: 9
---
The CS Club maintains an [extensive collection of Computer Science-related books](http://csclub.uwaterloo.ca/library/). Feel free to come by the office to take a look at our library.

View File

@ -0,0 +1,10 @@
---
title: IRC
index: 6
---
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.
We also host an instance of [ZNC](https://znc.csclub.uwaterloo.ca/) for those who wish to use their own IRC client but do not want to run their own bouncer. ZNC saves your messages persistently so you do not have to keep your IRC client running 24/7.
For more information, see [this page](https://wiki.csclub.uwaterloo.ca/How_to_IRC) on our wiki.

View File

@ -0,0 +1,8 @@
---
title: Live Streaming
index: 8
---
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.
If you are interested in live streaming via Icecast, please contact the [Systems Committee](mailto:syscom@csclub.uwaterloo.ca) (syscom at csclub dot uwaterloo dot ca).

View File

@ -0,0 +1,21 @@
---
title: Machine Accounts
index: 1
---
The main benefit of becoming a CS Club member is to get access to our various machines.
- We offer a large range of hardware, including Alpha, MIPS, UltraSPARC, i386, and AMD64. Our primary development machine, high-fructose-corn-syrup, is a 4x AMD Opteron (64 cores at 2.4 GHz) with 64 GiB of RAM, and it easily outperforms the Linux machines available through CSCF.
- Most of our machines are connected via gigabit ethernet. We offer 4 GB of disk quota that is accessible across all of our machines. Our wiki contains a [full machine list](https://wiki.csclub.uwaterloo.ca/wiki/Machine_List).
SSH key fingerprints for caffeine (our main server) can be found below:
```
RSA: 0c:a3:66:52:10:19:7e:d6:9c:96:3f:60:c1:0c:d6:24
ED25519: 9e:a8:11:bb:65:1a:31:23:38:6b:94:9d:83:fd:ba:b1
```
<!-- TODO: this page doesn't exist -->
[SSH key fingerprints for other machines](/services/fingerprints)
<button isLink size="small" href="/resources/machine-usage-agreement">Machine Usage Agreement</button>

View File

@ -0,0 +1,10 @@
---
title: Mailing Lists
index: 10
---
Our [csc-general mailing list](http://mailman.csclub.uwaterloo.ca/listinfo/csc-general) informs members about our current events.
Our [csc-industry mailing list](http://mailman.csclub.uwaterloo.ca/listinfo/csc-industry) allows students to opt-in to receiving emails from industry representatives.
- Corporate events, job postings, info sessions, and related events may be posted here.

View File

@ -0,0 +1,6 @@
---
title: Open-Source Software Mirror
index: 5
---
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).

View File

@ -0,0 +1,8 @@
---
title: Video Conferencing
index: 7
---
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.
To get the most out of BigBlueButton, you can watch some tutorial videos [here](https://bigbluebutton.org/html5).

View File

@ -0,0 +1,17 @@
---
title: Web Hosting
index: 3
---
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.
If you are already a member, you can enable your web space as follows:
1. Log in to one of the CSC machines (e.g. csclub.uwaterloo.ca) using an [SSH](http://www.openssh.com/) client (e.g. [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/) on Windows or [OpenSSH](http://www.openssh.com/) on \*nix).
2. Create a directory called `www` in your home directory by typing `mkdir ~/www`. (This directory may already exist.)
3. Put the files you want on your web page in your new `www` directory. `index.{html,php}` will be loaded by default. You can upload files using an scp client (e.g. [WinSCP](http://winscp.net/) on Windows or [OpenSSH](http://www.openssh.com/) on \*nix).
4. Visit your new web page at `http://csclub.uwaterloo.ca/~username/`, where `username` should be replaced by your username.
Examples of configurations for more advanced web hosting setups can be found in [this wiki article](https://wiki.csclub.uwaterloo.ca/Web_Hosting).
If you're still having trouble getting your page up, contact the [Systems Committee](mailto:syscom@csclub.uwaterloo.ca).

View File

@ -0,0 +1,58 @@
---
index: 55
title: '1989 Bill Gates Talk on Microsoft'
presentors:
- 'Bill Gates'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/audio-file.png'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/audio-file.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.mp3'
type: 'mp3'
size: '85M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.flac'
type: 'flac'
size: '540M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.ogg'
type: 'ogg'
size: '56M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.wav'
type: 'wav'
size: '945M'
---
Bill Gates discusses the software and computer industry, and how Microsoft has contributed. Gates also discusses his views on the future of the computing industry. The talk was recorded in 1989 but was only recently digitized.
Topics include:
- The start and history of the microcomputer industry
- Microsoft BASIC and the Altair 880 computer
- The transition from 8-bit to 16-bit computers
- Microsoft's history with IBM
- 640k memory barrier and 16-bit architectures
- 32-bit 386 and 486 architectures
- RISC and multi-processor machines
- EGA graphics and WYSIWYG editors
- Decreasing cost of memory, harddisks and hardware in general
- The importance and future of the mouse
- Object-oriented programming
- MS-DOS and OS/2
- Multi-threaded and multi-application systems
- Synchronization in multi-threaded applications
- Diskette-based software
- UNIX standardization and POSIX
- History of the Macintosh and Microsoft' involvement
- Involvement of Xerox in graphical user interfaces
- Apple vs. Microsoft lawsuit regarding user interfaces
- OS/2 future as a replacement for MS-DOS
- Microsoft Office on Macintosh
- Thin/dumb clients
- Compact discs
- Multimedia applications
- Gates' current role at Microsoft
<!-- -->
The following picture was taken after the talk (click for higher-res).
[![null](<http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989.jpg>)](<http://mirror.csclub.uwaterloo.ca/csclub/bill-gates-1989-big.jpg>)

View File

@ -0,0 +1,22 @@
---
index: 30
title: 'A brief history of CS curriculum at UW'
presentors:
- 'Prabhakar Ragde'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/prabhakar-history-of-uw-cs-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/prabhakar-history-of-uw-cs-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/prabhakar-history-of-uw-cs.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/prabhakar-history-of-uw-cs.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/prabhakar-history-of-uw-cs.mpg'
type: 'Talk (MPG)'
---
I'll survey the evolution of our computer science curriculum over the past thirty-five years to try to convey the reasons (not always entirely rational) behind our current mix of courses and their division into core and optional. After some remarks about constraints and opportunities in the near future, I'll open the floor to discussion, and hope to hear some candid comments about the state of CS at UW and how it might be improved.
About the speaker:
Prabhakar Ragde is a Professor in the School of Computer Science at UW. He was Associate Chair for Curricula during the period that saw the creation of the Bioinformatics and Software Engineering programs, the creation of the BCS degree, and the strengthening of the BMath/CS degree.

View File

@ -0,0 +1,18 @@
---
index: 26
title: 'A Brief Introduction to Video Encoding'
presentors:
- 'Peter Barfuss'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/pbarfuss-video-encoding-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/pbarfuss-video-encoding-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pbarfuss-video-encoding.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pbarfuss-video-encoding.mpg'
type: 'Talk (MPG)'
---
In this talk, I will go over the concepts used in video encoding (such as motion estimation/compensation, inter- and intra- frame prediction, quantization and entropy encoding), and then demonstrate these concepts and algorithms in use in the MPEG-2 and the H.264 video codecs. In addition, some clever optimization tricks using SIMD/vectorization will be covered, assuming sufficient time to cover these topics.
With the recent introduction of digital TV and the widespread success of video sharing websites such as youtube, it is clear that the task of lossily compressing video with good quality has become important. Similarly, the complex algorithms involved require high amounts of optimization in order to run fast, another important requirement for any video codec that aims to be widely used/adopted.

View File

@ -0,0 +1,15 @@
---
index: 11
title: 'Algorithms for Shortest Paths'
presentors:
- 'Anna Lubiw'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/alubiw-shortest-paths-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alubiw-shortest-paths.mp4'
type: 'Talk (x264)'
---
Finding shortest paths is a problem that comes up in many applications: Google maps, network routing, motion planning, connectivity in social networks, and etc. The domain may be a graph, either explicitly or implicitly represented, or a geometric space.
Professor Lubiw will survey the field, from Dijkstra's foundational algorithm to current results and open problems. There will be lots of pictures and lots of ideas.

View File

@ -0,0 +1,13 @@
---
index: 2
title: 'ALT-TAB - Manic PXE Dream Servers'
presentors:
- 'Fatema Boxwala'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/fatema-manic-pxe-dream-servers-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/fatema-manic-pxe-dream-servers.mp4'
type: 'Manic PXE Dream Servers (mp4)'
---
PXE stands for Pre-eXecution Environment. Fatema will talk about the motivation for using it, examples of industry uses and a brief overview of what it is and how it works.

View File

@ -0,0 +1,24 @@
---
index: 36
title: 'An Introduction to Vector Graphics Libraries with Cairo'
presentors:
- 'Nathaniel Sherry'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/nsasherr-cairo.mpg'
type: 'Talk (MPG)'
---
Cairo is an open source, cross platform, vector graphics library with the ability to output to many kinds of surfaces, including PDF, SVG and PNG surfaces, as well as X-Window, Win32 and Quartz 2D backends.
Unlike the raster graphics used with programmes and libraries such as The Gimp and ImageMagick, vector graphics are not defined by grids of pixels, but rather by a collection of drawing operations. These operations detail how to draw lines, fill shapes, and even set text to create the desired image. This has the advantages of being infinitely scalable, smaller in file size, and simpler to express within a computer programme.
This talk will be an introduction to the concepts and metaphors used by vector graphics libraries in general and Cairo in particular.

View File

@ -0,0 +1,27 @@
---
index: 8
title: 'Back to Back Talks: Culture Turnaround and Software Defined Networks'
presentors:
- 'John Stix
- Francisco Dominguez'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/fibernetics-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/fibernetics.mp4'
type: 'Talk (x264)'
---
Back to back talks from John Stix and Francisco Dominguez on turning a company's culture around and on Software Defined Networks!
John Stix will be talking about how he turned around the corporate culture at Fibernetics Corporation.
Francisco Dominguez will be talking about Software Defined Networks, which for example can turn multiple flakey internet connections into one reliable one.
The speakers are:
- John Stix - President, Fibernetics
- Francisco Dominguez - CTO, Fibernetics
<!-- -->
Food and drinks will be provided!

View File

@ -0,0 +1,17 @@
---
index: 25
title: 'BareMetal OS'
presentors:
- 'Ian Seyler
- Return to Infinity'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/bare-metal-os-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/bare-metal-os-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bare-metal-os.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bare-metal-os.mpg'
type: 'Talk (MPG)'
---
BareMetal is a new 64-bit OS for x86-64 based computers. The OS is written entirely in Assembly, while applications can be written in Assembly or C/C++. High Performance Computing is the main target application.

View File

@ -0,0 +1,15 @@
---
index: 4
title: 'Bringing OOP Best Practices to the World of Functional Programming'
presentors:
- 'Elana Hashman'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/ehashman-oop-best-practices-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ehashman-oop-best-practices.mp4'
type: 'OOP Best Practices (mp4)'
---
I transitioned from writing software in imperative, object-oriented (OO) programming languages to doing functional programming (FP) full-time, and you can do it, too! In this talk, I'll make a case for using FP for real-world development, cover some cases where common FP language features substitute for design patterns and OOP structure, and provide some examples of translating traditional OO design patterns into functional code.
Due to battery shenanigans, not the entire talk was recorded. Instead, you can get the slides for this talk at [the talks section of her site](<https://hashman.ca/osb-2016/>).

View File

@ -0,0 +1,13 @@
---
index: 19
title: 'Building a Mobile Platform for Android and iOS'
presentors:
- 'Wesley Tarle'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/wtarle_mobile_platform_google-thumb-small.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/wtarle_mobile_platform_google.pdf'
type: 'Talk (PDF)'
---
A Google engineer gives a talk on building a mobile platform for Android and iOS. Wesley Tarle has been leading development at Google in Kitchener and Mountain View, and building stuff for third-party developers on Android and iOS. He's contributed to Google Play services since its inception and continues to produce APIs and SDKs focused on mobile startups.

View File

@ -0,0 +1,22 @@
---
index: 45
title: 'C++0x - An Overview'
presentors:
- 'Dr. Bjarne Stroustrup'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/stroustrup.mpg'
type: 'MPG'
---
A good programming language is far more than a simple collection of features. My ideal is to provide a set of facilities that smoothly work together to support design and programming styles of a generality beyond my imagination. Here, I briefly outline rules of thumb (guidelines, principles) that are being applied in the design of C++0x. Then, I present the state of the standards process (we are aiming for C++09) and give examples of a few of the proposals such as concepts, generalized initialization, being considered in the ISO C++ standards committee. Since there are far more proposals than could be presented in an hour, I'll take questions.
Dr. Bjarne Stroustrup is the original designer and implementer of the C++ Programming Language.

View File

@ -0,0 +1,20 @@
---
index: 27
title: 'Cooking for Geeks'
presentors:
- 'Jeff Potter'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/cooking-for-geeks-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/cooking-for-geeks-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cooking-for-geeks.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cooking-for-geeks.mpg'
type: 'Talk (MPG)'
---
The CSC is happy to be hosting Jeff Potter, author of "Cooking for Geeks" for a presentation on the finer arts of food science. Jeff's book has been featured on NPR, BBC and his presentations have wowed audiences of hackers & foodies alike. We're happy to have Jeff joining us for a hands on demonstration.
But you don't have to take our word for it... here's what Jeff has to say:
Hi! I'm Jeff Potter, author of Cooking for Geeks (O'Reilly Media, 2010), and I'm doing a "D.I.Y. Book Tour" to talk about my just-released book. I'll talk about the food science behind what makes things yummy, giving you a quick primer on how to go into the kitchen and have a fun time turning out a good meal. Depending upon the space, Ill also bring along some equipment or food that we can experiment with, and give you a chance to play with stuff and pester me with questions.

View File

@ -0,0 +1,22 @@
---
index: 47
title: 'Copyright vs Community in the Age of Computer Networks'
presentors:
- 'Richard M. Stallman'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/rms-qa-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/rms-qa-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rms-talk.ogg'
type: 'Talk (Ogg/Theora)'
size: '687M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rms-qa.ogg'
type: 'Q&A (Ogg/Theora)'
size: '225M'
---
Copyright developed in the age of the printing press, and was designed to fit with the system of centralized copying imposed by the printing press. But the copyright system does not fit well with computer networks, and only draconian punishments can enforce it.
The global corporations that profit from copyright are lobbying for draconian punishments, and to increase their copyright powers, while suppressing public access to technology. But if we seriously hope to serve the only legitimate purpose of copyright -- to promote progress, for the benefit of the public -- then we must make changes in the other direction.
This talk by Richard M. Stallman is broken into two parts: the main talk and the question and answer sessions following the talk. Both are available in only Ogg/Theora format in keeping with Stallman's wishes. They are available under the [ Creative Commons NoDerivs 1.0](<http://creativecommons.org/licenses/nd/1.0/>) license.

View File

@ -0,0 +1,27 @@
---
index: 10
title: 'Cory Doctorow - The War on General Purpose Computing'
presentors:
- 'Cory Doctorow'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/cory-doctorow-f2015-thumb-small.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cory-doctorow-f2015.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/cory-doctorow-f2015-hq.mp4'
type: 'Talk (x246 Big File)'
---
No Matter Who's Winning the War on General Purpose Computing, You're Losing
If cyberwar were a hockey game, it'd be the end of the first period and the score would be tied 500-500. All offense, no defense.
Meanwhile, a horrible convergence has occurred as everyone from car manufacturers to insulin pump makers have adopted the inkjet printer business model, insisting that only their authorized partners can make consumables, software and replacement parts -- with the side-effect of making it a felony to report showstopper, potentially fatal bugs in technology that we live and die by.
And then there's the FBI and the UK's David Cameron, who've joined in with the NSA and GCHQ in insisting that everyone must be vulnerable to Chinese spies and identity thieves and pervert voyeurs so that the spy agencies will always be able to spy on everyone and everything, everywhere.
It's been fifteen years since the copyright wars kicked off, and we're still treating the Internet as a glorified video-on-demand service -- when we're not treating it as a more perfect pornography distribution system, or a jihadi recruitment tool.
It's all of those -- and more. Because it's the nervous system of the 21st century. We've got to stop treating it like a political football.
(Cory Doctorow is affiliated with the Canadian branch of EFF, the [Electronic Frontier Foundation](<https://www.eff.org/>))

View File

@ -0,0 +1,25 @@
---
index: 7
title: 'CSC and WiCS Career Panel'
presentors:
- 'Joanne McKinley
- Carol Kilner
- Harshal Jethwa
- Dan Collens'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/csc-wics-f15-panel-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/csc-wics-f15-panel.mp4'
type: 'Talk (x264)'
---
The CSC is joining WiCS to host a career panel! Come hear from Waterloo alumni as they speak about their time at Waterloo, experience with coop, and life beyond the university. A great chance to network and seek advice!
The panelists are:
- Joanne Mckinley - Software Engineer, Google
- Carol Kilner - COO, BanaLogic Corporation
- Harshal Jethwa - Consultant, Infusion
- Dan Collens - CTO, Big Roads
<!-- -->

View File

@ -0,0 +1,22 @@
---
index: 32
title: 'Deep Learning With Multiplicative Interactions'
presentors:
- 'Dr. Geoff Hinton'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ghinton-deep-learning.mpg'
type: 'Talk (MPG)'
---
Deep networks can be learned efficiently from unlabeled data. The layers of representation are learned one at a time using a simple learning module, called a "Restricted Boltzmann Machine" that has only one layer of latent variables. The values of the latent variables of one module form the data for training the next module. Although deep networks have been quite successful for tasks such as object recognition, information retrieval, and modeling motion capture data, the simple learning modules do not have multiplicative interactions which are very useful for some types of data.
The talk will show how a third-order energy function can be factorized to yield a simple learning module that retains advantageous properties of a Restricted Boltzmann Machine such as very simple exact inference and a very simple learning rule based on pair-wise statistics. The new module contains multiplicative interactions that are useful for a variety of unsupervised learning tasks. Researchers at the University of Toronto have been using this type of module to extract oriented energy from image patches and dense flow fields from image sequences. The new module can also be used to allow motions of a particular style to be achieved by blending autoregressive models of motion capture data.

View File

@ -0,0 +1,13 @@
---
index: 16
title: 'Distributed File Systems'
presentors:
- 'Alex Tsay'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/alex_tsay_aerofs-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alex_tsay_aerofs.mp4'
type: 'Talk (x264)'
---
Alex Tsay from AeroFS will talk about the high availability distributed file systems they develop. The CAP Theorem outlined the fundamental limitations of a distributed system. When designing a distributed system, one has to constantly be aware of the trade-off between consistency and availability. Most distributed systems are designed with consistency in mind. However, AeroFS has decided to build a high-availability file system instead. In this tech talk, I'll be presenting an overview of AeroFS file system, advantages and challenges of a high-availability file system, and examine the inner workings of AeroFS's core syncing algorithm.

View File

@ -0,0 +1,32 @@
---
index: 59
title: 'Eric LaForest: Next Generation Stack Computing'
presentors:
- 'Eric LaForest'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/ericlaforest-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/ericlaforest-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/eric-laforest2-720-480.avi'
type: 'DiVX'
size: '357M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ericlaforest-xvid.avi'
type: 'XViD'
size: '309M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ericlaforest.mpg'
type: 'Mpeg'
size: '307M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/CSCtalkMar06.pdf'
type: 'slides [pdf]'
size: '1M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/CSCtalkMar06.ppt'
type: 'slides [Power Point]'
size: '1M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/CSCtalkMar06.odp'
type: 'slides [Open Office]'
size: '1M'
---
Eric LaForest delivers a crash-course on modern stack computing, the Forth programming language, and some projects of his own. Stack systems have faster procedure calls and reduced complexity (shorter pipeline, simpler compilation) relative to their conventional counterparts, as well as more consistent performance, which is very important for real-time systems. Many consider stack-based architecture's crowning feature, however, to be the unrivalled price-to-performance ratio.
Note: the slides are hard to make out in the video, so make sure to download the slides as well.

View File

@ -0,0 +1,39 @@
---
index: 3
title: 'Feminism in STEM - a 101 Panel'
presentors:
- 'Prabhakar
- Fatema
- Filzah
- Swetha'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/fem101-questions-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/fem101-panel-discussion.mp4'
type: 'Panel questions and discussion (mp4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/fem101-questions.mp4'
type: 'Audience questions (mp4)'
---
A panel organized by the CS Club on how feminism manifests itself in STEM, specifically CS and Engineering.
Panelists are Dr. Prabhakar Ragde, Swetha Kulandaivelan, and Filzah Nasir. Moderated by Fatema Boxwala.
Due to battery trouble, the first few minutes of audio were lost. The panelists were introduced as Prabhakar from the School of Computer Science, Swetha from 4A Mechanical Engineering, and Filzah as an Engineering grad student.
Sample questions from the panel section are:
- Filzah and Swetha, can you expand on how Engineering tries to keep its curriculum grounded in reality?
- Why would an Engineering 101 instructor tell the class to design urinals?
- Prabhakar, how can men in STEM help women get their voices heard?
<!-- -->
Sample questions from the audience after the panel: - As a woman in CS, how do I know I wasn't hired to meet a diversity target?
- Filzah, you mentioned that "getting to 50%" isn't what you're interested in. Can you expand on that?
- An admittedly selfish argument I've seen on Reddit asks why we should cooperate with marginalized communities when we're not significantly affected by them? (Response at 10 minutes into questions)
- Prabhakar, how has CS changed since you were an undergrad?
<!-- -->
A statistical errata: The Math faculty proportionally gives offers of admission to the 25% of women that apply, and there are no significant disproportionate dropout rates.

View File

@ -0,0 +1,22 @@
---
index: 39
title: 'Functional Lexing and Parsing'
presentors:
- 'Dr. Prabhakar Ragde'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing.mpg'
type: 'MPG'
---
This talk will describe a non-traditional functional approach to the classical problems of lexing (breaking a stream of characters into "words" or tokens) and parsing (identifying tree structure in a stream of tokens based on a grammar, e.g. for a programming language that needs to be compiled or interpreted). The functional approach can clarify and organize a number of algorithms that tend to be opaque in their conventional imperative presentation. No prior background in functional programming, lexing, or parsing is assumed.
The slides for this talk can be found [here](<http://mirror.csclub.uwaterloo.ca/csclub/pr-functional-lexing-parsing-slides.pdf>) as a pdf.

View File

@ -0,0 +1,18 @@
---
index: 22
title: 'General Purpose Computing on Graphics Cards'
presentors:
- 'Katie Hyatt'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/kshyatt-gpgpu-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/kshyatt-gpgpu-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kshyatt-gpgpu.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kshyatt-gpgpu-480p.mp4'
type: 'Talk (x246 480p)'
---
GPGPU (general purpose graphics processing unit) computing is an expanding area of interest, with applications in physics, chemistry, applied math, finance, and other fields. nVidia has created an architecture named CUDA to allow programmers to use graphics cards without having to write PTX assembly or understand OpenGL. CUDA is designed to allow for high-performance parallel computation controlled from the CPU while granting the user fine control over the behaviour and performance of the device.
In this talk, I'll discuss the basics of nVidia's CUDA architecture (with most emphasis on the CUDA C extensions), the GPGPU programming environment, optimizing code written for the graphics card, algorithms with noteworthy performance on GPU, libraries and tools available to the GPGPU programmer, and some applications to condensed matter physics. No physics background required!

View File

@ -0,0 +1,14 @@
---
index: 17
title: 'Google Fiber: Speed is Hard'
presentors:
- 'Avery Pennarun'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/google-speed-is-hard.png'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/google-speed-is-hard.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/speed-is-hard-at-uwaterloo.pdf'
type: 'Talk (PDF)'
---
Our speaker, Avery Pennarun, will share some not-very-secret secrets from the team creating GFiber's open source router firmware, including some discussion of wifi, marketing truthiness, the laws of physics, something about coaxial cables, embedded ARM processors, queuing theory, signal processing, hardware design, and kernel driver optimization. If you're lucky, he may also rant about poor garbage collector implementations. Also, there will be at least one slide containing one of those swooshy circle-and-arrow lifecycle diagrams, we promise.

View File

@ -0,0 +1,18 @@
---
index: 21
title: 'How Browsers Work'
presentors:
- 'Ehsan Akhgari'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/how-browsers-work-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/how-browsers-work-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/how-browsers-work.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/how-browsers-work.mpg'
type: 'Talk (MPG)'
---
Veteran Mozilla engineer Ehsan Akhgari presents a talk on the internals of web browsers. The material ranges from the fundamentals of content rendering to the latest innovations in browser design.
Web browsers have evolved. From their humble beginnings as simple HTML rendering engines they have grown and evolved into rich application platforms. This talk will start with the fundamentals: how a browser creates an on-screen representation of the resources downloaded from the network. (Boring, right? But we have to start somewhere.) From there we'll get into the really exciting stuff: the latest innovations in Web browsers and how those innovations enable — even encourage — developers to build more complex applications than ever before. You'll see real-world examples of people building technologies on top of these "simple rendering engines" that seemed impossible a short time ago.

View File

@ -0,0 +1,18 @@
---
index: 24
title: 'How to build a brain: From single neurons to cognition'
presentors:
- 'Dr. Chris Eliasmith'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/how-to-build-a-brain-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/how-to-build-a-brain-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/how-to-build-a-brain.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/how-to-build-a-brain.mpg'
type: 'Talk (MPG)'
---
Theoretical neuroscience is a new discipline focused on constructing mathematical models of brain function. It has made significant headway in understanding aspects of the neural code. However, past work has largely focused on small numbers of neurons, and so the underlying representations are often simple. In this talk I demonstrate how the ideas underlying these simple forms of representation can underwrite a representational hierarchy that scales to support sophisticated, structure-sensitive representations.
Theoretical neuroscience is a new discipline focused on constructing mathematical models of brain function. It has made significant headway in understanding aspects of the neural code. However, past work has largely focused on small numbers of neurons, and so the underlying representations are often simple. In this talk I demonstrate how the ideas underlying these simple forms of representation can underwrite a representational hierarchy that scales to support sophisticated, structure-sensitive representations. I will present a general architecture, the semantic pointer architecture (SPA), which is built on this hierarchy and allows the manipulation, processing, and learning of structured representations in neurally realistic models. I demonstrate the architecture on Progressive Raven's Matrices (RPM), a test of general fluid intelligence.

View File

@ -0,0 +1,13 @@
---
index: 18
title: 'In Pursuit of the Travelling Salesman'
presentors:
- 'Bill Cook'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/bico_2014_travelling_salesman-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/bico_2014_travelling_salesman.mp4'
type: 'Talk (x264)'
---
The traveling salesman problem is easy to state: given a number of cities along with the cost of travel between each pair of them, find the cheapest way to visit them all and return to your starting point. Easy to state, but difficult to solve. Despite decades of research, in general it is not known how to significantly improve upon simple brute-force checking. It is a real possibility that there may never exist an efficient method that is guaranteed to solve every instance of the problem. This is a deep mathematical question: Is there an efficient solution method or not? The topic goes to the core of complexity theory concerning the limits of feasible computation and we may be far from seeing its resolution. This is not to say, however, that the research community has thus far come away empty-handed. Indeed, the problem has led to a large number of results and conjectures that are both beautiful and deep, and on the practical side solution methods are used to compute optimal or near-optimal tours for a host of applied problems on a daily basis, from genome sequencing to arranging music on iPods. In this talk we discuss the history, applications, and computation of this fascinating problem.

View File

@ -0,0 +1,17 @@
---
index: 12
title: 'Infra Sound is All Around Us'
presentors:
- 'Richard Mann'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/mannr-infrared-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mannr-infrared.mp4'
type: 'Talk (x264)'
---
Infra sound refers to sound waves below the range of human hearing. Infra sound comes from a number of natural phenomena including weather changes, thunder, and ocean waves. Common man made sources include heating and ventilation systems, industrial machinery, moving vehicle cabins (air, trains, cars), and energy generation (wind turbines, gas plants).
In this talk Richard Mann will present equipment he has built to measure infra sound, and analyse some of the infra sound he has recorded.
Note: In Winter 2016 Richard Mann will be offering a new course, in Computer Sound. The course will appear as CS489/CS689 ("Topics in Computer Science"). This is a project-based course (60% assignments, 40% project, no final). Details at his web page, [\~mannr](<http://www.cs.uwaterloo.ca/~mannr>).

View File

@ -0,0 +1,24 @@
---
index: 51
title: 'Introduction to 3-d Graphics'
presentors:
- 'The Prof'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics.avi'
type: 'DivX'
size: '272M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics-xvid.avi'
type: 'XviD'
size: '272M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics.mpg'
type: 'MPG'
size: '272M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/the-prof-graphics.ogg'
type: 'Ogg/Theora'
size: '274M'
---
A talk for those interested in 3-dimensional graphics but unsure of where to start. Covers the basic math and theory behind projecting 3-dimensional polygons on screen, as well as simple cropping techniques to improve efficiency. Translation and rotation of polygons will also be discussed.

View File

@ -0,0 +1,14 @@
---
index: 61
title: 'Larry Smith: Computing''s Next Great Empires'
presentors:
- 'Larry Smith'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/audio-file.png'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/audio-file.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk.ogg'
type: 'Ogg'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-smith-talk.mp3'
type: 'MP3'
---

View File

@ -0,0 +1,24 @@
---
index: 60
title: 'Larry Smith: Creating Killer Applications'
presentors:
- 'Larry Smith'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications.avi'
type: 'DiVX'
size: '686M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications-xvid.avi'
type: 'XviD'
size: '686M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications.mpg'
type: 'MPG'
size: '685M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/larry-killer-applications.ogg'
type: 'Ogg'
size: '706M'
---
A discussion of how software creators can identify application opportunities that offer the promise of great social and commercial significance. Particular attention will be paid to the challenge of acquiring cross domain knowledge and setting up effective collaboration.

View File

@ -0,0 +1,14 @@
---
index: 23
title: 'Machine learning vs human learning: will scientists become obsolete'
presentors:
- 'Dr. Shai Ben-David'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/human-vs-machine-learning-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/human-vs-machine-learning-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/human-vs-machine-learning.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/human-vs-machine-learning.mpg'
type: 'Talk (MPG)'
---

View File

@ -0,0 +1,20 @@
---
index: 41
title: 'More Haskell functional programming fun'
presentors:
- 'Andrei Barbu'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/abarbu2.mpg'
type: 'MPG'
---
TODO

View File

@ -0,0 +1,22 @@
---
index: 20
title: 'Multi-processor Real-time Systems'
presentors:
- 'Bill Cowan'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/wmcowan_multi_processor_realtime-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/wmcowan_multi_processor_realtime-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/wmcowan_multi_processor_realtime.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/wmcowan_multi_processor_realtime.mpg'
type: 'Talk (MPG)'
---
Programming systems that obey hard real-time constraints is difficult. So is programming multiple CPUs that interact to solve a single problem.
On rare occasions it is possible to mix two difficult problems to create one easy problem and multi-CPU real-time is, on the face of it, just such an occasion. Give each deadline its own CPU and it will never be missed. This intuition is, unfortunately, incorrect, which does not, however, prevent it being tried in many real-time systems.
For three decades, fourth year students have been exploring this problem in CS452, using multiple tasks (virtual CPUs) running on a single CPU. It is now time to consider whether modern developments in CPU architecture make it possible to use multiple CPUs in CS452 given the practical constraint of a twelve week semester.
This talk will describe the nature of computation typical of real-time systems, architectural solutions currently employed in the course, and possible architectures for multi-CPU systems.

View File

@ -0,0 +1,14 @@
---
index: 0
title: 'Netplay in Emulators'
presentors:
- 'Gregor Richards'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/gregor-talk-thumb.png'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/gregor-talk-thumb.png'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/gregor-talk.mp4'
type: 'Netplay in Emulators (mp4)'
---
You've got a game, but you didn't write it. You're running it by emulating the machine it was meant to run on, and the machine it was meant to run on never had support for networking. Now, you want to play with your friend, over the Internet. Oh, and it's not acceptable to incur any latency between your controller and the game while we're at it. Surely that can't be possible, right? Wrong. This talk will discuss the re-emulation technique for netplay used commercially by a system called GGPO and freely in an emulator frontend called RetroArch, and how similar techniques can be applied to make networking work in other scenarios it was never meant for. This will be an unprepared, impromptu talk with no slides, so it should either be a fascinating dive into a little-heard-of technique, or an impenetrable mess of jargon and algorithms. Either way, it should be fun. Professor Richards is the maintainer of the netplay infrastructure for RetroArch, a popular emulator frontend for multiple platforms.

View File

@ -0,0 +1,19 @@
---
index: 6
title: 'Network Infrastructure talk'
presentors:
- 'Steve Bourque and Mike Patterson'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/uw-infrastructure-sbourque-half-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/uw-infrastructure-sbourque-half.mp4'
type: 'Steven Bourque Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/uw-infrastructure-mpatters-half.mp4'
type: 'Mike Patterson Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/uw-infrastructure-mpatters-slides.pdf'
type: 'Mike Patterson Slides (pdf)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/uw-infrastructure-sbourque-slides.pdf'
type: 'Steven Bourque Slides (pdf)'
---
Steve Bourque and Mike Patterson of IST will give a brief overview of campus network connectivity and interconnectivity. Steve will describe the general connections, and Mike will talk about specific security measures in place. We'll have refreshments!

View File

@ -0,0 +1,22 @@
---
index: 43
title: 'Off-the-Record Messaging: Useful Security and Privacy for IM'
presentors:
- 'Ian Goldberg'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ian-goldberg-otr.mpg'
type: 'MPG'
---
Instant messaging (IM) is an increasingly popular mode of communication on the Internet. Although it is used for personal and private conversations, it is not at all a private medium. Not only are all of the messages unencrypted and unauthenticated, but they are all routedthrough a central server, forming a convenient interception point for an attacker. Users would benefit from being able to have truly private conversations over IM, combining the features of encryption, authentication, deniability, and forward secrecy, while working within their existing IM infrastructure.
In this talk, I will discuss "Off-the-Record Messaging" (OTR), a widely used software tool for secure and private instant messaging. I will outline the properties of Useful Security and Privacy Technologies that motivated OTR's design, compare it to other IM security mechanisms, and talk about its ongoing development directions.

View File

@ -0,0 +1,13 @@
---
index: 5
title: 'Open Source Computer Sound Measurement'
presentors:
- 'Richard Mann'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/rmann-oss-sound-measurement-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rmann-oss-sound-measurement.mp4'
type: 'OSS Sound Measurement (mp4)'
---
An ideal computer audio system should faithfully reproduce signals of all frequencies in the audible range (20 to 20,000 cycles per second). Real systems, particularly mobile devices and laptops, may still produce acceptable quality, but often have a limited response, particularly at the low (bass) frequencies. Sound/acousic energy refers to time varying pressure waves in air. When recording sound, the acoustic signal will be picked up by microphone, which converts it to electrical signals (voltages). The signal is then digitized (analog to digital conversion) and stored as a stream of numbers in a data file. On playback the digital signal is converted to an electrical signal (digital to analog conversion) and finally returned as an acoustic signal by a speaker and/or headphones. In this talk I will present open source software (Octave/Linux) to measure the end-to-end frequency response of an audio system using the Discrete Fourier Transform. I will demonstrate the software using a standard USB audio interface and a consumer grade omnidirectional microphone. This is joint work with John Vanderkooy, Distinguished Professor Emeritus, Department of Physics and Astronomy.

View File

@ -0,0 +1,22 @@
---
index: 46
title: 'PMAMC&OC SASMS - Spring 2007'
presentors:
- 'PMClub Various Members'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007.avi'
type: 'XviD'
size: '643M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007.ogg'
type: 'Ogg/Theora'
size: '598M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007.mp4'
type: 'MP4'
size: '625M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/pmc-sasms-spring-2007.mpg'
type: 'MPG'
size: '641M'
---

View File

@ -0,0 +1,20 @@
---
index: 44
title: 'Privacy by Design'
presentors:
- 'Dr. Ann Cavoukian'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/privacy.mpg'
type: 'MPG'
---
Globally, issues about information privacy in the marketplace have emerged in tandem with the dramatic and escalating increase in information stored in electronic formats. Data mining, for example, can be extremely valuable for businesses, but in the absence of adequate safeguards, it can jeopradize informational privacy. Dr. Ann Cavoukian talks about how to use technology to enhance privacy. Some of the technologies discussed included instant messaging, RFID tags and Elliptical Curve Cryptography (ECC). Then Dr. Cavoukian explained the “7 Privacy Embedded Laws” followed by a discussion on a biometrics solution to encryption.

View File

@ -0,0 +1,36 @@
---
index: 38
title: 'Programming Quantum Computers'
presentors:
- 'Dr. Raymond Laflemme and Various'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc1.mpg'
type: 'Talk (MPG)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc2.avi'
type: 'Quantum Key Distribution Lab (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc2.ogg'
type: 'Quantum Key Distribution Lab (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc2.mp4'
type: 'Quantum Key Distribution Lab (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc2.mpg'
type: 'Quantum Key Distribution Lab (MPG)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc3.avi'
type: 'NMR Quantum Computer (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc3.ogg'
type: 'NMR Quantum Computer (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc3.mp4'
type: 'NMR Quantum Computer (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/iqc3.mpg'
type: 'NMR Quantum Computer (MPG)'
---
Raymond Laflamme is the director of the Institute for Quantum Computing at the University of Waterloo and holds the Canada Research Chair in Quantum Information. He will give a brief introduction to quantum computing and why it matters, followed by a talk on programming quantum computers. This is followed by tours of IQC Labs.

View File

@ -0,0 +1,22 @@
---
index: 35
title: 'QIP=PSPACE'
presentors:
- 'Dr. John Watrous'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip.avi'
type: 'Talk (XviD)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip.ogg'
type: 'Talk (Ogg/Theora)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip.mp4'
type: 'Talk (MP4)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/jwatrous-qip.mpg'
type: 'Talk (MPG)'
---
The interactive proof system model of computation is a cornerstone of complexity theory, and its quantum computational variant has been studied in quantum complexity theory for the past decade. In this talk I will discuss an exact characterization of the power of quantum interactive proof systems that I recently proved in collaboration with Rahul Jain, Zhengfeng Ji, and Sarvagya Upadhyay. The characterization states that the collection of computational problems having quantum interactive proof systems consists precisely of those problems solvable with an ordinary classical computer using a polynomial amount of memory (or QIP = PSPACE in complexity-theoretic terminology). This characterization implies the striking fact that quantum computing does not provide any increase in computational power over classical computing in the context of interactive proof systems.
I will not assume that the audience for this talk has any familiarity with either quantum computing or complexity theory; and to be true to the spirit of the interactive proof system model, I hope to make this talk as interactive as possible -- I will be happy to explain anything related to the talk that I can that people are interested in learning about.

View File

@ -0,0 +1,23 @@
---
index: 15
title: 'Racket''s Magical Match'
presentors:
- 'Theo Belaire'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/tbelaire_racket-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/tbelaire_racket.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/tbelaire_racket-slides.pdf'
type: 'Talk (PDF)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/tbelaire_racket-slides-source.rkt'
type: 'Talk (Rkt)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/tbelaire_racket-stdlib.rkt'
type: 'Source (Rkt)'
---
Come learn how to use the power of the Racket match construct to make your code easier to read, less bug-prone and overall more awesome!
Theo Belaire, a fourth-year CS student, will show you the basics of how this amazing function works, and help you get your feet wet with some code examples and advanced use cases.
If you're interested in knowing about the more powerful features of Racket, then this is the talk for you! The material covered is especially useful for students in CS 241 who are writing their compiler in Racket, or are just curious about what that might look like.

View File

@ -0,0 +1,20 @@
---
index: 49
title: 'Ralph Stanton 40th Anniversary of Math Faculty Talk'
presentors:
- 'Ralph Stanton'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton-xvid.avi'
type: 'DivX'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton.ogg'
type: 'Ogg'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/ralph-stanton.mpg'
type: 'MPG'
---
Ralph Stanton reflects on the founding of the University of Waterloo Math Faculty.

View File

@ -0,0 +1,22 @@
---
index: 40
title: 'Rapid Prototyping and Mathematical Art'
presentors:
- 'Dr. Craig Kaplan'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art.avi'
type: 'XviD'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art.ogg'
type: 'Ogg/Theora'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art.mp4'
type: 'MP4'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art.mpg'
type: 'MPG'
---
The combination of computer graphics, geometry, and rapid prototyping technology has created a wide range of exciting opportunities for using the computer as a medium for creative expression. In this talk, I will describe the most popular technologies for computer-aided manufacturing, discuss applications of these devices in art and design, and survey the work of contemporary artists working in the area (with a focus on mathematical art). The talk will be primarily non-technical, but I will mention some of the mathematical and computational techniques that come into play.
The slides for this talk can be found [here](<http://mirror.csclub.uwaterloo.ca/csclub/kaplan-mathematical-art-slides.pdf>) as a pdf.

View File

@ -0,0 +1,34 @@
---
index: 54
title: 'ReactOS - An Open Source OS Platform for Learning'
presentors:
- 'Alex Ionescu'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu.avi'
type: 'DivX'
size: '451M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu-xvid.avi'
type: 'XviD'
size: '451M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu.mpg'
type: 'MPG'
size: '450M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu.ogg'
type: 'Ogg/Theora'
size: '461M'
---
The ReactOS operating system has been in development for over eight years and aims to provide users with a fully functional and Windows-compatible distribution under the GPL license. ReactOS comes with its own Windows 2003-based kernel and system utilities and applications, resulting in an environment identical to Windows, both visually and internally.
More than just an alternative to Windows, ReactOS is a powerful platform for academia, allowing students to learn a variety of skills useful to software testing, development and management, as well as providing a rich and clean implementation of Windows NT, with a kernel compatible to published internals book on the subject.
This talk will introduce the ReactOS project, as well as the various software engineering challenges behind it. The building platform and development philosophies and utilities will be shown, and attendees will grasp the vast amount of effort and organization that needs to go into building an operating system or any other similarly large project. The speaker will gladly answer questions related to his background, experience and interests and information on joining the project, as well as any other related information.
Slides from the talk are available [here](<http://mirror.csclub.uwaterloo.ca/csclub/alex-ionescu.pdf>).
**Biography**
Alex Ionescu is currently studying in Software Engineering at Concordia University in Montreal, Quebec and is a Microsoft Technical Student Ambassador. He is the lead kernel developer of the ReactOS Project and project leader of TinyKRNL. He regularly speaks at Linux and Open Source conferences around the world and will be a lecturer at the 8th International Free Software Forum in Brazil this April, as well as providing hands-on workshops and lectures on Windows NT internals and security to various companies.

View File

@ -0,0 +1,24 @@
---
index: 62
title: 'Rico Mariani: Eighteen Years in the Software Tools Business'
presentors:
- 'Rico Mariani'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/rico-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/rico-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rico.avi'
type: 'XviD'
size: '534M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rico.ogg'
type: 'Ogg/Theora'
size: '528M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rico.mp4'
type: 'MP4'
size: '507M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/rico.mpg'
type: 'MPG'
size: '532M'
---
Rico Mariani, (BMath CS/EEE 1988) now an (almost) 18 year Microsoft veteran but then a CSC president comes to talk to us about the evolution of software tools for microcomputers. This talk promises to be a little bit about history and perspective (at least from the Microsoft side of things) as well as the evolution of software engineers, different types of programmers and their needs, and what it's like to try to make the software industry more effective at what it does, and sometimes succeed! Particularly illuminating are his responses to advocates of free/open-source software.

View File

@ -0,0 +1,24 @@
---
index: 53
title: 'Riding The Multi-core Revolution'
presentors:
- 'Stefanus Du Toit'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt-thumb-small.jpg'
large: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt-thumb-large.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt.avi'
type: 'DivX'
size: '406M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt-xvid.avi'
type: 'XviD'
size: '406M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt.mpg'
type: 'MPG'
size: '405M'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/sdt.ogg'
type: 'Ogg/Theora'
size: '411M'
---
For decades, mainstream parallel processing has been thought of as inevitable. Up until recent years, however, improvements in manufacturing processes and increases in clock speed have provided software with free Moore's Law-scale performance improvements on traditional single-core CPUs. As per-core CPU speed increases have slowed to a halt, processor vendors are embracing parallelism by multiplying the number of cores on CPUs, following what Graphics Processing Unit (GPU) vendors have been doing for years. The Multi-core revolution promises to provide unparallelled increases in performance, but it comes with a catch: traditional serial programming methods are not at all suited to programming these processors and methods such as multi-threading are cumbersome and rarely scale beyond a few cores. Learn how, with hundreds of cores in desktop computers on the horizon, a local software company is looking to revolutionize the way software is written to deliver on the promise multi-core holds.

View File

@ -0,0 +1,17 @@
---
index: 13
title: 'Runtime Type Inference in Dynamic Languages'
presentors:
- 'Kannan Vijayan'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/vijayan-type-inference-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/vijayan-type-inference.mp4'
type: 'Talk (x264)'
---
How do we make dynamic languages fast? Today, modern Javascript engines have demonstrated that programs written in dynamically typed scripting lan- guages can be executed close to the speed of programs written in languages with static types. So how did we get here? How do we extract precious type information from programs at runtime? If any variable can hold a value of any type, then how can we optimize well?
This talk covers a bit of the history of the techniques used in this space, and tries to summarize, in broad strokes, how those techniques come together to enable efficient jit-compilation of dynamically typed programs. To do the topic justice, Kannan Vijayan will be talking the Monday and Tuesday March 9th and 10th.
Does that mean two consecutive days of free food? Yes it does.

View File

@ -0,0 +1,21 @@
---
index: 14
title: 'SAT and SMT solvers'
presentors:
- 'Murphy Berzish'
thumbnails:
small: 'http://mirror.csclub.uwaterloo.ca/csclub/mtrberzi-sat-smt-thumb-small.jpg'
links:
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mtrberzi-sat-smt.mp4'
type: 'Talk (x264)'
- file: 'http://mirror.csclub.uwaterloo.ca/csclub/mtrberzi-sat-smt-slides.pdf'
type: 'Talk (PDF)'
---
Does your program have an overflow error? Will it work with all inputs? How do you know for sure? Test cases are the bread and butter of resilient design, but bugs still sneak into software. What if we could prove our programs are error-free?
Boolean Satisfiability (SAT) solvers determine the satisfiability of boolean set of equations for a set of inputs. An SMT solver Satisfiability Modulo a Theory) applies SMT to bit-vectors, strings, arrays, and more. Together, we can reduce a program and prove it is satisfiable, or provide a concrete counter-example. The implications of this are computer-aided reasoning tools for error-checking in addition to much more robust programs.
In this talk Murphy Berzish will give an overview of SAT/SMT theory and some real-world solution methods. He will also demonstrate applications of SAT/SMT solvers in theorem proving, model checking, and program verification.
There are both .pdf slides and a .mp4 recording of the talk. Code samples and spellings of terms are in the slides, consider following along with the slides.

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